bta: Apply clang-format
clang-format -i --style=file bta/*/*
(twice)
Test: mma -j32
Change-Id: Ib118b1dfb6a34f9a5bfe153d65841e9041165264
diff --git a/bta/ag/bta_ag_act.cc b/bta/ag/bta_ag_act.cc
index 14567f7..8cd2616 100644
--- a/bta/ag/bta_ag_act.cc
+++ b/bta/ag/bta_ag_act.cc
@@ -24,59 +24,45 @@
#include <string.h>
-#include "bta_api.h"
-#include "bta_sys.h"
#include "bta_ag_api.h"
#include "bta_ag_co.h"
#include "bta_ag_int.h"
+#include "bta_api.h"
#include "bta_dm_api.h"
+#include "bta_sys.h"
+#include "l2c_api.h"
#include "osi/include/osi.h"
#include "port_api.h"
#include "utl.h"
-#include "l2c_api.h"
/*****************************************************************************
* Constants
****************************************************************************/
/* maximum length of data to read from RFCOMM */
-#define BTA_AG_RFC_READ_MAX 512
+#define BTA_AG_RFC_READ_MAX 512
/* maximum AT command length */
-#define BTA_AG_CMD_MAX 512
+#define BTA_AG_CMD_MAX 512
-const uint16_t bta_ag_uuid[BTA_AG_NUM_IDX] =
-{
- UUID_SERVCLASS_HEADSET_AUDIO_GATEWAY,
- UUID_SERVCLASS_AG_HANDSFREE
-};
+const uint16_t bta_ag_uuid[BTA_AG_NUM_IDX] = {
+ UUID_SERVCLASS_HEADSET_AUDIO_GATEWAY, UUID_SERVCLASS_AG_HANDSFREE};
-const uint8_t bta_ag_sec_id[BTA_AG_NUM_IDX] =
-{
- BTM_SEC_SERVICE_HEADSET_AG,
- BTM_SEC_SERVICE_AG_HANDSFREE
-};
+const uint8_t bta_ag_sec_id[BTA_AG_NUM_IDX] = {BTM_SEC_SERVICE_HEADSET_AG,
+ BTM_SEC_SERVICE_AG_HANDSFREE};
-const tBTA_SERVICE_ID bta_ag_svc_id[BTA_AG_NUM_IDX] =
-{
- BTA_HSP_SERVICE_ID,
- BTA_HFP_SERVICE_ID
-};
+const tBTA_SERVICE_ID bta_ag_svc_id[BTA_AG_NUM_IDX] = {BTA_HSP_SERVICE_ID,
+ BTA_HFP_SERVICE_ID};
-const tBTA_SERVICE_MASK bta_ag_svc_mask[BTA_AG_NUM_IDX] =
-{
- BTA_HSP_SERVICE_MASK,
- BTA_HFP_SERVICE_MASK
-};
+const tBTA_SERVICE_MASK bta_ag_svc_mask[BTA_AG_NUM_IDX] = {
+ BTA_HSP_SERVICE_MASK, BTA_HFP_SERVICE_MASK};
-typedef void (*tBTA_AG_ATCMD_CBACK)(tBTA_AG_SCB *p_scb, uint16_t cmd, uint8_t arg_type,
- char *p_arg, int16_t int_arg);
+typedef void (*tBTA_AG_ATCMD_CBACK)(tBTA_AG_SCB* p_scb, uint16_t cmd,
+ uint8_t arg_type, char* p_arg,
+ int16_t int_arg);
-const tBTA_AG_ATCMD_CBACK bta_ag_at_cback_tbl[BTA_AG_NUM_IDX] =
-{
- bta_ag_at_hsp_cback,
- bta_ag_at_hfp_cback
-};
+const tBTA_AG_ATCMD_CBACK bta_ag_at_cback_tbl[BTA_AG_NUM_IDX] = {
+ bta_ag_at_hsp_cback, bta_ag_at_hfp_cback};
/*******************************************************************************
*
@@ -88,26 +74,24 @@
* Returns void
*
******************************************************************************/
-static void bta_ag_cback_open(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data, tBTA_AG_STATUS status)
-{
- tBTA_AG_OPEN open;
+static void bta_ag_cback_open(tBTA_AG_SCB* p_scb, tBTA_AG_DATA* p_data,
+ tBTA_AG_STATUS status) {
+ tBTA_AG_OPEN open;
- /* call app callback with open event */
- open.hdr.handle = bta_ag_scb_to_idx(p_scb);
- open.hdr.app_id = p_scb->app_id;
- open.status = status;
- open.service_id = bta_ag_svc_id[p_scb->conn_service];
- if(p_data)
- {
- /* if p_data is provided then we need to pick the bd address from the open api structure */
- bdcpy(open.bd_addr, p_data->api_open.bd_addr);
- }
- else
- {
- bdcpy(open.bd_addr, p_scb->peer_addr);
- }
+ /* call app callback with open event */
+ open.hdr.handle = bta_ag_scb_to_idx(p_scb);
+ open.hdr.app_id = p_scb->app_id;
+ open.status = status;
+ open.service_id = bta_ag_svc_id[p_scb->conn_service];
+ if (p_data) {
+ /* if p_data is provided then we need to pick the bd address from the open
+ * api structure */
+ bdcpy(open.bd_addr, p_data->api_open.bd_addr);
+ } else {
+ bdcpy(open.bd_addr, p_scb->peer_addr);
+ }
- (*bta_ag_cb.p_cback)(BTA_AG_OPEN_EVT, (tBTA_AG *) &open);
+ (*bta_ag_cb.p_cback)(BTA_AG_OPEN_EVT, (tBTA_AG*)&open);
}
/*******************************************************************************
@@ -121,27 +105,26 @@
* Returns void
*
******************************************************************************/
-void bta_ag_register(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data)
-{
- tBTA_AG_REGISTER reg;
+void bta_ag_register(tBTA_AG_SCB* p_scb, tBTA_AG_DATA* p_data) {
+ tBTA_AG_REGISTER reg;
- /* initialize control block */
- p_scb->reg_services = p_data->api_register.services;
- p_scb->serv_sec_mask = p_data->api_register.sec_mask;
- p_scb->features = p_data->api_register.features;
- p_scb->app_id = p_data->api_register.app_id;
+ /* initialize control block */
+ p_scb->reg_services = p_data->api_register.services;
+ p_scb->serv_sec_mask = p_data->api_register.sec_mask;
+ p_scb->features = p_data->api_register.features;
+ p_scb->app_id = p_data->api_register.app_id;
- /* create SDP records */
- bta_ag_create_records(p_scb, p_data);
+ /* create SDP records */
+ bta_ag_create_records(p_scb, p_data);
- /* start RFCOMM servers */
- bta_ag_start_servers(p_scb, p_scb->reg_services);
+ /* start RFCOMM servers */
+ bta_ag_start_servers(p_scb, p_scb->reg_services);
- /* call app callback with register event */
- reg.hdr.handle = bta_ag_scb_to_idx(p_scb);
- reg.hdr.app_id = p_scb->app_id;
- reg.status = BTA_AG_SUCCESS;
- (*bta_ag_cb.p_cback)(BTA_AG_REGISTER_EVT, (tBTA_AG *) ®);
+ /* call app callback with register event */
+ reg.hdr.handle = bta_ag_scb_to_idx(p_scb);
+ reg.hdr.app_id = p_scb->app_id;
+ reg.status = BTA_AG_SUCCESS;
+ (*bta_ag_cb.p_cback)(BTA_AG_REGISTER_EVT, (tBTA_AG*)®);
}
/*******************************************************************************
@@ -155,19 +138,18 @@
* Returns void
*
******************************************************************************/
-void bta_ag_deregister(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data)
-{
- /* set dealloc */
- p_scb->dealloc = true;
+void bta_ag_deregister(tBTA_AG_SCB* p_scb, tBTA_AG_DATA* p_data) {
+ /* set dealloc */
+ p_scb->dealloc = true;
- /* remove sdp records */
- bta_ag_del_records(p_scb, p_data);
+ /* remove sdp records */
+ bta_ag_del_records(p_scb, p_data);
- /* remove rfcomm servers */
- bta_ag_close_servers(p_scb, p_scb->reg_services);
+ /* remove rfcomm servers */
+ bta_ag_close_servers(p_scb, p_scb->reg_services);
- /* dealloc */
- bta_ag_scb_dealloc(p_scb);
+ /* dealloc */
+ bta_ag_scb_dealloc(p_scb);
}
/*******************************************************************************
@@ -180,13 +162,12 @@
* Returns void
*
******************************************************************************/
-void bta_ag_start_dereg(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data)
-{
- /* set dealloc */
- p_scb->dealloc = true;
+void bta_ag_start_dereg(tBTA_AG_SCB* p_scb, tBTA_AG_DATA* p_data) {
+ /* set dealloc */
+ p_scb->dealloc = true;
- /* remove sdp records */
- bta_ag_del_records(p_scb, p_data);
+ /* remove sdp records */
+ bta_ag_del_records(p_scb, p_data);
}
/*******************************************************************************
@@ -199,36 +180,33 @@
* Returns void
*
******************************************************************************/
-void bta_ag_start_open(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data)
-{
- BD_ADDR pending_bd_addr;
+void bta_ag_start_open(tBTA_AG_SCB* p_scb, tBTA_AG_DATA* p_data) {
+ BD_ADDR pending_bd_addr;
- /* store parameters */
- if (p_data)
- {
- bdcpy(p_scb->peer_addr, p_data->api_open.bd_addr);
- p_scb->open_services = p_data->api_open.services;
- p_scb->cli_sec_mask = p_data->api_open.sec_mask;
- }
+ /* store parameters */
+ if (p_data) {
+ bdcpy(p_scb->peer_addr, p_data->api_open.bd_addr);
+ p_scb->open_services = p_data->api_open.services;
+ p_scb->cli_sec_mask = p_data->api_open.sec_mask;
+ }
- /* Check if RFCOMM has any incoming connection to avoid collision. */
- if (PORT_IsOpening (pending_bd_addr))
- {
- /* Let the incoming connection goes through. */
- /* Issue collision for this scb for now. */
- /* We will decide what to do when we find incoming connetion later. */
- bta_ag_collision_cback (0, BTA_ID_AG, 0, p_scb->peer_addr);
- return;
- }
+ /* Check if RFCOMM has any incoming connection to avoid collision. */
+ if (PORT_IsOpening(pending_bd_addr)) {
+ /* Let the incoming connection goes through. */
+ /* Issue collision for this scb for now. */
+ /* We will decide what to do when we find incoming connetion later. */
+ bta_ag_collision_cback(0, BTA_ID_AG, 0, p_scb->peer_addr);
+ return;
+ }
- /* close servers */
- bta_ag_close_servers(p_scb, p_scb->reg_services);
+ /* close servers */
+ bta_ag_close_servers(p_scb, p_scb->reg_services);
- /* set role */
- p_scb->role = BTA_AG_INT;
+ /* set role */
+ p_scb->role = BTA_AG_INT;
- /* do service search */
- bta_ag_do_disc(p_scb, p_scb->open_services);
+ /* do service search */
+ bta_ag_do_disc(p_scb, p_scb->open_services);
}
/*******************************************************************************
@@ -241,62 +219,51 @@
* Returns void
*
******************************************************************************/
-void bta_ag_disc_int_res(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data)
-{
- uint16_t event = BTA_AG_DISC_FAIL_EVT;
+void bta_ag_disc_int_res(tBTA_AG_SCB* p_scb, tBTA_AG_DATA* p_data) {
+ uint16_t event = BTA_AG_DISC_FAIL_EVT;
- APPL_TRACE_DEBUG ("bta_ag_disc_int_res: Status: %d", p_data->disc_result.status);
+ APPL_TRACE_DEBUG("bta_ag_disc_int_res: Status: %d",
+ p_data->disc_result.status);
- /* if found service */
- if (p_data->disc_result.status == SDP_SUCCESS ||
- p_data->disc_result.status == SDP_DB_FULL)
- {
- /* get attributes */
- if (bta_ag_sdp_find_attr(p_scb, p_scb->open_services))
- {
- /* set connected service */
- p_scb->conn_service = bta_ag_service_to_idx(p_scb->open_services);
+ /* if found service */
+ if (p_data->disc_result.status == SDP_SUCCESS ||
+ p_data->disc_result.status == SDP_DB_FULL) {
+ /* get attributes */
+ if (bta_ag_sdp_find_attr(p_scb, p_scb->open_services)) {
+ /* set connected service */
+ p_scb->conn_service = bta_ag_service_to_idx(p_scb->open_services);
- /* send ourselves sdp ok event */
- event = BTA_AG_DISC_OK_EVT;
- }
+ /* send ourselves sdp ok event */
+ event = BTA_AG_DISC_OK_EVT;
}
+ }
- /* free discovery db */
- bta_ag_free_db(p_scb, p_data);
+ /* free discovery db */
+ bta_ag_free_db(p_scb, p_data);
- /* if service not found check if we should search for other service */
- if ((event == BTA_AG_DISC_FAIL_EVT) &&
- (p_data->disc_result.status == SDP_SUCCESS ||
- p_data->disc_result.status == SDP_DB_FULL ||
- p_data->disc_result.status == SDP_NO_RECS_MATCH))
- {
- if ((p_scb->open_services & BTA_HFP_SERVICE_MASK) &&
- (p_scb->open_services & BTA_HSP_SERVICE_MASK))
- {
- /* search for HSP */
- p_scb->open_services &= ~BTA_HFP_SERVICE_MASK;
- bta_ag_do_disc(p_scb, p_scb->open_services);
- }
- else if ((p_scb->open_services & BTA_HSP_SERVICE_MASK) &&
- (p_scb->hsp_version == HSP_VERSION_1_2))
- {
- /* search for UUID_SERVCLASS_HEADSET for HSP 1.0 device */
- p_scb->hsp_version = HSP_VERSION_1_0;
- bta_ag_do_disc(p_scb, p_scb->open_services);
- }
- else
- {
- /* send ourselves sdp ok/fail event */
- bta_ag_sm_execute(p_scb, event, p_data);
- }
+ /* if service not found check if we should search for other service */
+ if ((event == BTA_AG_DISC_FAIL_EVT) &&
+ (p_data->disc_result.status == SDP_SUCCESS ||
+ p_data->disc_result.status == SDP_DB_FULL ||
+ p_data->disc_result.status == SDP_NO_RECS_MATCH)) {
+ if ((p_scb->open_services & BTA_HFP_SERVICE_MASK) &&
+ (p_scb->open_services & BTA_HSP_SERVICE_MASK)) {
+ /* search for HSP */
+ p_scb->open_services &= ~BTA_HFP_SERVICE_MASK;
+ bta_ag_do_disc(p_scb, p_scb->open_services);
+ } else if ((p_scb->open_services & BTA_HSP_SERVICE_MASK) &&
+ (p_scb->hsp_version == HSP_VERSION_1_2)) {
+ /* search for UUID_SERVCLASS_HEADSET for HSP 1.0 device */
+ p_scb->hsp_version = HSP_VERSION_1_0;
+ bta_ag_do_disc(p_scb, p_scb->open_services);
+ } else {
+ /* send ourselves sdp ok/fail event */
+ bta_ag_sm_execute(p_scb, event, p_data);
}
- else
- {
- /* send ourselves sdp ok/fail event */
- bta_ag_sm_execute(p_scb, event, p_data);
- }
-
+ } else {
+ /* send ourselves sdp ok/fail event */
+ bta_ag_sm_execute(p_scb, event, p_data);
+ }
}
/*******************************************************************************
@@ -309,18 +276,16 @@
* Returns void
*
******************************************************************************/
-void bta_ag_disc_acp_res(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data)
-{
- /* if found service */
- if (p_data->disc_result.status == SDP_SUCCESS ||
- p_data->disc_result.status == SDP_DB_FULL)
- {
- /* get attributes */
- bta_ag_sdp_find_attr(p_scb, bta_ag_svc_mask[p_scb->conn_service]);
- }
+void bta_ag_disc_acp_res(tBTA_AG_SCB* p_scb, tBTA_AG_DATA* p_data) {
+ /* if found service */
+ if (p_data->disc_result.status == SDP_SUCCESS ||
+ p_data->disc_result.status == SDP_DB_FULL) {
+ /* get attributes */
+ bta_ag_sdp_find_attr(p_scb, bta_ag_svc_mask[p_scb->conn_service]);
+ }
- /* free discovery db */
- bta_ag_free_db(p_scb, p_data);
+ /* free discovery db */
+ bta_ag_free_db(p_scb, p_data);
}
/*******************************************************************************
@@ -333,19 +298,17 @@
* Returns void
*
******************************************************************************/
-void bta_ag_disc_fail(tBTA_AG_SCB *p_scb,
- UNUSED_ATTR tBTA_AG_DATA *p_data)
-{
- /* reopen registered servers */
- bta_ag_start_servers(p_scb, p_scb->reg_services);
+void bta_ag_disc_fail(tBTA_AG_SCB* p_scb, UNUSED_ATTR tBTA_AG_DATA* p_data) {
+ /* reopen registered servers */
+ bta_ag_start_servers(p_scb, p_scb->reg_services);
- /* reinitialize stuff */
+ /* reinitialize stuff */
- /* clear the remote BD address */
- bdcpy(p_scb->peer_addr, bd_addr_null);
+ /* clear the remote BD address */
+ bdcpy(p_scb->peer_addr, bd_addr_null);
- /* call open cback w. failure */
- bta_ag_cback_open(p_scb, NULL, BTA_AG_FAIL_SDP);
+ /* call open cback w. failure */
+ bta_ag_cback_open(p_scb, NULL, BTA_AG_FAIL_SDP);
}
/*******************************************************************************
@@ -358,10 +321,9 @@
* Returns void
*
******************************************************************************/
-void bta_ag_open_fail(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data)
-{
- /* call open cback w. failure */
- bta_ag_cback_open(p_scb, p_data, BTA_AG_FAIL_RESOURCES);
+void bta_ag_open_fail(tBTA_AG_SCB* p_scb, tBTA_AG_DATA* p_data) {
+ /* call open cback w. failure */
+ bta_ag_cback_open(p_scb, p_data, BTA_AG_FAIL_RESOURCES);
}
/*******************************************************************************
@@ -374,27 +336,26 @@
* Returns void
*
******************************************************************************/
-void bta_ag_rfc_fail(tBTA_AG_SCB *p_scb, UNUSED_ATTR tBTA_AG_DATA *p_data)
-{
- /* reinitialize stuff */
- p_scb->conn_handle = 0;
- p_scb->conn_service = 0;
- p_scb->peer_features = 0;
+void bta_ag_rfc_fail(tBTA_AG_SCB* p_scb, UNUSED_ATTR tBTA_AG_DATA* p_data) {
+ /* reinitialize stuff */
+ p_scb->conn_handle = 0;
+ p_scb->conn_service = 0;
+ p_scb->peer_features = 0;
#if (BTM_WBS_INCLUDED == TRUE)
- p_scb->peer_codecs = BTA_AG_CODEC_CVSD;
- p_scb->sco_codec = BTA_AG_CODEC_CVSD;
+ p_scb->peer_codecs = BTA_AG_CODEC_CVSD;
+ p_scb->sco_codec = BTA_AG_CODEC_CVSD;
#endif
- p_scb->role = 0;
- p_scb->svc_conn = false;
- p_scb->hsp_version = HSP_VERSION_1_2;
- /*Clear the BD address*/
- bdcpy(p_scb->peer_addr, bd_addr_null);
+ p_scb->role = 0;
+ p_scb->svc_conn = false;
+ p_scb->hsp_version = HSP_VERSION_1_2;
+ /*Clear the BD address*/
+ bdcpy(p_scb->peer_addr, bd_addr_null);
- /* reopen registered servers */
- bta_ag_start_servers(p_scb, p_scb->reg_services);
+ /* reopen registered servers */
+ bta_ag_start_servers(p_scb, p_scb->reg_services);
- /* call open cback w. failure */
- bta_ag_cback_open(p_scb, NULL, BTA_AG_FAIL_RFCOMM);
+ /* call open cback w. failure */
+ bta_ag_cback_open(p_scb, NULL, BTA_AG_FAIL_RFCOMM);
}
/*******************************************************************************
@@ -407,90 +368,83 @@
* Returns void
*
******************************************************************************/
-void bta_ag_rfc_close(tBTA_AG_SCB *p_scb,
- UNUSED_ATTR tBTA_AG_DATA *p_data)
-{
- tBTA_AG_CLOSE close;
- tBTA_SERVICE_MASK services;
- int i, num_active_conn = 0;
+void bta_ag_rfc_close(tBTA_AG_SCB* p_scb, UNUSED_ATTR tBTA_AG_DATA* p_data) {
+ tBTA_AG_CLOSE close;
+ tBTA_SERVICE_MASK services;
+ int i, num_active_conn = 0;
- /* reinitialize stuff */
- p_scb->conn_service = 0;
- p_scb->peer_features = 0;
+ /* reinitialize stuff */
+ p_scb->conn_service = 0;
+ p_scb->peer_features = 0;
#if (BTM_WBS_INCLUDED == TRUE)
- p_scb->peer_codecs = BTA_AG_CODEC_CVSD;
- p_scb->sco_codec = BTA_AG_CODEC_CVSD;
- /* Clear these flags upon SLC teardown */
- p_scb->codec_updated = false;
- p_scb->codec_fallback = false;
- p_scb->codec_msbc_settings = BTA_AG_SCO_MSBC_SETTINGS_T2;
+ p_scb->peer_codecs = BTA_AG_CODEC_CVSD;
+ p_scb->sco_codec = BTA_AG_CODEC_CVSD;
+ /* Clear these flags upon SLC teardown */
+ p_scb->codec_updated = false;
+ p_scb->codec_fallback = false;
+ p_scb->codec_msbc_settings = BTA_AG_SCO_MSBC_SETTINGS_T2;
#endif
- p_scb->role = 0;
- p_scb->post_sco = BTA_AG_POST_SCO_NONE;
- p_scb->svc_conn = false;
- p_scb->hsp_version = HSP_VERSION_1_2;
- bta_ag_at_reinit(&p_scb->at_cb);
+ p_scb->role = 0;
+ p_scb->post_sco = BTA_AG_POST_SCO_NONE;
+ p_scb->svc_conn = false;
+ p_scb->hsp_version = HSP_VERSION_1_2;
+ bta_ag_at_reinit(&p_scb->at_cb);
- memset(&(p_scb->peer_hf_indicators), 0, sizeof(p_scb->peer_hf_indicators));
- memset(&(p_scb->local_hf_indicators), 0, sizeof(p_scb->local_hf_indicators));
+ memset(&(p_scb->peer_hf_indicators), 0, sizeof(p_scb->peer_hf_indicators));
+ memset(&(p_scb->local_hf_indicators), 0, sizeof(p_scb->local_hf_indicators));
- /* stop timers */
- alarm_cancel(p_scb->ring_timer);
+ /* stop timers */
+ alarm_cancel(p_scb->ring_timer);
#if (BTM_WBS_INCLUDED == TRUE)
- alarm_cancel(p_scb->codec_negotiation_timer);
+ alarm_cancel(p_scb->codec_negotiation_timer);
#endif
- close.hdr.handle = bta_ag_scb_to_idx(p_scb);
- close.hdr.app_id = p_scb->app_id;
- bdcpy(close.bd_addr, p_scb->peer_addr);
+ close.hdr.handle = bta_ag_scb_to_idx(p_scb);
+ close.hdr.app_id = p_scb->app_id;
+ bdcpy(close.bd_addr, p_scb->peer_addr);
- bta_sys_conn_close(BTA_ID_AG, p_scb->app_id, p_scb->peer_addr);
+ bta_sys_conn_close(BTA_ID_AG, p_scb->app_id, p_scb->peer_addr);
- /* call close call-out */
- bta_ag_co_data_close(close.hdr.handle);
+ /* call close call-out */
+ bta_ag_co_data_close(close.hdr.handle);
- /* call close cback */
- (*bta_ag_cb.p_cback)(BTA_AG_CLOSE_EVT, (tBTA_AG *) &close);
+ /* call close cback */
+ (*bta_ag_cb.p_cback)(BTA_AG_CLOSE_EVT, (tBTA_AG*)&close);
- /* if not deregistering (deallocating) reopen registered servers */
- if (p_scb->dealloc == false)
- {
- /* Clear peer bd_addr so instance can be reused */
- bdcpy(p_scb->peer_addr, bd_addr_null);
+ /* if not deregistering (deallocating) reopen registered servers */
+ if (p_scb->dealloc == false) {
+ /* Clear peer bd_addr so instance can be reused */
+ bdcpy(p_scb->peer_addr, bd_addr_null);
- /* start only unopened server */
- services = p_scb->reg_services;
- for (i = 0; i < BTA_AG_NUM_IDX && services != 0; i++)
- {
- if(p_scb->serv_handle[i])
- services &= ~((tBTA_SERVICE_MASK)1 << (BTA_HSP_SERVICE_ID + i));
- }
- bta_ag_start_servers(p_scb, services);
-
- p_scb->conn_handle = 0;
-
- /* Make sure SCO state is BTA_AG_SCO_SHUTDOWN_ST */
- bta_ag_sco_shutdown(p_scb, NULL);
-
- /* Check if all the SLCs are down */
- for (i = 0; i < BTA_AG_NUM_SCB; i++)
- {
- if (bta_ag_cb.scb[i].in_use && bta_ag_cb.scb[i].svc_conn)
- num_active_conn++;
- }
-
- if(!num_active_conn)
- {
- bta_sys_sco_unuse(BTA_ID_AG, p_scb->app_id, p_scb->peer_addr);
- }
-
+ /* start only unopened server */
+ services = p_scb->reg_services;
+ for (i = 0; i < BTA_AG_NUM_IDX && services != 0; i++) {
+ if (p_scb->serv_handle[i])
+ services &= ~((tBTA_SERVICE_MASK)1 << (BTA_HSP_SERVICE_ID + i));
}
- /* else close port and deallocate scb */
- else
- {
- RFCOMM_RemoveServer(p_scb->conn_handle);
- bta_ag_scb_dealloc(p_scb);
+ bta_ag_start_servers(p_scb, services);
+
+ p_scb->conn_handle = 0;
+
+ /* Make sure SCO state is BTA_AG_SCO_SHUTDOWN_ST */
+ bta_ag_sco_shutdown(p_scb, NULL);
+
+ /* Check if all the SLCs are down */
+ for (i = 0; i < BTA_AG_NUM_SCB; i++) {
+ if (bta_ag_cb.scb[i].in_use && bta_ag_cb.scb[i].svc_conn)
+ num_active_conn++;
}
+
+ if (!num_active_conn) {
+ bta_sys_sco_unuse(BTA_ID_AG, p_scb->app_id, p_scb->peer_addr);
+ }
+
+ }
+ /* else close port and deallocate scb */
+ else {
+ RFCOMM_RemoveServer(p_scb->conn_handle);
+ bta_ag_scb_dealloc(p_scb);
+ }
}
/*******************************************************************************
@@ -503,38 +457,40 @@
* Returns void
*
******************************************************************************/
-void bta_ag_rfc_open(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data)
-{
- /* initialize AT feature variables */
- p_scb->clip_enabled = false;
- p_scb->ccwa_enabled = false;
- p_scb->cmer_enabled = false;
- p_scb->cmee_enabled = false;
- p_scb->inband_enabled = ((p_scb->features & BTA_AG_FEAT_INBAND) == BTA_AG_FEAT_INBAND);
+void bta_ag_rfc_open(tBTA_AG_SCB* p_scb, tBTA_AG_DATA* p_data) {
+ /* initialize AT feature variables */
+ p_scb->clip_enabled = false;
+ p_scb->ccwa_enabled = false;
+ p_scb->cmer_enabled = false;
+ p_scb->cmee_enabled = false;
+ p_scb->inband_enabled =
+ ((p_scb->features & BTA_AG_FEAT_INBAND) == BTA_AG_FEAT_INBAND);
- /* set up AT command interpreter */
- p_scb->at_cb.p_at_tbl = (tBTA_AG_AT_CMD *) bta_ag_at_tbl[p_scb->conn_service];
- p_scb->at_cb.p_cmd_cback = (tBTA_AG_AT_CMD_CBACK *) bta_ag_at_cback_tbl[p_scb->conn_service];
- p_scb->at_cb.p_err_cback = (tBTA_AG_AT_ERR_CBACK *) bta_ag_at_err_cback;
- p_scb->at_cb.p_user = p_scb;
- p_scb->at_cb.cmd_max_len = BTA_AG_CMD_MAX;
- bta_ag_at_init(&p_scb->at_cb);
+ /* set up AT command interpreter */
+ p_scb->at_cb.p_at_tbl = (tBTA_AG_AT_CMD*)bta_ag_at_tbl[p_scb->conn_service];
+ p_scb->at_cb.p_cmd_cback =
+ (tBTA_AG_AT_CMD_CBACK*)bta_ag_at_cback_tbl[p_scb->conn_service];
+ p_scb->at_cb.p_err_cback = (tBTA_AG_AT_ERR_CBACK*)bta_ag_at_err_cback;
+ p_scb->at_cb.p_user = p_scb;
+ p_scb->at_cb.cmd_max_len = BTA_AG_CMD_MAX;
+ bta_ag_at_init(&p_scb->at_cb);
- /* call app open call-out */
- bta_ag_co_data_open(bta_ag_scb_to_idx(p_scb), bta_ag_svc_id[p_scb->conn_service]);
+ /* call app open call-out */
+ bta_ag_co_data_open(bta_ag_scb_to_idx(p_scb),
+ bta_ag_svc_id[p_scb->conn_service]);
- bta_sys_conn_open(BTA_ID_AG, p_scb->app_id, p_scb->peer_addr);
+ bta_sys_conn_open(BTA_ID_AG, p_scb->app_id, p_scb->peer_addr);
- bta_ag_cback_open(p_scb, NULL, BTA_AG_SUCCESS);
+ bta_ag_cback_open(p_scb, NULL, BTA_AG_SUCCESS);
- if (p_scb->conn_service == BTA_AG_HFP) {
- /* if hfp start timer for service level conn */
- bta_sys_start_timer(p_scb->ring_timer, p_bta_ag_cfg->conn_tout,
- BTA_AG_SVC_TIMEOUT_EVT, bta_ag_scb_to_idx(p_scb));
- } else {
- /* else service level conn is open */
- bta_ag_svc_conn_open(p_scb, p_data);
- }
+ if (p_scb->conn_service == BTA_AG_HFP) {
+ /* if hfp start timer for service level conn */
+ bta_sys_start_timer(p_scb->ring_timer, p_bta_ag_cfg->conn_tout,
+ BTA_AG_SVC_TIMEOUT_EVT, bta_ag_scb_to_idx(p_scb));
+ } else {
+ /* else service level conn is open */
+ bta_ag_svc_conn_open(p_scb, p_data);
+ }
}
/*******************************************************************************
@@ -547,86 +503,79 @@
* Returns void
*
******************************************************************************/
-void bta_ag_rfc_acp_open(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data)
-{
- uint16_t lcid;
- int i;
- tBTA_AG_SCB *ag_scb, *other_scb;
- BD_ADDR dev_addr;
- int status;
+void bta_ag_rfc_acp_open(tBTA_AG_SCB* p_scb, tBTA_AG_DATA* p_data) {
+ uint16_t lcid;
+ int i;
+ tBTA_AG_SCB *ag_scb, *other_scb;
+ BD_ADDR dev_addr;
+ int status;
- /* set role */
- p_scb->role = BTA_AG_ACP;
+ /* set role */
+ p_scb->role = BTA_AG_ACP;
- APPL_TRACE_DEBUG ("bta_ag_rfc_acp_open: serv_handle0 = %d serv_handle1 = %d",
- p_scb->serv_handle[0], p_scb->serv_handle[1]);
+ APPL_TRACE_DEBUG("bta_ag_rfc_acp_open: serv_handle0 = %d serv_handle1 = %d",
+ p_scb->serv_handle[0], p_scb->serv_handle[1]);
- /* get bd addr of peer */
- if (PORT_SUCCESS != (status=PORT_CheckConnection(p_data->rfc.port_handle, dev_addr, &lcid)))
- {
- APPL_TRACE_DEBUG ("bta_ag_rfc_acp_open error PORT_CheckConnection returned status %d", status);
- }
+ /* get bd addr of peer */
+ if (PORT_SUCCESS != (status = PORT_CheckConnection(p_data->rfc.port_handle,
+ dev_addr, &lcid))) {
+ APPL_TRACE_DEBUG(
+ "bta_ag_rfc_acp_open error PORT_CheckConnection returned status %d",
+ status);
+ }
- /* Collision Handling */
- for (i = 0, ag_scb = &bta_ag_cb.scb[0]; i < BTA_AG_NUM_SCB; i++, ag_scb++)
- {
- if (ag_scb->in_use && alarm_is_scheduled(ag_scb->collision_timer))
- {
- alarm_cancel(ag_scb->collision_timer);
+ /* Collision Handling */
+ for (i = 0, ag_scb = &bta_ag_cb.scb[0]; i < BTA_AG_NUM_SCB; i++, ag_scb++) {
+ if (ag_scb->in_use && alarm_is_scheduled(ag_scb->collision_timer)) {
+ alarm_cancel(ag_scb->collision_timer);
- if (bdcmp (dev_addr, ag_scb->peer_addr) == 0)
- {
- /* If incoming and outgoing device are same, nothing more to do. */
- /* Outgoing conn will be aborted because we have successful incoming conn. */
- }
- else
- {
- /* Resume outgoing connection. */
- other_scb = bta_ag_get_other_idle_scb (p_scb);
- if (other_scb)
- {
- bdcpy(other_scb->peer_addr, ag_scb->peer_addr);
- other_scb->open_services = ag_scb->open_services;
- other_scb->cli_sec_mask = ag_scb->cli_sec_mask;
+ if (bdcmp(dev_addr, ag_scb->peer_addr) == 0) {
+ /* If incoming and outgoing device are same, nothing more to do. */
+ /* Outgoing conn will be aborted because we have successful incoming
+ * conn. */
+ } else {
+ /* Resume outgoing connection. */
+ other_scb = bta_ag_get_other_idle_scb(p_scb);
+ if (other_scb) {
+ bdcpy(other_scb->peer_addr, ag_scb->peer_addr);
+ other_scb->open_services = ag_scb->open_services;
+ other_scb->cli_sec_mask = ag_scb->cli_sec_mask;
- bta_ag_resume_open (other_scb);
- }
- }
-
- break;
+ bta_ag_resume_open(other_scb);
}
+ }
+
+ break;
}
+ }
- bdcpy (p_scb->peer_addr, dev_addr);
+ bdcpy(p_scb->peer_addr, dev_addr);
- /* determine connected service from port handle */
- for (i = 0; i < BTA_AG_NUM_IDX; i++)
- {
- APPL_TRACE_DEBUG ("bta_ag_rfc_acp_open: i = %d serv_handle = %d port_handle = %d",
- i, p_scb->serv_handle[i], p_data->rfc.port_handle);
+ /* determine connected service from port handle */
+ for (i = 0; i < BTA_AG_NUM_IDX; i++) {
+ APPL_TRACE_DEBUG(
+ "bta_ag_rfc_acp_open: i = %d serv_handle = %d port_handle = %d", i,
+ p_scb->serv_handle[i], p_data->rfc.port_handle);
- if (p_scb->serv_handle[i] == p_data->rfc.port_handle)
- {
- p_scb->conn_service = i;
- p_scb->conn_handle = p_data->rfc.port_handle;
- break;
- }
+ if (p_scb->serv_handle[i] == p_data->rfc.port_handle) {
+ p_scb->conn_service = i;
+ p_scb->conn_handle = p_data->rfc.port_handle;
+ break;
}
+ }
- APPL_TRACE_DEBUG ("bta_ag_rfc_acp_open: conn_service = %d conn_handle = %d",
- p_scb->conn_service, p_scb->conn_handle);
+ APPL_TRACE_DEBUG("bta_ag_rfc_acp_open: conn_service = %d conn_handle = %d",
+ p_scb->conn_service, p_scb->conn_handle);
- /* close any unopened server */
- bta_ag_close_servers(p_scb, (p_scb->reg_services & ~bta_ag_svc_mask[p_scb->conn_service]));
+ /* close any unopened server */
+ bta_ag_close_servers(
+ p_scb, (p_scb->reg_services & ~bta_ag_svc_mask[p_scb->conn_service]));
- /* do service discovery to get features */
- bta_ag_do_disc(p_scb, bta_ag_svc_mask[p_scb->conn_service]);
+ /* do service discovery to get features */
+ bta_ag_do_disc(p_scb, bta_ag_svc_mask[p_scb->conn_service]);
- /* continue with common open processing */
- bta_ag_rfc_open(p_scb, p_data);
-
-
-
+ /* continue with common open processing */
+ bta_ag_rfc_open(p_scb, p_data);
}
/*******************************************************************************
@@ -639,48 +588,43 @@
* Returns void
*
******************************************************************************/
-void bta_ag_rfc_data(tBTA_AG_SCB *p_scb,
- UNUSED_ATTR tBTA_AG_DATA *p_data)
-{
- uint16_t len;
- char buf[BTA_AG_RFC_READ_MAX];
+void bta_ag_rfc_data(tBTA_AG_SCB* p_scb, UNUSED_ATTR tBTA_AG_DATA* p_data) {
+ uint16_t len;
+ char buf[BTA_AG_RFC_READ_MAX];
- memset(buf, 0, BTA_AG_RFC_READ_MAX);
+ memset(buf, 0, BTA_AG_RFC_READ_MAX);
- APPL_TRACE_DEBUG("%s", __func__);
+ APPL_TRACE_DEBUG("%s", __func__);
- /* do the following */
- for(;;)
- {
- /* read data from rfcomm; if bad status, we're done */
- if (PORT_ReadData(p_scb->conn_handle, buf, BTA_AG_RFC_READ_MAX, &len) != PORT_SUCCESS)
- {
- break;
- }
-
- /* if no data, we're done */
- if (len == 0)
- {
- break;
- }
-
- /* run AT command interpreter on data */
- bta_sys_busy(BTA_ID_AG, p_scb->app_id, p_scb->peer_addr);
- bta_ag_at_parse(&p_scb->at_cb, buf, len);
- if ((p_scb->sco_idx != BTM_INVALID_SCO_INDEX) && bta_ag_sco_is_open(p_scb))
- {
- APPL_TRACE_DEBUG ("%s change link policy for SCO", __func__);
- bta_sys_sco_open(BTA_ID_AG, p_scb->app_id, p_scb->peer_addr);
- } else {
- bta_sys_idle(BTA_ID_AG, p_scb->app_id, p_scb->peer_addr);
- }
-
- /* no more data to read, we're done */
- if (len < BTA_AG_RFC_READ_MAX)
- {
- break;
- }
+ /* do the following */
+ for (;;) {
+ /* read data from rfcomm; if bad status, we're done */
+ if (PORT_ReadData(p_scb->conn_handle, buf, BTA_AG_RFC_READ_MAX, &len) !=
+ PORT_SUCCESS) {
+ break;
}
+
+ /* if no data, we're done */
+ if (len == 0) {
+ break;
+ }
+
+ /* run AT command interpreter on data */
+ bta_sys_busy(BTA_ID_AG, p_scb->app_id, p_scb->peer_addr);
+ bta_ag_at_parse(&p_scb->at_cb, buf, len);
+ if ((p_scb->sco_idx != BTM_INVALID_SCO_INDEX) &&
+ bta_ag_sco_is_open(p_scb)) {
+ APPL_TRACE_DEBUG("%s change link policy for SCO", __func__);
+ bta_sys_sco_open(BTA_ID_AG, p_scb->app_id, p_scb->peer_addr);
+ } else {
+ bta_sys_idle(BTA_ID_AG, p_scb->app_id, p_scb->peer_addr);
+ }
+
+ /* no more data to read, we're done */
+ if (len < BTA_AG_RFC_READ_MAX) {
+ break;
+ }
+ }
}
/*******************************************************************************
@@ -693,25 +637,21 @@
* Returns void
*
******************************************************************************/
-void bta_ag_start_close(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data)
-{
- /* Take the link out of sniff and set L2C idle time to 0 */
- bta_dm_pm_active(p_scb->peer_addr);
- L2CA_SetIdleTimeoutByBdAddr(p_scb->peer_addr, 0, BT_TRANSPORT_BR_EDR);
+void bta_ag_start_close(tBTA_AG_SCB* p_scb, tBTA_AG_DATA* p_data) {
+ /* Take the link out of sniff and set L2C idle time to 0 */
+ bta_dm_pm_active(p_scb->peer_addr);
+ L2CA_SetIdleTimeoutByBdAddr(p_scb->peer_addr, 0, BT_TRANSPORT_BR_EDR);
- /* if SCO is open close SCO and wait on RFCOMM close */
- if (bta_ag_sco_is_open(p_scb))
- {
- p_scb->post_sco = BTA_AG_POST_SCO_CLOSE_RFC;
- }
- else
- {
- p_scb->post_sco = BTA_AG_POST_SCO_NONE;
- bta_ag_rfc_do_close(p_scb, p_data);
- }
+ /* if SCO is open close SCO and wait on RFCOMM close */
+ if (bta_ag_sco_is_open(p_scb)) {
+ p_scb->post_sco = BTA_AG_POST_SCO_CLOSE_RFC;
+ } else {
+ p_scb->post_sco = BTA_AG_POST_SCO_NONE;
+ bta_ag_rfc_do_close(p_scb, p_data);
+ }
- /* always do SCO shutdown to handle all SCO corner cases */
- bta_ag_sco_shutdown(p_scb, p_data);
+ /* always do SCO shutdown to handle all SCO corner cases */
+ bta_ag_sco_shutdown(p_scb, p_data);
}
/*******************************************************************************
@@ -724,23 +664,21 @@
* Returns void
*
******************************************************************************/
-void bta_ag_post_sco_open(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data)
-{
- switch (p_scb->post_sco)
- {
- case BTA_AG_POST_SCO_RING:
- bta_ag_send_ring(p_scb, p_data);
- p_scb->post_sco = BTA_AG_POST_SCO_NONE;
- break;
+void bta_ag_post_sco_open(tBTA_AG_SCB* p_scb, tBTA_AG_DATA* p_data) {
+ switch (p_scb->post_sco) {
+ case BTA_AG_POST_SCO_RING:
+ bta_ag_send_ring(p_scb, p_data);
+ p_scb->post_sco = BTA_AG_POST_SCO_NONE;
+ break;
- case BTA_AG_POST_SCO_CALL_CONN:
- bta_ag_send_call_inds(p_scb, BTA_AG_IN_CALL_CONN_RES);
- p_scb->post_sco = BTA_AG_POST_SCO_NONE;
- break;
+ case BTA_AG_POST_SCO_CALL_CONN:
+ bta_ag_send_call_inds(p_scb, BTA_AG_IN_CALL_CONN_RES);
+ p_scb->post_sco = BTA_AG_POST_SCO_NONE;
+ break;
- default:
- break;
- }
+ default:
+ break;
+ }
}
/*******************************************************************************
@@ -753,51 +691,47 @@
* Returns void
*
******************************************************************************/
-void bta_ag_post_sco_close(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data)
-{
- switch (p_scb->post_sco)
- {
- case BTA_AG_POST_SCO_CLOSE_RFC:
- bta_ag_rfc_do_close(p_scb, p_data);
- p_scb->post_sco = BTA_AG_POST_SCO_NONE;
- break;
+void bta_ag_post_sco_close(tBTA_AG_SCB* p_scb, tBTA_AG_DATA* p_data) {
+ switch (p_scb->post_sco) {
+ case BTA_AG_POST_SCO_CLOSE_RFC:
+ bta_ag_rfc_do_close(p_scb, p_data);
+ p_scb->post_sco = BTA_AG_POST_SCO_NONE;
+ break;
- case BTA_AG_POST_SCO_CALL_CONN:
- bta_ag_send_call_inds(p_scb, BTA_AG_IN_CALL_CONN_RES);
- p_scb->post_sco = BTA_AG_POST_SCO_NONE;
- break;
+ case BTA_AG_POST_SCO_CALL_CONN:
+ bta_ag_send_call_inds(p_scb, BTA_AG_IN_CALL_CONN_RES);
+ p_scb->post_sco = BTA_AG_POST_SCO_NONE;
+ break;
- case BTA_AG_POST_SCO_CALL_ORIG:
- bta_ag_send_call_inds(p_scb, BTA_AG_OUT_CALL_ORIG_RES);
- p_scb->post_sco = BTA_AG_POST_SCO_NONE;
- break;
+ case BTA_AG_POST_SCO_CALL_ORIG:
+ bta_ag_send_call_inds(p_scb, BTA_AG_OUT_CALL_ORIG_RES);
+ p_scb->post_sco = BTA_AG_POST_SCO_NONE;
+ break;
- case BTA_AG_POST_SCO_CALL_END:
- bta_ag_send_call_inds(p_scb, BTA_AG_END_CALL_RES);
- p_scb->post_sco = BTA_AG_POST_SCO_NONE;
- break;
+ case BTA_AG_POST_SCO_CALL_END:
+ bta_ag_send_call_inds(p_scb, BTA_AG_END_CALL_RES);
+ p_scb->post_sco = BTA_AG_POST_SCO_NONE;
+ break;
- case BTA_AG_POST_SCO_CALL_END_INCALL:
- bta_ag_send_call_inds(p_scb, BTA_AG_END_CALL_RES);
+ case BTA_AG_POST_SCO_CALL_END_INCALL:
+ bta_ag_send_call_inds(p_scb, BTA_AG_END_CALL_RES);
- /* Sending callsetup IND and Ring were defered to after SCO close. */
- bta_ag_send_call_inds(p_scb, BTA_AG_IN_CALL_RES);
+ /* Sending callsetup IND and Ring were defered to after SCO close. */
+ bta_ag_send_call_inds(p_scb, BTA_AG_IN_CALL_RES);
- if (bta_ag_inband_enabled(p_scb) && !(p_scb->features & BTA_AG_FEAT_NOSCO))
- {
- p_scb->post_sco = BTA_AG_POST_SCO_RING;
- bta_ag_sco_open(p_scb, p_data);
- }
- else
- {
- p_scb->post_sco = BTA_AG_POST_SCO_NONE;
- bta_ag_send_ring(p_scb, p_data);
- }
- break;
+ if (bta_ag_inband_enabled(p_scb) &&
+ !(p_scb->features & BTA_AG_FEAT_NOSCO)) {
+ p_scb->post_sco = BTA_AG_POST_SCO_RING;
+ bta_ag_sco_open(p_scb, p_data);
+ } else {
+ p_scb->post_sco = BTA_AG_POST_SCO_NONE;
+ bta_ag_send_ring(p_scb, p_data);
+ }
+ break;
- default:
- break;
- }
+ default:
+ break;
+ }
}
/*******************************************************************************
@@ -810,38 +744,35 @@
* Returns void
*
******************************************************************************/
-void bta_ag_svc_conn_open(tBTA_AG_SCB *p_scb,
- UNUSED_ATTR tBTA_AG_DATA *p_data)
-{
- tBTA_AG_CONN evt;
+void bta_ag_svc_conn_open(tBTA_AG_SCB* p_scb,
+ UNUSED_ATTR tBTA_AG_DATA* p_data) {
+ tBTA_AG_CONN evt;
- if (!p_scb->svc_conn)
- {
- /* set state variable */
- p_scb->svc_conn = true;
+ if (!p_scb->svc_conn) {
+ /* set state variable */
+ p_scb->svc_conn = true;
- /* Clear AT+BIA mask from previous SLC if any. */
- p_scb->bia_masked_out = 0;
+ /* Clear AT+BIA mask from previous SLC if any. */
+ p_scb->bia_masked_out = 0;
- alarm_cancel(p_scb->ring_timer);
+ alarm_cancel(p_scb->ring_timer);
- /* call callback */
- evt.hdr.handle = bta_ag_scb_to_idx(p_scb);
- evt.hdr.app_id = p_scb->app_id;
- evt.peer_feat = p_scb->peer_features;
- bdcpy(evt.bd_addr, p_scb->peer_addr);
+ /* call callback */
+ evt.hdr.handle = bta_ag_scb_to_idx(p_scb);
+ evt.hdr.app_id = p_scb->app_id;
+ evt.peer_feat = p_scb->peer_features;
+ bdcpy(evt.bd_addr, p_scb->peer_addr);
#if (BTM_WBS_INCLUDED == TRUE)
- evt.peer_codec = p_scb->peer_codecs;
+ evt.peer_codec = p_scb->peer_codecs;
#endif
- if ((p_scb->call_ind != BTA_AG_CALL_INACTIVE) ||
- (p_scb->callsetup_ind != BTA_AG_CALLSETUP_NONE))
- {
- bta_sys_sco_use(BTA_ID_AG, p_scb->app_id, p_scb->peer_addr);
- }
-
- (*bta_ag_cb.p_cback)(BTA_AG_CONN_EVT, (tBTA_AG *) &evt);
+ if ((p_scb->call_ind != BTA_AG_CALL_INACTIVE) ||
+ (p_scb->callsetup_ind != BTA_AG_CALLSETUP_NONE)) {
+ bta_sys_sco_use(BTA_ID_AG, p_scb->app_id, p_scb->peer_addr);
}
+
+ (*bta_ag_cb.p_cback)(BTA_AG_CONN_EVT, (tBTA_AG*)&evt);
+ }
}
/*******************************************************************************
@@ -853,25 +784,22 @@
* Returns void
*
******************************************************************************/
-void bta_ag_ci_rx_data(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data)
-{
- uint16_t len;
- tBTA_AG_CI_RX_WRITE *p_rx_write_msg = (tBTA_AG_CI_RX_WRITE *)p_data;
- char *p_data_area = (char *)(p_rx_write_msg+1); /* Point to data area after header */
+void bta_ag_ci_rx_data(tBTA_AG_SCB* p_scb, tBTA_AG_DATA* p_data) {
+ uint16_t len;
+ tBTA_AG_CI_RX_WRITE* p_rx_write_msg = (tBTA_AG_CI_RX_WRITE*)p_data;
+ char* p_data_area =
+ (char*)(p_rx_write_msg + 1); /* Point to data area after header */
- APPL_TRACE_DEBUG("bta_ag_ci_rx_data:");
- /* send to RFCOMM */
- bta_sys_busy(BTA_ID_AG, p_scb->app_id, p_scb->peer_addr);
- PORT_WriteData(p_scb->conn_handle, p_data_area, strlen(p_data_area), &len);
- if ((p_scb->sco_idx != BTM_INVALID_SCO_INDEX) && bta_ag_sco_is_open(p_scb))
- {
- APPL_TRACE_DEBUG ("bta_ag_rfc_data, change link policy for SCO");
- bta_sys_sco_open(BTA_ID_AG, p_scb->app_id, p_scb->peer_addr);
- }
- else
- {
- bta_sys_idle(BTA_ID_AG, p_scb->app_id, p_scb->peer_addr);
- }
+ APPL_TRACE_DEBUG("bta_ag_ci_rx_data:");
+ /* send to RFCOMM */
+ bta_sys_busy(BTA_ID_AG, p_scb->app_id, p_scb->peer_addr);
+ PORT_WriteData(p_scb->conn_handle, p_data_area, strlen(p_data_area), &len);
+ if ((p_scb->sco_idx != BTM_INVALID_SCO_INDEX) && bta_ag_sco_is_open(p_scb)) {
+ APPL_TRACE_DEBUG("bta_ag_rfc_data, change link policy for SCO");
+ bta_sys_sco_open(BTA_ID_AG, p_scb->app_id, p_scb->peer_addr);
+ } else {
+ bta_sys_idle(BTA_ID_AG, p_scb->app_id, p_scb->peer_addr);
+ }
}
/*******************************************************************************
@@ -883,16 +811,16 @@
* Returns void
*
******************************************************************************/
-void bta_ag_rcvd_slc_ready(tBTA_AG_SCB *p_scb,
- UNUSED_ATTR tBTA_AG_DATA *p_data)
-{
- APPL_TRACE_DEBUG("bta_ag_rcvd_slc_ready: handle = %d", bta_ag_scb_to_idx(p_scb));
+void bta_ag_rcvd_slc_ready(tBTA_AG_SCB* p_scb,
+ UNUSED_ATTR tBTA_AG_DATA* p_data) {
+ APPL_TRACE_DEBUG("bta_ag_rcvd_slc_ready: handle = %d",
+ bta_ag_scb_to_idx(p_scb));
- if (bta_ag_cb.parse_mode == BTA_AG_PASS_THROUGH)
- {
- /* In pass-through mode, BTA knows that SLC is ready only through call-in. */
- bta_ag_svc_conn_open(p_scb, NULL);
- }
+ if (bta_ag_cb.parse_mode == BTA_AG_PASS_THROUGH) {
+ /* In pass-through mode, BTA knows that SLC is ready only through call-in.
+ */
+ bta_ag_svc_conn_open(p_scb, NULL);
+ }
}
/*******************************************************************************
@@ -905,41 +833,36 @@
* Returns void
*
******************************************************************************/
-void bta_ag_setcodec(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data)
-{
+void bta_ag_setcodec(tBTA_AG_SCB* p_scb, tBTA_AG_DATA* p_data) {
#if (BTM_WBS_INCLUDED == TRUE)
- tBTA_AG_PEER_CODEC codec_type = p_data->api_setcodec.codec;
- tBTA_AG_VAL val;
+ tBTA_AG_PEER_CODEC codec_type = p_data->api_setcodec.codec;
+ tBTA_AG_VAL val;
- /* Check if the requested codec type is valid */
- if((codec_type != BTA_AG_CODEC_NONE) &&
- (codec_type != BTA_AG_CODEC_CVSD) &&
- (codec_type != BTA_AG_CODEC_MSBC))
- {
- val.num = codec_type;
- val.hdr.status = BTA_AG_FAIL_RESOURCES;
- APPL_TRACE_ERROR("bta_ag_setcodec error: unsupported codec type %d", codec_type);
- (*bta_ag_cb.p_cback)(BTA_AG_WBS_EVT, (tBTA_AG *) &val);
- return;
- }
+ /* Check if the requested codec type is valid */
+ if ((codec_type != BTA_AG_CODEC_NONE) && (codec_type != BTA_AG_CODEC_CVSD) &&
+ (codec_type != BTA_AG_CODEC_MSBC)) {
+ val.num = codec_type;
+ val.hdr.status = BTA_AG_FAIL_RESOURCES;
+ APPL_TRACE_ERROR("bta_ag_setcodec error: unsupported codec type %d",
+ codec_type);
+ (*bta_ag_cb.p_cback)(BTA_AG_WBS_EVT, (tBTA_AG*)&val);
+ return;
+ }
- if((p_scb->peer_codecs & codec_type) || (codec_type == BTA_AG_CODEC_NONE) ||
- (codec_type == BTA_AG_CODEC_CVSD))
- {
- p_scb->sco_codec = codec_type;
- p_scb->codec_updated = true;
- val.num = codec_type;
- val.hdr.status = BTA_AG_SUCCESS;
- APPL_TRACE_DEBUG("bta_ag_setcodec: Updated codec type %d", codec_type);
- }
- else
- {
- val.num = codec_type;
- val.hdr.status = BTA_AG_FAIL_RESOURCES;
- APPL_TRACE_ERROR("bta_ag_setcodec error: unsupported codec type %d", codec_type);
- }
+ if ((p_scb->peer_codecs & codec_type) || (codec_type == BTA_AG_CODEC_NONE) ||
+ (codec_type == BTA_AG_CODEC_CVSD)) {
+ p_scb->sco_codec = codec_type;
+ p_scb->codec_updated = true;
+ val.num = codec_type;
+ val.hdr.status = BTA_AG_SUCCESS;
+ APPL_TRACE_DEBUG("bta_ag_setcodec: Updated codec type %d", codec_type);
+ } else {
+ val.num = codec_type;
+ val.hdr.status = BTA_AG_FAIL_RESOURCES;
+ APPL_TRACE_ERROR("bta_ag_setcodec error: unsupported codec type %d",
+ codec_type);
+ }
- (*bta_ag_cb.p_cback)(BTA_AG_WBS_EVT, (tBTA_AG *) &val);
+ (*bta_ag_cb.p_cback)(BTA_AG_WBS_EVT, (tBTA_AG*)&val);
#endif
}
-
diff --git a/bta/ag/bta_ag_api.cc b/bta/ag/bta_ag_api.cc
index a0f39ac..6df3a1e 100644
--- a/bta/ag/bta_ag_api.cc
+++ b/bta/ag/bta_ag_api.cc
@@ -24,22 +24,18 @@
*
******************************************************************************/
+#include "bta_ag_api.h"
+#include <string.h>
+#include "bt_common.h"
+#include "bta_ag_int.h"
#include "bta_api.h"
#include "bta_sys.h"
-#include "bta_ag_api.h"
-#include "bta_ag_int.h"
-#include "bt_common.h"
-#include <string.h>
/*****************************************************************************
* Constants
****************************************************************************/
-static const tBTA_SYS_REG bta_ag_reg =
-{
- bta_ag_hdl_event,
- BTA_AgDisable
-};
+static const tBTA_SYS_REG bta_ag_reg = {bta_ag_hdl_event, BTA_AgDisable};
/*******************************************************************************
*
@@ -54,28 +50,28 @@
* Returns BTA_SUCCESS if OK, BTA_FAILURE otherwise.
*
******************************************************************************/
-tBTA_STATUS BTA_AgEnable(tBTA_AG_PARSE_MODE parse_mode, tBTA_AG_CBACK *p_cback)
-{
- /* Error if AG is already enabled, or AG is in the middle of disabling. */
- for (int idx = 0; idx < BTA_AG_NUM_SCB; idx++) {
- if (bta_ag_cb.scb[idx].in_use) {
- APPL_TRACE_ERROR ("BTA_AgEnable: FAILED, AG already enabled.");
- return BTA_FAILURE;
- }
+tBTA_STATUS BTA_AgEnable(tBTA_AG_PARSE_MODE parse_mode,
+ tBTA_AG_CBACK* p_cback) {
+ /* Error if AG is already enabled, or AG is in the middle of disabling. */
+ for (int idx = 0; idx < BTA_AG_NUM_SCB; idx++) {
+ if (bta_ag_cb.scb[idx].in_use) {
+ APPL_TRACE_ERROR("BTA_AgEnable: FAILED, AG already enabled.");
+ return BTA_FAILURE;
}
+ }
- /* register with BTA system manager */
- bta_sys_register(BTA_ID_AG, &bta_ag_reg);
+ /* register with BTA system manager */
+ bta_sys_register(BTA_ID_AG, &bta_ag_reg);
- tBTA_AG_API_ENABLE *p_buf =
- (tBTA_AG_API_ENABLE *)osi_malloc(sizeof(tBTA_AG_API_ENABLE));
- p_buf->hdr.event = BTA_AG_API_ENABLE_EVT;
- p_buf->parse_mode = parse_mode;
- p_buf->p_cback = p_cback;
+ tBTA_AG_API_ENABLE* p_buf =
+ (tBTA_AG_API_ENABLE*)osi_malloc(sizeof(tBTA_AG_API_ENABLE));
+ p_buf->hdr.event = BTA_AG_API_ENABLE_EVT;
+ p_buf->parse_mode = parse_mode;
+ p_buf->p_cback = p_cback;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
- return BTA_SUCCESS;
+ return BTA_SUCCESS;
}
/*******************************************************************************
@@ -88,13 +84,12 @@
* Returns void
*
******************************************************************************/
-void BTA_AgDisable(void)
-{
- BT_HDR *p_buf = (BT_HDR *)osi_malloc(sizeof(BT_HDR));
+void BTA_AgDisable(void) {
+ BT_HDR* p_buf = (BT_HDR*)osi_malloc(sizeof(BT_HDR));
- p_buf->event = BTA_AG_API_DISABLE_EVT;
+ p_buf->event = BTA_AG_API_DISABLE_EVT;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -107,25 +102,25 @@
* Returns void
*
******************************************************************************/
-void BTA_AgRegister(tBTA_SERVICE_MASK services, tBTA_SEC sec_mask,tBTA_AG_FEAT features,
- const char * p_service_names[], uint8_t app_id)
-{
- tBTA_AG_API_REGISTER *p_buf =
- (tBTA_AG_API_REGISTER *)osi_malloc(sizeof(tBTA_AG_API_REGISTER));
+void BTA_AgRegister(tBTA_SERVICE_MASK services, tBTA_SEC sec_mask,
+ tBTA_AG_FEAT features, const char* p_service_names[],
+ uint8_t app_id) {
+ tBTA_AG_API_REGISTER* p_buf =
+ (tBTA_AG_API_REGISTER*)osi_malloc(sizeof(tBTA_AG_API_REGISTER));
- p_buf->hdr.event = BTA_AG_API_REGISTER_EVT;
- p_buf->features = features;
- p_buf->sec_mask = sec_mask;
- p_buf->services = services;
- p_buf->app_id = app_id;
- for (int i = 0; i < BTA_AG_NUM_IDX; i++) {
- if (p_service_names[i])
- strlcpy(p_buf->p_name[i], p_service_names[i], BTA_SERVICE_NAME_LEN);
- else
- p_buf->p_name[i][0] = 0;
- }
+ p_buf->hdr.event = BTA_AG_API_REGISTER_EVT;
+ p_buf->features = features;
+ p_buf->sec_mask = sec_mask;
+ p_buf->services = services;
+ p_buf->app_id = app_id;
+ for (int i = 0; i < BTA_AG_NUM_IDX; i++) {
+ if (p_service_names[i])
+ strlcpy(p_buf->p_name[i], p_service_names[i], BTA_SERVICE_NAME_LEN);
+ else
+ p_buf->p_name[i][0] = 0;
+ }
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -138,14 +133,13 @@
* Returns void
*
******************************************************************************/
-void BTA_AgDeregister(uint16_t handle)
-{
- BT_HDR *p_buf = (BT_HDR *)osi_malloc(sizeof(BT_HDR));
+void BTA_AgDeregister(uint16_t handle) {
+ BT_HDR* p_buf = (BT_HDR*)osi_malloc(sizeof(BT_HDR));
- p_buf->event = BTA_AG_API_DEREGISTER_EVT;
- p_buf->layer_specific = handle;
+ p_buf->event = BTA_AG_API_DEREGISTER_EVT;
+ p_buf->layer_specific = handle;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -161,18 +155,18 @@
* Returns void
*
******************************************************************************/
-void BTA_AgOpen(uint16_t handle, BD_ADDR bd_addr, tBTA_SEC sec_mask, tBTA_SERVICE_MASK services)
-{
- tBTA_AG_API_OPEN *p_buf =
- (tBTA_AG_API_OPEN *)osi_malloc(sizeof(tBTA_AG_API_OPEN));
+void BTA_AgOpen(uint16_t handle, BD_ADDR bd_addr, tBTA_SEC sec_mask,
+ tBTA_SERVICE_MASK services) {
+ tBTA_AG_API_OPEN* p_buf =
+ (tBTA_AG_API_OPEN*)osi_malloc(sizeof(tBTA_AG_API_OPEN));
- p_buf->hdr.event = BTA_AG_API_OPEN_EVT;
- p_buf->hdr.layer_specific = handle;
- bdcpy(p_buf->bd_addr, bd_addr);
- p_buf->services = services;
- p_buf->sec_mask = sec_mask;
+ p_buf->hdr.event = BTA_AG_API_OPEN_EVT;
+ p_buf->hdr.layer_specific = handle;
+ bdcpy(p_buf->bd_addr, bd_addr);
+ p_buf->services = services;
+ p_buf->sec_mask = sec_mask;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -186,14 +180,13 @@
* Returns void
*
******************************************************************************/
-void BTA_AgClose(uint16_t handle)
-{
- BT_HDR *p_buf = (BT_HDR *)osi_malloc(sizeof(BT_HDR));
+void BTA_AgClose(uint16_t handle) {
+ BT_HDR* p_buf = (BT_HDR*)osi_malloc(sizeof(BT_HDR));
- p_buf->event = BTA_AG_API_CLOSE_EVT;
- p_buf->layer_specific = handle;
+ p_buf->event = BTA_AG_API_CLOSE_EVT;
+ p_buf->layer_specific = handle;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -207,14 +200,13 @@
* Returns void
*
******************************************************************************/
-void BTA_AgAudioOpen(uint16_t handle)
-{
- BT_HDR *p_buf = (BT_HDR *)osi_malloc(sizeof(BT_HDR));
+void BTA_AgAudioOpen(uint16_t handle) {
+ BT_HDR* p_buf = (BT_HDR*)osi_malloc(sizeof(BT_HDR));
- p_buf->event = BTA_AG_API_AUDIO_OPEN_EVT;
- p_buf->layer_specific = handle;
+ p_buf->event = BTA_AG_API_AUDIO_OPEN_EVT;
+ p_buf->layer_specific = handle;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -228,14 +220,13 @@
* Returns void
*
******************************************************************************/
-void BTA_AgAudioClose(uint16_t handle)
-{
- BT_HDR *p_buf = (BT_HDR *)osi_malloc(sizeof(BT_HDR));
+void BTA_AgAudioClose(uint16_t handle) {
+ BT_HDR* p_buf = (BT_HDR*)osi_malloc(sizeof(BT_HDR));
- p_buf->event = BTA_AG_API_AUDIO_CLOSE_EVT;
- p_buf->layer_specific = handle;
+ p_buf->event = BTA_AG_API_AUDIO_CLOSE_EVT;
+ p_buf->layer_specific = handle;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -250,18 +241,17 @@
* Returns void
*
******************************************************************************/
-void BTA_AgResult(uint16_t handle, tBTA_AG_RES result, tBTA_AG_RES_DATA *p_data)
-{
- tBTA_AG_API_RESULT *p_buf =
- (tBTA_AG_API_RESULT *)osi_malloc(sizeof(tBTA_AG_API_RESULT));
+void BTA_AgResult(uint16_t handle, tBTA_AG_RES result,
+ tBTA_AG_RES_DATA* p_data) {
+ tBTA_AG_API_RESULT* p_buf =
+ (tBTA_AG_API_RESULT*)osi_malloc(sizeof(tBTA_AG_API_RESULT));
- p_buf->hdr.event = BTA_AG_API_RESULT_EVT;
- p_buf->hdr.layer_specific = handle;
- p_buf->result = result;
- if (p_data)
- memcpy(&p_buf->data, p_data, sizeof(p_buf->data));
+ p_buf->hdr.event = BTA_AG_API_RESULT_EVT;
+ p_buf->hdr.layer_specific = handle;
+ p_buf->result = result;
+ if (p_data) memcpy(&p_buf->data, p_data, sizeof(p_buf->data));
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -276,14 +266,13 @@
* Returns void
*
******************************************************************************/
-void BTA_AgSetCodec(uint16_t handle, tBTA_AG_PEER_CODEC codec)
-{
- tBTA_AG_API_SETCODEC *p_buf =
- (tBTA_AG_API_SETCODEC *)osi_malloc(sizeof(tBTA_AG_API_SETCODEC));
+void BTA_AgSetCodec(uint16_t handle, tBTA_AG_PEER_CODEC codec) {
+ tBTA_AG_API_SETCODEC* p_buf =
+ (tBTA_AG_API_SETCODEC*)osi_malloc(sizeof(tBTA_AG_API_SETCODEC));
- p_buf->hdr.event = BTA_AG_API_SETCODEC_EVT;
- p_buf->hdr.layer_specific = handle;
- p_buf->codec = codec;
+ p_buf->hdr.event = BTA_AG_API_SETCODEC_EVT;
+ p_buf->hdr.layer_specific = handle;
+ p_buf->codec = codec;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
diff --git a/bta/ag/bta_ag_at.cc b/bta/ag/bta_ag_at.cc
index ccd21a3..3e4868b 100644
--- a/bta/ag/bta_ag_at.cc
+++ b/bta/ag/bta_ag_at.cc
@@ -24,7 +24,6 @@
#include <string.h>
-#include "bta_ag_at.h"
#include "bt_common.h"
#include "bta_ag_at.h"
#include "utl.h"
@@ -43,10 +42,9 @@
* Returns void
*
*****************************************************************************/
-void bta_ag_at_init(tBTA_AG_AT_CB *p_cb)
-{
- p_cb->p_cmd_buf = NULL;
- p_cb->cmd_pos = 0;
+void bta_ag_at_init(tBTA_AG_AT_CB* p_cb) {
+ p_cb->p_cmd_buf = NULL;
+ p_cb->cmd_pos = 0;
}
/******************************************************************************
@@ -61,10 +59,9 @@
* Returns void
*
*****************************************************************************/
-void bta_ag_at_reinit(tBTA_AG_AT_CB *p_cb)
-{
- osi_free_and_reset((void **)&p_cb->p_cmd_buf);
- p_cb->cmd_pos = 0;
+void bta_ag_at_reinit(tBTA_AG_AT_CB* p_cb) {
+ osi_free_and_reset((void**)&p_cb->p_cmd_buf);
+ p_cb->cmd_pos = 0;
}
/******************************************************************************
@@ -79,101 +76,78 @@
* Returns void
*
*****************************************************************************/
-void bta_ag_process_at(tBTA_AG_AT_CB *p_cb)
-{
- uint16_t idx;
- uint8_t arg_type;
- char *p_arg;
- int16_t int_arg = 0;
- /* loop through at command table looking for match */
- for (idx = 0; p_cb->p_at_tbl[idx].p_cmd[0] != 0; idx++)
+void bta_ag_process_at(tBTA_AG_AT_CB* p_cb) {
+ uint16_t idx;
+ uint8_t arg_type;
+ char* p_arg;
+ int16_t int_arg = 0;
+ /* loop through at command table looking for match */
+ for (idx = 0; p_cb->p_at_tbl[idx].p_cmd[0] != 0; idx++) {
+ if (!utl_strucmp(p_cb->p_at_tbl[idx].p_cmd, p_cb->p_cmd_buf)) {
+ break;
+ }
+ }
+
+ /* if there is a match; verify argument type */
+ if (p_cb->p_at_tbl[idx].p_cmd[0] != 0) {
+ /* start of argument is p + strlen matching command */
+ p_arg = p_cb->p_cmd_buf + strlen(p_cb->p_at_tbl[idx].p_cmd);
+
+ /* if no argument */
+ if (p_arg[0] == 0) {
+ arg_type = BTA_AG_AT_NONE;
+ }
+ /* else if arg is '?' and it is last character */
+ else if (p_arg[0] == '?' && p_arg[1] == 0) {
+ /* we have a read */
+ arg_type = BTA_AG_AT_READ;
+ }
+ /* else if arg is '=' */
+ else if (p_arg[0] == '=' && p_arg[1] != 0) {
+ if (p_arg[1] == '?' && p_arg[2] == 0) {
+ /* we have a test */
+ arg_type = BTA_AG_AT_TEST;
+ } else {
+ /* we have a set */
+ arg_type = BTA_AG_AT_SET;
+
+ /* skip past '=' */
+ p_arg++;
+ }
+ } else
+ /* else it is freeform argument */
{
- if (!utl_strucmp(p_cb->p_at_tbl[idx].p_cmd, p_cb->p_cmd_buf))
- {
- break;
- }
+ arg_type = BTA_AG_AT_FREE;
}
- /* if there is a match; verify argument type */
- if (p_cb->p_at_tbl[idx].p_cmd[0] != 0)
- {
- /* start of argument is p + strlen matching command */
- p_arg = p_cb->p_cmd_buf + strlen(p_cb->p_at_tbl[idx].p_cmd);
-
- /* if no argument */
- if (p_arg[0] == 0)
- {
- arg_type = BTA_AG_AT_NONE;
+ /* if arguments match command capabilities */
+ if ((arg_type & p_cb->p_at_tbl[idx].arg_type) != 0) {
+ /* if it's a set integer check max, min range */
+ if (arg_type == BTA_AG_AT_SET &&
+ p_cb->p_at_tbl[idx].fmt == BTA_AG_AT_INT) {
+ int_arg = utl_str2int(p_arg);
+ if (int_arg < (int16_t)p_cb->p_at_tbl[idx].min ||
+ int_arg > (int16_t)p_cb->p_at_tbl[idx].max) {
+ /* arg out of range; error */
+ (*p_cb->p_err_cback)(p_cb->p_user, false, NULL);
+ } else {
+ (*p_cb->p_cmd_cback)(p_cb->p_user, p_cb->p_at_tbl[idx].command_id,
+ arg_type, p_arg, int_arg);
}
- /* else if arg is '?' and it is last character */
- else if (p_arg[0] == '?' && p_arg[1] == 0)
- {
- /* we have a read */
- arg_type = BTA_AG_AT_READ;
- }
- /* else if arg is '=' */
- else if (p_arg[0] == '=' && p_arg[1] != 0)
- {
- if (p_arg[1] == '?' && p_arg[2] == 0)
- {
- /* we have a test */
- arg_type = BTA_AG_AT_TEST;
- }
- else
- {
- /* we have a set */
- arg_type = BTA_AG_AT_SET;
-
- /* skip past '=' */
- p_arg++;
- }
- }
- else
- /* else it is freeform argument */
- {
- arg_type = BTA_AG_AT_FREE;
- }
-
- /* if arguments match command capabilities */
- if ((arg_type & p_cb->p_at_tbl[idx].arg_type) != 0)
- {
- /* if it's a set integer check max, min range */
- if (arg_type == BTA_AG_AT_SET &&
- p_cb->p_at_tbl[idx].fmt == BTA_AG_AT_INT)
- {
- int_arg = utl_str2int(p_arg);
- if (int_arg < (int16_t) p_cb->p_at_tbl[idx].min ||
- int_arg > (int16_t) p_cb->p_at_tbl[idx].max)
- {
- /* arg out of range; error */
- (*p_cb->p_err_cback)(p_cb->p_user, false, NULL);
- }
- else
- {
-
- (*p_cb->p_cmd_cback)(p_cb->p_user,
- p_cb->p_at_tbl[idx].command_id,
- arg_type, p_arg, int_arg);
- }
- }
- else
- {
- (*p_cb->p_cmd_cback)(p_cb->p_user,
- p_cb->p_at_tbl[idx].command_id,
- arg_type, p_arg, int_arg);
- }
- }
- /* else error */
- else
- {
- (*p_cb->p_err_cback)(p_cb->p_user, false, NULL);
- }
+ } else {
+ (*p_cb->p_cmd_cback)(p_cb->p_user, p_cb->p_at_tbl[idx].command_id,
+ arg_type, p_arg, int_arg);
+ }
}
- /* else no match call error callback */
- else
- {
- (*p_cb->p_err_cback)(p_cb->p_user, true, p_cb->p_cmd_buf);
+ /* else error */
+ else {
+ (*p_cb->p_err_cback)(p_cb->p_user, false, NULL);
}
+ }
+ /* else no match call error callback */
+ else {
+ (*p_cb->p_err_cback)(p_cb->p_user, true, p_cb->p_cmd_buf);
+ }
}
/******************************************************************************
@@ -188,58 +162,48 @@
* Returns void
*
*****************************************************************************/
-void bta_ag_at_parse(tBTA_AG_AT_CB *p_cb, char *p_buf, uint16_t len)
-{
- int i = 0;
- char* p_save;
+void bta_ag_at_parse(tBTA_AG_AT_CB* p_cb, char* p_buf, uint16_t len) {
+ int i = 0;
+ char* p_save;
- if (p_cb->p_cmd_buf == NULL) {
- p_cb->p_cmd_buf = (char *)osi_malloc(p_cb->cmd_max_len);
- p_cb->cmd_pos = 0;
- }
+ if (p_cb->p_cmd_buf == NULL) {
+ p_cb->p_cmd_buf = (char*)osi_malloc(p_cb->cmd_max_len);
+ p_cb->cmd_pos = 0;
+ }
- for (i = 0; i < len;)
- {
- while (p_cb->cmd_pos < p_cb->cmd_max_len-1 && i < len)
- {
- /* Skip null characters between AT commands. */
- if ((p_cb->cmd_pos == 0) && (p_buf[i] == 0))
- {
- i++;
- continue;
- }
+ for (i = 0; i < len;) {
+ while (p_cb->cmd_pos < p_cb->cmd_max_len - 1 && i < len) {
+ /* Skip null characters between AT commands. */
+ if ((p_cb->cmd_pos == 0) && (p_buf[i] == 0)) {
+ i++;
+ continue;
+ }
- p_cb->p_cmd_buf[p_cb->cmd_pos] = p_buf[i++];
- if ( p_cb->p_cmd_buf[p_cb->cmd_pos] == '\r' || p_cb->p_cmd_buf[p_cb->cmd_pos] == '\n')
- {
- p_cb->p_cmd_buf[p_cb->cmd_pos] = 0;
- if ((p_cb->cmd_pos > 2) &&
- (p_cb->p_cmd_buf[0] == 'A' || p_cb->p_cmd_buf[0] == 'a') &&
- (p_cb->p_cmd_buf[1] == 'T' || p_cb->p_cmd_buf[1] == 't'))
- {
- p_save = p_cb->p_cmd_buf;
- p_cb->p_cmd_buf += 2;
- bta_ag_process_at(p_cb);
- p_cb->p_cmd_buf = p_save;
- }
-
- p_cb->cmd_pos = 0;
-
- }
- else if( p_cb->p_cmd_buf[p_cb->cmd_pos] == 0x1A || p_cb->p_cmd_buf[p_cb->cmd_pos] == 0x1B )
- {
- p_cb->p_cmd_buf[++p_cb->cmd_pos] = 0;
- (*p_cb->p_err_cback)(p_cb->p_user, true, p_cb->p_cmd_buf);
- p_cb->cmd_pos = 0;
- }
- else
- {
- ++p_cb->cmd_pos;
- }
+ p_cb->p_cmd_buf[p_cb->cmd_pos] = p_buf[i++];
+ if (p_cb->p_cmd_buf[p_cb->cmd_pos] == '\r' ||
+ p_cb->p_cmd_buf[p_cb->cmd_pos] == '\n') {
+ p_cb->p_cmd_buf[p_cb->cmd_pos] = 0;
+ if ((p_cb->cmd_pos > 2) &&
+ (p_cb->p_cmd_buf[0] == 'A' || p_cb->p_cmd_buf[0] == 'a') &&
+ (p_cb->p_cmd_buf[1] == 'T' || p_cb->p_cmd_buf[1] == 't')) {
+ p_save = p_cb->p_cmd_buf;
+ p_cb->p_cmd_buf += 2;
+ bta_ag_process_at(p_cb);
+ p_cb->p_cmd_buf = p_save;
}
- if (i < len)
- p_cb->cmd_pos = 0;
- }
-}
+ p_cb->cmd_pos = 0;
+ } else if (p_cb->p_cmd_buf[p_cb->cmd_pos] == 0x1A ||
+ p_cb->p_cmd_buf[p_cb->cmd_pos] == 0x1B) {
+ p_cb->p_cmd_buf[++p_cb->cmd_pos] = 0;
+ (*p_cb->p_err_cback)(p_cb->p_user, true, p_cb->p_cmd_buf);
+ p_cb->cmd_pos = 0;
+ } else {
+ ++p_cb->cmd_pos;
+ }
+ }
+
+ if (i < len) p_cb->cmd_pos = 0;
+ }
+}
diff --git a/bta/ag/bta_ag_at.h b/bta/ag/bta_ag_at.h
index c75a966..f5636e0 100644
--- a/bta/ag/bta_ag_at.h
+++ b/bta/ag/bta_ag_at.h
@@ -33,49 +33,48 @@
****************************************************************************/
/* AT command argument capabilities */
-#define BTA_AG_AT_NONE 0x01 /* no argument */
-#define BTA_AG_AT_SET 0x02 /* set value */
-#define BTA_AG_AT_READ 0x04 /* read value */
-#define BTA_AG_AT_TEST 0x08 /* test value range */
-#define BTA_AG_AT_FREE 0x10 /* freeform argument */
+#define BTA_AG_AT_NONE 0x01 /* no argument */
+#define BTA_AG_AT_SET 0x02 /* set value */
+#define BTA_AG_AT_READ 0x04 /* read value */
+#define BTA_AG_AT_TEST 0x08 /* test value range */
+#define BTA_AG_AT_FREE 0x10 /* freeform argument */
/* AT command argument format */
-#define BTA_AG_AT_STR 0 /* string */
-#define BTA_AG_AT_INT 1 /* integer */
+#define BTA_AG_AT_STR 0 /* string */
+#define BTA_AG_AT_INT 1 /* integer */
/*****************************************************************************
* Data types
****************************************************************************/
/* AT command table element */
-typedef struct
-{
- const char *p_cmd; /* AT command string */
- size_t command_id; /* passed to the callback on p_cmd match */
- uint8_t arg_type; /* allowable argument type syntax */
- uint8_t fmt; /* whether arg is int or string */
- uint8_t min; /* minimum value for int arg */
- int16_t max; /* maximum value for int arg */
+typedef struct {
+ const char* p_cmd; /* AT command string */
+ size_t command_id; /* passed to the callback on p_cmd match */
+ uint8_t arg_type; /* allowable argument type syntax */
+ uint8_t fmt; /* whether arg is int or string */
+ uint8_t min; /* minimum value for int arg */
+ int16_t max; /* maximum value for int arg */
} tBTA_AG_AT_CMD;
/* callback function executed when command is parsed */
-typedef void (tBTA_AG_AT_CMD_CBACK)(void *p_user, uint16_t command_id, uint8_t arg_type,
- char *p_arg, int16_t int_arg);
+typedef void(tBTA_AG_AT_CMD_CBACK)(void* p_user, uint16_t command_id,
+ uint8_t arg_type, char* p_arg,
+ int16_t int_arg);
/* callback function executed to send "ERROR" result code */
-typedef void (tBTA_AG_AT_ERR_CBACK)(void *p_user, bool unknown, char *p_arg);
+typedef void(tBTA_AG_AT_ERR_CBACK)(void* p_user, bool unknown, char* p_arg);
/* AT command parsing control block */
-typedef struct
-{
- tBTA_AG_AT_CMD *p_at_tbl; /* AT command table */
- tBTA_AG_AT_CMD_CBACK *p_cmd_cback; /* command callback */
- tBTA_AG_AT_ERR_CBACK *p_err_cback; /* error callback */
- void *p_user; /* user-defined data */
- char *p_cmd_buf; /* temp parsing buffer */
- uint16_t cmd_pos; /* position in temp buffer */
- uint16_t cmd_max_len; /* length of temp buffer to allocate */
- uint8_t state; /* parsing state */
+typedef struct {
+ tBTA_AG_AT_CMD* p_at_tbl; /* AT command table */
+ tBTA_AG_AT_CMD_CBACK* p_cmd_cback; /* command callback */
+ tBTA_AG_AT_ERR_CBACK* p_err_cback; /* error callback */
+ void* p_user; /* user-defined data */
+ char* p_cmd_buf; /* temp parsing buffer */
+ uint16_t cmd_pos; /* position in temp buffer */
+ uint16_t cmd_max_len; /* length of temp buffer to allocate */
+ uint8_t state; /* parsing state */
} tBTA_AG_AT_CB;
/*****************************************************************************
@@ -92,7 +91,7 @@
* Returns void
*
****************************************************************************/
-extern void bta_ag_at_init(tBTA_AG_AT_CB *p_cb);
+extern void bta_ag_at_init(tBTA_AG_AT_CB* p_cb);
/*****************************************************************************
*
@@ -106,7 +105,7 @@
* Returns void
*
****************************************************************************/
-extern void bta_ag_at_reinit(tBTA_AG_AT_CB *p_cb);
+extern void bta_ag_at_reinit(tBTA_AG_AT_CB* p_cb);
/*****************************************************************************
*
@@ -120,7 +119,7 @@
* Returns void
*
****************************************************************************/
-extern void bta_ag_at_parse(tBTA_AG_AT_CB *p_cb, char *p_buf, uint16_t len);
+extern void bta_ag_at_parse(tBTA_AG_AT_CB* p_cb, char* p_buf, uint16_t len);
#ifdef __cplusplus
}
diff --git a/bta/ag/bta_ag_cfg.cc b/bta/ag/bta_ag_cfg.cc
index 9c43da0..9a1c879 100644
--- a/bta/ag/bta_ag_cfg.cc
+++ b/bta/ag/bta_ag_cfg.cc
@@ -24,57 +24,55 @@
******************************************************************************/
#include "bt_common.h"
-#include "bta_api.h"
#include "bta_ag_api.h"
#include "bta_ag_int.h"
+#include "bta_api.h"
#ifndef BTA_AG_CIND_INFO
-#define BTA_AG_CIND_INFO "(\"call\",(0,1)),(\"callsetup\",(0-3)),(\"service\",(0-3)),(\"signal\",(0-6)),(\"roam\",(0,1)),(\"battchg\",(0-5)),(\"callheld\",(0-2)),(\"bearer\",(0-7))"
+#define BTA_AG_CIND_INFO \
+ "(\"call\",(0,1)),(\"callsetup\",(0-3)),(\"service\",(0-3)),(\"signal\",(0-" \
+ "6)),(\"roam\",(0,1)),(\"battchg\",(0-5)),(\"callheld\",(0-2)),(\"bearer\"," \
+ "(0-7))"
#endif
#ifndef BTA_AG_CHLD_VAL_ECC
-#define BTA_AG_CHLD_VAL_ECC "(0,1,1x,2,2x,3,4)"
+#define BTA_AG_CHLD_VAL_ECC "(0,1,1x,2,2x,3,4)"
#endif
#ifndef BTA_AG_CHLD_VAL
-#define BTA_AG_CHLD_VAL "(0,1,2,3,4)"
+#define BTA_AG_CHLD_VAL "(0,1,2,3,4)"
#endif
#ifndef BTA_AG_CONN_TIMEOUT
-#define BTA_AG_CONN_TIMEOUT 5000
+#define BTA_AG_CONN_TIMEOUT 5000
#endif
#ifndef BTA_AG_SCO_PKT_TYPES
/* S1 packet type setting from HFP 1.5 spec */
-#define BTA_AG_SCO_PKT_TYPES /* BTM_SCO_LINK_ALL_PKT_MASK */ (BTM_SCO_LINK_ONLY_MASK | \
- BTM_SCO_PKT_TYPES_MASK_EV3 | \
- BTM_SCO_PKT_TYPES_MASK_NO_3_EV3 | \
- BTM_SCO_PKT_TYPES_MASK_NO_2_EV5 | \
- BTM_SCO_PKT_TYPES_MASK_NO_3_EV5)
+#define BTA_AG_SCO_PKT_TYPES /* BTM_SCO_LINK_ALL_PKT_MASK */ \
+ (BTM_SCO_LINK_ONLY_MASK | BTM_SCO_PKT_TYPES_MASK_EV3 | \
+ BTM_SCO_PKT_TYPES_MASK_NO_3_EV3 | BTM_SCO_PKT_TYPES_MASK_NO_2_EV5 | \
+ BTM_SCO_PKT_TYPES_MASK_NO_3_EV5)
#endif
#ifndef BTA_AG_BIND_INFO
#define BTA_AG_BIND_INFO "(1)"
#endif
-const tBTA_AG_HF_IND bta_ag_local_hf_ind_cfg[] =
-{
- /* The first row contains the number of indicators. Need to be updated accordingly */
- {BTA_AG_NUM_LOCAL_HF_IND, 0, 0, 0, 0},
+const tBTA_AG_HF_IND bta_ag_local_hf_ind_cfg[] = {
+ /* The first row contains the number of indicators. Need to be updated
+ accordingly */
+ {BTA_AG_NUM_LOCAL_HF_IND, 0, 0, 0, 0},
- {1, 1, 1, 0, 1}, /* Enhanced Driver Status, supported, enabled, range 0 ~ 1 */
- {2, 1, 1, 0, 100} /* Battery Level Status, supported, enabled, range 0 ~ 100 */
+ {1, 1, 1, 0,
+ 1}, /* Enhanced Driver Status, supported, enabled, range 0 ~ 1 */
+ {2, 1, 1, 0,
+ 100} /* Battery Level Status, supported, enabled, range 0 ~ 100 */
};
-const tBTA_AG_CFG bta_ag_cfg =
-{
- BTA_AG_CIND_INFO,
- BTA_AG_BIND_INFO,
- BTA_AG_NUM_LOCAL_HF_IND,
- BTA_AG_CONN_TIMEOUT,
- BTA_AG_SCO_PKT_TYPES,
- BTA_AG_CHLD_VAL_ECC,
- BTA_AG_CHLD_VAL
-};
+const tBTA_AG_CFG bta_ag_cfg = {BTA_AG_CIND_INFO, BTA_AG_BIND_INFO,
+ BTA_AG_NUM_LOCAL_HF_IND, BTA_AG_CONN_TIMEOUT,
+ BTA_AG_SCO_PKT_TYPES, BTA_AG_CHLD_VAL_ECC,
+ BTA_AG_CHLD_VAL};
-tBTA_AG_CFG *p_bta_ag_cfg = (tBTA_AG_CFG *) &bta_ag_cfg;
+tBTA_AG_CFG* p_bta_ag_cfg = (tBTA_AG_CFG*)&bta_ag_cfg;
diff --git a/bta/ag/bta_ag_ci.cc b/bta/ag/bta_ag_ci.cc
index b5959d3..1fde9d8 100644
--- a/bta/ag/bta_ag_ci.cc
+++ b/bta/ag/bta_ag_ci.cc
@@ -24,11 +24,11 @@
#include <string.h>
-#include "bta_api.h"
-#include "bta_ag_api.h"
-#include "bta_ag_int.h"
-#include "bta_ag_ci.h"
#include "bt_common.h"
+#include "bta_ag_api.h"
+#include "bta_ag_ci.h"
+#include "bta_ag_int.h"
+#include "bta_api.h"
/******************************************************************************
*
@@ -41,32 +41,30 @@
* Returns void
*
*****************************************************************************/
-void bta_ag_ci_rx_write(uint16_t handle, char *p_data, uint16_t len)
-{
- uint16_t len_remaining = len;
- char *p_data_area;
+void bta_ag_ci_rx_write(uint16_t handle, char* p_data, uint16_t len) {
+ uint16_t len_remaining = len;
+ char* p_data_area;
- if (len > (RFCOMM_DATA_BUF_SIZE - sizeof(tBTA_AG_CI_RX_WRITE) - 1))
- len = RFCOMM_DATA_BUF_SIZE - sizeof(tBTA_AG_CI_RX_WRITE) - 1;
+ if (len > (RFCOMM_DATA_BUF_SIZE - sizeof(tBTA_AG_CI_RX_WRITE) - 1))
+ len = RFCOMM_DATA_BUF_SIZE - sizeof(tBTA_AG_CI_RX_WRITE) - 1;
- while (len_remaining) {
- if (len_remaining < len)
- len = len_remaining;
+ while (len_remaining) {
+ if (len_remaining < len) len = len_remaining;
- tBTA_AG_CI_RX_WRITE *p_buf =
- (tBTA_AG_CI_RX_WRITE *)osi_malloc(sizeof(tBTA_AG_CI_RX_WRITE) + len + 1);
- p_buf->hdr.event = BTA_AG_CI_RX_WRITE_EVT;
- p_buf->hdr.layer_specific = handle;
+ tBTA_AG_CI_RX_WRITE* p_buf =
+ (tBTA_AG_CI_RX_WRITE*)osi_malloc(sizeof(tBTA_AG_CI_RX_WRITE) + len + 1);
+ p_buf->hdr.event = BTA_AG_CI_RX_WRITE_EVT;
+ p_buf->hdr.layer_specific = handle;
- p_data_area = (char *)(p_buf+1); /* Point to data area after header */
- strncpy(p_data_area, p_data, len);
- p_data_area[len] = 0;
+ p_data_area = (char*)(p_buf + 1); /* Point to data area after header */
+ strncpy(p_data_area, p_data, len);
+ p_data_area[len] = 0;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
- len_remaining -= len;
- p_data += len;
- }
+ len_remaining -= len;
+ p_data += len;
+ }
}
/******************************************************************************
@@ -80,12 +78,11 @@
* Returns void
*
*****************************************************************************/
-void bta_ag_ci_slc_ready(uint16_t handle)
-{
- tBTA_AG_DATA *p_buf = (tBTA_AG_DATA *)osi_malloc(sizeof(tBTA_AG_DATA));
+void bta_ag_ci_slc_ready(uint16_t handle) {
+ tBTA_AG_DATA* p_buf = (tBTA_AG_DATA*)osi_malloc(sizeof(tBTA_AG_DATA));
- p_buf->hdr.event = BTA_AG_CI_SLC_READY_EVT;
- p_buf->hdr.layer_specific = handle;
+ p_buf->hdr.event = BTA_AG_CI_SLC_READY_EVT;
+ p_buf->hdr.layer_specific = handle;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
diff --git a/bta/ag/bta_ag_cmd.cc b/bta/ag/bta_ag_cmd.cc
index 5a78cb0..faa7de6 100644
--- a/bta/ag/bta_ag_cmd.cc
+++ b/bta/ag/bta_ag_cmd.cc
@@ -22,6 +22,7 @@
#include <stdio.h>
#include <string.h>
+#include "bt_common.h"
#include "bt_target.h"
#include "bt_types.h"
#include "bta_ag_api.h"
@@ -29,189 +30,176 @@
#include "bta_ag_int.h"
#include "bta_api.h"
#include "bta_sys.h"
-#include "bt_common.h"
-#include "osi/include/osi.h"
#include "osi/include/log.h"
+#include "osi/include/osi.h"
#include "port_api.h"
#include "utl.h"
-
/*****************************************************************************
* Constants
****************************************************************************/
/* Ring timeout */
-#define BTA_AG_RING_TIMEOUT_MS (5 * 1000) /* 5 seconds */
+#define BTA_AG_RING_TIMEOUT_MS (5 * 1000) /* 5 seconds */
-#define BTA_AG_CMD_MAX_VAL 32767 /* Maximum value is signed 16-bit value */
+#define BTA_AG_CMD_MAX_VAL 32767 /* Maximum value is signed 16-bit value */
/* Invalid Chld command */
-#define BTA_AG_INVALID_CHLD 255
+#define BTA_AG_INVALID_CHLD 255
/* clip type constants */
-#define BTA_AG_CLIP_TYPE_MIN 128
-#define BTA_AG_CLIP_TYPE_MAX 175
-#define BTA_AG_CLIP_TYPE_DEFAULT 129
-#define BTA_AG_CLIP_TYPE_VOIP 255
+#define BTA_AG_CLIP_TYPE_MIN 128
+#define BTA_AG_CLIP_TYPE_MAX 175
+#define BTA_AG_CLIP_TYPE_DEFAULT 129
+#define BTA_AG_CLIP_TYPE_VOIP 255
-#define COLON_IDX_4_VGSVGM 4
+#define COLON_IDX_4_VGSVGM 4
/* Local events which will not trigger a higher layer callback */
-enum
-{
- BTA_AG_LOCAL_EVT_FIRST = 0x100,
- BTA_AG_LOCAL_EVT_CCWA,
- BTA_AG_LOCAL_EVT_CLIP,
- BTA_AG_LOCAL_EVT_CMER,
- BTA_AG_LOCAL_EVT_BRSF,
- BTA_AG_LOCAL_EVT_CMEE,
- BTA_AG_LOCAL_EVT_BIA,
- BTA_AG_LOCAL_EVT_BCC,
+enum {
+ BTA_AG_LOCAL_EVT_FIRST = 0x100,
+ BTA_AG_LOCAL_EVT_CCWA,
+ BTA_AG_LOCAL_EVT_CLIP,
+ BTA_AG_LOCAL_EVT_CMER,
+ BTA_AG_LOCAL_EVT_BRSF,
+ BTA_AG_LOCAL_EVT_CMEE,
+ BTA_AG_LOCAL_EVT_BIA,
+ BTA_AG_LOCAL_EVT_BCC,
};
/* AT command interpreter table for HSP */
-const tBTA_AG_AT_CMD bta_ag_hsp_cmd[] =
-{
- {"+CKPD", BTA_AG_AT_CKPD_EVT, BTA_AG_AT_SET, BTA_AG_AT_INT, 200, 200},
- {"+VGS", BTA_AG_SPK_EVT, BTA_AG_AT_SET, BTA_AG_AT_INT, 0, 15},
- {"+VGM", BTA_AG_MIC_EVT, BTA_AG_AT_SET, BTA_AG_AT_INT, 0, 15},
+const tBTA_AG_AT_CMD bta_ag_hsp_cmd[] = {
+ {"+CKPD", BTA_AG_AT_CKPD_EVT, BTA_AG_AT_SET, BTA_AG_AT_INT, 200, 200},
+ {"+VGS", BTA_AG_SPK_EVT, BTA_AG_AT_SET, BTA_AG_AT_INT, 0, 15},
+ {"+VGM", BTA_AG_MIC_EVT, BTA_AG_AT_SET, BTA_AG_AT_INT, 0, 15},
/* End-of-table marker used to stop lookup iteration */
- {"", 0, 0, 0, 0, 0}
-};
+ {"", 0, 0, 0, 0, 0}};
/* AT command interpreter table for HFP */
-const tBTA_AG_AT_CMD bta_ag_hfp_cmd[] =
-{
- {"A", BTA_AG_AT_A_EVT, BTA_AG_AT_NONE, BTA_AG_AT_STR, 0, 0},
- {"D", BTA_AG_AT_D_EVT, BTA_AG_AT_NONE | BTA_AG_AT_FREE, BTA_AG_AT_STR, 0, 0},
- {"+VGS", BTA_AG_SPK_EVT, BTA_AG_AT_SET, BTA_AG_AT_INT, 0, 15},
- {"+VGM", BTA_AG_MIC_EVT, BTA_AG_AT_SET, BTA_AG_AT_INT, 0, 15},
- {"+CCWA", BTA_AG_LOCAL_EVT_CCWA, BTA_AG_AT_SET, BTA_AG_AT_INT, 0, 1},
+const tBTA_AG_AT_CMD bta_ag_hfp_cmd[] = {
+ {"A", BTA_AG_AT_A_EVT, BTA_AG_AT_NONE, BTA_AG_AT_STR, 0, 0},
+ {"D", BTA_AG_AT_D_EVT, BTA_AG_AT_NONE | BTA_AG_AT_FREE, BTA_AG_AT_STR, 0,
+ 0},
+ {"+VGS", BTA_AG_SPK_EVT, BTA_AG_AT_SET, BTA_AG_AT_INT, 0, 15},
+ {"+VGM", BTA_AG_MIC_EVT, BTA_AG_AT_SET, BTA_AG_AT_INT, 0, 15},
+ {"+CCWA", BTA_AG_LOCAL_EVT_CCWA, BTA_AG_AT_SET, BTA_AG_AT_INT, 0, 1},
/* Consider CHLD as str to take care of indexes for ECC */
- {"+CHLD", BTA_AG_AT_CHLD_EVT, BTA_AG_AT_SET | BTA_AG_AT_TEST, BTA_AG_AT_STR, 0, 4},
- {"+CHUP", BTA_AG_AT_CHUP_EVT, BTA_AG_AT_NONE, BTA_AG_AT_STR, 0, 0},
- {"+CIND", BTA_AG_AT_CIND_EVT, BTA_AG_AT_READ | BTA_AG_AT_TEST, BTA_AG_AT_STR, 0, 0},
- {"+CLIP", BTA_AG_LOCAL_EVT_CLIP, BTA_AG_AT_SET, BTA_AG_AT_INT, 0, 1},
- {"+CMER", BTA_AG_LOCAL_EVT_CMER, BTA_AG_AT_SET, BTA_AG_AT_STR, 0, 0},
- {"+VTS", BTA_AG_AT_VTS_EVT, BTA_AG_AT_SET, BTA_AG_AT_STR, 0, 0},
- {"+BINP", BTA_AG_AT_BINP_EVT, BTA_AG_AT_SET, BTA_AG_AT_INT, 1, 1},
- {"+BLDN", BTA_AG_AT_BLDN_EVT, BTA_AG_AT_NONE, BTA_AG_AT_STR, 0, 0},
- {"+BVRA", BTA_AG_AT_BVRA_EVT, BTA_AG_AT_SET, BTA_AG_AT_INT, 0, 1},
- {"+BRSF", BTA_AG_LOCAL_EVT_BRSF, BTA_AG_AT_SET, BTA_AG_AT_INT, 0, BTA_AG_CMD_MAX_VAL},
- {"+NREC", BTA_AG_AT_NREC_EVT, BTA_AG_AT_SET, BTA_AG_AT_INT, 0, 0},
- {"+CNUM", BTA_AG_AT_CNUM_EVT, BTA_AG_AT_NONE, BTA_AG_AT_STR, 0, 0},
- {"+BTRH", BTA_AG_AT_BTRH_EVT, BTA_AG_AT_READ | BTA_AG_AT_SET, BTA_AG_AT_INT, 0, 2},
- {"+CLCC", BTA_AG_AT_CLCC_EVT, BTA_AG_AT_NONE, BTA_AG_AT_STR, 0, 0},
- {"+COPS", BTA_AG_AT_COPS_EVT, BTA_AG_AT_READ | BTA_AG_AT_SET, BTA_AG_AT_STR, 0, 0},
- {"+CMEE", BTA_AG_LOCAL_EVT_CMEE, BTA_AG_AT_SET, BTA_AG_AT_INT, 0, 1},
- {"+BIA", BTA_AG_LOCAL_EVT_BIA, BTA_AG_AT_SET, BTA_AG_AT_STR, 0, 20},
- {"+CBC", BTA_AG_AT_CBC_EVT, BTA_AG_AT_SET, BTA_AG_AT_INT, 0, 100},
- {"+BCC", BTA_AG_LOCAL_EVT_BCC, BTA_AG_AT_NONE, BTA_AG_AT_STR, 0, 0},
- {"+BCS", BTA_AG_AT_BCS_EVT, BTA_AG_AT_SET, BTA_AG_AT_INT, 0, BTA_AG_CMD_MAX_VAL},
- {"+BIND", BTA_AG_AT_BIND_EVT, BTA_AG_AT_SET | BTA_AG_AT_READ | BTA_AG_AT_TEST, BTA_AG_AT_STR, 0, 0},
- {"+BIEV", BTA_AG_AT_BIEV_EVT, BTA_AG_AT_SET, BTA_AG_AT_STR, 0, 0},
- {"+BAC", BTA_AG_AT_BAC_EVT, BTA_AG_AT_SET, BTA_AG_AT_STR, 0, 0},
+ {"+CHLD", BTA_AG_AT_CHLD_EVT, BTA_AG_AT_SET | BTA_AG_AT_TEST, BTA_AG_AT_STR,
+ 0, 4},
+ {"+CHUP", BTA_AG_AT_CHUP_EVT, BTA_AG_AT_NONE, BTA_AG_AT_STR, 0, 0},
+ {"+CIND", BTA_AG_AT_CIND_EVT, BTA_AG_AT_READ | BTA_AG_AT_TEST,
+ BTA_AG_AT_STR, 0, 0},
+ {"+CLIP", BTA_AG_LOCAL_EVT_CLIP, BTA_AG_AT_SET, BTA_AG_AT_INT, 0, 1},
+ {"+CMER", BTA_AG_LOCAL_EVT_CMER, BTA_AG_AT_SET, BTA_AG_AT_STR, 0, 0},
+ {"+VTS", BTA_AG_AT_VTS_EVT, BTA_AG_AT_SET, BTA_AG_AT_STR, 0, 0},
+ {"+BINP", BTA_AG_AT_BINP_EVT, BTA_AG_AT_SET, BTA_AG_AT_INT, 1, 1},
+ {"+BLDN", BTA_AG_AT_BLDN_EVT, BTA_AG_AT_NONE, BTA_AG_AT_STR, 0, 0},
+ {"+BVRA", BTA_AG_AT_BVRA_EVT, BTA_AG_AT_SET, BTA_AG_AT_INT, 0, 1},
+ {"+BRSF", BTA_AG_LOCAL_EVT_BRSF, BTA_AG_AT_SET, BTA_AG_AT_INT, 0,
+ BTA_AG_CMD_MAX_VAL},
+ {"+NREC", BTA_AG_AT_NREC_EVT, BTA_AG_AT_SET, BTA_AG_AT_INT, 0, 0},
+ {"+CNUM", BTA_AG_AT_CNUM_EVT, BTA_AG_AT_NONE, BTA_AG_AT_STR, 0, 0},
+ {"+BTRH", BTA_AG_AT_BTRH_EVT, BTA_AG_AT_READ | BTA_AG_AT_SET, BTA_AG_AT_INT,
+ 0, 2},
+ {"+CLCC", BTA_AG_AT_CLCC_EVT, BTA_AG_AT_NONE, BTA_AG_AT_STR, 0, 0},
+ {"+COPS", BTA_AG_AT_COPS_EVT, BTA_AG_AT_READ | BTA_AG_AT_SET, BTA_AG_AT_STR,
+ 0, 0},
+ {"+CMEE", BTA_AG_LOCAL_EVT_CMEE, BTA_AG_AT_SET, BTA_AG_AT_INT, 0, 1},
+ {"+BIA", BTA_AG_LOCAL_EVT_BIA, BTA_AG_AT_SET, BTA_AG_AT_STR, 0, 20},
+ {"+CBC", BTA_AG_AT_CBC_EVT, BTA_AG_AT_SET, BTA_AG_AT_INT, 0, 100},
+ {"+BCC", BTA_AG_LOCAL_EVT_BCC, BTA_AG_AT_NONE, BTA_AG_AT_STR, 0, 0},
+ {"+BCS", BTA_AG_AT_BCS_EVT, BTA_AG_AT_SET, BTA_AG_AT_INT, 0,
+ BTA_AG_CMD_MAX_VAL},
+ {"+BIND", BTA_AG_AT_BIND_EVT,
+ BTA_AG_AT_SET | BTA_AG_AT_READ | BTA_AG_AT_TEST, BTA_AG_AT_STR, 0, 0},
+ {"+BIEV", BTA_AG_AT_BIEV_EVT, BTA_AG_AT_SET, BTA_AG_AT_STR, 0, 0},
+ {"+BAC", BTA_AG_AT_BAC_EVT, BTA_AG_AT_SET, BTA_AG_AT_STR, 0, 0},
/* End-of-table marker used to stop lookup iteration */
- {"", 0, 0, 0, 0, 0}
-};
+ {"", 0, 0, 0, 0, 0}};
/* AT result code table element */
-typedef struct
-{
- const char *result_string; /* AT result string */
- size_t result_id; /* Local or BTA result id */
- uint8_t arg_type; /* whether argument is int or string */
+typedef struct {
+ const char* result_string; /* AT result string */
+ size_t result_id; /* Local or BTA result id */
+ uint8_t arg_type; /* whether argument is int or string */
} tBTA_AG_RESULT;
/* AT result code argument types */
-enum
-{
- BTA_AG_RES_FMT_NONE, /* no argument */
- BTA_AG_RES_FMT_INT, /* integer argument */
- BTA_AG_RES_FMT_STR /* string argument */
+enum {
+ BTA_AG_RES_FMT_NONE, /* no argument */
+ BTA_AG_RES_FMT_INT, /* integer argument */
+ BTA_AG_RES_FMT_STR /* string argument */
};
/* Local AT command result codes not defined in bta_ag_api.h */
-enum
-{
- BTA_AG_LOCAL_RES_FIRST = 0x0100,
- BTA_AG_LOCAL_RES_OK,
- BTA_AG_LOCAL_RES_ERROR,
- BTA_AG_LOCAL_RES_RING,
- BTA_AG_LOCAL_RES_CLIP,
- BTA_AG_LOCAL_RES_BRSF,
- BTA_AG_LOCAL_RES_CMEE,
- BTA_AG_LOCAL_RES_BCS
+enum {
+ BTA_AG_LOCAL_RES_FIRST = 0x0100,
+ BTA_AG_LOCAL_RES_OK,
+ BTA_AG_LOCAL_RES_ERROR,
+ BTA_AG_LOCAL_RES_RING,
+ BTA_AG_LOCAL_RES_CLIP,
+ BTA_AG_LOCAL_RES_BRSF,
+ BTA_AG_LOCAL_RES_CMEE,
+ BTA_AG_LOCAL_RES_BCS
};
/* AT result code constant table */
-const tBTA_AG_RESULT bta_ag_result_tbl[] =
-{
- {"OK", BTA_AG_LOCAL_RES_OK, BTA_AG_RES_FMT_NONE},
- {"ERROR", BTA_AG_LOCAL_RES_ERROR, BTA_AG_RES_FMT_NONE},
- {"RING", BTA_AG_LOCAL_RES_RING, BTA_AG_RES_FMT_NONE},
- {"+VGS: ", BTA_AG_SPK_RES, BTA_AG_RES_FMT_INT},
- {"+VGM: ", BTA_AG_MIC_RES, BTA_AG_RES_FMT_INT},
- {"+CCWA: ", BTA_AG_CALL_WAIT_RES, BTA_AG_RES_FMT_STR},
- {"+CHLD: ", BTA_AG_IN_CALL_HELD_RES,BTA_AG_RES_FMT_STR},
- {"+CIND: ", BTA_AG_CIND_RES, BTA_AG_RES_FMT_STR},
- {"+CLIP: ", BTA_AG_LOCAL_RES_CLIP, BTA_AG_RES_FMT_STR},
- {"+CIEV: ", BTA_AG_IND_RES, BTA_AG_RES_FMT_STR},
- {"+BINP: ", BTA_AG_BINP_RES, BTA_AG_RES_FMT_STR},
- {"+BVRA: ", BTA_AG_BVRA_RES, BTA_AG_RES_FMT_INT},
- {"+BRSF: ", BTA_AG_LOCAL_RES_BRSF, BTA_AG_RES_FMT_INT},
+const tBTA_AG_RESULT bta_ag_result_tbl[] = {
+ {"OK", BTA_AG_LOCAL_RES_OK, BTA_AG_RES_FMT_NONE},
+ {"ERROR", BTA_AG_LOCAL_RES_ERROR, BTA_AG_RES_FMT_NONE},
+ {"RING", BTA_AG_LOCAL_RES_RING, BTA_AG_RES_FMT_NONE},
+ {"+VGS: ", BTA_AG_SPK_RES, BTA_AG_RES_FMT_INT},
+ {"+VGM: ", BTA_AG_MIC_RES, BTA_AG_RES_FMT_INT},
+ {"+CCWA: ", BTA_AG_CALL_WAIT_RES, BTA_AG_RES_FMT_STR},
+ {"+CHLD: ", BTA_AG_IN_CALL_HELD_RES, BTA_AG_RES_FMT_STR},
+ {"+CIND: ", BTA_AG_CIND_RES, BTA_AG_RES_FMT_STR},
+ {"+CLIP: ", BTA_AG_LOCAL_RES_CLIP, BTA_AG_RES_FMT_STR},
+ {"+CIEV: ", BTA_AG_IND_RES, BTA_AG_RES_FMT_STR},
+ {"+BINP: ", BTA_AG_BINP_RES, BTA_AG_RES_FMT_STR},
+ {"+BVRA: ", BTA_AG_BVRA_RES, BTA_AG_RES_FMT_INT},
+ {"+BRSF: ", BTA_AG_LOCAL_RES_BRSF, BTA_AG_RES_FMT_INT},
{"+BSIR: ", BTA_AG_INBAND_RING_RES, BTA_AG_RES_FMT_INT},
- {"+CNUM: ", BTA_AG_CNUM_RES, BTA_AG_RES_FMT_STR},
- {"+BTRH: ", BTA_AG_BTRH_RES, BTA_AG_RES_FMT_INT},
- {"+CLCC: ", BTA_AG_CLCC_RES, BTA_AG_RES_FMT_STR},
- {"+COPS: ", BTA_AG_COPS_RES, BTA_AG_RES_FMT_STR},
+ {"+CNUM: ", BTA_AG_CNUM_RES, BTA_AG_RES_FMT_STR},
+ {"+BTRH: ", BTA_AG_BTRH_RES, BTA_AG_RES_FMT_INT},
+ {"+CLCC: ", BTA_AG_CLCC_RES, BTA_AG_RES_FMT_STR},
+ {"+COPS: ", BTA_AG_COPS_RES, BTA_AG_RES_FMT_STR},
{"+CME ERROR: ", BTA_AG_LOCAL_RES_CMEE, BTA_AG_RES_FMT_INT},
- {"+BCS: ", BTA_AG_LOCAL_RES_BCS, BTA_AG_RES_FMT_INT},
- {"+BIND: ", BTA_AG_BIND_RES, BTA_AG_RES_FMT_STR},
- {"", BTA_AG_UNAT_RES, BTA_AG_RES_FMT_STR}
-};
+ {"+BCS: ", BTA_AG_LOCAL_RES_BCS, BTA_AG_RES_FMT_INT},
+ {"+BIND: ", BTA_AG_BIND_RES, BTA_AG_RES_FMT_STR},
+ {"", BTA_AG_UNAT_RES, BTA_AG_RES_FMT_STR}};
-static const tBTA_AG_RESULT* bta_ag_result_by_code(size_t code)
-{
- for (size_t i = 0; i != sizeof(bta_ag_result_tbl) /
- sizeof(bta_ag_result_tbl[0]); ++i)
- {
- if (code == bta_ag_result_tbl[i].result_id)
- return &bta_ag_result_tbl[i];
- }
- return 0;
+static const tBTA_AG_RESULT* bta_ag_result_by_code(size_t code) {
+ for (size_t i = 0;
+ i != sizeof(bta_ag_result_tbl) / sizeof(bta_ag_result_tbl[0]); ++i) {
+ if (code == bta_ag_result_tbl[i].result_id) return &bta_ag_result_tbl[i];
+ }
+ return 0;
}
-const tBTA_AG_AT_CMD *bta_ag_at_tbl[BTA_AG_NUM_IDX] =
-{
- bta_ag_hsp_cmd,
- bta_ag_hfp_cmd
-};
+const tBTA_AG_AT_CMD* bta_ag_at_tbl[BTA_AG_NUM_IDX] = {bta_ag_hsp_cmd,
+ bta_ag_hfp_cmd};
-typedef struct
-{
- size_t result_code;
- size_t indicator;
+typedef struct {
+ size_t result_code;
+ size_t indicator;
} tBTA_AG_INDICATOR_MAP;
/* callsetup indicator value lookup table */
-const tBTA_AG_INDICATOR_MAP callsetup_indicator_map[] =
-{
- {BTA_AG_IN_CALL_RES, BTA_AG_CALLSETUP_INCOMING},
- {BTA_AG_CALL_WAIT_RES, BTA_AG_CALLSETUP_INCOMING},
- {BTA_AG_OUT_CALL_ORIG_RES, BTA_AG_CALLSETUP_OUTGOING},
- {BTA_AG_OUT_CALL_ALERT_RES, BTA_AG_CALLSETUP_ALERTING}
-};
+const tBTA_AG_INDICATOR_MAP callsetup_indicator_map[] = {
+ {BTA_AG_IN_CALL_RES, BTA_AG_CALLSETUP_INCOMING},
+ {BTA_AG_CALL_WAIT_RES, BTA_AG_CALLSETUP_INCOMING},
+ {BTA_AG_OUT_CALL_ORIG_RES, BTA_AG_CALLSETUP_OUTGOING},
+ {BTA_AG_OUT_CALL_ALERT_RES, BTA_AG_CALLSETUP_ALERTING}};
-static size_t bta_ag_indicator_by_result_code(size_t code)
-{
- for (size_t i = 0; i != sizeof(callsetup_indicator_map) /
- sizeof(callsetup_indicator_map[0]); ++i)
- {
- if (code == callsetup_indicator_map[i].result_code)
- return callsetup_indicator_map[i].indicator;
- }
- return BTA_AG_CALLSETUP_NONE;
+static size_t bta_ag_indicator_by_result_code(size_t code) {
+ for (size_t i = 0;
+ i !=
+ sizeof(callsetup_indicator_map) / sizeof(callsetup_indicator_map[0]);
+ ++i) {
+ if (code == callsetup_indicator_map[i].result_code)
+ return callsetup_indicator_map[i].indicator;
+ }
+ return BTA_AG_CALLSETUP_NONE;
}
/*******************************************************************************
@@ -224,62 +212,55 @@
* Returns void
*
******************************************************************************/
-static void bta_ag_send_result(tBTA_AG_SCB *p_scb, size_t code, const char *p_arg,
- int16_t int_arg)
-{
- const tBTA_AG_RESULT *result = bta_ag_result_by_code(code);
- if (result == 0)
- {
- LOG_ERROR(LOG_TAG, "%s Unable to lookup result for code %zu", __func__, code);
- return;
- }
+static void bta_ag_send_result(tBTA_AG_SCB* p_scb, size_t code,
+ const char* p_arg, int16_t int_arg) {
+ const tBTA_AG_RESULT* result = bta_ag_result_by_code(code);
+ if (result == 0) {
+ LOG_ERROR(LOG_TAG, "%s Unable to lookup result for code %zu", __func__,
+ code);
+ return;
+ }
- char buf[BTA_AG_AT_MAX_LEN + 16];
- char *p = buf;
- memset(buf, 0, sizeof(buf));
+ char buf[BTA_AG_AT_MAX_LEN + 16];
+ char* p = buf;
+ memset(buf, 0, sizeof(buf));
- /* init with \r\n */
- *p++ = '\r';
- *p++ = '\n';
+ /* init with \r\n */
+ *p++ = '\r';
+ *p++ = '\n';
- /* copy result code string */
- strlcpy(p, result->result_string, sizeof(buf) - 2);
+ /* copy result code string */
+ strlcpy(p, result->result_string, sizeof(buf) - 2);
- if (p_scb->conn_service == BTA_AG_HSP)
- {
- /* If HSP then ":"symbol should be changed as "=" for HSP compatibility */
- switch(code)
- {
- case BTA_AG_SPK_RES:
- case BTA_AG_MIC_RES:
- if(*(p+COLON_IDX_4_VGSVGM) == ':')
- {
- *(p+COLON_IDX_4_VGSVGM) = '=';
- }
- break;
+ if (p_scb->conn_service == BTA_AG_HSP) {
+ /* If HSP then ":"symbol should be changed as "=" for HSP compatibility */
+ switch (code) {
+ case BTA_AG_SPK_RES:
+ case BTA_AG_MIC_RES:
+ if (*(p + COLON_IDX_4_VGSVGM) == ':') {
+ *(p + COLON_IDX_4_VGSVGM) = '=';
}
+ break;
}
+ }
- p += strlen(result->result_string);
+ p += strlen(result->result_string);
- /* copy argument if any */
- if (result->arg_type == BTA_AG_RES_FMT_INT)
- {
- p += utl_itoa((uint16_t) int_arg, p);
- }
- else if (result->arg_type == BTA_AG_RES_FMT_STR)
- {
- strcpy(p, p_arg);
- p += strlen(p_arg);
- }
+ /* copy argument if any */
+ if (result->arg_type == BTA_AG_RES_FMT_INT) {
+ p += utl_itoa((uint16_t)int_arg, p);
+ } else if (result->arg_type == BTA_AG_RES_FMT_STR) {
+ strcpy(p, p_arg);
+ p += strlen(p_arg);
+ }
- /* finish with \r\n */
- *p++ = '\r';
- *p++ = '\n';
+ /* finish with \r\n */
+ *p++ = '\r';
+ *p++ = '\n';
- /* send to RFCOMM */
- uint16_t len = 0;
- PORT_WriteData(p_scb->conn_handle, buf, (uint16_t) (p - buf), &len);
+ /* send to RFCOMM */
+ uint16_t len = 0;
+ PORT_WriteData(p_scb->conn_handle, buf, (uint16_t)(p - buf), &len);
}
/*******************************************************************************
@@ -292,9 +273,8 @@
* Returns void
*
******************************************************************************/
-static void bta_ag_send_ok(tBTA_AG_SCB *p_scb)
-{
- bta_ag_send_result(p_scb, BTA_AG_LOCAL_RES_OK, NULL, 0);
+static void bta_ag_send_ok(tBTA_AG_SCB* p_scb) {
+ bta_ag_send_result(p_scb, BTA_AG_LOCAL_RES_OK, NULL, 0);
}
/*******************************************************************************
@@ -308,13 +288,12 @@
* Returns void
*
******************************************************************************/
-static void bta_ag_send_error(tBTA_AG_SCB *p_scb, int16_t errcode)
-{
- /* If HFP and extended audio gateway error codes are enabled */
- if (p_scb->conn_service == BTA_AG_HFP && p_scb->cmee_enabled)
- bta_ag_send_result(p_scb, BTA_AG_LOCAL_RES_CMEE, NULL, errcode);
- else
- bta_ag_send_result(p_scb, BTA_AG_LOCAL_RES_ERROR, NULL, 0);
+static void bta_ag_send_error(tBTA_AG_SCB* p_scb, int16_t errcode) {
+ /* If HFP and extended audio gateway error codes are enabled */
+ if (p_scb->conn_service == BTA_AG_HFP && p_scb->cmee_enabled)
+ bta_ag_send_result(p_scb, BTA_AG_LOCAL_RES_CMEE, NULL, errcode);
+ else
+ bta_ag_send_result(p_scb, BTA_AG_LOCAL_RES_ERROR, NULL, 0);
}
/*******************************************************************************
@@ -327,80 +306,66 @@
* Returns void
*
******************************************************************************/
-static void bta_ag_send_ind(tBTA_AG_SCB *p_scb, uint16_t id, uint16_t value, bool on_demand)
-{
- char str[12];
- char *p = str;
+static void bta_ag_send_ind(tBTA_AG_SCB* p_scb, uint16_t id, uint16_t value,
+ bool on_demand) {
+ char str[12];
+ char* p = str;
- /* If the indicator is masked out, just return */
- /* Mandatory indicators can not be masked out. */
- if ((p_scb->bia_masked_out & ((uint32_t)1 << id)) &&
- ((id != BTA_AG_IND_CALL) && (id != BTA_AG_IND_CALLSETUP) && (id != BTA_AG_IND_CALLHELD)))
- return;
+ /* If the indicator is masked out, just return */
+ /* Mandatory indicators can not be masked out. */
+ if ((p_scb->bia_masked_out & ((uint32_t)1 << id)) &&
+ ((id != BTA_AG_IND_CALL) && (id != BTA_AG_IND_CALLSETUP) &&
+ (id != BTA_AG_IND_CALLHELD)))
+ return;
- /* Ensure we do not send duplicate indicators if not requested by app */
- /* If it was requested by app, transmit CIEV even if it is duplicate. */
- if (id == BTA_AG_IND_CALL)
- {
- if ((value == p_scb->call_ind) && (on_demand == false))
- return;
+ /* Ensure we do not send duplicate indicators if not requested by app */
+ /* If it was requested by app, transmit CIEV even if it is duplicate. */
+ if (id == BTA_AG_IND_CALL) {
+ if ((value == p_scb->call_ind) && (on_demand == false)) return;
- p_scb->call_ind = (uint8_t)value;
- }
+ p_scb->call_ind = (uint8_t)value;
+ }
- if ((id == BTA_AG_IND_CALLSETUP) && (on_demand == false))
- {
- if (value == p_scb->callsetup_ind)
- return;
+ if ((id == BTA_AG_IND_CALLSETUP) && (on_demand == false)) {
+ if (value == p_scb->callsetup_ind) return;
- p_scb->callsetup_ind = (uint8_t)value;
- }
+ p_scb->callsetup_ind = (uint8_t)value;
+ }
- if ((id == BTA_AG_IND_SERVICE) && (on_demand == false))
- {
- if (value == p_scb->service_ind)
- return;
+ if ((id == BTA_AG_IND_SERVICE) && (on_demand == false)) {
+ if (value == p_scb->service_ind) return;
- p_scb->service_ind = (uint8_t)value;
- }
- if ((id == BTA_AG_IND_SIGNAL) && (on_demand == false))
- {
- if (value == p_scb->signal_ind)
- return;
+ p_scb->service_ind = (uint8_t)value;
+ }
+ if ((id == BTA_AG_IND_SIGNAL) && (on_demand == false)) {
+ if (value == p_scb->signal_ind) return;
- p_scb->signal_ind = (uint8_t)value;
- }
- if ((id == BTA_AG_IND_ROAM) && (on_demand == false))
- {
- if (value == p_scb->roam_ind)
- return;
+ p_scb->signal_ind = (uint8_t)value;
+ }
+ if ((id == BTA_AG_IND_ROAM) && (on_demand == false)) {
+ if (value == p_scb->roam_ind) return;
- p_scb->roam_ind = (uint8_t)value;
- }
- if ((id == BTA_AG_IND_BATTCHG) && (on_demand == false))
- {
- if (value == p_scb->battchg_ind)
- return;
+ p_scb->roam_ind = (uint8_t)value;
+ }
+ if ((id == BTA_AG_IND_BATTCHG) && (on_demand == false)) {
+ if (value == p_scb->battchg_ind) return;
- p_scb->battchg_ind = (uint8_t)value;
- }
+ p_scb->battchg_ind = (uint8_t)value;
+ }
- if ((id == BTA_AG_IND_CALLHELD) && (on_demand == false))
- {
- /* call swap could result in sending callheld=1 multiple times */
- if ((value != 1) && (value == p_scb->callheld_ind))
- return;
+ if ((id == BTA_AG_IND_CALLHELD) && (on_demand == false)) {
+ /* call swap could result in sending callheld=1 multiple times */
+ if ((value != 1) && (value == p_scb->callheld_ind)) return;
- p_scb->callheld_ind = (uint8_t)value;
- }
+ p_scb->callheld_ind = (uint8_t)value;
+ }
- if (p_scb->cmer_enabled)
- {
- p += utl_itoa(id, p);
- *p++ = ',';
- utl_itoa(value, p);
- bta_ag_send_result(p_scb, BTA_AG_IND_RES, str, 0);
- }
+ if (p_scb->cmer_enabled) {
+ p += utl_itoa(id, p);
+ *p++ = ',';
+ utl_itoa(value, p);
+ bta_ag_send_result(p_scb, BTA_AG_IND_RES, str, 0);
+ }
}
/*******************************************************************************
@@ -413,39 +378,35 @@
* Returns true if parsed ok, false otherwise.
*
******************************************************************************/
-static bool bta_ag_parse_cmer(char *p_s, bool *p_enabled)
-{
- int16_t n[4] = {-1, -1, -1, -1};
- int i;
- char *p;
+static bool bta_ag_parse_cmer(char* p_s, bool* p_enabled) {
+ int16_t n[4] = {-1, -1, -1, -1};
+ int i;
+ char* p;
- for (i = 0; i < 4; i++)
- {
- /* skip to comma delimiter */
- for (p = p_s; *p != ',' && *p != 0; p++);
+ for (i = 0; i < 4; i++) {
+ /* skip to comma delimiter */
+ for (p = p_s; *p != ',' && *p != 0; p++)
+ ;
- /* get integer value */
- *p = 0;
- n[i] = utl_str2int(p_s);
- p_s = p + 1;
- if (p_s == 0)
- {
- break;
- }
+ /* get integer value */
+ *p = 0;
+ n[i] = utl_str2int(p_s);
+ p_s = p + 1;
+ if (p_s == 0) {
+ break;
}
+ }
- /* process values */
- if (n[0] < 0 || n[3] < 0)
- {
- return false;
- }
+ /* process values */
+ if (n[0] < 0 || n[3] < 0) {
+ return false;
+ }
- if ((n[0] == 3) && ((n[3] == 1) || (n[3] == 0)))
- {
- *p_enabled = (bool) n[3];
- }
+ if ((n[0] == 3) && ((n[3] == 1) || (n[3] == 0))) {
+ *p_enabled = (bool)n[3];
+ }
- return true;
+ return true;
}
/*******************************************************************************
@@ -455,35 +416,31 @@
* Description Parse AT+CHLD parameter string.
*
*
- * Returns Returns idx (1-7), 0 if ECC not enabled or BTA_AG_INVALID_CHLD
- if idx doesn't exist/1st character of argument is not a digit
+ * Returns Returns idx (1-7), 0 if ECC not enabled or
+ BTA_AG_INVALID_CHLD
+ if idx doesn't exist/1st character of argument is not a
+ digit
*
******************************************************************************/
-static uint8_t bta_ag_parse_chld(UNUSED_ATTR tBTA_AG_SCB *p_scb, char *p_s)
-{
- uint8_t retval = 0;
- int16_t idx = -1;
+static uint8_t bta_ag_parse_chld(UNUSED_ATTR tBTA_AG_SCB* p_scb, char* p_s) {
+ uint8_t retval = 0;
+ int16_t idx = -1;
- if (!isdigit(p_s[0]))
- {
- return BTA_AG_INVALID_CHLD;
+ if (!isdigit(p_s[0])) {
+ return BTA_AG_INVALID_CHLD;
+ }
+
+ if (p_s[1] != 0) {
+ /* p_idxstr++; point to beginning of call number */
+ idx = utl_str2int(&p_s[1]);
+ if (idx != -1 && idx < 255) {
+ retval = (uint8_t)idx;
+ } else {
+ retval = BTA_AG_INVALID_CHLD;
}
+ }
- if (p_s[1] != 0)
- {
- /* p_idxstr++; point to beginning of call number */
- idx = utl_str2int(&p_s[1]);
- if (idx != -1 && idx < 255)
- {
- retval = (uint8_t)idx;
- }
- else
- {
- retval = BTA_AG_INVALID_CHLD;
- }
- }
-
- return (retval);
+ return (retval);
}
#if (BTM_WBS_INCLUDED == TRUE)
@@ -496,44 +453,44 @@
* Returns Returns bitmap of supported codecs.
*
******************************************************************************/
-static tBTA_AG_PEER_CODEC bta_ag_parse_bac(tBTA_AG_SCB *p_scb, char *p_s)
-{
- tBTA_AG_PEER_CODEC retval = BTA_AG_CODEC_NONE;
- uint16_t uuid_codec;
- bool cont = false; /* Continue processing */
- char *p;
+static tBTA_AG_PEER_CODEC bta_ag_parse_bac(tBTA_AG_SCB* p_scb, char* p_s) {
+ tBTA_AG_PEER_CODEC retval = BTA_AG_CODEC_NONE;
+ uint16_t uuid_codec;
+ bool cont = false; /* Continue processing */
+ char* p;
- while(p_s)
- {
- /* skip to comma delimiter */
- for(p = p_s; *p != ',' && *p != 0; p++);
+ while (p_s) {
+ /* skip to comma delimiter */
+ for (p = p_s; *p != ',' && *p != 0; p++)
+ ;
- /* get integre value */
- if (*p != 0)
- {
- *p = 0;
- cont = true;
- }
- else
- cont = false;
+ /* get integre value */
+ if (*p != 0) {
+ *p = 0;
+ cont = true;
+ } else
+ cont = false;
- uuid_codec = utl_str2int(p_s);
- switch(uuid_codec)
- {
- case UUID_CODEC_CVSD: retval |= BTA_AG_CODEC_CVSD; break;
- case UUID_CODEC_MSBC: retval |= BTA_AG_CODEC_MSBC; break;
- default:
- APPL_TRACE_ERROR("Unknown Codec UUID(%d) received", uuid_codec);
- break;
- }
-
- if (cont)
- p_s = p + 1;
- else
- break;
+ uuid_codec = utl_str2int(p_s);
+ switch (uuid_codec) {
+ case UUID_CODEC_CVSD:
+ retval |= BTA_AG_CODEC_CVSD;
+ break;
+ case UUID_CODEC_MSBC:
+ retval |= BTA_AG_CODEC_MSBC;
+ break;
+ default:
+ APPL_TRACE_ERROR("Unknown Codec UUID(%d) received", uuid_codec);
+ break;
}
- return (retval);
+ if (cont)
+ p_s = p + 1;
+ else
+ break;
+ }
+
+ return (retval);
}
#endif
@@ -541,7 +498,8 @@
*
* Function bta_ag_process_unat_res
*
- * Description Process the unat response data and remove extra carriage return
+ * Description Process the unat response data and remove extra carriage
+ *return
* and line feed
*
*
@@ -549,46 +507,37 @@
*
******************************************************************************/
-static void bta_ag_process_unat_res(char *unat_result)
-{
- uint8_t str_leng;
- uint8_t i = 0;
- uint8_t j = 0;
- uint8_t pairs_of_nl_cr;
- char trim_data[BTA_AG_AT_MAX_LEN];
+static void bta_ag_process_unat_res(char* unat_result) {
+ uint8_t str_leng;
+ uint8_t i = 0;
+ uint8_t j = 0;
+ uint8_t pairs_of_nl_cr;
+ char trim_data[BTA_AG_AT_MAX_LEN];
+ str_leng = strlen(unat_result);
+ /* If no extra CR and LF, just return */
+ if (str_leng < 4) return;
- str_leng = strlen(unat_result);
-
- /* If no extra CR and LF, just return */
- if(str_leng < 4)
- return;
-
- /* Remove the carriage return and left feed */
- while(unat_result[0] =='\r' && unat_result[1] =='\n'
- && unat_result[str_leng-2] =='\r' && unat_result[str_leng-1] =='\n')
- {
- pairs_of_nl_cr = 1;
- for (i=0;i<(str_leng-4*pairs_of_nl_cr);i++)
- {
- trim_data[j++] = unat_result[i+pairs_of_nl_cr*2];
- }
- /* Add EOF */
- trim_data[j] = '\0';
- str_leng = str_leng - 4;
- strlcpy(unat_result, trim_data, str_leng+1);
- i=0;
- j=0;
-
- if(str_leng <4)
- return;
-
-
+ /* Remove the carriage return and left feed */
+ while (unat_result[0] == '\r' && unat_result[1] == '\n' &&
+ unat_result[str_leng - 2] == '\r' &&
+ unat_result[str_leng - 1] == '\n') {
+ pairs_of_nl_cr = 1;
+ for (i = 0; i < (str_leng - 4 * pairs_of_nl_cr); i++) {
+ trim_data[j++] = unat_result[i + pairs_of_nl_cr * 2];
}
- return;
-}
+ /* Add EOF */
+ trim_data[j] = '\0';
+ str_leng = str_leng - 4;
+ strlcpy(unat_result, trim_data, str_leng + 1);
+ i = 0;
+ j = 0;
+ if (str_leng < 4) return;
+ }
+ return;
+}
/*******************************************************************************
*
@@ -600,17 +549,13 @@
* Returns void
*
******************************************************************************/
-bool bta_ag_inband_enabled(tBTA_AG_SCB *p_scb)
-{
- /* if feature is enabled and no other scbs connected */
- if (p_scb->inband_enabled && !bta_ag_other_scb_open(p_scb))
- {
- return true;
- }
- else
- {
- return false;
- }
+bool bta_ag_inband_enabled(tBTA_AG_SCB* p_scb) {
+ /* if feature is enabled and no other scbs connected */
+ if (p_scb->inband_enabled && !bta_ag_other_scb_open(p_scb)) {
+ return true;
+ } else {
+ return false;
+ }
}
/*******************************************************************************
@@ -623,30 +568,25 @@
* Returns void
*
******************************************************************************/
-void bta_ag_send_call_inds(tBTA_AG_SCB *p_scb, tBTA_AG_RES result)
-{
- uint8_t call = p_scb->call_ind;
+void bta_ag_send_call_inds(tBTA_AG_SCB* p_scb, tBTA_AG_RES result) {
+ uint8_t call = p_scb->call_ind;
- /* set new call and callsetup values based on BTA_AgResult */
- size_t callsetup = bta_ag_indicator_by_result_code(result);
+ /* set new call and callsetup values based on BTA_AgResult */
+ size_t callsetup = bta_ag_indicator_by_result_code(result);
- if (result == BTA_AG_END_CALL_RES)
- {
- call = BTA_AG_CALL_INACTIVE;
- }
- else if (result == BTA_AG_IN_CALL_CONN_RES || result == BTA_AG_OUT_CALL_CONN_RES
- || result == BTA_AG_IN_CALL_HELD_RES)
- {
- call = BTA_AG_CALL_ACTIVE;
- }
- else
- {
- call = p_scb->call_ind;
- }
+ if (result == BTA_AG_END_CALL_RES) {
+ call = BTA_AG_CALL_INACTIVE;
+ } else if (result == BTA_AG_IN_CALL_CONN_RES ||
+ result == BTA_AG_OUT_CALL_CONN_RES ||
+ result == BTA_AG_IN_CALL_HELD_RES) {
+ call = BTA_AG_CALL_ACTIVE;
+ } else {
+ call = p_scb->call_ind;
+ }
- /* Send indicator function tracks if the values have actually changed */
- bta_ag_send_ind(p_scb, BTA_AG_IND_CALL, call, false);
- bta_ag_send_ind(p_scb, BTA_AG_IND_CALLSETUP, callsetup, false);
+ /* Send indicator function tracks if the values have actually changed */
+ bta_ag_send_ind(p_scb, BTA_AG_IND_CALL, call, false);
+ bta_ag_send_ind(p_scb, BTA_AG_IND_CALLSETUP, callsetup, false);
}
/*******************************************************************************
@@ -659,22 +599,21 @@
* Returns void
*
******************************************************************************/
-void bta_ag_at_hsp_cback(tBTA_AG_SCB *p_scb, uint16_t command_id, uint8_t arg_type,
- char *p_arg, int16_t int_arg)
-{
- APPL_TRACE_DEBUG("AT cmd:%d arg_type:%d arg:%d arg:%s", command_id, arg_type,
- int_arg, p_arg);
+void bta_ag_at_hsp_cback(tBTA_AG_SCB* p_scb, uint16_t command_id,
+ uint8_t arg_type, char* p_arg, int16_t int_arg) {
+ APPL_TRACE_DEBUG("AT cmd:%d arg_type:%d arg:%d arg:%s", command_id, arg_type,
+ int_arg, p_arg);
- bta_ag_send_ok(p_scb);
+ bta_ag_send_ok(p_scb);
- tBTA_AG_VAL val;
- val.hdr.handle = bta_ag_scb_to_idx(p_scb);
- val.hdr.app_id = p_scb->app_id;
- val.num = (uint16_t) int_arg;
- strlcpy(val.str, p_arg, sizeof(val.str));
+ tBTA_AG_VAL val;
+ val.hdr.handle = bta_ag_scb_to_idx(p_scb);
+ val.hdr.app_id = p_scb->app_id;
+ val.num = (uint16_t)int_arg;
+ strlcpy(val.str, p_arg, sizeof(val.str));
- /* call callback with event */
- (*bta_ag_cb.p_cback)(command_id, (tBTA_AG *) &val);
+ /* call callback with event */
+ (*bta_ag_cb.p_cback)(command_id, (tBTA_AG*)&val);
}
/*******************************************************************************
@@ -689,18 +628,14 @@
* is available.
*
******************************************************************************/
-static int bta_ag_find_empty_hf_ind(tBTA_AG_SCB *p_scb)
-{
- for (int index = 0; index < BTA_AG_MAX_NUM_PEER_HF_IND; index++)
- {
- if (p_scb->peer_hf_indicators[index].ind_id == 0)
- return index;
- }
+static int bta_ag_find_empty_hf_ind(tBTA_AG_SCB* p_scb) {
+ for (int index = 0; index < BTA_AG_MAX_NUM_PEER_HF_IND; index++) {
+ if (p_scb->peer_hf_indicators[index].ind_id == 0) return index;
+ }
- return -1;
+ return -1;
}
-
/*******************************************************************************
*
* Function bta_ag_find_hf_ind_by_id
@@ -713,15 +648,13 @@
* was not found.
*
******************************************************************************/
-static int bta_ag_find_hf_ind_by_id(tBTA_AG_HF_IND *p_hf_ind, int size, uint32_t ind_id)
-{
- for (int index = 0; index < size; index++)
- {
- if (p_hf_ind[index].ind_id == ind_id)
- return index;
- }
+static int bta_ag_find_hf_ind_by_id(tBTA_AG_HF_IND* p_hf_ind, int size,
+ uint32_t ind_id) {
+ for (int index = 0; index < size; index++) {
+ if (p_hf_ind[index].ind_id == ind_id) return index;
+ }
- return -1;
+ return -1;
}
/*******************************************************************************
@@ -733,29 +666,25 @@
* Returns true if successful
*
******************************************************************************/
-static bool bta_ag_parse_bind_set(tBTA_AG_SCB *p_scb, tBTA_AG_VAL val)
-{
- char *p_token = strtok(val.str, ",");
- if (p_token == NULL)
- return false;
+static bool bta_ag_parse_bind_set(tBTA_AG_SCB* p_scb, tBTA_AG_VAL val) {
+ char* p_token = strtok(val.str, ",");
+ if (p_token == NULL) return false;
- while (p_token != NULL)
- {
- uint16_t rcv_ind_id = atoi(p_token);
- int index = bta_ag_find_empty_hf_ind(p_scb);
- if (index == -1)
- {
- APPL_TRACE_WARNING("%s Can't save more indicators", __func__);
- return false;
- }
-
- p_scb->peer_hf_indicators[index].ind_id = rcv_ind_id;
- APPL_TRACE_DEBUG("%s peer_hf_ind[%d] = %d", __func__, index, rcv_ind_id);
-
- p_token = strtok(NULL, ",");
+ while (p_token != NULL) {
+ uint16_t rcv_ind_id = atoi(p_token);
+ int index = bta_ag_find_empty_hf_ind(p_scb);
+ if (index == -1) {
+ APPL_TRACE_WARNING("%s Can't save more indicators", __func__);
+ return false;
}
- return true;
+ p_scb->peer_hf_indicators[index].ind_id = rcv_ind_id;
+ APPL_TRACE_DEBUG("%s peer_hf_ind[%d] = %d", __func__, index, rcv_ind_id);
+
+ p_token = strtok(NULL, ",");
+ }
+
+ return true;
}
/*******************************************************************************
@@ -768,77 +697,71 @@
* Returns Void
*
******************************************************************************/
-static void bta_ag_bind_response(tBTA_AG_SCB *p_scb, uint8_t arg_type)
-{
- char buffer[BTA_AG_AT_MAX_LEN];
- memset(buffer, 0, BTA_AG_AT_MAX_LEN);
+static void bta_ag_bind_response(tBTA_AG_SCB* p_scb, uint8_t arg_type) {
+ char buffer[BTA_AG_AT_MAX_LEN];
+ memset(buffer, 0, BTA_AG_AT_MAX_LEN);
- if (arg_type == BTA_AG_AT_TEST)
- {
- int index = 0;
- buffer[index++] = '(';
+ if (arg_type == BTA_AG_AT_TEST) {
+ int index = 0;
+ buffer[index++] = '(';
- for (uint32_t i = 0; i < bta_ag_local_hf_ind_cfg[0].ind_id; i++)
- {
- if (bta_ag_local_hf_ind_cfg[i+1].is_supported)
- {
- /* Add ',' from second indicator */
- if (index > 1) buffer[index++] = ',';
- snprintf(&buffer[index++], 1, "%d",
- bta_ag_local_hf_ind_cfg[i+1].ind_id);
- }
- }
+ for (uint32_t i = 0; i < bta_ag_local_hf_ind_cfg[0].ind_id; i++) {
+ if (bta_ag_local_hf_ind_cfg[i + 1].is_supported) {
+ /* Add ',' from second indicator */
+ if (index > 1) buffer[index++] = ',';
+ snprintf(&buffer[index++], 1, "%d",
+ bta_ag_local_hf_ind_cfg[i + 1].ind_id);
+ }
+ }
- buffer[index++] = ')';
+ buffer[index++] = ')';
+
+ bta_ag_send_result(p_scb, BTA_AG_BIND_RES, buffer, 0);
+ bta_ag_send_ok(p_scb);
+ } else if (arg_type == BTA_AG_AT_READ) {
+ char* p = buffer;
+
+ /* bta_ag_local_hf_ind_cfg[0].ind_id is used as BTA_AG_NUM_LOCAL_HF_IND */
+ for (uint32_t i = 0; i < bta_ag_local_hf_ind_cfg[0].ind_id; i++) {
+ if (i == BTA_AG_MAX_NUM_LOCAL_HF_IND) {
+ APPL_TRACE_WARNING("%s No space for more HF indicators", __func__);
+ break;
+ }
+
+ p_scb->local_hf_indicators[i].ind_id =
+ bta_ag_local_hf_ind_cfg[i + 1].ind_id;
+ p_scb->local_hf_indicators[i].is_supported =
+ bta_ag_local_hf_ind_cfg[i + 1].is_supported;
+ p_scb->local_hf_indicators[i].is_enable =
+ bta_ag_local_hf_ind_cfg[i + 1].is_enable;
+
+ int peer_index = bta_ag_find_hf_ind_by_id(
+ p_scb->peer_hf_indicators, BTA_AG_MAX_NUM_PEER_HF_IND,
+ p_scb->local_hf_indicators[i].ind_id);
+
+ /* Check whether local and peer sides support this indicator */
+ if (p_scb->local_hf_indicators[i].is_supported == true &&
+ peer_index != -1) {
+ /* In the format of ind, state */
+ p += utl_itoa((uint16_t)p_scb->local_hf_indicators[i].ind_id, p);
+ *p++ = ',';
+ p += utl_itoa((uint16_t)p_scb->local_hf_indicators[i].is_enable, p);
bta_ag_send_result(p_scb, BTA_AG_BIND_RES, buffer, 0);
- bta_ag_send_ok(p_scb);
+
+ memset(buffer, 0, sizeof(buffer));
+ p = buffer;
+ } else {
+ /* If indicator is not supported, also set it to disable */
+ p_scb->local_hf_indicators[i].is_enable = false;
+ }
}
- else if (arg_type == BTA_AG_AT_READ)
- {
- char *p = buffer;
- /* bta_ag_local_hf_ind_cfg[0].ind_id is used as BTA_AG_NUM_LOCAL_HF_IND */
- for (uint32_t i = 0; i < bta_ag_local_hf_ind_cfg[0].ind_id; i++)
- {
- if (i == BTA_AG_MAX_NUM_LOCAL_HF_IND)
- {
- APPL_TRACE_WARNING("%s No space for more HF indicators", __func__);
- break;
- }
+ bta_ag_send_ok(p_scb);
- p_scb->local_hf_indicators[i].ind_id = bta_ag_local_hf_ind_cfg[i+1].ind_id;
- p_scb->local_hf_indicators[i].is_supported = bta_ag_local_hf_ind_cfg[i+1].is_supported;
- p_scb->local_hf_indicators[i].is_enable = bta_ag_local_hf_ind_cfg[i+1].is_enable;
-
- int peer_index = bta_ag_find_hf_ind_by_id(p_scb->peer_hf_indicators,
- BTA_AG_MAX_NUM_PEER_HF_IND,
- p_scb->local_hf_indicators[i].ind_id);
-
- /* Check whether local and peer sides support this indicator */
- if (p_scb->local_hf_indicators[i].is_supported == true && peer_index != -1)
- {
- /* In the format of ind, state */
- p += utl_itoa((uint16_t) p_scb->local_hf_indicators[i].ind_id, p);
- *p++ = ',';
- p += utl_itoa((uint16_t) p_scb->local_hf_indicators[i].is_enable, p);
-
- bta_ag_send_result(p_scb, BTA_AG_BIND_RES, buffer, 0);
-
- memset(buffer, 0, sizeof(buffer));
- p = buffer;
- } else {
- /* If indicator is not supported, also set it to disable */
- p_scb->local_hf_indicators[i].is_enable = false;
- }
- }
-
- bta_ag_send_ok(p_scb);
-
- /* If the service level connection wan't already open, now it's open */
- if (!p_scb->svc_conn)
- bta_ag_svc_conn_open(p_scb, NULL);
- }
+ /* If the service level connection wan't already open, now it's open */
+ if (!p_scb->svc_conn) bta_ag_svc_conn_open(p_scb, NULL);
+ }
}
/*******************************************************************************
@@ -851,46 +774,45 @@
* Returns true if the response was parsed successfully
*
******************************************************************************/
-static bool bta_ag_parse_biev_response(tBTA_AG_SCB *p_scb, tBTA_AG_VAL *val)
-{
- char *p_token = strtok(val->str, ",");
- uint16_t rcv_ind_id = atoi(p_token);
+static bool bta_ag_parse_biev_response(tBTA_AG_SCB* p_scb, tBTA_AG_VAL* val) {
+ char* p_token = strtok(val->str, ",");
+ uint16_t rcv_ind_id = atoi(p_token);
- p_token = strtok(NULL, ",");
- uint16_t rcv_ind_val = atoi(p_token);
+ p_token = strtok(NULL, ",");
+ uint16_t rcv_ind_val = atoi(p_token);
- APPL_TRACE_DEBUG("%s BIEV indicator id %d, value %d", __func__, rcv_ind_id, rcv_ind_val);
+ APPL_TRACE_DEBUG("%s BIEV indicator id %d, value %d", __func__, rcv_ind_id,
+ rcv_ind_val);
- /* Check whether indicator ID is valid or not */
- if (rcv_ind_id > BTA_AG_NUM_LOCAL_HF_IND)
- {
- APPL_TRACE_WARNING("%s received invalid indicator id %d", __func__, rcv_ind_id);
- return false;
- }
+ /* Check whether indicator ID is valid or not */
+ if (rcv_ind_id > BTA_AG_NUM_LOCAL_HF_IND) {
+ APPL_TRACE_WARNING("%s received invalid indicator id %d", __func__,
+ rcv_ind_id);
+ return false;
+ }
- /* Check this indicator is support or not and enabled or not */
- int local_index = bta_ag_find_hf_ind_by_id(p_scb->local_hf_indicators,
- BTA_AG_MAX_NUM_LOCAL_HF_IND, rcv_ind_id);
- if (local_index == -1 ||
- p_scb->local_hf_indicators[local_index].is_supported != true ||
- p_scb->local_hf_indicators[local_index].is_enable != true)
- {
- APPL_TRACE_WARNING("%s indicator id %d not supported or disabled", __func__, rcv_ind_id);
- return false;
- }
+ /* Check this indicator is support or not and enabled or not */
+ int local_index = bta_ag_find_hf_ind_by_id(
+ p_scb->local_hf_indicators, BTA_AG_MAX_NUM_LOCAL_HF_IND, rcv_ind_id);
+ if (local_index == -1 ||
+ p_scb->local_hf_indicators[local_index].is_supported != true ||
+ p_scb->local_hf_indicators[local_index].is_enable != true) {
+ APPL_TRACE_WARNING("%s indicator id %d not supported or disabled", __func__,
+ rcv_ind_id);
+ return false;
+ }
- /* For each indicator ID, check whether the indicator value is in range */
- if (rcv_ind_val < bta_ag_local_hf_ind_cfg[rcv_ind_id].ind_min_val ||
- rcv_ind_val > bta_ag_local_hf_ind_cfg[rcv_ind_id].ind_max_val)
- {
- APPL_TRACE_WARNING("%s invalid ind_val %d", __func__, rcv_ind_val);
- return false;
- }
+ /* For each indicator ID, check whether the indicator value is in range */
+ if (rcv_ind_val < bta_ag_local_hf_ind_cfg[rcv_ind_id].ind_min_val ||
+ rcv_ind_val > bta_ag_local_hf_ind_cfg[rcv_ind_id].ind_max_val) {
+ APPL_TRACE_WARNING("%s invalid ind_val %d", __func__, rcv_ind_val);
+ return false;
+ }
- val->lidx = rcv_ind_id;
- val->num = rcv_ind_val;
+ val->lidx = rcv_ind_id;
+ val->num = rcv_ind_val;
- return true;
+ return true;
}
/*******************************************************************************
@@ -903,481 +825,437 @@
* Returns void
*
******************************************************************************/
-void bta_ag_at_hfp_cback(tBTA_AG_SCB *p_scb, uint16_t cmd, uint8_t arg_type,
- char *p_arg, int16_t int_arg)
-{
- tBTA_AG_VAL val;
- tBTA_AG_SCB *ag_scb;
- uint32_t i, ind_id;
- uint32_t bia_masked_out;
-#if (BTM_WBS_INCLUDED == TRUE )
- tBTA_AG_PEER_CODEC codec_type, codec_sent;
+void bta_ag_at_hfp_cback(tBTA_AG_SCB* p_scb, uint16_t cmd, uint8_t arg_type,
+ char* p_arg, int16_t int_arg) {
+ tBTA_AG_VAL val;
+ tBTA_AG_SCB* ag_scb;
+ uint32_t i, ind_id;
+ uint32_t bia_masked_out;
+#if (BTM_WBS_INCLUDED == TRUE)
+ tBTA_AG_PEER_CODEC codec_type, codec_sent;
#endif
- if (p_arg == NULL)
- {
- APPL_TRACE_ERROR("%s: p_arg is null, send error and return", __func__);
- bta_ag_send_error(p_scb, BTA_AG_ERR_INV_CHAR_IN_TSTR);
- return;
- }
+ if (p_arg == NULL) {
+ APPL_TRACE_ERROR("%s: p_arg is null, send error and return", __func__);
+ bta_ag_send_error(p_scb, BTA_AG_ERR_INV_CHAR_IN_TSTR);
+ return;
+ }
- APPL_TRACE_DEBUG("HFP AT cmd:%d arg_type:%d arg:%d arg:%s", cmd, arg_type,
- int_arg, p_arg);
+ APPL_TRACE_DEBUG("HFP AT cmd:%d arg_type:%d arg:%d arg:%s", cmd, arg_type,
+ int_arg, p_arg);
- memset(&val, 0, sizeof(tBTA_AG_VAL));
- val.hdr.handle = bta_ag_scb_to_idx(p_scb);
- val.hdr.app_id = p_scb->app_id;
- val.hdr.status = BTA_AG_SUCCESS;
- val.num = int_arg;
- bdcpy(val.bd_addr, p_scb->peer_addr);
- strlcpy(val.str, p_arg, sizeof(val.str));
+ memset(&val, 0, sizeof(tBTA_AG_VAL));
+ val.hdr.handle = bta_ag_scb_to_idx(p_scb);
+ val.hdr.app_id = p_scb->app_id;
+ val.hdr.status = BTA_AG_SUCCESS;
+ val.num = int_arg;
+ bdcpy(val.bd_addr, p_scb->peer_addr);
+ strlcpy(val.str, p_arg, sizeof(val.str));
- /**
- * Unless this this is a local event, by default we'll forward
- * the event code to the application.
- * If |event| is 0 at the end of this function, the application
- * callback is NOT invoked.
- */
- tBTA_AG_EVT event = 0;
- if (cmd < BTA_AG_LOCAL_EVT_FIRST)
- event = cmd;
+ /**
+ * Unless this this is a local event, by default we'll forward
+ * the event code to the application.
+ * If |event| is 0 at the end of this function, the application
+ * callback is NOT invoked.
+ */
+ tBTA_AG_EVT event = 0;
+ if (cmd < BTA_AG_LOCAL_EVT_FIRST) event = cmd;
- switch (cmd)
- {
- case BTA_AG_AT_A_EVT:
- case BTA_AG_SPK_EVT:
- case BTA_AG_MIC_EVT:
- case BTA_AG_AT_CHUP_EVT:
- case BTA_AG_AT_CBC_EVT:
- /* send OK */
- bta_ag_send_ok(p_scb);
- break;
+ switch (cmd) {
+ case BTA_AG_AT_A_EVT:
+ case BTA_AG_SPK_EVT:
+ case BTA_AG_MIC_EVT:
+ case BTA_AG_AT_CHUP_EVT:
+ case BTA_AG_AT_CBC_EVT:
+ /* send OK */
+ bta_ag_send_ok(p_scb);
+ break;
- case BTA_AG_AT_BLDN_EVT:
- /* Do not send OK, App will send error or OK depending on
- ** last dial number enabled or not */
- break;
+ case BTA_AG_AT_BLDN_EVT:
+ /* Do not send OK, App will send error or OK depending on
+ ** last dial number enabled or not */
+ break;
- case BTA_AG_AT_D_EVT:
- /* Do not send OK for Dial cmds
- ** Let application decide whether to send OK or ERROR*/
+ case BTA_AG_AT_D_EVT:
+ /* Do not send OK for Dial cmds
+ ** Let application decide whether to send OK or ERROR*/
- /* if mem dial cmd, make sure string contains only digits */
- if(p_arg[0] == '>')
- {
- if(!utl_isintstr(p_arg+1))
- {
- event = 0;
- bta_ag_send_error(p_scb, BTA_AG_ERR_INV_CHAR_IN_DSTR);
- }
+ /* if mem dial cmd, make sure string contains only digits */
+ if (p_arg[0] == '>') {
+ if (!utl_isintstr(p_arg + 1)) {
+ event = 0;
+ bta_ag_send_error(p_scb, BTA_AG_ERR_INV_CHAR_IN_DSTR);
+ }
+ } else if (p_arg[0] == 'V') /* ATDV : Dial VoIP Call */
+ {
+ /* We do not check string. Code will be added later if needed. */
+ if (!((p_scb->peer_features & BTA_AG_PEER_FEAT_VOIP) &&
+ (p_scb->features & BTA_AG_FEAT_VOIP))) {
+ event = 0;
+ bta_ag_send_error(p_scb, BTA_AG_ERR_OP_NOT_SUPPORTED);
+ }
+ }
+ /* If dial cmd, make sure string contains only dial digits
+ ** Dial digits are 0-9, A-C, *, #, + */
+ else {
+ if (!utl_isdialstr(p_arg)) {
+ event = 0;
+ bta_ag_send_error(p_scb, BTA_AG_ERR_INV_CHAR_IN_DSTR);
+ }
+ }
+ break;
+
+ case BTA_AG_LOCAL_EVT_CCWA:
+ /* store setting */
+ p_scb->ccwa_enabled = (bool)int_arg;
+
+ /* send OK */
+ bta_ag_send_ok(p_scb);
+ break;
+
+ case BTA_AG_AT_CHLD_EVT:
+ if (arg_type == BTA_AG_AT_TEST) {
+ /* don't call callback */
+ event = 0;
+
+ /* send CHLD string */
+ /* Form string based on supported 1.5 feature */
+ if ((p_scb->peer_version >= HFP_VERSION_1_5) &&
+ (p_scb->features & BTA_AG_FEAT_ECC) &&
+ (p_scb->peer_features & BTA_AG_PEER_FEAT_ECC))
+ bta_ag_send_result(p_scb, BTA_AG_IN_CALL_HELD_RES,
+ p_bta_ag_cfg->chld_val_ecc, 0);
+ else
+ bta_ag_send_result(p_scb, BTA_AG_IN_CALL_HELD_RES,
+ p_bta_ag_cfg->chld_val, 0);
+
+ /* send OK */
+ bta_ag_send_ok(p_scb);
+
+ /* if service level conn. not already open, now it's open */
+ bta_ag_svc_conn_open(p_scb, NULL);
+ } else {
+ val.idx = bta_ag_parse_chld(p_scb, val.str);
+
+ if (val.idx == BTA_AG_INVALID_CHLD) {
+ event = 0;
+ bta_ag_send_error(p_scb, BTA_AG_ERR_OP_NOT_SUPPORTED);
+ break;
+ }
+ if (val.idx &&
+ !((p_scb->features & BTA_AG_FEAT_ECC) &&
+ (p_scb->peer_features & BTA_AG_PEER_FEAT_ECC))) {
+ /* we do not support ECC, but HF is sending us a CHLD with call
+ * index*/
+ event = 0;
+ bta_ag_send_error(p_scb, BTA_AG_ERR_OP_NOT_SUPPORTED);
+
+ } else {
+ /* If it is swap between calls, set call held indicator to 3(out of
+ *valid 0-2)
+ ** Application will set it back to 1
+ ** callheld indicator will be sent across to the peer. */
+ if (val.str[0] == '2') {
+ for (i = 0, ag_scb = &bta_ag_cb.scb[0]; i < BTA_AG_NUM_SCB;
+ i++, ag_scb++) {
+ if (ag_scb->in_use) {
+ if ((ag_scb->call_ind == BTA_AG_CALL_ACTIVE) &&
+ (ag_scb->callsetup_ind == BTA_AG_CALLSETUP_NONE))
+ ag_scb->callheld_ind = BTA_AG_CALLHELD_NOACTIVE + 1;
+ }
}
- else if (p_arg[0] == 'V') /* ATDV : Dial VoIP Call */
- {
- /* We do not check string. Code will be added later if needed. */
- if(!((p_scb->peer_features & BTA_AG_PEER_FEAT_VOIP) && (p_scb->features & BTA_AG_FEAT_VOIP)))
- {
- event = 0;
- bta_ag_send_error(p_scb, BTA_AG_ERR_OP_NOT_SUPPORTED);
- }
- }
- /* If dial cmd, make sure string contains only dial digits
- ** Dial digits are 0-9, A-C, *, #, + */
- else
- {
- if(!utl_isdialstr(p_arg))
- {
- event = 0;
- bta_ag_send_error(p_scb, BTA_AG_ERR_INV_CHAR_IN_DSTR);
- }
- }
- break;
-
- case BTA_AG_LOCAL_EVT_CCWA:
- /* store setting */
- p_scb->ccwa_enabled = (bool) int_arg;
-
- /* send OK */
- bta_ag_send_ok(p_scb);
- break;
-
- case BTA_AG_AT_CHLD_EVT:
- if (arg_type == BTA_AG_AT_TEST)
- {
- /* don't call callback */
- event = 0;
-
- /* send CHLD string */
- /* Form string based on supported 1.5 feature */
- if ((p_scb->peer_version >= HFP_VERSION_1_5) &&
- (p_scb->features & BTA_AG_FEAT_ECC) &&
- (p_scb->peer_features & BTA_AG_PEER_FEAT_ECC))
- bta_ag_send_result(p_scb, BTA_AG_IN_CALL_HELD_RES,
- p_bta_ag_cfg->chld_val_ecc, 0);
- else
- bta_ag_send_result(p_scb, BTA_AG_IN_CALL_HELD_RES,
- p_bta_ag_cfg->chld_val, 0);
-
- /* send OK */
- bta_ag_send_ok(p_scb);
-
- /* if service level conn. not already open, now it's open */
- bta_ag_svc_conn_open(p_scb, NULL);
- }
- else
- {
- val.idx = bta_ag_parse_chld(p_scb, val.str);
-
- if (val.idx == BTA_AG_INVALID_CHLD)
- {
- event = 0;
- bta_ag_send_error(p_scb, BTA_AG_ERR_OP_NOT_SUPPORTED);
- break;
- }
- if(val.idx && !((p_scb->features & BTA_AG_FEAT_ECC) && (p_scb->peer_features & BTA_AG_PEER_FEAT_ECC)))
- {
- /* we do not support ECC, but HF is sending us a CHLD with call index*/
- event = 0;
- bta_ag_send_error(p_scb, BTA_AG_ERR_OP_NOT_SUPPORTED);
-
- }
- else
- {
-
- /* If it is swap between calls, set call held indicator to 3(out of valid 0-2)
- ** Application will set it back to 1
- ** callheld indicator will be sent across to the peer. */
- if(val.str[0] == '2')
- {
- for (i = 0, ag_scb = &bta_ag_cb.scb[0]; i < BTA_AG_NUM_SCB; i++, ag_scb++)
- {
- if (ag_scb->in_use)
- {
- if((ag_scb->call_ind == BTA_AG_CALL_ACTIVE)
- && (ag_scb->callsetup_ind == BTA_AG_CALLSETUP_NONE))
- ag_scb->callheld_ind = BTA_AG_CALLHELD_NOACTIVE + 1;
- }
- }
- }
- }
-
- /* Do not send OK. Let app decide after parsing the val str */
- /* bta_ag_send_ok(p_scb); */
- }
- break;
-
- case BTA_AG_AT_BIND_EVT:
- APPL_TRACE_DEBUG("%s BTA_AG_AT_BIND_EVT arg_type: %d", __func__, arg_type);
- if (arg_type == BTA_AG_AT_SET)
- {
- if (bta_ag_parse_bind_set(p_scb, val))
- {
- bta_ag_send_ok(p_scb);
- } else {
- event = 0;/* don't call callback */
- bta_ag_send_error(p_scb, BTA_AG_ERR_INVALID_INDEX);
- }
- } else {
- bta_ag_bind_response(p_scb, arg_type);
-
- /* Need not pass this command beyond BTIF.*/
- /* Stack handles it internally */
- event = 0;/* don't call callback */
- }
- break;
-
- case BTA_AG_AT_BIEV_EVT:
- if (bta_ag_parse_biev_response(p_scb, &val))
- {
- bta_ag_send_ok(p_scb);
- } else {
- bta_ag_send_error(p_scb, BTA_AG_ERR_INVALID_INDEX);
- /* don't call callback receiving invalid indicator */
- event = 0;
- }
- break;
-
- case BTA_AG_AT_CIND_EVT:
- if (arg_type == BTA_AG_AT_TEST)
- {
- /* don't call callback */
- event = 0;
-
- /* send CIND string, send OK */
- bta_ag_send_result(p_scb, BTA_AG_CIND_RES, p_bta_ag_cfg->cind_info, 0);
- bta_ag_send_ok(p_scb);
- }
- break;
-
- case BTA_AG_LOCAL_EVT_CLIP:
- /* store setting, send OK */
- p_scb->clip_enabled = (bool) int_arg;
- bta_ag_send_ok(p_scb);
- break;
-
- case BTA_AG_LOCAL_EVT_CMER:
- /* if parsed ok store setting, send OK */
- if (bta_ag_parse_cmer(p_arg, &p_scb->cmer_enabled))
- {
- bta_ag_send_ok(p_scb);
-
- /* if service level conn. not already open and our features and
- ** peer features do not have 3-way, service level conn. now open
- */
- if (!p_scb->svc_conn &&
- !((p_scb->features & BTA_AG_FEAT_3WAY) && (p_scb->peer_features & BTA_AG_PEER_FEAT_3WAY)))
- {
- bta_ag_svc_conn_open(p_scb, NULL);
- }
- }
- else
- {
- bta_ag_send_error(p_scb, BTA_AG_ERR_INV_CHAR_IN_TSTR);
- }
- break;
-
- case BTA_AG_AT_VTS_EVT:
- /* check argument */
- if (strlen(p_arg) == 1)
- {
- bta_ag_send_ok(p_scb);
- }
- else
- {
- event = 0;
- bta_ag_send_error(p_scb, BTA_AG_ERR_INV_CHAR_IN_TSTR);
- }
- break;
-
- case BTA_AG_AT_BINP_EVT:
- /* if feature not set don't call callback, send ERROR */
- if (!(p_scb->features & BTA_AG_FEAT_VTAG))
- {
- event = 0;
- bta_ag_send_error(p_scb, BTA_AG_ERR_OP_NOT_SUPPORTED);
- }
- break;
-
- case BTA_AG_AT_BVRA_EVT:
- /* if feature not supported don't call callback, send ERROR. App will send OK */
- if (!(p_scb->features & BTA_AG_FEAT_VREC))
- {
- event = 0;
- bta_ag_send_error(p_scb, BTA_AG_ERR_OP_NOT_SUPPORTED);
- }
- break;
-
- case BTA_AG_LOCAL_EVT_BRSF:
- {
- /* store peer features */
- p_scb->peer_features = (uint16_t) int_arg;
-
- tBTA_AG_FEAT features = p_scb->features;
- if (p_scb->peer_version < HFP_VERSION_1_7)
- {
- features &= HFP_1_6_FEAT_MASK;
- }
-
- APPL_TRACE_DEBUG("%s BRSF HF: 0x%x, phone: 0x%x", __func__,
- p_scb->peer_features, features);
-
- /* send BRSF, send OK */
- bta_ag_send_result(p_scb, BTA_AG_LOCAL_RES_BRSF, NULL, (int16_t) features);
- bta_ag_send_ok(p_scb);
- break;
+ }
}
- case BTA_AG_AT_NREC_EVT:
- /* if feature send OK, else don't call callback, send ERROR */
- if (p_scb->features & BTA_AG_FEAT_ECNR)
- {
- bta_ag_send_ok(p_scb);
+ /* Do not send OK. Let app decide after parsing the val str */
+ /* bta_ag_send_ok(p_scb); */
+ }
+ break;
+
+ case BTA_AG_AT_BIND_EVT:
+ APPL_TRACE_DEBUG("%s BTA_AG_AT_BIND_EVT arg_type: %d", __func__,
+ arg_type);
+ if (arg_type == BTA_AG_AT_SET) {
+ if (bta_ag_parse_bind_set(p_scb, val)) {
+ bta_ag_send_ok(p_scb);
+ } else {
+ event = 0; /* don't call callback */
+ bta_ag_send_error(p_scb, BTA_AG_ERR_INVALID_INDEX);
+ }
+ } else {
+ bta_ag_bind_response(p_scb, arg_type);
+
+ /* Need not pass this command beyond BTIF.*/
+ /* Stack handles it internally */
+ event = 0; /* don't call callback */
+ }
+ break;
+
+ case BTA_AG_AT_BIEV_EVT:
+ if (bta_ag_parse_biev_response(p_scb, &val)) {
+ bta_ag_send_ok(p_scb);
+ } else {
+ bta_ag_send_error(p_scb, BTA_AG_ERR_INVALID_INDEX);
+ /* don't call callback receiving invalid indicator */
+ event = 0;
+ }
+ break;
+
+ case BTA_AG_AT_CIND_EVT:
+ if (arg_type == BTA_AG_AT_TEST) {
+ /* don't call callback */
+ event = 0;
+
+ /* send CIND string, send OK */
+ bta_ag_send_result(p_scb, BTA_AG_CIND_RES, p_bta_ag_cfg->cind_info, 0);
+ bta_ag_send_ok(p_scb);
+ }
+ break;
+
+ case BTA_AG_LOCAL_EVT_CLIP:
+ /* store setting, send OK */
+ p_scb->clip_enabled = (bool)int_arg;
+ bta_ag_send_ok(p_scb);
+ break;
+
+ case BTA_AG_LOCAL_EVT_CMER:
+ /* if parsed ok store setting, send OK */
+ if (bta_ag_parse_cmer(p_arg, &p_scb->cmer_enabled)) {
+ bta_ag_send_ok(p_scb);
+
+ /* if service level conn. not already open and our features and
+ ** peer features do not have 3-way, service level conn. now open
+ */
+ if (!p_scb->svc_conn &&
+ !((p_scb->features & BTA_AG_FEAT_3WAY) &&
+ (p_scb->peer_features & BTA_AG_PEER_FEAT_3WAY))) {
+ bta_ag_svc_conn_open(p_scb, NULL);
+ }
+ } else {
+ bta_ag_send_error(p_scb, BTA_AG_ERR_INV_CHAR_IN_TSTR);
+ }
+ break;
+
+ case BTA_AG_AT_VTS_EVT:
+ /* check argument */
+ if (strlen(p_arg) == 1) {
+ bta_ag_send_ok(p_scb);
+ } else {
+ event = 0;
+ bta_ag_send_error(p_scb, BTA_AG_ERR_INV_CHAR_IN_TSTR);
+ }
+ break;
+
+ case BTA_AG_AT_BINP_EVT:
+ /* if feature not set don't call callback, send ERROR */
+ if (!(p_scb->features & BTA_AG_FEAT_VTAG)) {
+ event = 0;
+ bta_ag_send_error(p_scb, BTA_AG_ERR_OP_NOT_SUPPORTED);
+ }
+ break;
+
+ case BTA_AG_AT_BVRA_EVT:
+ /* if feature not supported don't call callback, send ERROR. App will send
+ * OK */
+ if (!(p_scb->features & BTA_AG_FEAT_VREC)) {
+ event = 0;
+ bta_ag_send_error(p_scb, BTA_AG_ERR_OP_NOT_SUPPORTED);
+ }
+ break;
+
+ case BTA_AG_LOCAL_EVT_BRSF: {
+ /* store peer features */
+ p_scb->peer_features = (uint16_t)int_arg;
+
+ tBTA_AG_FEAT features = p_scb->features;
+ if (p_scb->peer_version < HFP_VERSION_1_7) {
+ features &= HFP_1_6_FEAT_MASK;
+ }
+
+ APPL_TRACE_DEBUG("%s BRSF HF: 0x%x, phone: 0x%x", __func__,
+ p_scb->peer_features, features);
+
+ /* send BRSF, send OK */
+ bta_ag_send_result(p_scb, BTA_AG_LOCAL_RES_BRSF, NULL, (int16_t)features);
+ bta_ag_send_ok(p_scb);
+ break;
+ }
+
+ case BTA_AG_AT_NREC_EVT:
+ /* if feature send OK, else don't call callback, send ERROR */
+ if (p_scb->features & BTA_AG_FEAT_ECNR) {
+ bta_ag_send_ok(p_scb);
+ } else {
+ event = 0;
+ bta_ag_send_error(p_scb, BTA_AG_ERR_OP_NOT_SUPPORTED);
+ }
+ break;
+
+ case BTA_AG_AT_BTRH_EVT:
+ /* if feature send BTRH, send OK:, else don't call callback, send ERROR */
+ if (p_scb->features & BTA_AG_FEAT_BTRH) {
+ /* If set command; send response and notify app */
+ if (arg_type == BTA_AG_AT_SET) {
+ for (i = 0, ag_scb = &bta_ag_cb.scb[0]; i < BTA_AG_NUM_SCB;
+ i++, ag_scb++) {
+ if (ag_scb->in_use) {
+ bta_ag_send_result(ag_scb, BTA_AG_BTRH_RES, NULL, int_arg);
}
- else
- {
- event = 0;
- bta_ag_send_error(p_scb, BTA_AG_ERR_OP_NOT_SUPPORTED);
- }
- break;
+ }
+ bta_ag_send_ok(p_scb);
+ } else /* Read Command */
+ {
+ val.num = BTA_AG_BTRH_READ;
+ }
+ } else {
+ event = 0;
+ bta_ag_send_error(p_scb, BTA_AG_ERR_OP_NOT_SUPPORTED);
+ }
+ break;
- case BTA_AG_AT_BTRH_EVT:
- /* if feature send BTRH, send OK:, else don't call callback, send ERROR */
- if (p_scb->features & BTA_AG_FEAT_BTRH)
- {
- /* If set command; send response and notify app */
- if (arg_type == BTA_AG_AT_SET)
- {
- for (i = 0, ag_scb = &bta_ag_cb.scb[0]; i < BTA_AG_NUM_SCB; i++, ag_scb++)
- {
- if (ag_scb->in_use)
- {
- bta_ag_send_result(ag_scb, BTA_AG_BTRH_RES, NULL, int_arg);
- }
- }
- bta_ag_send_ok(p_scb);
- }
- else /* Read Command */
- {
- val.num = BTA_AG_BTRH_READ;
- }
- }
- else
- {
- event = 0;
- bta_ag_send_error(p_scb, BTA_AG_ERR_OP_NOT_SUPPORTED);
- }
- break;
+ case BTA_AG_AT_COPS_EVT:
+ if (arg_type == BTA_AG_AT_SET) {
+ /* don't call callback */
+ event = 0;
- case BTA_AG_AT_COPS_EVT:
- if (arg_type == BTA_AG_AT_SET)
- {
- /* don't call callback */
- event = 0;
+ /* send OK */
+ bta_ag_send_ok(p_scb);
+ }
+ break;
- /* send OK */
- bta_ag_send_ok(p_scb);
- }
- break;
+ case BTA_AG_LOCAL_EVT_CMEE:
+ if (p_scb->features & BTA_AG_FEAT_EXTERR) {
+ /* store setting */
+ p_scb->cmee_enabled = (bool)int_arg;
- case BTA_AG_LOCAL_EVT_CMEE:
- if (p_scb->features & BTA_AG_FEAT_EXTERR)
- {
- /* store setting */
- p_scb->cmee_enabled = (bool) int_arg;
+ /* send OK */
+ bta_ag_send_ok(p_scb);
+ } else {
+ bta_ag_send_error(p_scb, BTA_AG_ERR_OP_NOT_SUPPORTED);
+ }
+ /* don't call callback */
+ event = 0;
+ break;
- /* send OK */
- bta_ag_send_ok(p_scb);
- }
- else
- {
- bta_ag_send_error(p_scb, BTA_AG_ERR_OP_NOT_SUPPORTED);
- }
- /* don't call callback */
- event = 0;
- break;
+ case BTA_AG_LOCAL_EVT_BIA:
+ /* don't call callback */
+ event = 0;
- case BTA_AG_LOCAL_EVT_BIA:
- /* don't call callback */
- event = 0;
+ bia_masked_out = p_scb->bia_masked_out;
- bia_masked_out = p_scb->bia_masked_out;
+ /* Parse the indicator mask */
+ for (i = 0, ind_id = 1; (val.str[i] != 0) && (ind_id <= 20);
+ i++, ind_id++) {
+ if (val.str[i] == ',') continue;
- /* Parse the indicator mask */
- for (i = 0, ind_id = 1; (val.str[i] != 0) && (ind_id <= 20); i++, ind_id++)
- {
- if (val.str[i] == ',')
- continue;
+ if (val.str[i] == '0')
+ bia_masked_out |= ((uint32_t)1 << ind_id);
+ else if (val.str[i] == '1')
+ bia_masked_out &= ~((uint32_t)1 << ind_id);
+ else
+ break;
- if (val.str[i] == '0')
- bia_masked_out |= ((uint32_t)1 << ind_id);
- else if (val.str[i] == '1')
- bia_masked_out &= ~((uint32_t)1 << ind_id);
- else
- break;
+ i++;
+ if ((val.str[i] == 0) || (val.str[i] != ',')) break;
+ }
+ if (val.str[i] == 0) {
+ p_scb->bia_masked_out = bia_masked_out;
+ bta_ag_send_ok(p_scb);
+ } else
+ bta_ag_send_error(p_scb, BTA_AG_ERR_INVALID_INDEX);
+ break;
- i++;
- if ((val.str[i] == 0) || (val.str[i] != ','))
- break;
- }
- if (val.str[i] == 0)
- {
- p_scb->bia_masked_out = bia_masked_out;
- bta_ag_send_ok (p_scb);
- }
- else
- bta_ag_send_error (p_scb, BTA_AG_ERR_INVALID_INDEX);
- break;
+ case BTA_AG_AT_CNUM_EVT:
+ break;
- case BTA_AG_AT_CNUM_EVT:
- break;
+ case BTA_AG_AT_CLCC_EVT:
+ if (!(p_scb->features & BTA_AG_FEAT_ECS)) {
+ event = 0;
+ bta_ag_send_error(p_scb, BTA_AG_ERR_OP_NOT_SUPPORTED);
+ }
+ break;
- case BTA_AG_AT_CLCC_EVT:
- if(!(p_scb->features & BTA_AG_FEAT_ECS))
- {
- event = 0;
- bta_ag_send_error(p_scb, BTA_AG_ERR_OP_NOT_SUPPORTED);
- }
- break;
+#if (BTM_WBS_INCLUDED == TRUE)
+ case BTA_AG_AT_BAC_EVT:
+ bta_ag_send_ok(p_scb);
-#if (BTM_WBS_INCLUDED == TRUE )
- case BTA_AG_AT_BAC_EVT:
- bta_ag_send_ok(p_scb);
+ /* store available codecs from the peer */
+ if ((p_scb->peer_features & BTA_AG_PEER_FEAT_CODEC) &&
+ (p_scb->features & BTA_AG_FEAT_CODEC)) {
+ p_scb->peer_codecs = bta_ag_parse_bac(p_scb, p_arg);
+ p_scb->codec_updated = true;
- /* store available codecs from the peer */
- if((p_scb->peer_features & BTA_AG_PEER_FEAT_CODEC) && (p_scb->features & BTA_AG_FEAT_CODEC))
- {
- p_scb->peer_codecs = bta_ag_parse_bac(p_scb, p_arg);
- p_scb->codec_updated = true;
+ if (p_scb->peer_codecs & BTA_AG_CODEC_MSBC) {
+ p_scb->sco_codec = UUID_CODEC_MSBC;
+ APPL_TRACE_DEBUG("Received AT+BAC, updating sco codec to MSBC");
+ } else {
+ p_scb->sco_codec = UUID_CODEC_CVSD;
+ APPL_TRACE_DEBUG("Received AT+BAC, updating sco codec to CVSD");
+ }
+ /* The above logic sets the stack preferred codec based on local and
+ peer codec
+ capabilities. This can be overridden by the application depending on its
+ preference
+ using the bta_ag_setcodec API. We send the peer_codecs to the
+ application. */
+ val.num = p_scb->peer_codecs;
+ /* Received BAC while in codec negotiation. */
+ if ((bta_ag_cb.sco.state == BTA_AG_SCO_CODEC_ST) &&
+ (bta_ag_cb.sco.p_curr_scb == p_scb)) {
+ bta_ag_codec_negotiate(p_scb);
+ }
+ } else {
+ p_scb->peer_codecs = BTA_AG_CODEC_CVSD;
+ APPL_TRACE_ERROR(
+ "Unexpected CMD:AT+BAC, Codec Negotiation is not supported");
+ }
+ break;
- if (p_scb->peer_codecs & BTA_AG_CODEC_MSBC)
- {
- p_scb->sco_codec = UUID_CODEC_MSBC;
- APPL_TRACE_DEBUG("Received AT+BAC, updating sco codec to MSBC");
- }
- else
- {
- p_scb->sco_codec = UUID_CODEC_CVSD;
- APPL_TRACE_DEBUG("Received AT+BAC, updating sco codec to CVSD");
- }
- /* The above logic sets the stack preferred codec based on local and peer codec
- capabilities. This can be overridden by the application depending on its preference
- using the bta_ag_setcodec API. We send the peer_codecs to the application. */
- val.num = p_scb->peer_codecs;
- /* Received BAC while in codec negotiation. */
- if ((bta_ag_cb.sco.state == BTA_AG_SCO_CODEC_ST) && (bta_ag_cb.sco.p_curr_scb == p_scb))
- {
- bta_ag_codec_negotiate (p_scb);
- }
- }
- else
- {
- p_scb->peer_codecs = BTA_AG_CODEC_CVSD;
- APPL_TRACE_ERROR("Unexpected CMD:AT+BAC, Codec Negotiation is not supported");
- }
- break;
+ case BTA_AG_AT_BCS_EVT:
+ bta_ag_send_ok(p_scb);
+ alarm_cancel(p_scb->codec_negotiation_timer);
- case BTA_AG_AT_BCS_EVT:
- bta_ag_send_ok(p_scb);
- alarm_cancel(p_scb->codec_negotiation_timer);
+ switch (int_arg) {
+ case UUID_CODEC_CVSD:
+ codec_type = BTA_AG_CODEC_CVSD;
+ break;
+ case UUID_CODEC_MSBC:
+ codec_type = BTA_AG_CODEC_MSBC;
+ break;
+ default:
+ APPL_TRACE_ERROR("Unknown codec_uuid %d", int_arg);
+ codec_type = 0xFFFF;
+ break;
+ }
- switch(int_arg)
- {
- case UUID_CODEC_CVSD: codec_type = BTA_AG_CODEC_CVSD; break;
- case UUID_CODEC_MSBC: codec_type = BTA_AG_CODEC_MSBC; break;
- default:
- APPL_TRACE_ERROR("Unknown codec_uuid %d", int_arg);
- codec_type = 0xFFFF;
- break;
- }
+ if (p_scb->codec_fallback)
+ codec_sent = BTA_AG_CODEC_CVSD;
+ else
+ codec_sent = p_scb->sco_codec;
- if (p_scb->codec_fallback)
- codec_sent = BTA_AG_CODEC_CVSD;
- else
- codec_sent = p_scb->sco_codec;
+ if (codec_type == codec_sent)
+ bta_ag_sco_codec_nego(p_scb, true);
+ else
+ bta_ag_sco_codec_nego(p_scb, false);
- if(codec_type == codec_sent)
- bta_ag_sco_codec_nego(p_scb, true);
- else
- bta_ag_sco_codec_nego(p_scb, false);
+ /* send final codec info to callback */
+ val.num = codec_sent;
+ break;
- /* send final codec info to callback */
- val.num = codec_sent;
- break;
-
- case BTA_AG_LOCAL_EVT_BCC:
- bta_ag_send_ok(p_scb);
- bta_ag_sco_open(p_scb, NULL);
- break;
+ case BTA_AG_LOCAL_EVT_BCC:
+ bta_ag_send_ok(p_scb);
+ bta_ag_sco_open(p_scb, NULL);
+ break;
#endif
- default:
- bta_ag_send_error(p_scb, BTA_AG_ERR_OP_NOT_SUPPORTED);
- break;
- }
+ default:
+ bta_ag_send_error(p_scb, BTA_AG_ERR_OP_NOT_SUPPORTED);
+ break;
+ }
- /* call callback */
- if (event != 0)
- {
- (*bta_ag_cb.p_cback)(event, (tBTA_AG *) &val);
- }
+ /* call callback */
+ if (event != 0) {
+ (*bta_ag_cb.p_cback)(event, (tBTA_AG*)&val);
+ }
}
/*******************************************************************************
@@ -1390,31 +1268,26 @@
* Returns void
*
******************************************************************************/
-void bta_ag_at_err_cback(tBTA_AG_SCB *p_scb, bool unknown, char *p_arg)
-{
- tBTA_AG_VAL val;
+void bta_ag_at_err_cback(tBTA_AG_SCB* p_scb, bool unknown, char* p_arg) {
+ tBTA_AG_VAL val;
- if(unknown && (!strlen(p_arg)))
- {
- APPL_TRACE_DEBUG("Empty AT cmd string received");
- bta_ag_send_ok(p_scb);
- return;
- }
+ if (unknown && (!strlen(p_arg))) {
+ APPL_TRACE_DEBUG("Empty AT cmd string received");
+ bta_ag_send_ok(p_scb);
+ return;
+ }
- /* if unknown AT command and configured to pass these to app */
- if (unknown && (p_scb->features & BTA_AG_FEAT_UNAT))
- {
- val.hdr.handle = bta_ag_scb_to_idx(p_scb);
- val.hdr.app_id = p_scb->app_id;
- val.hdr.status = BTA_AG_SUCCESS;
- val.num = 0;
- strlcpy(val.str, p_arg, sizeof(val.str));
- (*bta_ag_cb.p_cback)(BTA_AG_AT_UNAT_EVT, (tBTA_AG *) &val);
- }
- else
- {
- bta_ag_send_error(p_scb, BTA_AG_ERR_OP_NOT_SUPPORTED);
- }
+ /* if unknown AT command and configured to pass these to app */
+ if (unknown && (p_scb->features & BTA_AG_FEAT_UNAT)) {
+ val.hdr.handle = bta_ag_scb_to_idx(p_scb);
+ val.hdr.app_id = p_scb->app_id;
+ val.hdr.status = BTA_AG_SUCCESS;
+ val.num = 0;
+ strlcpy(val.str, p_arg, sizeof(val.str));
+ (*bta_ag_cb.p_cback)(BTA_AG_AT_UNAT_EVT, (tBTA_AG*)&val);
+ } else {
+ bta_ag_send_error(p_scb, BTA_AG_ERR_OP_NOT_SUPPORTED);
+ }
}
/*******************************************************************************
@@ -1427,104 +1300,89 @@
* Returns void
*
******************************************************************************/
-void bta_ag_hsp_result(tBTA_AG_SCB *p_scb, tBTA_AG_API_RESULT *p_result)
-{
- APPL_TRACE_DEBUG("bta_ag_hsp_result : res = %d", p_result->result);
+void bta_ag_hsp_result(tBTA_AG_SCB* p_scb, tBTA_AG_API_RESULT* p_result) {
+ APPL_TRACE_DEBUG("bta_ag_hsp_result : res = %d", p_result->result);
- switch(p_result->result)
- {
- case BTA_AG_SPK_RES:
- case BTA_AG_MIC_RES:
- bta_ag_send_result(p_scb, p_result->result, NULL, p_result->data.num);
- break;
+ switch (p_result->result) {
+ case BTA_AG_SPK_RES:
+ case BTA_AG_MIC_RES:
+ bta_ag_send_result(p_scb, p_result->result, NULL, p_result->data.num);
+ break;
- case BTA_AG_IN_CALL_RES:
- /* tell sys to stop av if any */
- bta_sys_sco_use(BTA_ID_AG, p_scb->app_id, p_scb->peer_addr);
+ case BTA_AG_IN_CALL_RES:
+ /* tell sys to stop av if any */
+ bta_sys_sco_use(BTA_ID_AG, p_scb->app_id, p_scb->peer_addr);
- /* if sco already opened or no inband ring send ring now */
- if (bta_ag_sco_is_open(p_scb) || !bta_ag_inband_enabled(p_scb) ||
- (p_scb->features & BTA_AG_FEAT_NOSCO))
- {
- bta_ag_send_ring(p_scb, (tBTA_AG_DATA *) p_result);
- }
- /* else open sco, send ring after sco opened */
- else
- {
- /* HSPv1.2: AG shall not send RING if using in-band ring tone. */
- if (p_scb->hsp_version >= HSP_VERSION_1_2)
- p_scb->post_sco = BTA_AG_POST_SCO_NONE;
- else
- p_scb->post_sco = BTA_AG_POST_SCO_RING;
+ /* if sco already opened or no inband ring send ring now */
+ if (bta_ag_sco_is_open(p_scb) || !bta_ag_inband_enabled(p_scb) ||
+ (p_scb->features & BTA_AG_FEAT_NOSCO)) {
+ bta_ag_send_ring(p_scb, (tBTA_AG_DATA*)p_result);
+ }
+ /* else open sco, send ring after sco opened */
+ else {
+ /* HSPv1.2: AG shall not send RING if using in-band ring tone. */
+ if (p_scb->hsp_version >= HSP_VERSION_1_2)
+ p_scb->post_sco = BTA_AG_POST_SCO_NONE;
+ else
+ p_scb->post_sco = BTA_AG_POST_SCO_RING;
- bta_ag_sco_open(p_scb, (tBTA_AG_DATA *) p_result);
- }
- break;
+ bta_ag_sco_open(p_scb, (tBTA_AG_DATA*)p_result);
+ }
+ break;
- case BTA_AG_IN_CALL_CONN_RES:
- case BTA_AG_OUT_CALL_ORIG_RES:
- /* if incoming call connected stop ring timer */
- if (p_result->result == BTA_AG_IN_CALL_CONN_RES)
- {
- alarm_cancel(p_scb->ring_timer);
- }
+ case BTA_AG_IN_CALL_CONN_RES:
+ case BTA_AG_OUT_CALL_ORIG_RES:
+ /* if incoming call connected stop ring timer */
+ if (p_result->result == BTA_AG_IN_CALL_CONN_RES) {
+ alarm_cancel(p_scb->ring_timer);
+ }
- if (!(p_scb->features & BTA_AG_FEAT_NOSCO))
- {
- /* if audio connected to this scb open sco */
- if (p_result->data.audio_handle == bta_ag_scb_to_idx(p_scb))
- {
- bta_ag_sco_open(p_scb, (tBTA_AG_DATA *) p_result);
- }
- /* else if no audio at call close sco */
- else if (p_result->data.audio_handle == BTA_AG_HANDLE_NONE)
- {
- bta_ag_sco_close(p_scb, (tBTA_AG_DATA *) p_result);
- }
- }
- break;
+ if (!(p_scb->features & BTA_AG_FEAT_NOSCO)) {
+ /* if audio connected to this scb open sco */
+ if (p_result->data.audio_handle == bta_ag_scb_to_idx(p_scb)) {
+ bta_ag_sco_open(p_scb, (tBTA_AG_DATA*)p_result);
+ }
+ /* else if no audio at call close sco */
+ else if (p_result->data.audio_handle == BTA_AG_HANDLE_NONE) {
+ bta_ag_sco_close(p_scb, (tBTA_AG_DATA*)p_result);
+ }
+ }
+ break;
- case BTA_AG_END_CALL_RES:
- alarm_cancel(p_scb->ring_timer);
+ case BTA_AG_END_CALL_RES:
+ alarm_cancel(p_scb->ring_timer);
- /* close sco */
- if ((bta_ag_sco_is_open(p_scb) || bta_ag_sco_is_opening(p_scb)) && !(p_scb->features & BTA_AG_FEAT_NOSCO))
- {
- bta_ag_sco_close(p_scb, (tBTA_AG_DATA *) p_result);
- }
- else
- {
- /* if av got suspended by this call, let it resume. */
- bta_sys_sco_unuse(BTA_ID_AG, p_scb->app_id, p_scb->peer_addr);
- }
- break;
+ /* close sco */
+ if ((bta_ag_sco_is_open(p_scb) || bta_ag_sco_is_opening(p_scb)) &&
+ !(p_scb->features & BTA_AG_FEAT_NOSCO)) {
+ bta_ag_sco_close(p_scb, (tBTA_AG_DATA*)p_result);
+ } else {
+ /* if av got suspended by this call, let it resume. */
+ bta_sys_sco_unuse(BTA_ID_AG, p_scb->app_id, p_scb->peer_addr);
+ }
+ break;
- case BTA_AG_INBAND_RING_RES:
- p_scb->inband_enabled = p_result->data.state;
- APPL_TRACE_DEBUG("inband_enabled set to %d", p_scb->inband_enabled);
- break;
+ case BTA_AG_INBAND_RING_RES:
+ p_scb->inband_enabled = p_result->data.state;
+ APPL_TRACE_DEBUG("inband_enabled set to %d", p_scb->inband_enabled);
+ break;
- case BTA_AG_UNAT_RES:
- if (p_result->data.ok_flag != BTA_AG_OK_ERROR)
- {
- if (p_result->data.str[0] != 0)
- {
- bta_ag_send_result(p_scb, p_result->result, p_result->data.str, 0);
- }
+ case BTA_AG_UNAT_RES:
+ if (p_result->data.ok_flag != BTA_AG_OK_ERROR) {
+ if (p_result->data.str[0] != 0) {
+ bta_ag_send_result(p_scb, p_result->result, p_result->data.str, 0);
+ }
- if (p_result->data.ok_flag == BTA_AG_OK_DONE)
- bta_ag_send_ok(p_scb);
- }
- else
- {
- bta_ag_send_error(p_scb, BTA_AG_ERR_INV_CHAR_IN_TSTR);
- }
- break;
+ if (p_result->data.ok_flag == BTA_AG_OK_DONE) bta_ag_send_ok(p_scb);
+ } else {
+ bta_ag_send_error(p_scb, BTA_AG_ERR_INV_CHAR_IN_TSTR);
+ }
+ break;
- default:
- /* ignore all others */
- break;
- }
+ default:
+ /* ignore all others */
+ break;
+ }
}
/*******************************************************************************
@@ -1537,309 +1395,275 @@
* Returns void
*
******************************************************************************/
-void bta_ag_hfp_result(tBTA_AG_SCB *p_scb, tBTA_AG_API_RESULT *p_result)
-{
- APPL_TRACE_DEBUG("bta_ag_hfp_result : res = %d", p_result->result);
+void bta_ag_hfp_result(tBTA_AG_SCB* p_scb, tBTA_AG_API_RESULT* p_result) {
+ APPL_TRACE_DEBUG("bta_ag_hfp_result : res = %d", p_result->result);
- switch(p_result->result)
- {
- case BTA_AG_SPK_RES:
- case BTA_AG_MIC_RES:
- bta_ag_send_result(p_scb, p_result->result, NULL, p_result->data.num);
- break;
+ switch (p_result->result) {
+ case BTA_AG_SPK_RES:
+ case BTA_AG_MIC_RES:
+ bta_ag_send_result(p_scb, p_result->result, NULL, p_result->data.num);
+ break;
- case BTA_AG_IN_CALL_RES:
- /* tell sys to stop av if any */
- bta_sys_sco_use(BTA_ID_AG, p_scb->app_id, p_scb->peer_addr);
+ case BTA_AG_IN_CALL_RES:
+ /* tell sys to stop av if any */
+ bta_sys_sco_use(BTA_ID_AG, p_scb->app_id, p_scb->peer_addr);
- /* store caller id string.
- * append type info at the end.
- * make sure a valid type info is passed.
- * otherwise add 129 as default type */
- if ((p_result->data.num < BTA_AG_CLIP_TYPE_MIN) || (p_result->data.num > BTA_AG_CLIP_TYPE_MAX))
- {
- if (p_result->data.num != BTA_AG_CLIP_TYPE_VOIP)
- p_result->data.num = BTA_AG_CLIP_TYPE_DEFAULT;
- }
+ /* store caller id string.
+ * append type info at the end.
+ * make sure a valid type info is passed.
+ * otherwise add 129 as default type */
+ if ((p_result->data.num < BTA_AG_CLIP_TYPE_MIN) ||
+ (p_result->data.num > BTA_AG_CLIP_TYPE_MAX)) {
+ if (p_result->data.num != BTA_AG_CLIP_TYPE_VOIP)
+ p_result->data.num = BTA_AG_CLIP_TYPE_DEFAULT;
+ }
- APPL_TRACE_DEBUG("CLIP type :%d", p_result->data.num);
- p_scb->clip[0] = 0;
- if (p_result->data.str[0] != 0)
- snprintf(p_scb->clip, sizeof(p_scb->clip), "%s,%d", p_result->data.str, p_result->data.num);
+ APPL_TRACE_DEBUG("CLIP type :%d", p_result->data.num);
+ p_scb->clip[0] = 0;
+ if (p_result->data.str[0] != 0)
+ snprintf(p_scb->clip, sizeof(p_scb->clip), "%s,%d", p_result->data.str,
+ p_result->data.num);
- /* send callsetup indicator */
- if (p_scb->post_sco == BTA_AG_POST_SCO_CALL_END)
- {
- /* Need to sent 2 callsetup IND's(Call End and Incoming call) after SCO close. */
- p_scb->post_sco = BTA_AG_POST_SCO_CALL_END_INCALL;
- }
- else
- {
- bta_ag_send_call_inds(p_scb, p_result->result);
+ /* send callsetup indicator */
+ if (p_scb->post_sco == BTA_AG_POST_SCO_CALL_END) {
+ /* Need to sent 2 callsetup IND's(Call End and Incoming call) after SCO
+ * close. */
+ p_scb->post_sco = BTA_AG_POST_SCO_CALL_END_INCALL;
+ } else {
+ bta_ag_send_call_inds(p_scb, p_result->result);
- /* if sco already opened or no inband ring send ring now */
- if (bta_ag_sco_is_open(p_scb) || !bta_ag_inband_enabled(p_scb) ||
- (p_scb->features & BTA_AG_FEAT_NOSCO))
- {
- bta_ag_send_ring(p_scb, (tBTA_AG_DATA *) p_result);
- }
- /* else open sco, send ring after sco opened */
- else
- {
- p_scb->post_sco = BTA_AG_POST_SCO_RING;
- bta_ag_sco_open(p_scb, (tBTA_AG_DATA *) p_result);
- }
- }
- break;
+ /* if sco already opened or no inband ring send ring now */
+ if (bta_ag_sco_is_open(p_scb) || !bta_ag_inband_enabled(p_scb) ||
+ (p_scb->features & BTA_AG_FEAT_NOSCO)) {
+ bta_ag_send_ring(p_scb, (tBTA_AG_DATA*)p_result);
+ }
+ /* else open sco, send ring after sco opened */
+ else {
+ p_scb->post_sco = BTA_AG_POST_SCO_RING;
+ bta_ag_sco_open(p_scb, (tBTA_AG_DATA*)p_result);
+ }
+ }
+ break;
- case BTA_AG_IN_CALL_CONN_RES:
- alarm_cancel(p_scb->ring_timer);
+ case BTA_AG_IN_CALL_CONN_RES:
+ alarm_cancel(p_scb->ring_timer);
- /* if sco not opened and we need to open it, send indicators first
- ** then open sco.
- */
- bta_ag_send_call_inds(p_scb, p_result->result);
+ /* if sco not opened and we need to open it, send indicators first
+ ** then open sco.
+ */
+ bta_ag_send_call_inds(p_scb, p_result->result);
- if (!(p_scb->features & BTA_AG_FEAT_NOSCO))
- {
- if (p_result->data.audio_handle == bta_ag_scb_to_idx(p_scb))
- {
- bta_ag_sco_open(p_scb, (tBTA_AG_DATA *) p_result);
- }
- else if ((p_result->data.audio_handle == BTA_AG_HANDLE_NONE) &&
- bta_ag_sco_is_open(p_scb))
- {
- bta_ag_sco_close(p_scb, (tBTA_AG_DATA *) p_result);
- }
- }
- break;
+ if (!(p_scb->features & BTA_AG_FEAT_NOSCO)) {
+ if (p_result->data.audio_handle == bta_ag_scb_to_idx(p_scb)) {
+ bta_ag_sco_open(p_scb, (tBTA_AG_DATA*)p_result);
+ } else if ((p_result->data.audio_handle == BTA_AG_HANDLE_NONE) &&
+ bta_ag_sco_is_open(p_scb)) {
+ bta_ag_sco_close(p_scb, (tBTA_AG_DATA*)p_result);
+ }
+ }
+ break;
- case BTA_AG_IN_CALL_HELD_RES:
- alarm_cancel(p_scb->ring_timer);
+ case BTA_AG_IN_CALL_HELD_RES:
+ alarm_cancel(p_scb->ring_timer);
- bta_ag_send_call_inds(p_scb, p_result->result);
+ bta_ag_send_call_inds(p_scb, p_result->result);
- break;
+ break;
- case BTA_AG_OUT_CALL_ORIG_RES:
- bta_ag_send_call_inds(p_scb, p_result->result);
- if (p_result->data.audio_handle == bta_ag_scb_to_idx(p_scb) &&
- !(p_scb->features & BTA_AG_FEAT_NOSCO))
- {
- bta_ag_sco_open(p_scb, (tBTA_AG_DATA *) p_result);
- }
- break;
+ case BTA_AG_OUT_CALL_ORIG_RES:
+ bta_ag_send_call_inds(p_scb, p_result->result);
+ if (p_result->data.audio_handle == bta_ag_scb_to_idx(p_scb) &&
+ !(p_scb->features & BTA_AG_FEAT_NOSCO)) {
+ bta_ag_sco_open(p_scb, (tBTA_AG_DATA*)p_result);
+ }
+ break;
- case BTA_AG_OUT_CALL_ALERT_RES:
- /* send indicators */
- bta_ag_send_call_inds(p_scb, p_result->result);
- if (p_result->data.audio_handle == bta_ag_scb_to_idx(p_scb) &&
- !(p_scb->features & BTA_AG_FEAT_NOSCO))
- {
- bta_ag_sco_open(p_scb, (tBTA_AG_DATA *) p_result);
- }
- break;
+ case BTA_AG_OUT_CALL_ALERT_RES:
+ /* send indicators */
+ bta_ag_send_call_inds(p_scb, p_result->result);
+ if (p_result->data.audio_handle == bta_ag_scb_to_idx(p_scb) &&
+ !(p_scb->features & BTA_AG_FEAT_NOSCO)) {
+ bta_ag_sco_open(p_scb, (tBTA_AG_DATA*)p_result);
+ }
+ break;
- case BTA_AG_MULTI_CALL_RES:
- /* open SCO at SLC for this three way call */
- APPL_TRACE_DEBUG("Headset Connected in three way call");
- if (!(p_scb->features & BTA_AG_FEAT_NOSCO))
- {
- if (p_result->data.audio_handle == bta_ag_scb_to_idx(p_scb))
- bta_ag_sco_open(p_scb, (tBTA_AG_DATA *) p_result);
- else if (p_result->data.audio_handle == BTA_AG_HANDLE_NONE)
- bta_ag_sco_close(p_scb, (tBTA_AG_DATA *) p_result);
- }
- break;
+ case BTA_AG_MULTI_CALL_RES:
+ /* open SCO at SLC for this three way call */
+ APPL_TRACE_DEBUG("Headset Connected in three way call");
+ if (!(p_scb->features & BTA_AG_FEAT_NOSCO)) {
+ if (p_result->data.audio_handle == bta_ag_scb_to_idx(p_scb))
+ bta_ag_sco_open(p_scb, (tBTA_AG_DATA*)p_result);
+ else if (p_result->data.audio_handle == BTA_AG_HANDLE_NONE)
+ bta_ag_sco_close(p_scb, (tBTA_AG_DATA*)p_result);
+ }
+ break;
- case BTA_AG_OUT_CALL_CONN_RES:
- /* send indicators */
- bta_ag_send_call_inds(p_scb, p_result->result);
+ case BTA_AG_OUT_CALL_CONN_RES:
+ /* send indicators */
+ bta_ag_send_call_inds(p_scb, p_result->result);
- /* open or close sco */
- if (!(p_scb->features & BTA_AG_FEAT_NOSCO))
- {
- if (p_result->data.audio_handle == bta_ag_scb_to_idx(p_scb))
- {
- bta_ag_sco_open(p_scb, (tBTA_AG_DATA *) p_result);
- }
- else if (p_result->data.audio_handle == BTA_AG_HANDLE_NONE)
- {
- bta_ag_sco_close(p_scb, (tBTA_AG_DATA *) p_result);
- }
- }
- break;
+ /* open or close sco */
+ if (!(p_scb->features & BTA_AG_FEAT_NOSCO)) {
+ if (p_result->data.audio_handle == bta_ag_scb_to_idx(p_scb)) {
+ bta_ag_sco_open(p_scb, (tBTA_AG_DATA*)p_result);
+ } else if (p_result->data.audio_handle == BTA_AG_HANDLE_NONE) {
+ bta_ag_sco_close(p_scb, (tBTA_AG_DATA*)p_result);
+ }
+ }
+ break;
- case BTA_AG_CALL_CANCEL_RES:
- /* send indicators */
- bta_ag_send_call_inds(p_scb, p_result->result);
- break;
+ case BTA_AG_CALL_CANCEL_RES:
+ /* send indicators */
+ bta_ag_send_call_inds(p_scb, p_result->result);
+ break;
- case BTA_AG_END_CALL_RES:
- alarm_cancel(p_scb->ring_timer);
+ case BTA_AG_END_CALL_RES:
+ alarm_cancel(p_scb->ring_timer);
- /* if sco open, close sco then send indicator values */
- if ((bta_ag_sco_is_open(p_scb) || bta_ag_sco_is_opening(p_scb)) && !(p_scb->features & BTA_AG_FEAT_NOSCO))
- {
- p_scb->post_sco = BTA_AG_POST_SCO_CALL_END;
- bta_ag_sco_close(p_scb, (tBTA_AG_DATA *) p_result);
- }
- else if (p_scb->post_sco == BTA_AG_POST_SCO_CALL_END_INCALL)
- {
- /* sco closing for outgoing call because of incoming call */
- /* Send only callsetup end indicator after sco close */
- p_scb->post_sco = BTA_AG_POST_SCO_CALL_END;
- }
- else
- {
- bta_ag_send_call_inds(p_scb, p_result->result);
+ /* if sco open, close sco then send indicator values */
+ if ((bta_ag_sco_is_open(p_scb) || bta_ag_sco_is_opening(p_scb)) &&
+ !(p_scb->features & BTA_AG_FEAT_NOSCO)) {
+ p_scb->post_sco = BTA_AG_POST_SCO_CALL_END;
+ bta_ag_sco_close(p_scb, (tBTA_AG_DATA*)p_result);
+ } else if (p_scb->post_sco == BTA_AG_POST_SCO_CALL_END_INCALL) {
+ /* sco closing for outgoing call because of incoming call */
+ /* Send only callsetup end indicator after sco close */
+ p_scb->post_sco = BTA_AG_POST_SCO_CALL_END;
+ } else {
+ bta_ag_send_call_inds(p_scb, p_result->result);
- /* if av got suspended by this call, let it resume. */
- bta_sys_sco_unuse(BTA_ID_AG, p_scb->app_id, p_scb->peer_addr);
- }
- break;
+ /* if av got suspended by this call, let it resume. */
+ bta_sys_sco_unuse(BTA_ID_AG, p_scb->app_id, p_scb->peer_addr);
+ }
+ break;
- case BTA_AG_INBAND_RING_RES:
- p_scb->inband_enabled = p_result->data.state;
- APPL_TRACE_DEBUG("inband_enabled set to %d", p_scb->inband_enabled);
- bta_ag_send_result(p_scb, p_result->result, NULL, p_result->data.state);
- break;
+ case BTA_AG_INBAND_RING_RES:
+ p_scb->inband_enabled = p_result->data.state;
+ APPL_TRACE_DEBUG("inband_enabled set to %d", p_scb->inband_enabled);
+ bta_ag_send_result(p_scb, p_result->result, NULL, p_result->data.state);
+ break;
- case BTA_AG_CIND_RES:
- /* store local values */
- p_scb->call_ind = p_result->data.str[0] - '0';
- p_scb->callsetup_ind = p_result->data.str[2] - '0';
- p_scb->service_ind = p_result->data.str[4] - '0';
- p_scb->signal_ind = p_result->data.str[6] - '0';
- p_scb->roam_ind = p_result->data.str[8] - '0';
- p_scb->battchg_ind = p_result->data.str[10] - '0';
- p_scb->callheld_ind = p_result->data.str[12] - '0';
- APPL_TRACE_DEBUG("cind call:%d callsetup:%d", p_scb->call_ind, p_scb->callsetup_ind);
+ case BTA_AG_CIND_RES:
+ /* store local values */
+ p_scb->call_ind = p_result->data.str[0] - '0';
+ p_scb->callsetup_ind = p_result->data.str[2] - '0';
+ p_scb->service_ind = p_result->data.str[4] - '0';
+ p_scb->signal_ind = p_result->data.str[6] - '0';
+ p_scb->roam_ind = p_result->data.str[8] - '0';
+ p_scb->battchg_ind = p_result->data.str[10] - '0';
+ p_scb->callheld_ind = p_result->data.str[12] - '0';
+ APPL_TRACE_DEBUG("cind call:%d callsetup:%d", p_scb->call_ind,
+ p_scb->callsetup_ind);
- bta_ag_send_result(p_scb, p_result->result, p_result->data.str, 0);
- bta_ag_send_ok(p_scb);
- break;
+ bta_ag_send_result(p_scb, p_result->result, p_result->data.str, 0);
+ bta_ag_send_ok(p_scb);
+ break;
- case BTA_AG_BINP_RES:
- case BTA_AG_CNUM_RES:
- case BTA_AG_CLCC_RES:
- case BTA_AG_COPS_RES:
- if (p_result->data.ok_flag != BTA_AG_OK_ERROR)
- {
- if (p_result->data.str[0] != 0)
- {
- bta_ag_send_result(p_scb, p_result->result, p_result->data.str, 0);
- }
-
- if (p_result->data.ok_flag == BTA_AG_OK_DONE)
- bta_ag_send_ok(p_scb);
- }
- else
- {
- bta_ag_send_error(p_scb, p_result->data.errcode);
- }
- break;
-
-
- case BTA_AG_UNAT_RES:
- if (p_result->data.ok_flag != BTA_AG_OK_ERROR)
- {
- if (p_result->data.str[0] != 0)
- {
- bta_ag_process_unat_res(p_result->data.str);
- APPL_TRACE_DEBUG("BTA_AG_RES :%s",p_result->data.str);
- bta_ag_send_result(p_scb, p_result->result, p_result->data.str, 0);
- }
-
- if (p_result->data.ok_flag == BTA_AG_OK_DONE)
- bta_ag_send_ok(p_scb);
- }
- else
- {
- bta_ag_send_error(p_scb, p_result->data.errcode);
- }
- break;
-
- case BTA_AG_CALL_WAIT_RES:
- if (p_scb->ccwa_enabled)
- {
- bta_ag_send_result(p_scb, p_result->result, p_result->data.str, 0);
- }
- bta_ag_send_call_inds(p_scb, p_result->result);
- break;
-
- case BTA_AG_IND_RES:
- bta_ag_send_ind(p_scb, p_result->data.ind.id, p_result->data.ind.value, false);
- break;
-
- case BTA_AG_BVRA_RES:
- bta_ag_send_result(p_scb, p_result->result, NULL, p_result->data.state);
- break;
-
- case BTA_AG_BTRH_RES:
- if (p_result->data.ok_flag != BTA_AG_OK_ERROR)
- {
- /* Don't respond to read if not in response & hold state */
- if (p_result->data.num != BTA_AG_BTRH_NO_RESP)
- {
- bta_ag_send_result(p_scb, p_result->result, NULL, p_result->data.num);
- }
-
- /* In case of a response to a read request we need to send OK */
- if (p_result->data.ok_flag == BTA_AG_OK_DONE)
- bta_ag_send_ok(p_scb);
- }
- else
- {
- bta_ag_send_error(p_scb, p_result->data.errcode);
- }
- break;
-
- case BTA_AG_BIND_RES:
- {
- /* Find whether ind_id is supported by local device or not */
- int local_index = bta_ag_find_hf_ind_by_id(p_scb->local_hf_indicators,
- BTA_AG_MAX_NUM_LOCAL_HF_IND, p_result->data.ind.id);
- if (local_index == -1)
- {
- APPL_TRACE_WARNING("%s Invalid HF Indicator ID %d", __func__,
- p_result->data.ind.id);
- return;
- }
-
- /* Find whether ind_id is supported by peer device or not */
- int peer_index = bta_ag_find_hf_ind_by_id(p_scb->peer_hf_indicators,
- BTA_AG_MAX_NUM_PEER_HF_IND, p_result->data.ind.id);
- if (peer_index == -1)
- {
- APPL_TRACE_WARNING("%s Invalid HF Indicator ID %d", __func__,
- p_result->data.ind.id);
- return;
- } else {
- /* If the current state is different from the one upper layer request
- change current state and send out the result */
- if (p_scb->local_hf_indicators[local_index].is_enable != p_result->data.ind.on_demand)
- {
- char buffer[BTA_AG_AT_MAX_LEN] = {0};
- char *p = buffer;
-
- p_scb->local_hf_indicators[local_index].is_enable = p_result->data.ind.on_demand;
- p += utl_itoa(p_result->data.ind.id, p);
- *p++ = ',';
- p += utl_itoa(p_scb->local_hf_indicators[local_index].is_enable, p);
-
- bta_ag_send_result(p_scb, p_result->result, buffer, 0);
- } else {
- APPL_TRACE_DEBUG("%s HF Indicator %d already %s", p_result->data.ind.id,
- (p_result->data.ind.on_demand == true) ? "Enabled" : "Disabled");
- }
- }
- break;
+ case BTA_AG_BINP_RES:
+ case BTA_AG_CNUM_RES:
+ case BTA_AG_CLCC_RES:
+ case BTA_AG_COPS_RES:
+ if (p_result->data.ok_flag != BTA_AG_OK_ERROR) {
+ if (p_result->data.str[0] != 0) {
+ bta_ag_send_result(p_scb, p_result->result, p_result->data.str, 0);
}
- default:
- break;
+ if (p_result->data.ok_flag == BTA_AG_OK_DONE) bta_ag_send_ok(p_scb);
+ } else {
+ bta_ag_send_error(p_scb, p_result->data.errcode);
+ }
+ break;
+
+ case BTA_AG_UNAT_RES:
+ if (p_result->data.ok_flag != BTA_AG_OK_ERROR) {
+ if (p_result->data.str[0] != 0) {
+ bta_ag_process_unat_res(p_result->data.str);
+ APPL_TRACE_DEBUG("BTA_AG_RES :%s", p_result->data.str);
+ bta_ag_send_result(p_scb, p_result->result, p_result->data.str, 0);
+ }
+
+ if (p_result->data.ok_flag == BTA_AG_OK_DONE) bta_ag_send_ok(p_scb);
+ } else {
+ bta_ag_send_error(p_scb, p_result->data.errcode);
+ }
+ break;
+
+ case BTA_AG_CALL_WAIT_RES:
+ if (p_scb->ccwa_enabled) {
+ bta_ag_send_result(p_scb, p_result->result, p_result->data.str, 0);
+ }
+ bta_ag_send_call_inds(p_scb, p_result->result);
+ break;
+
+ case BTA_AG_IND_RES:
+ bta_ag_send_ind(p_scb, p_result->data.ind.id, p_result->data.ind.value,
+ false);
+ break;
+
+ case BTA_AG_BVRA_RES:
+ bta_ag_send_result(p_scb, p_result->result, NULL, p_result->data.state);
+ break;
+
+ case BTA_AG_BTRH_RES:
+ if (p_result->data.ok_flag != BTA_AG_OK_ERROR) {
+ /* Don't respond to read if not in response & hold state */
+ if (p_result->data.num != BTA_AG_BTRH_NO_RESP) {
+ bta_ag_send_result(p_scb, p_result->result, NULL, p_result->data.num);
+ }
+
+ /* In case of a response to a read request we need to send OK */
+ if (p_result->data.ok_flag == BTA_AG_OK_DONE) bta_ag_send_ok(p_scb);
+ } else {
+ bta_ag_send_error(p_scb, p_result->data.errcode);
+ }
+ break;
+
+ case BTA_AG_BIND_RES: {
+ /* Find whether ind_id is supported by local device or not */
+ int local_index = bta_ag_find_hf_ind_by_id(p_scb->local_hf_indicators,
+ BTA_AG_MAX_NUM_LOCAL_HF_IND,
+ p_result->data.ind.id);
+ if (local_index == -1) {
+ APPL_TRACE_WARNING("%s Invalid HF Indicator ID %d", __func__,
+ p_result->data.ind.id);
+ return;
+ }
+
+ /* Find whether ind_id is supported by peer device or not */
+ int peer_index = bta_ag_find_hf_ind_by_id(p_scb->peer_hf_indicators,
+ BTA_AG_MAX_NUM_PEER_HF_IND,
+ p_result->data.ind.id);
+ if (peer_index == -1) {
+ APPL_TRACE_WARNING("%s Invalid HF Indicator ID %d", __func__,
+ p_result->data.ind.id);
+ return;
+ } else {
+ /* If the current state is different from the one upper layer request
+ change current state and send out the result */
+ if (p_scb->local_hf_indicators[local_index].is_enable !=
+ p_result->data.ind.on_demand) {
+ char buffer[BTA_AG_AT_MAX_LEN] = {0};
+ char* p = buffer;
+
+ p_scb->local_hf_indicators[local_index].is_enable =
+ p_result->data.ind.on_demand;
+ p += utl_itoa(p_result->data.ind.id, p);
+ *p++ = ',';
+ p += utl_itoa(p_scb->local_hf_indicators[local_index].is_enable, p);
+
+ bta_ag_send_result(p_scb, p_result->result, buffer, 0);
+ } else {
+ APPL_TRACE_DEBUG(
+ "%s HF Indicator %d already %s", p_result->data.ind.id,
+ (p_result->data.ind.on_demand == true) ? "Enabled" : "Disabled");
+ }
+ }
+ break;
}
+
+ default:
+ break;
+ }
}
/*******************************************************************************
@@ -1852,16 +1676,12 @@
* Returns void
*
******************************************************************************/
-void bta_ag_result(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data)
-{
- if (p_scb->conn_service == BTA_AG_HSP)
- {
- bta_ag_hsp_result(p_scb, &p_data->api_result);
- }
- else
- {
- bta_ag_hfp_result(p_scb, &p_data->api_result);
- }
+void bta_ag_result(tBTA_AG_SCB* p_scb, tBTA_AG_DATA* p_data) {
+ if (p_scb->conn_service == BTA_AG_HSP) {
+ bta_ag_hsp_result(p_scb, &p_data->api_result);
+ } else {
+ bta_ag_hfp_result(p_scb, &p_data->api_result);
+ }
}
#if (BTM_WBS_INCLUDED == TRUE)
@@ -1874,32 +1694,33 @@
* Returns void
*
******************************************************************************/
-void bta_ag_send_bcs(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data)
-{
- uint16_t codec_uuid;
+void bta_ag_send_bcs(tBTA_AG_SCB* p_scb, tBTA_AG_DATA* p_data) {
+ uint16_t codec_uuid;
- if (p_scb->codec_fallback)
- {
+ if (p_scb->codec_fallback) {
+ codec_uuid = UUID_CODEC_CVSD;
+ } else {
+ switch (p_scb->sco_codec) {
+ case BTA_AG_CODEC_NONE:
codec_uuid = UUID_CODEC_CVSD;
+ break;
+ case BTA_AG_CODEC_CVSD:
+ codec_uuid = UUID_CODEC_CVSD;
+ break;
+ case BTA_AG_CODEC_MSBC:
+ codec_uuid = UUID_CODEC_MSBC;
+ break;
+ default:
+ APPL_TRACE_ERROR("bta_ag_send_bcs: unknown codec %d, use CVSD",
+ p_scb->sco_codec);
+ codec_uuid = UUID_CODEC_CVSD;
+ break;
}
- else
- {
- switch(p_scb->sco_codec)
- {
- case BTA_AG_CODEC_NONE: codec_uuid = UUID_CODEC_CVSD; break;
- case BTA_AG_CODEC_CVSD: codec_uuid = UUID_CODEC_CVSD; break;
- case BTA_AG_CODEC_MSBC: codec_uuid = UUID_CODEC_MSBC; break;
- default:
- APPL_TRACE_ERROR("bta_ag_send_bcs: unknown codec %d, use CVSD", p_scb->sco_codec);
- codec_uuid = UUID_CODEC_CVSD;
- break;
- }
- }
+ }
- /* send +BCS */
- APPL_TRACE_DEBUG("send +BCS codec is %d", codec_uuid);
- bta_ag_send_result(p_scb, BTA_AG_LOCAL_RES_BCS, NULL, codec_uuid);
-
+ /* send +BCS */
+ APPL_TRACE_DEBUG("send +BCS codec is %d", codec_uuid);
+ bta_ag_send_result(p_scb, BTA_AG_LOCAL_RES_BCS, NULL, codec_uuid);
}
#endif
@@ -1913,17 +1734,16 @@
* Returns void
*
******************************************************************************/
-void bta_ag_send_ring(tBTA_AG_SCB *p_scb, UNUSED_ATTR tBTA_AG_DATA *p_data)
-{
- /* send RING */
- bta_ag_send_result(p_scb, BTA_AG_LOCAL_RES_RING, NULL, 0);
+void bta_ag_send_ring(tBTA_AG_SCB* p_scb, UNUSED_ATTR tBTA_AG_DATA* p_data) {
+ /* send RING */
+ bta_ag_send_result(p_scb, BTA_AG_LOCAL_RES_RING, NULL, 0);
- /* if HFP and clip enabled and clip data send CLIP */
- if (p_scb->conn_service == BTA_AG_HFP && p_scb->clip_enabled && p_scb->clip[0] != 0)
- {
- bta_ag_send_result(p_scb, BTA_AG_LOCAL_RES_CLIP, p_scb->clip, 0);
- }
+ /* if HFP and clip enabled and clip data send CLIP */
+ if (p_scb->conn_service == BTA_AG_HFP && p_scb->clip_enabled &&
+ p_scb->clip[0] != 0) {
+ bta_ag_send_result(p_scb, BTA_AG_LOCAL_RES_CLIP, p_scb->clip, 0);
+ }
- bta_sys_start_timer(p_scb->ring_timer, BTA_AG_RING_TIMEOUT_MS,
- BTA_AG_RING_TIMEOUT_EVT, bta_ag_scb_to_idx(p_scb));
+ bta_sys_start_timer(p_scb->ring_timer, BTA_AG_RING_TIMEOUT_MS,
+ BTA_AG_RING_TIMEOUT_EVT, bta_ag_scb_to_idx(p_scb));
}
diff --git a/bta/ag/bta_ag_int.h b/bta/ag/bta_ag_int.h
index 870d9fe..c52f364 100644
--- a/bta/ag/bta_ag_int.h
+++ b/bta/ag/bta_ag_int.h
@@ -24,10 +24,10 @@
#ifndef BTA_AG_INT_H
#define BTA_AG_INT_H
-#include "bta_sys.h"
-#include "bta_api.h"
#include "bta_ag_api.h"
#include "bta_ag_at.h"
+#include "bta_api.h"
+#include "bta_sys.h"
#ifdef __cplusplus
extern "C" {
@@ -38,104 +38,101 @@
****************************************************************************/
/* Number of SCBs (AG service instances that can be registered) */
#ifndef BTA_AG_NUM_SCB
-#define BTA_AG_NUM_SCB 2
+#define BTA_AG_NUM_SCB 2
#endif
/* Time to wait for retry in case of collision */
#ifndef BTA_AG_COLLISION_TIMEOUT_MS
-#define BTA_AG_COLLISION_TIMEOUT_MS (2 * 1000) /* 2 seconds */
+#define BTA_AG_COLLISION_TIMEOUT_MS (2 * 1000) /* 2 seconds */
#endif
/* RFCOMM MTU SIZE */
-#define BTA_AG_MTU 256
+#define BTA_AG_MTU 256
/* Max number of peer and local HF indicators */
-#define BTA_AG_MAX_NUM_PEER_HF_IND 20
-#define BTA_AG_MAX_NUM_LOCAL_HF_IND 4
+#define BTA_AG_MAX_NUM_PEER_HF_IND 20
+#define BTA_AG_MAX_NUM_LOCAL_HF_IND 4
/* Internal profile indexes */
-#define BTA_AG_HSP 0 /* index for HSP */
-#define BTA_AG_HFP 1 /* index for HFP */
-#define BTA_AG_NUM_IDX 2 /* number of profile indexes */
+#define BTA_AG_HSP 0 /* index for HSP */
+#define BTA_AG_HFP 1 /* index for HFP */
+#define BTA_AG_NUM_IDX 2 /* number of profile indexes */
/* profile role for connection */
-#define BTA_AG_ACP 0 /* accepted connection */
-#define BTA_AG_INT 1 /* initiating connection */
+#define BTA_AG_ACP 0 /* accepted connection */
+#define BTA_AG_INT 1 /* initiating connection */
/* feature mask that matches spec */
-#define BTA_AG_BSRF_FEAT_SPEC (BTA_AG_FEAT_3WAY | BTA_AG_FEAT_ECNR | \
- BTA_AG_FEAT_VREC | BTA_AG_FEAT_INBAND | \
- BTA_AG_FEAT_VTAG | BTA_AG_FEAT_REJECT | \
- BTA_AG_FEAT_ECS | BTA_AG_FEAT_ECC | \
- BTA_AG_FEAT_EXTERR | BTA_AG_FEAT_CODEC | \
- BTA_AG_FEAT_HF_IND | BTA_AG_FEAT_ESCO | \
- BTA_AG_FEAT_VOIP)
+#define BTA_AG_BSRF_FEAT_SPEC \
+ (BTA_AG_FEAT_3WAY | BTA_AG_FEAT_ECNR | BTA_AG_FEAT_VREC | \
+ BTA_AG_FEAT_INBAND | BTA_AG_FEAT_VTAG | BTA_AG_FEAT_REJECT | \
+ BTA_AG_FEAT_ECS | BTA_AG_FEAT_ECC | BTA_AG_FEAT_EXTERR | \
+ BTA_AG_FEAT_CODEC | BTA_AG_FEAT_HF_IND | BTA_AG_FEAT_ESCO | \
+ BTA_AG_FEAT_VOIP)
-#define BTA_AG_SDP_FEAT_SPEC (BTA_AG_FEAT_3WAY | BTA_AG_FEAT_ECNR | \
- BTA_AG_FEAT_VREC | BTA_AG_FEAT_INBAND | \
- BTA_AG_FEAT_VTAG)
+#define BTA_AG_SDP_FEAT_SPEC \
+ (BTA_AG_FEAT_3WAY | BTA_AG_FEAT_ECNR | BTA_AG_FEAT_VREC | \
+ BTA_AG_FEAT_INBAND | BTA_AG_FEAT_VTAG)
-enum
-{
- /* these events are handled by the state machine */
- BTA_AG_API_REGISTER_EVT = BTA_SYS_EVT_START(BTA_ID_AG),
- BTA_AG_API_DEREGISTER_EVT,
- BTA_AG_API_OPEN_EVT,
- BTA_AG_API_CLOSE_EVT,
- BTA_AG_API_AUDIO_OPEN_EVT,
- BTA_AG_API_AUDIO_CLOSE_EVT,
- BTA_AG_API_RESULT_EVT,
- BTA_AG_API_SETCODEC_EVT,
- BTA_AG_RFC_OPEN_EVT,
- BTA_AG_RFC_CLOSE_EVT,
- BTA_AG_RFC_SRV_CLOSE_EVT,
- BTA_AG_RFC_DATA_EVT,
- BTA_AG_SCO_OPEN_EVT,
- BTA_AG_SCO_CLOSE_EVT,
- BTA_AG_DISC_ACP_RES_EVT,
- BTA_AG_DISC_INT_RES_EVT,
- BTA_AG_DISC_OK_EVT,
- BTA_AG_DISC_FAIL_EVT,
- BTA_AG_CI_RX_WRITE_EVT,
- BTA_AG_RING_TIMEOUT_EVT,
- BTA_AG_SVC_TIMEOUT_EVT,
- BTA_AG_CI_SCO_DATA_EVT,
- BTA_AG_CI_SLC_READY_EVT,
- BTA_AG_MAX_EVT,
+enum {
+ /* these events are handled by the state machine */
+ BTA_AG_API_REGISTER_EVT = BTA_SYS_EVT_START(BTA_ID_AG),
+ BTA_AG_API_DEREGISTER_EVT,
+ BTA_AG_API_OPEN_EVT,
+ BTA_AG_API_CLOSE_EVT,
+ BTA_AG_API_AUDIO_OPEN_EVT,
+ BTA_AG_API_AUDIO_CLOSE_EVT,
+ BTA_AG_API_RESULT_EVT,
+ BTA_AG_API_SETCODEC_EVT,
+ BTA_AG_RFC_OPEN_EVT,
+ BTA_AG_RFC_CLOSE_EVT,
+ BTA_AG_RFC_SRV_CLOSE_EVT,
+ BTA_AG_RFC_DATA_EVT,
+ BTA_AG_SCO_OPEN_EVT,
+ BTA_AG_SCO_CLOSE_EVT,
+ BTA_AG_DISC_ACP_RES_EVT,
+ BTA_AG_DISC_INT_RES_EVT,
+ BTA_AG_DISC_OK_EVT,
+ BTA_AG_DISC_FAIL_EVT,
+ BTA_AG_CI_RX_WRITE_EVT,
+ BTA_AG_RING_TIMEOUT_EVT,
+ BTA_AG_SVC_TIMEOUT_EVT,
+ BTA_AG_CI_SCO_DATA_EVT,
+ BTA_AG_CI_SLC_READY_EVT,
+ BTA_AG_MAX_EVT,
- /* these events are handled outside of the state machine */
- BTA_AG_API_ENABLE_EVT,
- BTA_AG_API_DISABLE_EVT
+ /* these events are handled outside of the state machine */
+ BTA_AG_API_ENABLE_EVT,
+ BTA_AG_API_DISABLE_EVT
};
/* Actions to perform after a SCO event */
-enum
-{
- BTA_AG_POST_SCO_NONE, /* no action */
- BTA_AG_POST_SCO_CLOSE_RFC, /* close RFCOMM channel after SCO closes */
- BTA_AG_POST_SCO_RING, /* send RING result code after SCO opens */
- BTA_AG_POST_SCO_CALL_CONN, /* send call indicators after SCO opens/closes */
- BTA_AG_POST_SCO_CALL_ORIG, /* send call indicators after SCO closes */
- BTA_AG_POST_SCO_CALL_END, /* send call indicators after SCO closes */
- BTA_AG_POST_SCO_CALL_END_INCALL /* send call indicators for end call & incoming call after SCO closes */
+enum {
+ BTA_AG_POST_SCO_NONE, /* no action */
+ BTA_AG_POST_SCO_CLOSE_RFC, /* close RFCOMM channel after SCO closes */
+ BTA_AG_POST_SCO_RING, /* send RING result code after SCO opens */
+ BTA_AG_POST_SCO_CALL_CONN, /* send call indicators after SCO opens/closes */
+ BTA_AG_POST_SCO_CALL_ORIG, /* send call indicators after SCO closes */
+ BTA_AG_POST_SCO_CALL_END, /* send call indicators after SCO closes */
+ BTA_AG_POST_SCO_CALL_END_INCALL /* send call indicators for end call &
+ incoming call after SCO closes */
};
/* sco states */
-enum
-{
- BTA_AG_SCO_SHUTDOWN_ST, /* no sco listening, all sco connections closed */
- BTA_AG_SCO_LISTEN_ST, /* sco listening */
+enum {
+ BTA_AG_SCO_SHUTDOWN_ST, /* no sco listening, all sco connections closed */
+ BTA_AG_SCO_LISTEN_ST, /* sco listening */
#if (BTM_WBS_INCLUDED == TRUE)
- BTA_AG_SCO_CODEC_ST, /* sco codec negotiation */
+ BTA_AG_SCO_CODEC_ST, /* sco codec negotiation */
#endif
- BTA_AG_SCO_OPENING_ST, /* sco connection opening */
- BTA_AG_SCO_OPEN_CL_ST, /* opening sco connection being closed */
- BTA_AG_SCO_OPEN_XFER_ST, /* opening sco connection being transferred */
- BTA_AG_SCO_OPEN_ST, /* sco open */
- BTA_AG_SCO_CLOSING_ST, /* sco closing */
- BTA_AG_SCO_CLOSE_OP_ST, /* closing sco being opened */
- BTA_AG_SCO_CLOSE_XFER_ST, /* closing sco being transferred */
- BTA_AG_SCO_SHUTTING_ST /* sco shutting down */
+ BTA_AG_SCO_OPENING_ST, /* sco connection opening */
+ BTA_AG_SCO_OPEN_CL_ST, /* opening sco connection being closed */
+ BTA_AG_SCO_OPEN_XFER_ST, /* opening sco connection being transferred */
+ BTA_AG_SCO_OPEN_ST, /* sco open */
+ BTA_AG_SCO_CLOSING_ST, /* sco closing */
+ BTA_AG_SCO_CLOSE_OP_ST, /* closing sco being opened */
+ BTA_AG_SCO_CLOSE_XFER_ST, /* closing sco being transferred */
+ BTA_AG_SCO_SHUTTING_ST /* sco shutting down */
};
/*****************************************************************************
@@ -143,180 +140,169 @@
****************************************************************************/
/* data type for BTA_AG_API_ENABLE_EVT */
-typedef struct
-{
- BT_HDR hdr;
- tBTA_AG_PARSE_MODE parse_mode;
- tBTA_AG_CBACK *p_cback;
+typedef struct {
+ BT_HDR hdr;
+ tBTA_AG_PARSE_MODE parse_mode;
+ tBTA_AG_CBACK* p_cback;
} tBTA_AG_API_ENABLE;
/* data type for BTA_AG_API_REGISTER_EVT */
-typedef struct
-{
- BT_HDR hdr;
- char p_name[2][BTA_SERVICE_NAME_LEN+1];
- tBTA_SERVICE_MASK services;
- tBTA_SEC sec_mask;
- tBTA_AG_FEAT features;
- uint8_t app_id;
+typedef struct {
+ BT_HDR hdr;
+ char p_name[2][BTA_SERVICE_NAME_LEN + 1];
+ tBTA_SERVICE_MASK services;
+ tBTA_SEC sec_mask;
+ tBTA_AG_FEAT features;
+ uint8_t app_id;
} tBTA_AG_API_REGISTER;
/* data type for BTA_AG_API_OPEN_EVT */
-typedef struct
-{
- BT_HDR hdr;
- BD_ADDR bd_addr;
- tBTA_SERVICE_MASK services;
- tBTA_SEC sec_mask;
+typedef struct {
+ BT_HDR hdr;
+ BD_ADDR bd_addr;
+ tBTA_SERVICE_MASK services;
+ tBTA_SEC sec_mask;
} tBTA_AG_API_OPEN;
/* data type for BTA_AG_API_RESULT_EVT */
-typedef struct
-{
- BT_HDR hdr;
- tBTA_AG_RES result;
- tBTA_AG_RES_DATA data;
+typedef struct {
+ BT_HDR hdr;
+ tBTA_AG_RES result;
+ tBTA_AG_RES_DATA data;
} tBTA_AG_API_RESULT;
/* data type for BTA_AG_API_SETCODEC_EVT */
-typedef struct
-{
- BT_HDR hdr;
- tBTA_AG_PEER_CODEC codec;
+typedef struct {
+ BT_HDR hdr;
+ tBTA_AG_PEER_CODEC codec;
} tBTA_AG_API_SETCODEC;
/* data type for BTA_AG_DISC_RESULT_EVT */
-typedef struct
-{
- BT_HDR hdr;
- uint16_t status;
+typedef struct {
+ BT_HDR hdr;
+ uint16_t status;
} tBTA_AG_DISC_RESULT;
/* data type for RFCOMM events */
-typedef struct
-{
- BT_HDR hdr;
- uint16_t port_handle;
+typedef struct {
+ BT_HDR hdr;
+ uint16_t port_handle;
} tBTA_AG_RFC;
/* data type for BTA_AG_CI_RX_WRITE_EVT */
-typedef struct
-{
- BT_HDR hdr;
-// char p_data[BTA_AG_MTU+1];
+typedef struct {
+ BT_HDR hdr;
+ // char p_data[BTA_AG_MTU+1];
} tBTA_AG_CI_RX_WRITE;
/* union of all event datatypes */
-typedef union
-{
- BT_HDR hdr;
- tBTA_AG_API_ENABLE api_enable;
- tBTA_AG_API_REGISTER api_register;
- tBTA_AG_API_OPEN api_open;
- tBTA_AG_API_RESULT api_result;
+typedef union {
+ BT_HDR hdr;
+ tBTA_AG_API_ENABLE api_enable;
+ tBTA_AG_API_REGISTER api_register;
+ tBTA_AG_API_OPEN api_open;
+ tBTA_AG_API_RESULT api_result;
#if (BTM_WBS_INCLUDED == TRUE)
- tBTA_AG_API_SETCODEC api_setcodec;
+ tBTA_AG_API_SETCODEC api_setcodec;
#endif
- tBTA_AG_DISC_RESULT disc_result;
- tBTA_AG_RFC rfc;
- tBTA_AG_CI_RX_WRITE ci_rx_write;
+ tBTA_AG_DISC_RESULT disc_result;
+ tBTA_AG_RFC rfc;
+ tBTA_AG_CI_RX_WRITE ci_rx_write;
} tBTA_AG_DATA;
/* type for each profile */
-typedef struct
-{
- uint32_t sdp_handle;
- uint8_t scn;
+typedef struct {
+ uint32_t sdp_handle;
+ uint8_t scn;
} tBTA_AG_PROFILE;
#if (BTM_WBS_INCLUDED == TRUE)
-typedef enum
-{
- BTA_AG_SCO_MSBC_SETTINGS_T2 = 0, /* preferred/default when codec is mSBC */
- BTA_AG_SCO_MSBC_SETTINGS_T1,
+typedef enum {
+ BTA_AG_SCO_MSBC_SETTINGS_T2 = 0, /* preferred/default when codec is mSBC */
+ BTA_AG_SCO_MSBC_SETTINGS_T1,
} tBTA_AG_SCO_MSBC_SETTINGS;
#endif
/* type for each service control block */
-typedef struct
-{
- char clip[BTA_AG_AT_MAX_LEN+1]; /* number string used for CLIP */
- uint16_t serv_handle[BTA_AG_NUM_IDX]; /* RFCOMM server handles */
- tBTA_AG_AT_CB at_cb; /* AT command interpreter */
- BD_ADDR peer_addr; /* peer bd address */
- tSDP_DISCOVERY_DB *p_disc_db; /* pointer to discovery database */
- tBTA_SERVICE_MASK reg_services; /* services specified in register API */
- tBTA_SERVICE_MASK open_services; /* services specified in open API */
- uint16_t conn_handle; /* RFCOMM handle of connected service */
- tBTA_SEC serv_sec_mask; /* server security mask */
- tBTA_SEC cli_sec_mask; /* client security mask */
- tBTA_AG_FEAT features; /* features registered by application */
- tBTA_AG_PEER_FEAT peer_features; /* peer device features */
- uint16_t peer_version; /* profile version of peer device */
- uint16_t hsp_version; /* HSP profile version */
- uint16_t sco_idx; /* SCO handle */
- bool in_use; /* scb in use */
- bool dealloc; /* true if service shutting down */
- bool clip_enabled; /* set to true if HF enables CLIP reporting */
- bool ccwa_enabled; /* set to true if HF enables CCWA reporting */
- bool cmer_enabled; /* set to true if HF enables CMER reporting */
- bool cmee_enabled; /* set to true if HF enables CME ERROR reporting */
- bool inband_enabled; /* set to true if inband ring enabled */
- bool svc_conn; /* set to true when service level connection up */
- uint8_t state; /* state machine state */
- uint8_t conn_service; /* connected service */
- uint8_t peer_scn; /* peer scn */
- uint8_t app_id; /* application id */
- uint8_t role; /* initiator/acceptor role */
- uint8_t post_sco; /* action to perform after sco event */
- uint8_t call_ind; /* CIEV call indicator value */
- uint8_t callsetup_ind; /* CIEV callsetup indicator value */
- uint8_t service_ind; /* CIEV service indicator value */
- uint8_t signal_ind; /* CIEV signal indicator value */
- uint8_t roam_ind; /* CIEV roam indicator value */
- uint8_t battchg_ind; /* CIEV battery charge indicator value */
- uint8_t callheld_ind; /* CIEV call held indicator value */
- bool retry_with_sco_only; /* indicator to try with SCO only when eSCO fails */
- uint32_t bia_masked_out; /* indicators HF does not want us to send */
- alarm_t *collision_timer;
- alarm_t *ring_timer;
+typedef struct {
+ char clip[BTA_AG_AT_MAX_LEN + 1]; /* number string used for CLIP */
+ uint16_t serv_handle[BTA_AG_NUM_IDX]; /* RFCOMM server handles */
+ tBTA_AG_AT_CB at_cb; /* AT command interpreter */
+ BD_ADDR peer_addr; /* peer bd address */
+ tSDP_DISCOVERY_DB* p_disc_db; /* pointer to discovery database */
+ tBTA_SERVICE_MASK reg_services; /* services specified in register API */
+ tBTA_SERVICE_MASK open_services; /* services specified in open API */
+ uint16_t conn_handle; /* RFCOMM handle of connected service */
+ tBTA_SEC serv_sec_mask; /* server security mask */
+ tBTA_SEC cli_sec_mask; /* client security mask */
+ tBTA_AG_FEAT features; /* features registered by application */
+ tBTA_AG_PEER_FEAT peer_features; /* peer device features */
+ uint16_t peer_version; /* profile version of peer device */
+ uint16_t hsp_version; /* HSP profile version */
+ uint16_t sco_idx; /* SCO handle */
+ bool in_use; /* scb in use */
+ bool dealloc; /* true if service shutting down */
+ bool clip_enabled; /* set to true if HF enables CLIP reporting */
+ bool ccwa_enabled; /* set to true if HF enables CCWA reporting */
+ bool cmer_enabled; /* set to true if HF enables CMER reporting */
+ bool cmee_enabled; /* set to true if HF enables CME ERROR reporting */
+ bool inband_enabled; /* set to true if inband ring enabled */
+ bool svc_conn; /* set to true when service level connection up */
+ uint8_t state; /* state machine state */
+ uint8_t conn_service; /* connected service */
+ uint8_t peer_scn; /* peer scn */
+ uint8_t app_id; /* application id */
+ uint8_t role; /* initiator/acceptor role */
+ uint8_t post_sco; /* action to perform after sco event */
+ uint8_t call_ind; /* CIEV call indicator value */
+ uint8_t callsetup_ind; /* CIEV callsetup indicator value */
+ uint8_t service_ind; /* CIEV service indicator value */
+ uint8_t signal_ind; /* CIEV signal indicator value */
+ uint8_t roam_ind; /* CIEV roam indicator value */
+ uint8_t battchg_ind; /* CIEV battery charge indicator value */
+ uint8_t callheld_ind; /* CIEV call held indicator value */
+ bool retry_with_sco_only; /* indicator to try with SCO only when eSCO fails */
+ uint32_t bia_masked_out; /* indicators HF does not want us to send */
+ alarm_t* collision_timer;
+ alarm_t* ring_timer;
#if (BTM_WBS_INCLUDED == TRUE)
- alarm_t *codec_negotiation_timer;
- tBTA_AG_PEER_CODEC peer_codecs; /* codecs for eSCO supported by the peer */
- tBTA_AG_PEER_CODEC sco_codec; /* codec to be used for eSCO connection */
- tBTA_AG_PEER_CODEC inuse_codec; /* codec being used for the current SCO connection */
- bool codec_updated; /* set to true whenever the app updates codec type */
- bool codec_fallback; /* If sco nego fails for mSBC, fallback to CVSD */
- tBTA_AG_SCO_MSBC_SETTINGS codec_msbc_settings; /* settings to be used for the impending eSCO */
+ alarm_t* codec_negotiation_timer;
+ tBTA_AG_PEER_CODEC peer_codecs; /* codecs for eSCO supported by the peer */
+ tBTA_AG_PEER_CODEC sco_codec; /* codec to be used for eSCO connection */
+ tBTA_AG_PEER_CODEC
+ inuse_codec; /* codec being used for the current SCO connection */
+ bool codec_updated; /* set to true whenever the app updates codec type */
+ bool codec_fallback; /* If sco nego fails for mSBC, fallback to CVSD */
+ tBTA_AG_SCO_MSBC_SETTINGS
+ codec_msbc_settings; /* settings to be used for the impending eSCO */
#endif
- tBTA_AG_HF_IND peer_hf_indicators[BTA_AG_MAX_NUM_PEER_HF_IND]; /* Peer supported
- HF indicators */
- tBTA_AG_HF_IND local_hf_indicators[BTA_AG_MAX_NUM_LOCAL_HF_IND]; /* Local supported
- HF indicators */
+ tBTA_AG_HF_IND
+ peer_hf_indicators[BTA_AG_MAX_NUM_PEER_HF_IND]; /* Peer supported
+ HF indicators */
+ tBTA_AG_HF_IND
+ local_hf_indicators[BTA_AG_MAX_NUM_LOCAL_HF_IND]; /* Local supported
+ HF indicators */
} tBTA_AG_SCB;
/* type for sco data */
-typedef struct
-{
- tBTM_ESCO_CONN_REQ_EVT_DATA conn_data; /* SCO data for pending conn request */
- tBTA_AG_SCB *p_curr_scb; /* SCB associated with SCO connection */
- tBTA_AG_SCB *p_xfer_scb; /* SCB associated with SCO transfer */
- uint16_t cur_idx; /* SCO handle */
- uint8_t state; /* SCO state variable */
- bool param_updated; /* if params were updated to non-default */
- tBTM_ESCO_PARAMS params; /* ESCO parameters */
+typedef struct {
+ tBTM_ESCO_CONN_REQ_EVT_DATA conn_data; /* SCO data for pending conn request */
+ tBTA_AG_SCB* p_curr_scb; /* SCB associated with SCO connection */
+ tBTA_AG_SCB* p_xfer_scb; /* SCB associated with SCO transfer */
+ uint16_t cur_idx; /* SCO handle */
+ uint8_t state; /* SCO state variable */
+ bool param_updated; /* if params were updated to non-default */
+ tBTM_ESCO_PARAMS params; /* ESCO parameters */
} tBTA_AG_SCO_CB;
-
/* type for AG control block */
-typedef struct
-{
- tBTA_AG_SCB scb[BTA_AG_NUM_SCB]; /* service control blocks */
- tBTA_AG_PROFILE profile[BTA_AG_NUM_IDX]; /* profile-specific data */
- tBTA_AG_SCO_CB sco; /* SCO data */
- tBTA_AG_CBACK *p_cback; /* application callback */
- tBTA_AG_PARSE_MODE parse_mode; /* parse/pass-through mode */
+typedef struct {
+ tBTA_AG_SCB scb[BTA_AG_NUM_SCB]; /* service control blocks */
+ tBTA_AG_PROFILE profile[BTA_AG_NUM_IDX]; /* profile-specific data */
+ tBTA_AG_SCO_CB sco; /* SCO data */
+ tBTA_AG_CBACK* p_cback; /* application callback */
+ tBTA_AG_PARSE_MODE parse_mode; /* parse/pass-through mode */
} tBTA_AG_CB;
/*****************************************************************************
@@ -326,13 +312,13 @@
/* constant lookup tables */
extern const uint16_t bta_ag_uuid[BTA_AG_NUM_IDX];
extern const uint8_t bta_ag_sec_id[BTA_AG_NUM_IDX];
-extern const tBTA_AG_AT_CMD *bta_ag_at_tbl[BTA_AG_NUM_IDX];
+extern const tBTA_AG_AT_CMD* bta_ag_at_tbl[BTA_AG_NUM_IDX];
/* control block declaration */
extern tBTA_AG_CB bta_ag_cb;
/* config struct */
-extern tBTA_AG_CFG *p_bta_ag_cfg;
+extern tBTA_AG_CFG* p_bta_ag_cfg;
extern const tBTA_AG_HF_IND bta_ag_local_hf_ind_cfg[];
/*****************************************************************************
@@ -340,88 +326,93 @@
****************************************************************************/
/* main functions */
-extern void bta_ag_scb_dealloc(tBTA_AG_SCB *p_scb);
-extern uint16_t bta_ag_scb_to_idx(tBTA_AG_SCB *p_scb);
-extern tBTA_AG_SCB *bta_ag_scb_by_idx(uint16_t idx);
+extern void bta_ag_scb_dealloc(tBTA_AG_SCB* p_scb);
+extern uint16_t bta_ag_scb_to_idx(tBTA_AG_SCB* p_scb);
+extern tBTA_AG_SCB* bta_ag_scb_by_idx(uint16_t idx);
extern uint8_t bta_ag_service_to_idx(tBTA_SERVICE_MASK services);
extern uint16_t bta_ag_idx_by_bdaddr(BD_ADDR peer_addr);
-extern bool bta_ag_other_scb_open(tBTA_AG_SCB *p_curr_scb);
-extern bool bta_ag_scb_open(tBTA_AG_SCB *p_curr_scb);
-extern tBTA_AG_SCB *bta_ag_get_other_idle_scb (tBTA_AG_SCB *p_curr_scb);
-extern void bta_ag_sm_execute(tBTA_AG_SCB *p_scb, uint16_t event, tBTA_AG_DATA *p_data);
-extern bool bta_ag_hdl_event(BT_HDR *p_msg);
-extern void bta_ag_collision_cback (tBTA_SYS_CONN_STATUS status, uint8_t id,
- uint8_t app_id, BD_ADDR peer_addr);
-extern void bta_ag_resume_open (tBTA_AG_SCB *p_scb);
+extern bool bta_ag_other_scb_open(tBTA_AG_SCB* p_curr_scb);
+extern bool bta_ag_scb_open(tBTA_AG_SCB* p_curr_scb);
+extern tBTA_AG_SCB* bta_ag_get_other_idle_scb(tBTA_AG_SCB* p_curr_scb);
+extern void bta_ag_sm_execute(tBTA_AG_SCB* p_scb, uint16_t event,
+ tBTA_AG_DATA* p_data);
+extern bool bta_ag_hdl_event(BT_HDR* p_msg);
+extern void bta_ag_collision_cback(tBTA_SYS_CONN_STATUS status, uint8_t id,
+ uint8_t app_id, BD_ADDR peer_addr);
+extern void bta_ag_resume_open(tBTA_AG_SCB* p_scb);
/* SDP functions */
-extern bool bta_ag_add_record(uint16_t service_uuid, char *p_service_name, uint8_t scn,
- tBTA_AG_FEAT features, uint32_t sdp_handle);
-extern void bta_ag_create_records(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data);
-extern void bta_ag_del_records(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data);
-extern bool bta_ag_sdp_find_attr(tBTA_AG_SCB *p_scb, tBTA_SERVICE_MASK service);
-extern void bta_ag_do_disc(tBTA_AG_SCB *p_scb, tBTA_SERVICE_MASK service);
-extern void bta_ag_free_db(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data);
+extern bool bta_ag_add_record(uint16_t service_uuid, char* p_service_name,
+ uint8_t scn, tBTA_AG_FEAT features,
+ uint32_t sdp_handle);
+extern void bta_ag_create_records(tBTA_AG_SCB* p_scb, tBTA_AG_DATA* p_data);
+extern void bta_ag_del_records(tBTA_AG_SCB* p_scb, tBTA_AG_DATA* p_data);
+extern bool bta_ag_sdp_find_attr(tBTA_AG_SCB* p_scb, tBTA_SERVICE_MASK service);
+extern void bta_ag_do_disc(tBTA_AG_SCB* p_scb, tBTA_SERVICE_MASK service);
+extern void bta_ag_free_db(tBTA_AG_SCB* p_scb, tBTA_AG_DATA* p_data);
/* RFCOMM functions */
-extern void bta_ag_start_servers(tBTA_AG_SCB *p_scb, tBTA_SERVICE_MASK services);
-extern void bta_ag_close_servers(tBTA_AG_SCB *p_scb, tBTA_SERVICE_MASK services);
-extern bool bta_ag_is_server_closed (tBTA_AG_SCB *p_scb);
-extern void bta_ag_rfc_do_close(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data);
-extern void bta_ag_rfc_do_open(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data);
+extern void bta_ag_start_servers(tBTA_AG_SCB* p_scb,
+ tBTA_SERVICE_MASK services);
+extern void bta_ag_close_servers(tBTA_AG_SCB* p_scb,
+ tBTA_SERVICE_MASK services);
+extern bool bta_ag_is_server_closed(tBTA_AG_SCB* p_scb);
+extern void bta_ag_rfc_do_close(tBTA_AG_SCB* p_scb, tBTA_AG_DATA* p_data);
+extern void bta_ag_rfc_do_open(tBTA_AG_SCB* p_scb, tBTA_AG_DATA* p_data);
/* SCO functions */
-extern bool bta_ag_sco_is_open(tBTA_AG_SCB *p_scb);
-extern bool bta_ag_sco_is_opening(tBTA_AG_SCB *p_scb);
-extern void bta_ag_sco_conn_rsp(tBTA_AG_SCB *p_scb, tBTM_ESCO_CONN_REQ_EVT_DATA *p_data);
+extern bool bta_ag_sco_is_open(tBTA_AG_SCB* p_scb);
+extern bool bta_ag_sco_is_opening(tBTA_AG_SCB* p_scb);
+extern void bta_ag_sco_conn_rsp(tBTA_AG_SCB* p_scb,
+ tBTM_ESCO_CONN_REQ_EVT_DATA* p_data);
/* AT command functions */
-extern void bta_ag_at_hsp_cback(tBTA_AG_SCB *p_scb, uint16_t cmd, uint8_t arg_type,
- char *p_arg, int16_t int_arg);
-extern void bta_ag_at_hfp_cback(tBTA_AG_SCB *p_scb, uint16_t cmd, uint8_t arg_type,
- char *p_arg, int16_t int_arg);
-extern void bta_ag_at_err_cback(tBTA_AG_SCB *p_scb, bool unknown, char *p_arg);
-extern bool bta_ag_inband_enabled(tBTA_AG_SCB *p_scb);
-extern void bta_ag_send_call_inds(tBTA_AG_SCB *p_scb, tBTA_AG_RES result);
+extern void bta_ag_at_hsp_cback(tBTA_AG_SCB* p_scb, uint16_t cmd,
+ uint8_t arg_type, char* p_arg, int16_t int_arg);
+extern void bta_ag_at_hfp_cback(tBTA_AG_SCB* p_scb, uint16_t cmd,
+ uint8_t arg_type, char* p_arg, int16_t int_arg);
+extern void bta_ag_at_err_cback(tBTA_AG_SCB* p_scb, bool unknown, char* p_arg);
+extern bool bta_ag_inband_enabled(tBTA_AG_SCB* p_scb);
+extern void bta_ag_send_call_inds(tBTA_AG_SCB* p_scb, tBTA_AG_RES result);
/* Action functions */
-extern void bta_ag_register(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data);
-extern void bta_ag_deregister(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data);
-extern void bta_ag_start_dereg(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data);
-extern void bta_ag_start_close(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data);
-extern void bta_ag_start_open(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data);
-extern void bta_ag_disc_int_res(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data);
-extern void bta_ag_disc_acp_res(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data);
-extern void bta_ag_disc_fail(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data);
-extern void bta_ag_open_fail(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data);
-extern void bta_ag_rfc_fail(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data);
-extern void bta_ag_rfc_close(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data);
-extern void bta_ag_rfc_open(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data);
-extern void bta_ag_rfc_acp_open(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data);
-extern void bta_ag_rfc_data(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data);
-extern void bta_ag_sco_listen(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data);
-extern void bta_ag_sco_open(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data);
-extern void bta_ag_sco_close(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data);
+extern void bta_ag_register(tBTA_AG_SCB* p_scb, tBTA_AG_DATA* p_data);
+extern void bta_ag_deregister(tBTA_AG_SCB* p_scb, tBTA_AG_DATA* p_data);
+extern void bta_ag_start_dereg(tBTA_AG_SCB* p_scb, tBTA_AG_DATA* p_data);
+extern void bta_ag_start_close(tBTA_AG_SCB* p_scb, tBTA_AG_DATA* p_data);
+extern void bta_ag_start_open(tBTA_AG_SCB* p_scb, tBTA_AG_DATA* p_data);
+extern void bta_ag_disc_int_res(tBTA_AG_SCB* p_scb, tBTA_AG_DATA* p_data);
+extern void bta_ag_disc_acp_res(tBTA_AG_SCB* p_scb, tBTA_AG_DATA* p_data);
+extern void bta_ag_disc_fail(tBTA_AG_SCB* p_scb, tBTA_AG_DATA* p_data);
+extern void bta_ag_open_fail(tBTA_AG_SCB* p_scb, tBTA_AG_DATA* p_data);
+extern void bta_ag_rfc_fail(tBTA_AG_SCB* p_scb, tBTA_AG_DATA* p_data);
+extern void bta_ag_rfc_close(tBTA_AG_SCB* p_scb, tBTA_AG_DATA* p_data);
+extern void bta_ag_rfc_open(tBTA_AG_SCB* p_scb, tBTA_AG_DATA* p_data);
+extern void bta_ag_rfc_acp_open(tBTA_AG_SCB* p_scb, tBTA_AG_DATA* p_data);
+extern void bta_ag_rfc_data(tBTA_AG_SCB* p_scb, tBTA_AG_DATA* p_data);
+extern void bta_ag_sco_listen(tBTA_AG_SCB* p_scb, tBTA_AG_DATA* p_data);
+extern void bta_ag_sco_open(tBTA_AG_SCB* p_scb, tBTA_AG_DATA* p_data);
+extern void bta_ag_sco_close(tBTA_AG_SCB* p_scb, tBTA_AG_DATA* p_data);
#if (BTM_WBS_INCLUDED == TRUE)
-extern void bta_ag_sco_codec_nego(tBTA_AG_SCB *p_scb, bool result);
-extern void bta_ag_codec_negotiate (tBTA_AG_SCB *p_scb);
+extern void bta_ag_sco_codec_nego(tBTA_AG_SCB* p_scb, bool result);
+extern void bta_ag_codec_negotiate(tBTA_AG_SCB* p_scb);
#endif
-extern void bta_ag_sco_shutdown(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data);
-extern void bta_ag_sco_conn_open(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data);
-extern void bta_ag_sco_conn_close(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data);
-extern void bta_ag_post_sco_open(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data);
-extern void bta_ag_post_sco_close(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data);
-extern void bta_ag_svc_conn_open(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data);
-extern void bta_ag_result(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data);
-extern void bta_ag_setcodec(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data);
+extern void bta_ag_sco_shutdown(tBTA_AG_SCB* p_scb, tBTA_AG_DATA* p_data);
+extern void bta_ag_sco_conn_open(tBTA_AG_SCB* p_scb, tBTA_AG_DATA* p_data);
+extern void bta_ag_sco_conn_close(tBTA_AG_SCB* p_scb, tBTA_AG_DATA* p_data);
+extern void bta_ag_post_sco_open(tBTA_AG_SCB* p_scb, tBTA_AG_DATA* p_data);
+extern void bta_ag_post_sco_close(tBTA_AG_SCB* p_scb, tBTA_AG_DATA* p_data);
+extern void bta_ag_svc_conn_open(tBTA_AG_SCB* p_scb, tBTA_AG_DATA* p_data);
+extern void bta_ag_result(tBTA_AG_SCB* p_scb, tBTA_AG_DATA* p_data);
+extern void bta_ag_setcodec(tBTA_AG_SCB* p_scb, tBTA_AG_DATA* p_data);
#if (BTM_WBS_INCLUDED == TRUE)
-extern void bta_ag_send_bcs(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data);
+extern void bta_ag_send_bcs(tBTA_AG_SCB* p_scb, tBTA_AG_DATA* p_data);
#endif
-extern void bta_ag_send_ring(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data);
-extern void bta_ag_ci_sco_data(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data);
-extern void bta_ag_set_esco_param(bool set_reset, tBTM_ESCO_PARAMS *param);
-extern void bta_ag_ci_rx_data(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data);
-extern void bta_ag_rcvd_slc_ready(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data);
+extern void bta_ag_send_ring(tBTA_AG_SCB* p_scb, tBTA_AG_DATA* p_data);
+extern void bta_ag_ci_sco_data(tBTA_AG_SCB* p_scb, tBTA_AG_DATA* p_data);
+extern void bta_ag_set_esco_param(bool set_reset, tBTM_ESCO_PARAMS* param);
+extern void bta_ag_ci_rx_data(tBTA_AG_SCB* p_scb, tBTA_AG_DATA* p_data);
+extern void bta_ag_rcvd_slc_ready(tBTA_AG_SCB* p_scb, tBTA_AG_DATA* p_data);
#ifdef __cplusplus
}
diff --git a/bta/ag/bta_ag_main.cc b/bta/ag/bta_ag_main.cc
index 4c4fd6a..44965ea 100644
--- a/bta/ag/bta_ag_main.cc
+++ b/bta/ag/bta_ag_main.cc
@@ -24,10 +24,10 @@
#include <string.h>
-#include "bta_api.h"
-#include "bta_sys.h"
#include "bta_ag_co.h"
#include "bta_ag_int.h"
+#include "bta_api.h"
+#include "bta_sys.h"
#include "osi/include/osi.h"
#include "utl.h"
@@ -38,241 +38,207 @@
#define BTA_AG_DEBUG FALSE
#endif
-extern fixed_queue_t *btu_bta_alarm_queue;
+extern fixed_queue_t* btu_bta_alarm_queue;
#if (BTA_AG_DEBUG == TRUE)
-static char *bta_ag_evt_str(uint16_t event, tBTA_AG_RES result);
-static char *bta_ag_state_str(uint8_t state);
+static char* bta_ag_evt_str(uint16_t event, tBTA_AG_RES result);
+static char* bta_ag_state_str(uint8_t state);
#endif
/* state machine states */
-enum
-{
- BTA_AG_INIT_ST,
- BTA_AG_OPENING_ST,
- BTA_AG_OPEN_ST,
- BTA_AG_CLOSING_ST
-};
+enum { BTA_AG_INIT_ST, BTA_AG_OPENING_ST, BTA_AG_OPEN_ST, BTA_AG_CLOSING_ST };
/* state machine action enumeration list */
-enum
-{
- BTA_AG_REGISTER,
- BTA_AG_DEREGISTER,
- BTA_AG_START_OPEN,
- BTA_AG_RFC_DO_OPEN,
- BTA_AG_RFC_DO_CLOSE,
- BTA_AG_START_DEREG,
- BTA_AG_START_CLOSE,
- BTA_AG_RFC_OPEN,
- BTA_AG_OPEN_FAIL,
- BTA_AG_RFC_ACP_OPEN,
- BTA_AG_RFC_CLOSE,
- BTA_AG_RFC_FAIL,
- BTA_AG_RFC_DATA,
- BTA_AG_DISC_INT_RES,
- BTA_AG_DISC_FAIL,
- BTA_AG_DISC_ACP_RES,
- BTA_AG_FREE_DB,
- BTA_AG_SCO_CONN_OPEN,
- BTA_AG_SCO_CONN_CLOSE,
- BTA_AG_SCO_LISTEN,
- BTA_AG_SCO_OPEN,
- BTA_AG_SCO_CLOSE,
- BTA_AG_SCO_SHUTDOWN,
- BTA_AG_POST_SCO_OPEN,
- BTA_AG_POST_SCO_CLOSE,
- BTA_AG_SVC_CONN_OPEN,
- BTA_AG_RESULT,
- BTA_AG_SETCODEC,
- BTA_AG_SEND_RING,
- BTA_AG_CI_SCO_DATA,
- BTA_AG_CI_RX_DATA,
- BTA_AG_RCVD_SLC_READY,
- BTA_AG_NUM_ACTIONS
+enum {
+ BTA_AG_REGISTER,
+ BTA_AG_DEREGISTER,
+ BTA_AG_START_OPEN,
+ BTA_AG_RFC_DO_OPEN,
+ BTA_AG_RFC_DO_CLOSE,
+ BTA_AG_START_DEREG,
+ BTA_AG_START_CLOSE,
+ BTA_AG_RFC_OPEN,
+ BTA_AG_OPEN_FAIL,
+ BTA_AG_RFC_ACP_OPEN,
+ BTA_AG_RFC_CLOSE,
+ BTA_AG_RFC_FAIL,
+ BTA_AG_RFC_DATA,
+ BTA_AG_DISC_INT_RES,
+ BTA_AG_DISC_FAIL,
+ BTA_AG_DISC_ACP_RES,
+ BTA_AG_FREE_DB,
+ BTA_AG_SCO_CONN_OPEN,
+ BTA_AG_SCO_CONN_CLOSE,
+ BTA_AG_SCO_LISTEN,
+ BTA_AG_SCO_OPEN,
+ BTA_AG_SCO_CLOSE,
+ BTA_AG_SCO_SHUTDOWN,
+ BTA_AG_POST_SCO_OPEN,
+ BTA_AG_POST_SCO_CLOSE,
+ BTA_AG_SVC_CONN_OPEN,
+ BTA_AG_RESULT,
+ BTA_AG_SETCODEC,
+ BTA_AG_SEND_RING,
+ BTA_AG_CI_SCO_DATA,
+ BTA_AG_CI_RX_DATA,
+ BTA_AG_RCVD_SLC_READY,
+ BTA_AG_NUM_ACTIONS
};
-#define BTA_AG_IGNORE BTA_AG_NUM_ACTIONS
+#define BTA_AG_IGNORE BTA_AG_NUM_ACTIONS
/* type for action functions */
-typedef void (*tBTA_AG_ACTION)(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data);
+typedef void (*tBTA_AG_ACTION)(tBTA_AG_SCB* p_scb, tBTA_AG_DATA* p_data);
/* action functions */
-const tBTA_AG_ACTION bta_ag_action[] =
-{
- bta_ag_register,
- bta_ag_deregister,
- bta_ag_start_open,
- bta_ag_rfc_do_open,
- bta_ag_rfc_do_close,
- bta_ag_start_dereg,
- bta_ag_start_close,
- bta_ag_rfc_open,
- bta_ag_open_fail,
- bta_ag_rfc_acp_open,
- bta_ag_rfc_close,
- bta_ag_rfc_fail,
- bta_ag_rfc_data,
- bta_ag_disc_int_res,
- bta_ag_disc_fail,
- bta_ag_disc_acp_res,
- bta_ag_free_db,
- bta_ag_sco_conn_open,
- bta_ag_sco_conn_close,
- bta_ag_sco_listen,
- bta_ag_sco_open,
- bta_ag_sco_close,
- bta_ag_sco_shutdown,
- bta_ag_post_sco_open,
- bta_ag_post_sco_close,
- bta_ag_svc_conn_open,
- bta_ag_result,
- bta_ag_setcodec,
- bta_ag_send_ring,
- bta_ag_ci_sco_data,
- bta_ag_ci_rx_data,
- bta_ag_rcvd_slc_ready
-};
+const tBTA_AG_ACTION bta_ag_action[] = {
+ bta_ag_register, bta_ag_deregister, bta_ag_start_open,
+ bta_ag_rfc_do_open, bta_ag_rfc_do_close, bta_ag_start_dereg,
+ bta_ag_start_close, bta_ag_rfc_open, bta_ag_open_fail,
+ bta_ag_rfc_acp_open, bta_ag_rfc_close, bta_ag_rfc_fail,
+ bta_ag_rfc_data, bta_ag_disc_int_res, bta_ag_disc_fail,
+ bta_ag_disc_acp_res, bta_ag_free_db, bta_ag_sco_conn_open,
+ bta_ag_sco_conn_close, bta_ag_sco_listen, bta_ag_sco_open,
+ bta_ag_sco_close, bta_ag_sco_shutdown, bta_ag_post_sco_open,
+ bta_ag_post_sco_close, bta_ag_svc_conn_open, bta_ag_result,
+ bta_ag_setcodec, bta_ag_send_ring, bta_ag_ci_sco_data,
+ bta_ag_ci_rx_data, bta_ag_rcvd_slc_ready};
/* state table information */
-#define BTA_AG_ACTIONS 2 /* number of actions */
-#define BTA_AG_NEXT_STATE 2 /* position of next state */
-#define BTA_AG_NUM_COLS 3 /* number of columns in state tables */
+#define BTA_AG_ACTIONS 2 /* number of actions */
+#define BTA_AG_NEXT_STATE 2 /* position of next state */
+#define BTA_AG_NUM_COLS 3 /* number of columns in state tables */
/* state table for init state */
-const uint8_t bta_ag_st_init[][BTA_AG_NUM_COLS] =
-{
-/* Event Action 1 Action 2 Next state */
-/* API_REGISTER_EVT */ {BTA_AG_REGISTER, BTA_AG_IGNORE, BTA_AG_INIT_ST},
-/* API_DEREGISTER_EVT */ {BTA_AG_DEREGISTER, BTA_AG_IGNORE, BTA_AG_INIT_ST},
-/* API_OPEN_EVT */ {BTA_AG_START_OPEN, BTA_AG_IGNORE, BTA_AG_OPENING_ST},
-/* API_CLOSE_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_INIT_ST},
-/* API_AUDIO_OPEN_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_INIT_ST},
-/* API_AUDIO_CLOSE_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_INIT_ST},
-/* API_RESULT_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_INIT_ST},
-/* API_SETCODEC_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_INIT_ST},
-/* RFC_OPEN_EVT */ {BTA_AG_RFC_ACP_OPEN, BTA_AG_SCO_LISTEN, BTA_AG_OPEN_ST},
-/* RFC_CLOSE_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_INIT_ST},
-/* RFC_SRV_CLOSE_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_INIT_ST},
-/* RFC_DATA_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_INIT_ST},
-/* SCO_OPEN_EVT */ {BTA_AG_SCO_CONN_OPEN, BTA_AG_IGNORE, BTA_AG_INIT_ST},
-/* SCO_CLOSE_EVT */ {BTA_AG_SCO_CONN_CLOSE, BTA_AG_IGNORE, BTA_AG_INIT_ST},
-/* DISC_ACP_RES_EVT */ {BTA_AG_FREE_DB, BTA_AG_IGNORE, BTA_AG_INIT_ST},
-/* DISC_INT_RES_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_INIT_ST},
-/* DISC_OK_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_INIT_ST},
-/* DISC_FAIL_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_INIT_ST},
-/* CI_RX_WRITE_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_INIT_ST},
-/* RING_TOUT_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_INIT_ST},
-/* SVC_TOUT_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_INIT_ST},
-/* CI_SCO_DATA_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_INIT_ST},
-/* CI_SLC_READY_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_INIT_ST}
-};
+const uint8_t bta_ag_st_init[][BTA_AG_NUM_COLS] = {
+ /* Event Action 1 Action 2 Next state */
+ /* API_REGISTER_EVT */ {BTA_AG_REGISTER, BTA_AG_IGNORE, BTA_AG_INIT_ST},
+ /* API_DEREGISTER_EVT */ {BTA_AG_DEREGISTER, BTA_AG_IGNORE, BTA_AG_INIT_ST},
+ /* API_OPEN_EVT */ {BTA_AG_START_OPEN, BTA_AG_IGNORE, BTA_AG_OPENING_ST},
+ /* API_CLOSE_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_INIT_ST},
+ /* API_AUDIO_OPEN_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_INIT_ST},
+ /* API_AUDIO_CLOSE_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_INIT_ST},
+ /* API_RESULT_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_INIT_ST},
+ /* API_SETCODEC_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_INIT_ST},
+ /* RFC_OPEN_EVT */ {BTA_AG_RFC_ACP_OPEN, BTA_AG_SCO_LISTEN, BTA_AG_OPEN_ST},
+ /* RFC_CLOSE_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_INIT_ST},
+ /* RFC_SRV_CLOSE_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_INIT_ST},
+ /* RFC_DATA_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_INIT_ST},
+ /* SCO_OPEN_EVT */ {BTA_AG_SCO_CONN_OPEN, BTA_AG_IGNORE, BTA_AG_INIT_ST},
+ /* SCO_CLOSE_EVT */ {BTA_AG_SCO_CONN_CLOSE, BTA_AG_IGNORE, BTA_AG_INIT_ST},
+ /* DISC_ACP_RES_EVT */ {BTA_AG_FREE_DB, BTA_AG_IGNORE, BTA_AG_INIT_ST},
+ /* DISC_INT_RES_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_INIT_ST},
+ /* DISC_OK_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_INIT_ST},
+ /* DISC_FAIL_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_INIT_ST},
+ /* CI_RX_WRITE_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_INIT_ST},
+ /* RING_TOUT_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_INIT_ST},
+ /* SVC_TOUT_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_INIT_ST},
+ /* CI_SCO_DATA_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_INIT_ST},
+ /* CI_SLC_READY_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_INIT_ST}};
/* state table for opening state */
-const uint8_t bta_ag_st_opening[][BTA_AG_NUM_COLS] =
-{
-/* Event Action 1 Action 2 Next state */
-/* API_REGISTER_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_OPENING_ST},
-/* API_DEREGISTER_EVT */ {BTA_AG_RFC_DO_CLOSE, BTA_AG_START_DEREG, BTA_AG_CLOSING_ST},
-/* API_OPEN_EVT */ {BTA_AG_OPEN_FAIL, BTA_AG_IGNORE, BTA_AG_OPENING_ST},
-/* API_CLOSE_EVT */ {BTA_AG_RFC_DO_CLOSE, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
-/* API_AUDIO_OPEN_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_OPENING_ST},
-/* API_AUDIO_CLOSE_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_OPENING_ST},
-/* API_RESULT_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_OPENING_ST},
-/* API_SETCODEC_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_OPENING_ST},
-/* RFC_OPEN_EVT */ {BTA_AG_RFC_OPEN, BTA_AG_SCO_LISTEN, BTA_AG_OPEN_ST},
-/* RFC_CLOSE_EVT */ {BTA_AG_RFC_FAIL, BTA_AG_IGNORE, BTA_AG_INIT_ST},
-/* RFC_SRV_CLOSE_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_OPENING_ST},
-/* RFC_DATA_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_OPENING_ST},
-/* SCO_OPEN_EVT */ {BTA_AG_SCO_CONN_OPEN, BTA_AG_IGNORE, BTA_AG_OPENING_ST},
-/* SCO_CLOSE_EVT */ {BTA_AG_SCO_CONN_CLOSE, BTA_AG_IGNORE, BTA_AG_OPENING_ST},
-/* DISC_ACP_RES_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_OPENING_ST},
-/* DISC_INT_RES_EVT */ {BTA_AG_DISC_INT_RES, BTA_AG_IGNORE, BTA_AG_OPENING_ST},
-/* DISC_OK_EVT */ {BTA_AG_RFC_DO_OPEN, BTA_AG_IGNORE, BTA_AG_OPENING_ST},
-/* DISC_FAIL_EVT */ {BTA_AG_DISC_FAIL, BTA_AG_IGNORE, BTA_AG_INIT_ST},
-/* CI_RX_WRITE_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_OPENING_ST},
-/* RING_TOUT_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_OPENING_ST},
-/* SVC_TOUT_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_OPENING_ST},
-/* CI_SCO_DATA_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_OPENING_ST},
-/* CI_SLC_READY_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_OPENING_ST}
-};
+const uint8_t bta_ag_st_opening[][BTA_AG_NUM_COLS] = {
+ /* Event Action 1 Action 2 Next state */
+ /* API_REGISTER_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_OPENING_ST},
+ /* API_DEREGISTER_EVT */ {BTA_AG_RFC_DO_CLOSE, BTA_AG_START_DEREG,
+ BTA_AG_CLOSING_ST},
+ /* API_OPEN_EVT */ {BTA_AG_OPEN_FAIL, BTA_AG_IGNORE, BTA_AG_OPENING_ST},
+ /* API_CLOSE_EVT */ {BTA_AG_RFC_DO_CLOSE, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
+ /* API_AUDIO_OPEN_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_OPENING_ST},
+ /* API_AUDIO_CLOSE_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_OPENING_ST},
+ /* API_RESULT_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_OPENING_ST},
+ /* API_SETCODEC_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_OPENING_ST},
+ /* RFC_OPEN_EVT */ {BTA_AG_RFC_OPEN, BTA_AG_SCO_LISTEN, BTA_AG_OPEN_ST},
+ /* RFC_CLOSE_EVT */ {BTA_AG_RFC_FAIL, BTA_AG_IGNORE, BTA_AG_INIT_ST},
+ /* RFC_SRV_CLOSE_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_OPENING_ST},
+ /* RFC_DATA_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_OPENING_ST},
+ /* SCO_OPEN_EVT */ {BTA_AG_SCO_CONN_OPEN, BTA_AG_IGNORE, BTA_AG_OPENING_ST},
+ /* SCO_CLOSE_EVT */ {BTA_AG_SCO_CONN_CLOSE, BTA_AG_IGNORE,
+ BTA_AG_OPENING_ST},
+ /* DISC_ACP_RES_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_OPENING_ST},
+ /* DISC_INT_RES_EVT */ {BTA_AG_DISC_INT_RES, BTA_AG_IGNORE,
+ BTA_AG_OPENING_ST},
+ /* DISC_OK_EVT */ {BTA_AG_RFC_DO_OPEN, BTA_AG_IGNORE, BTA_AG_OPENING_ST},
+ /* DISC_FAIL_EVT */ {BTA_AG_DISC_FAIL, BTA_AG_IGNORE, BTA_AG_INIT_ST},
+ /* CI_RX_WRITE_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_OPENING_ST},
+ /* RING_TOUT_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_OPENING_ST},
+ /* SVC_TOUT_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_OPENING_ST},
+ /* CI_SCO_DATA_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_OPENING_ST},
+ /* CI_SLC_READY_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_OPENING_ST}};
/* state table for open state */
-const uint8_t bta_ag_st_open[][BTA_AG_NUM_COLS] =
-{
-/* Event Action 1 Action 2 Next state */
-/* API_REGISTER_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_OPEN_ST},
-/* API_DEREGISTER_EVT */ {BTA_AG_START_CLOSE, BTA_AG_START_DEREG, BTA_AG_CLOSING_ST},
-/* API_OPEN_EVT */ {BTA_AG_OPEN_FAIL, BTA_AG_IGNORE, BTA_AG_OPEN_ST},
-/* API_CLOSE_EVT */ {BTA_AG_START_CLOSE, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
-/* API_AUDIO_OPEN_EVT */ {BTA_AG_SCO_OPEN, BTA_AG_IGNORE, BTA_AG_OPEN_ST},
-/* API_AUDIO_CLOSE_EVT */ {BTA_AG_SCO_CLOSE, BTA_AG_IGNORE, BTA_AG_OPEN_ST},
-/* API_RESULT_EVT */ {BTA_AG_RESULT, BTA_AG_IGNORE, BTA_AG_OPEN_ST},
-/* API_SETCODEC_EVT */ {BTA_AG_SETCODEC, BTA_AG_IGNORE, BTA_AG_OPEN_ST},
-/* RFC_OPEN_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_OPEN_ST},
-/* RFC_CLOSE_EVT */ {BTA_AG_RFC_CLOSE, BTA_AG_IGNORE, BTA_AG_INIT_ST},
-/* RFC_SRV_CLOSE_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_OPEN_ST},
-/* RFC_DATA_EVT */ {BTA_AG_RFC_DATA, BTA_AG_IGNORE, BTA_AG_OPEN_ST},
-/* SCO_OPEN_EVT */ {BTA_AG_SCO_CONN_OPEN, BTA_AG_POST_SCO_OPEN, BTA_AG_OPEN_ST},
-/* SCO_CLOSE_EVT */ {BTA_AG_SCO_CONN_CLOSE, BTA_AG_POST_SCO_CLOSE, BTA_AG_OPEN_ST},
-/* DISC_ACP_RES_EVT */ {BTA_AG_DISC_ACP_RES, BTA_AG_IGNORE, BTA_AG_OPEN_ST},
-/* DISC_INT_RES_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_OPEN_ST},
-/* DISC_OK_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_OPEN_ST},
-/* DISC_FAIL_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_OPEN_ST},
-/* CI_RX_WRITE_EVT */ {BTA_AG_CI_RX_DATA, BTA_AG_IGNORE, BTA_AG_OPEN_ST},
-/* RING_TOUT_EVT */ {BTA_AG_SEND_RING, BTA_AG_IGNORE, BTA_AG_OPEN_ST},
-/* SVC_TOUT_EVT */ {BTA_AG_START_CLOSE, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
-/* CI_SCO_DATA_EVT */ {BTA_AG_CI_SCO_DATA, BTA_AG_IGNORE, BTA_AG_OPEN_ST},
-/* CI_SLC_READY_EVT */ {BTA_AG_RCVD_SLC_READY, BTA_AG_IGNORE, BTA_AG_OPEN_ST}
-};
+const uint8_t bta_ag_st_open[][BTA_AG_NUM_COLS] = {
+ /* Event Action 1 Action 2 Next state */
+ /* API_REGISTER_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_OPEN_ST},
+ /* API_DEREGISTER_EVT */ {BTA_AG_START_CLOSE, BTA_AG_START_DEREG,
+ BTA_AG_CLOSING_ST},
+ /* API_OPEN_EVT */ {BTA_AG_OPEN_FAIL, BTA_AG_IGNORE, BTA_AG_OPEN_ST},
+ /* API_CLOSE_EVT */ {BTA_AG_START_CLOSE, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
+ /* API_AUDIO_OPEN_EVT */ {BTA_AG_SCO_OPEN, BTA_AG_IGNORE, BTA_AG_OPEN_ST},
+ /* API_AUDIO_CLOSE_EVT */ {BTA_AG_SCO_CLOSE, BTA_AG_IGNORE, BTA_AG_OPEN_ST},
+ /* API_RESULT_EVT */ {BTA_AG_RESULT, BTA_AG_IGNORE, BTA_AG_OPEN_ST},
+ /* API_SETCODEC_EVT */ {BTA_AG_SETCODEC, BTA_AG_IGNORE, BTA_AG_OPEN_ST},
+ /* RFC_OPEN_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_OPEN_ST},
+ /* RFC_CLOSE_EVT */ {BTA_AG_RFC_CLOSE, BTA_AG_IGNORE, BTA_AG_INIT_ST},
+ /* RFC_SRV_CLOSE_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_OPEN_ST},
+ /* RFC_DATA_EVT */ {BTA_AG_RFC_DATA, BTA_AG_IGNORE, BTA_AG_OPEN_ST},
+ /* SCO_OPEN_EVT */ {BTA_AG_SCO_CONN_OPEN, BTA_AG_POST_SCO_OPEN,
+ BTA_AG_OPEN_ST},
+ /* SCO_CLOSE_EVT */ {BTA_AG_SCO_CONN_CLOSE, BTA_AG_POST_SCO_CLOSE,
+ BTA_AG_OPEN_ST},
+ /* DISC_ACP_RES_EVT */ {BTA_AG_DISC_ACP_RES, BTA_AG_IGNORE, BTA_AG_OPEN_ST},
+ /* DISC_INT_RES_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_OPEN_ST},
+ /* DISC_OK_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_OPEN_ST},
+ /* DISC_FAIL_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_OPEN_ST},
+ /* CI_RX_WRITE_EVT */ {BTA_AG_CI_RX_DATA, BTA_AG_IGNORE, BTA_AG_OPEN_ST},
+ /* RING_TOUT_EVT */ {BTA_AG_SEND_RING, BTA_AG_IGNORE, BTA_AG_OPEN_ST},
+ /* SVC_TOUT_EVT */ {BTA_AG_START_CLOSE, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
+ /* CI_SCO_DATA_EVT */ {BTA_AG_CI_SCO_DATA, BTA_AG_IGNORE, BTA_AG_OPEN_ST},
+ /* CI_SLC_READY_EVT */ {BTA_AG_RCVD_SLC_READY, BTA_AG_IGNORE,
+ BTA_AG_OPEN_ST}};
/* state table for closing state */
-const uint8_t bta_ag_st_closing[][BTA_AG_NUM_COLS] =
-{
-/* Event Action 1 Action 2 Next state */
-/* API_REGISTER_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
-/* API_DEREGISTER_EVT */ {BTA_AG_START_DEREG, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
-/* API_OPEN_EVT */ {BTA_AG_OPEN_FAIL, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
-/* API_CLOSE_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
-/* API_AUDIO_OPEN_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
-/* API_AUDIO_CLOSE_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
-/* API_RESULT_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
-/* API_SETCODEC_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
-/* RFC_OPEN_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
-/* RFC_CLOSE_EVT */ {BTA_AG_RFC_CLOSE, BTA_AG_IGNORE, BTA_AG_INIT_ST},
-/* RFC_SRV_CLOSE_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
-/* RFC_DATA_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
-/* SCO_OPEN_EVT */ {BTA_AG_SCO_CONN_OPEN, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
-/* SCO_CLOSE_EVT */ {BTA_AG_SCO_CONN_CLOSE, BTA_AG_POST_SCO_CLOSE, BTA_AG_CLOSING_ST},
-/* DISC_ACP_RES_EVT */ {BTA_AG_FREE_DB, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
-/* DISC_INT_RES_EVT */ {BTA_AG_FREE_DB, BTA_AG_IGNORE, BTA_AG_INIT_ST},
-/* DISC_OK_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
-/* DISC_FAIL_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
-/* CI_RX_WRITE_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
-/* RING_TOUT_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
-/* SVC_TOUT_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
-/* CI_SCO_DATA_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
-/* CI_SLC_READY_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_CLOSING_ST}
-};
+const uint8_t bta_ag_st_closing[][BTA_AG_NUM_COLS] = {
+ /* Event Action 1 Action 2 Next state */
+ /* API_REGISTER_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
+ /* API_DEREGISTER_EVT */ {BTA_AG_START_DEREG, BTA_AG_IGNORE,
+ BTA_AG_CLOSING_ST},
+ /* API_OPEN_EVT */ {BTA_AG_OPEN_FAIL, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
+ /* API_CLOSE_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
+ /* API_AUDIO_OPEN_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
+ /* API_AUDIO_CLOSE_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
+ /* API_RESULT_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
+ /* API_SETCODEC_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
+ /* RFC_OPEN_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
+ /* RFC_CLOSE_EVT */ {BTA_AG_RFC_CLOSE, BTA_AG_IGNORE, BTA_AG_INIT_ST},
+ /* RFC_SRV_CLOSE_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
+ /* RFC_DATA_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
+ /* SCO_OPEN_EVT */ {BTA_AG_SCO_CONN_OPEN, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
+ /* SCO_CLOSE_EVT */ {BTA_AG_SCO_CONN_CLOSE, BTA_AG_POST_SCO_CLOSE,
+ BTA_AG_CLOSING_ST},
+ /* DISC_ACP_RES_EVT */ {BTA_AG_FREE_DB, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
+ /* DISC_INT_RES_EVT */ {BTA_AG_FREE_DB, BTA_AG_IGNORE, BTA_AG_INIT_ST},
+ /* DISC_OK_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
+ /* DISC_FAIL_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
+ /* CI_RX_WRITE_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
+ /* RING_TOUT_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
+ /* SVC_TOUT_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
+ /* CI_SCO_DATA_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_CLOSING_ST},
+ /* CI_SLC_READY_EVT */ {BTA_AG_IGNORE, BTA_AG_IGNORE, BTA_AG_CLOSING_ST}};
/* type for state table */
typedef const uint8_t (*tBTA_AG_ST_TBL)[BTA_AG_NUM_COLS];
/* state table */
-const tBTA_AG_ST_TBL bta_ag_st_tbl[] =
-{
- bta_ag_st_init,
- bta_ag_st_opening,
- bta_ag_st_open,
- bta_ag_st_closing
-};
+const tBTA_AG_ST_TBL bta_ag_st_tbl[] = {bta_ag_st_init, bta_ag_st_opening,
+ bta_ag_st_open, bta_ag_st_closing};
/*****************************************************************************
* Global data
****************************************************************************/
/* AG control block */
-tBTA_AG_CB bta_ag_cb;
+tBTA_AG_CB bta_ag_cb;
/*******************************************************************************
*
@@ -284,44 +250,40 @@
* Returns pointer to the scb, or NULL if none could be allocated.
*
******************************************************************************/
-static tBTA_AG_SCB *bta_ag_scb_alloc(void)
-{
- tBTA_AG_SCB *p_scb = &bta_ag_cb.scb[0];
- int i;
+static tBTA_AG_SCB* bta_ag_scb_alloc(void) {
+ tBTA_AG_SCB* p_scb = &bta_ag_cb.scb[0];
+ int i;
- for (i = 0; i < BTA_AG_NUM_SCB; i++, p_scb++)
- {
- if (!p_scb->in_use)
- {
- /* initialize variables */
- p_scb->in_use = true;
- p_scb->sco_idx = BTM_INVALID_SCO_INDEX;
+ for (i = 0; i < BTA_AG_NUM_SCB; i++, p_scb++) {
+ if (!p_scb->in_use) {
+ /* initialize variables */
+ p_scb->in_use = true;
+ p_scb->sco_idx = BTM_INVALID_SCO_INDEX;
#if (BTM_WBS_INCLUDED == TRUE)
- p_scb->codec_updated = false;
- p_scb->peer_codecs = BTA_AG_CODEC_CVSD;
- p_scb->sco_codec = BTA_AG_CODEC_CVSD;
+ p_scb->codec_updated = false;
+ p_scb->peer_codecs = BTA_AG_CODEC_CVSD;
+ p_scb->sco_codec = BTA_AG_CODEC_CVSD;
#endif
- /* set up timers */
- p_scb->ring_timer = alarm_new("bta_ag.scb_ring_timer");
- p_scb->collision_timer = alarm_new("bta_ag.scb_collision_timer");
+ /* set up timers */
+ p_scb->ring_timer = alarm_new("bta_ag.scb_ring_timer");
+ p_scb->collision_timer = alarm_new("bta_ag.scb_collision_timer");
#if (BTM_WBS_INCLUDED == TRUE)
- p_scb->codec_negotiation_timer =
- alarm_new("bta_ag.scb_codec_negotiation_timer");
- /* set eSCO mSBC setting to T2 as the preferred */
- p_scb->codec_msbc_settings = BTA_AG_SCO_MSBC_SETTINGS_T2;
+ p_scb->codec_negotiation_timer =
+ alarm_new("bta_ag.scb_codec_negotiation_timer");
+ /* set eSCO mSBC setting to T2 as the preferred */
+ p_scb->codec_msbc_settings = BTA_AG_SCO_MSBC_SETTINGS_T2;
#endif
- APPL_TRACE_DEBUG("bta_ag_scb_alloc %d", bta_ag_scb_to_idx(p_scb));
- break;
- }
+ APPL_TRACE_DEBUG("bta_ag_scb_alloc %d", bta_ag_scb_to_idx(p_scb));
+ break;
}
+ }
- if (i == BTA_AG_NUM_SCB)
- {
- /* out of scbs */
- p_scb = NULL;
- APPL_TRACE_WARNING("Out of ag scbs");
- }
- return p_scb;
+ if (i == BTA_AG_NUM_SCB) {
+ /* out of scbs */
+ p_scb = NULL;
+ APPL_TRACE_WARNING("Out of ag scbs");
+ }
+ return p_scb;
}
/*******************************************************************************
@@ -334,42 +296,36 @@
* Returns void
*
******************************************************************************/
-void bta_ag_scb_dealloc(tBTA_AG_SCB *p_scb)
-{
- uint8_t idx;
- bool allocated = false;
+void bta_ag_scb_dealloc(tBTA_AG_SCB* p_scb) {
+ uint8_t idx;
+ bool allocated = false;
- APPL_TRACE_DEBUG("bta_ag_scb_dealloc %d", bta_ag_scb_to_idx(p_scb));
+ APPL_TRACE_DEBUG("bta_ag_scb_dealloc %d", bta_ag_scb_to_idx(p_scb));
- /* stop and free timers */
- alarm_free(p_scb->ring_timer);
+ /* stop and free timers */
+ alarm_free(p_scb->ring_timer);
#if (BTM_WBS_INCLUDED == TRUE)
- alarm_free(p_scb->codec_negotiation_timer);
+ alarm_free(p_scb->codec_negotiation_timer);
#endif
- alarm_free(p_scb->collision_timer);
+ alarm_free(p_scb->collision_timer);
- /* initialize control block */
- memset(p_scb, 0, sizeof(tBTA_AG_SCB));
- p_scb->sco_idx = BTM_INVALID_SCO_INDEX;
+ /* initialize control block */
+ memset(p_scb, 0, sizeof(tBTA_AG_SCB));
+ p_scb->sco_idx = BTM_INVALID_SCO_INDEX;
- /* If all scbs are deallocated, callback with disable event */
- if (!bta_sys_is_register (BTA_ID_AG))
- {
- for (idx = 0; idx < BTA_AG_NUM_SCB; idx++)
- {
- if (bta_ag_cb.scb[idx].in_use)
- {
- allocated = true;
- break;
- }
- }
-
- if (!allocated)
- {
- (*bta_ag_cb.p_cback)(BTA_AG_DISABLE_EVT, NULL);
- }
+ /* If all scbs are deallocated, callback with disable event */
+ if (!bta_sys_is_register(BTA_ID_AG)) {
+ for (idx = 0; idx < BTA_AG_NUM_SCB; idx++) {
+ if (bta_ag_cb.scb[idx].in_use) {
+ allocated = true;
+ break;
+ }
}
+ if (!allocated) {
+ (*bta_ag_cb.p_cback)(BTA_AG_DISABLE_EVT, NULL);
+ }
+ }
}
/*******************************************************************************
@@ -382,10 +338,9 @@
* Returns Index of scb.
*
******************************************************************************/
-uint16_t bta_ag_scb_to_idx(tBTA_AG_SCB *p_scb)
-{
- /* use array arithmetic to determine index */
- return ((uint16_t) (p_scb - bta_ag_cb.scb)) + 1;
+uint16_t bta_ag_scb_to_idx(tBTA_AG_SCB* p_scb) {
+ /* use array arithmetic to determine index */
+ return ((uint16_t)(p_scb - bta_ag_cb.scb)) + 1;
}
/*******************************************************************************
@@ -398,26 +353,21 @@
* Returns Pointer to scb or NULL if not allocated.
*
******************************************************************************/
-tBTA_AG_SCB *bta_ag_scb_by_idx(uint16_t idx)
-{
- tBTA_AG_SCB *p_scb;
+tBTA_AG_SCB* bta_ag_scb_by_idx(uint16_t idx) {
+ tBTA_AG_SCB* p_scb;
- /* verify index */
- if (idx > 0 && idx <= BTA_AG_NUM_SCB)
- {
- p_scb = &bta_ag_cb.scb[idx - 1];
- if (!p_scb->in_use)
- {
- p_scb = NULL;
- APPL_TRACE_WARNING("ag scb idx %d not allocated", idx);
- }
+ /* verify index */
+ if (idx > 0 && idx <= BTA_AG_NUM_SCB) {
+ p_scb = &bta_ag_cb.scb[idx - 1];
+ if (!p_scb->in_use) {
+ p_scb = NULL;
+ APPL_TRACE_WARNING("ag scb idx %d not allocated", idx);
}
- else
- {
- p_scb = NULL;
- APPL_TRACE_DEBUG("ag scb idx %d out of range", idx);
- }
- return p_scb;
+ } else {
+ p_scb = NULL;
+ APPL_TRACE_DEBUG("ag scb idx %d out of range", idx);
+ }
+ return p_scb;
}
/*******************************************************************************
@@ -430,16 +380,12 @@
* Returns Profile ndex of scb.
*
******************************************************************************/
-uint8_t bta_ag_service_to_idx(tBTA_SERVICE_MASK services)
-{
- if (services & BTA_HFP_SERVICE_MASK)
- {
- return BTA_AG_HFP;
- }
- else
- {
- return BTA_AG_HSP;
- }
+uint8_t bta_ag_service_to_idx(tBTA_SERVICE_MASK services) {
+ if (services & BTA_HFP_SERVICE_MASK) {
+ return BTA_AG_HFP;
+ } else {
+ return BTA_AG_HSP;
+ }
}
/*******************************************************************************
@@ -452,25 +398,21 @@
* Returns Index of SCB or zero if none found.
*
******************************************************************************/
-uint16_t bta_ag_idx_by_bdaddr(BD_ADDR peer_addr)
-{
- tBTA_AG_SCB *p_scb = &bta_ag_cb.scb[0];
- uint16_t i;
+uint16_t bta_ag_idx_by_bdaddr(BD_ADDR peer_addr) {
+ tBTA_AG_SCB* p_scb = &bta_ag_cb.scb[0];
+ uint16_t i;
- if (peer_addr != NULL)
- {
- for (i = 0; i < BTA_AG_NUM_SCB; i++, p_scb++)
- {
- if (p_scb->in_use && !bdcmp(peer_addr, p_scb->peer_addr))
- {
- return (i + 1);
- }
- }
+ if (peer_addr != NULL) {
+ for (i = 0; i < BTA_AG_NUM_SCB; i++, p_scb++) {
+ if (p_scb->in_use && !bdcmp(peer_addr, p_scb->peer_addr)) {
+ return (i + 1);
+ }
}
+ }
- /* no scb found */
- APPL_TRACE_WARNING("No ag scb for peer addr");
- return 0;
+ /* no scb found */
+ APPL_TRACE_WARNING("No ag scb for peer addr");
+ return 0;
}
/*******************************************************************************
@@ -483,22 +425,20 @@
* Returns true if another scb is in open state, false otherwise.
*
******************************************************************************/
-bool bta_ag_other_scb_open(tBTA_AG_SCB *p_curr_scb)
-{
- tBTA_AG_SCB *p_scb = &bta_ag_cb.scb[0];
- int i;
+bool bta_ag_other_scb_open(tBTA_AG_SCB* p_curr_scb) {
+ tBTA_AG_SCB* p_scb = &bta_ag_cb.scb[0];
+ int i;
- for (i = 0; i < BTA_AG_NUM_SCB; i++, p_scb++)
- {
- if (p_scb->in_use && p_scb != p_curr_scb && p_scb->state == BTA_AG_OPEN_ST)
- {
- return true;
- }
+ for (i = 0; i < BTA_AG_NUM_SCB; i++, p_scb++) {
+ if (p_scb->in_use && p_scb != p_curr_scb &&
+ p_scb->state == BTA_AG_OPEN_ST) {
+ return true;
}
+ }
- /* no other scb found */
- APPL_TRACE_DEBUG("No other ag scb open");
- return false;
+ /* no other scb found */
+ APPL_TRACE_DEBUG("No other ag scb open");
+ return false;
}
/*******************************************************************************
@@ -511,14 +451,12 @@
* Returns true if scb is in open state, false otherwise.
*
******************************************************************************/
-bool bta_ag_scb_open(tBTA_AG_SCB *p_curr_scb)
-{
- if (p_curr_scb && p_curr_scb->in_use && p_curr_scb->state == BTA_AG_OPEN_ST)
- {
- return true;
- }
+bool bta_ag_scb_open(tBTA_AG_SCB* p_curr_scb) {
+ if (p_curr_scb && p_curr_scb->in_use && p_curr_scb->state == BTA_AG_OPEN_ST) {
+ return true;
+ }
- return false;
+ return false;
}
/*******************************************************************************
@@ -531,22 +469,20 @@
* Returns Pointer to other scb if INIT st, NULL otherwise.
*
******************************************************************************/
-tBTA_AG_SCB *bta_ag_get_other_idle_scb (tBTA_AG_SCB *p_curr_scb)
-{
- tBTA_AG_SCB *p_scb = &bta_ag_cb.scb[0];
- uint8_t xx;
+tBTA_AG_SCB* bta_ag_get_other_idle_scb(tBTA_AG_SCB* p_curr_scb) {
+ tBTA_AG_SCB* p_scb = &bta_ag_cb.scb[0];
+ uint8_t xx;
- for (xx = 0; xx < BTA_AG_NUM_SCB; xx++, p_scb++)
- {
- if (p_scb->in_use && (p_scb != p_curr_scb) && (p_scb->state == BTA_AG_INIT_ST))
- {
- return p_scb;
- }
+ for (xx = 0; xx < BTA_AG_NUM_SCB; xx++, p_scb++) {
+ if (p_scb->in_use && (p_scb != p_curr_scb) &&
+ (p_scb->state == BTA_AG_INIT_ST)) {
+ return p_scb;
}
+ }
- /* no other scb found */
- APPL_TRACE_DEBUG("bta_ag_get_other_idle_scb: No idle AG scb");
- return NULL;
+ /* no other scb found */
+ APPL_TRACE_DEBUG("bta_ag_get_other_idle_scb: No idle AG scb");
+ return NULL;
}
/*******************************************************************************
@@ -559,15 +495,14 @@
* Returns void
*
******************************************************************************/
-static void bta_ag_collision_timer_cback(void *data)
-{
- tBTA_AG_SCB *p_scb = (tBTA_AG_SCB *)data;
+static void bta_ag_collision_timer_cback(void* data) {
+ tBTA_AG_SCB* p_scb = (tBTA_AG_SCB*)data;
- APPL_TRACE_DEBUG("%s", __func__);
+ APPL_TRACE_DEBUG("%s", __func__);
- /* If the peer haven't opened AG connection */
- /* we will restart opening process. */
- bta_ag_resume_open(p_scb);
+ /* If the peer haven't opened AG connection */
+ /* we will restart opening process. */
+ bta_ag_resume_open(p_scb);
}
/*******************************************************************************
@@ -580,50 +515,44 @@
* Returns void
*
******************************************************************************/
-void bta_ag_collision_cback (UNUSED_ATTR tBTA_SYS_CONN_STATUS status, uint8_t id,
- UNUSED_ATTR uint8_t app_id, BD_ADDR peer_addr)
-{
- uint16_t handle;
- tBTA_AG_SCB *p_scb;
+void bta_ag_collision_cback(UNUSED_ATTR tBTA_SYS_CONN_STATUS status, uint8_t id,
+ UNUSED_ATTR uint8_t app_id, BD_ADDR peer_addr) {
+ uint16_t handle;
+ tBTA_AG_SCB* p_scb;
- /* Check if we have opening scb for the peer device. */
- handle = bta_ag_idx_by_bdaddr (peer_addr);
- p_scb = bta_ag_scb_by_idx (handle);
+ /* Check if we have opening scb for the peer device. */
+ handle = bta_ag_idx_by_bdaddr(peer_addr);
+ p_scb = bta_ag_scb_by_idx(handle);
- if (p_scb && (p_scb->state == BTA_AG_OPENING_ST))
+ if (p_scb && (p_scb->state == BTA_AG_OPENING_ST)) {
+ if (id == BTA_ID_SYS) /* ACL collision */
{
- if (id == BTA_ID_SYS) /* ACL collision */
- {
- APPL_TRACE_WARNING ("AG found collision (ACL) ...");
- }
- else if (id == BTA_ID_AG) /* RFCOMM collision */
- {
- APPL_TRACE_WARNING ("AG found collision (RFCOMM) ...");
- }
- else
- {
- APPL_TRACE_WARNING ("AG found collision (\?\?\?) ...");
- }
-
- p_scb->state = BTA_AG_INIT_ST;
-
- /* Cancel SDP if it had been started. */
- if(p_scb->p_disc_db)
- {
- (void)SDP_CancelServiceSearch (p_scb->p_disc_db);
- bta_ag_free_db(p_scb, NULL);
- }
-
- /* reopen registered servers */
- /* Collision may be detected before or after we close servers. */
- if (bta_ag_is_server_closed (p_scb))
- bta_ag_start_servers(p_scb, p_scb->reg_services);
-
- /* Start timer to han */
- alarm_set_on_queue(p_scb->collision_timer, BTA_AG_COLLISION_TIMEOUT_MS,
- bta_ag_collision_timer_cback, p_scb,
- btu_bta_alarm_queue);
+ APPL_TRACE_WARNING("AG found collision (ACL) ...");
+ } else if (id == BTA_ID_AG) /* RFCOMM collision */
+ {
+ APPL_TRACE_WARNING("AG found collision (RFCOMM) ...");
+ } else {
+ APPL_TRACE_WARNING("AG found collision (\?\?\?) ...");
}
+
+ p_scb->state = BTA_AG_INIT_ST;
+
+ /* Cancel SDP if it had been started. */
+ if (p_scb->p_disc_db) {
+ (void)SDP_CancelServiceSearch(p_scb->p_disc_db);
+ bta_ag_free_db(p_scb, NULL);
+ }
+
+ /* reopen registered servers */
+ /* Collision may be detected before or after we close servers. */
+ if (bta_ag_is_server_closed(p_scb))
+ bta_ag_start_servers(p_scb, p_scb->reg_services);
+
+ /* Start timer to han */
+ alarm_set_on_queue(p_scb->collision_timer, BTA_AG_COLLISION_TIMEOUT_MS,
+ bta_ag_collision_timer_cback, p_scb,
+ btu_bta_alarm_queue);
+ }
}
/*******************************************************************************
@@ -636,23 +565,19 @@
* Returns void
*
******************************************************************************/
-void bta_ag_resume_open (tBTA_AG_SCB *p_scb)
-{
- if (p_scb)
- {
- APPL_TRACE_DEBUG ("bta_ag_resume_open, Handle(%d)", bta_ag_scb_to_idx(p_scb));
+void bta_ag_resume_open(tBTA_AG_SCB* p_scb) {
+ if (p_scb) {
+ APPL_TRACE_DEBUG("bta_ag_resume_open, Handle(%d)",
+ bta_ag_scb_to_idx(p_scb));
- /* resume opening process. */
- if (p_scb->state == BTA_AG_INIT_ST)
- {
- p_scb->state = BTA_AG_OPENING_ST;
- bta_ag_start_open (p_scb, NULL);
- }
+ /* resume opening process. */
+ if (p_scb->state == BTA_AG_INIT_ST) {
+ p_scb->state = BTA_AG_OPENING_ST;
+ bta_ag_start_open(p_scb, NULL);
}
- else
- {
- APPL_TRACE_ERROR ("bta_ag_resume_open, Null p_scb");
- }
+ } else {
+ APPL_TRACE_ERROR("bta_ag_resume_open, Null p_scb");
+ }
}
/*******************************************************************************
@@ -665,29 +590,28 @@
* Returns void
*
******************************************************************************/
-static void bta_ag_api_enable(tBTA_AG_DATA *p_data)
-{
- /* initialize control block */
- for (size_t i = 0; i < BTA_AG_NUM_SCB; i++) {
- alarm_free(bta_ag_cb.scb[i].ring_timer);
+static void bta_ag_api_enable(tBTA_AG_DATA* p_data) {
+ /* initialize control block */
+ for (size_t i = 0; i < BTA_AG_NUM_SCB; i++) {
+ alarm_free(bta_ag_cb.scb[i].ring_timer);
#if (BTM_WBS_INCLUDED == TRUE)
- alarm_free(bta_ag_cb.scb[i].codec_negotiation_timer);
+ alarm_free(bta_ag_cb.scb[i].codec_negotiation_timer);
#endif
- alarm_free(bta_ag_cb.scb[i].collision_timer);
- }
- memset(&bta_ag_cb, 0, sizeof(tBTA_AG_CB));
+ alarm_free(bta_ag_cb.scb[i].collision_timer);
+ }
+ memset(&bta_ag_cb, 0, sizeof(tBTA_AG_CB));
- /* store callback function */
- bta_ag_cb.p_cback = p_data->api_enable.p_cback;
- bta_ag_cb.parse_mode = p_data->api_enable.parse_mode;
+ /* store callback function */
+ bta_ag_cb.p_cback = p_data->api_enable.p_cback;
+ bta_ag_cb.parse_mode = p_data->api_enable.parse_mode;
- /* call init call-out */
- bta_ag_co_init();
+ /* call init call-out */
+ bta_ag_co_init();
- bta_sys_collision_register (BTA_ID_AG, bta_ag_collision_cback);
+ bta_sys_collision_register(BTA_ID_AG, bta_ag_collision_cback);
- /* call callback with enable event */
- (*bta_ag_cb.p_cback)(BTA_AG_ENABLE_EVT, NULL);
+ /* call callback with enable event */
+ (*bta_ag_cb.p_cback)(BTA_AG_ENABLE_EVT, NULL);
}
/*******************************************************************************
@@ -700,38 +624,33 @@
* Returns void
*
******************************************************************************/
-static void bta_ag_api_disable(tBTA_AG_DATA *p_data)
-{
- /* deregister all scbs in use */
- tBTA_AG_SCB *p_scb = &bta_ag_cb.scb[0];
- bool do_dereg = false;
- int i;
+static void bta_ag_api_disable(tBTA_AG_DATA* p_data) {
+ /* deregister all scbs in use */
+ tBTA_AG_SCB* p_scb = &bta_ag_cb.scb[0];
+ bool do_dereg = false;
+ int i;
- if (!bta_sys_is_register (BTA_ID_AG))
- {
- APPL_TRACE_ERROR("BTA AG is already disabled, ignoring ...");
- return;
+ if (!bta_sys_is_register(BTA_ID_AG)) {
+ APPL_TRACE_ERROR("BTA AG is already disabled, ignoring ...");
+ return;
+ }
+
+ /* De-register with BTA system manager */
+ bta_sys_deregister(BTA_ID_AG);
+
+ for (i = 0; i < BTA_AG_NUM_SCB; i++, p_scb++) {
+ if (p_scb->in_use) {
+ bta_ag_sm_execute(p_scb, BTA_AG_API_DEREGISTER_EVT, p_data);
+ do_dereg = true;
}
+ }
- /* De-register with BTA system manager */
- bta_sys_deregister(BTA_ID_AG);
+ if (!do_dereg) {
+ /* Done, send callback evt to app */
+ (*bta_ag_cb.p_cback)(BTA_AG_DISABLE_EVT, NULL);
+ }
- for (i = 0; i < BTA_AG_NUM_SCB; i++, p_scb++)
- {
- if (p_scb->in_use)
- {
- bta_ag_sm_execute(p_scb, BTA_AG_API_DEREGISTER_EVT, p_data);
- do_dereg = true;
- }
- }
-
- if (!do_dereg)
- {
- /* Done, send callback evt to app */
- (*bta_ag_cb.p_cback)(BTA_AG_DISABLE_EVT, NULL);
- }
-
- bta_sys_collision_register (BTA_ID_AG, NULL);
+ bta_sys_collision_register(BTA_ID_AG, NULL);
}
/*******************************************************************************
@@ -744,22 +663,18 @@
* Returns void
*
******************************************************************************/
-static void bta_ag_api_register(tBTA_AG_DATA *p_data)
-{
- tBTA_AG_SCB *p_scb;
- tBTA_AG_REGISTER reg;
+static void bta_ag_api_register(tBTA_AG_DATA* p_data) {
+ tBTA_AG_SCB* p_scb;
+ tBTA_AG_REGISTER reg;
- /* allocate an scb */
- if ((p_scb = bta_ag_scb_alloc()) != NULL)
- {
- APPL_TRACE_DEBUG("bta_ag_api_register: p_scb 0x%08x ", p_scb);
- bta_ag_sm_execute(p_scb, p_data->hdr.event, p_data);
- }
- else
- {
- reg.status = BTA_AG_FAIL_RESOURCES;
- (*bta_ag_cb.p_cback)(BTA_AG_REGISTER_EVT, (tBTA_AG *) ®);
- }
+ /* allocate an scb */
+ if ((p_scb = bta_ag_scb_alloc()) != NULL) {
+ APPL_TRACE_DEBUG("bta_ag_api_register: p_scb 0x%08x ", p_scb);
+ bta_ag_sm_execute(p_scb, p_data->hdr.event, p_data);
+ } else {
+ reg.status = BTA_AG_FAIL_RESOURCES;
+ (*bta_ag_cb.p_cback)(BTA_AG_REGISTER_EVT, (tBTA_AG*)®);
+ }
}
/*******************************************************************************
@@ -772,30 +687,23 @@
* Returns void
*
******************************************************************************/
-static void bta_ag_api_result(tBTA_AG_DATA *p_data)
-{
- tBTA_AG_SCB *p_scb;
- int i;
+static void bta_ag_api_result(tBTA_AG_DATA* p_data) {
+ tBTA_AG_SCB* p_scb;
+ int i;
- if (p_data->hdr.layer_specific != BTA_AG_HANDLE_ALL)
- {
- if ((p_scb = bta_ag_scb_by_idx(p_data->hdr.layer_specific)) != NULL)
- {
- APPL_TRACE_DEBUG("bta_ag_api_result: p_scb 0x%08x ", p_scb);
- bta_ag_sm_execute(p_scb, BTA_AG_API_RESULT_EVT, p_data);
- }
+ if (p_data->hdr.layer_specific != BTA_AG_HANDLE_ALL) {
+ if ((p_scb = bta_ag_scb_by_idx(p_data->hdr.layer_specific)) != NULL) {
+ APPL_TRACE_DEBUG("bta_ag_api_result: p_scb 0x%08x ", p_scb);
+ bta_ag_sm_execute(p_scb, BTA_AG_API_RESULT_EVT, p_data);
}
- else
- {
- for (i = 0, p_scb = &bta_ag_cb.scb[0]; i < BTA_AG_NUM_SCB; i++, p_scb++)
- {
- if (p_scb->in_use && p_scb->svc_conn)
- {
- APPL_TRACE_DEBUG("bta_ag_api_result p_scb 0x%08x ", p_scb);
- bta_ag_sm_execute(p_scb, BTA_AG_API_RESULT_EVT, p_data);
- }
- }
+ } else {
+ for (i = 0, p_scb = &bta_ag_cb.scb[0]; i < BTA_AG_NUM_SCB; i++, p_scb++) {
+ if (p_scb->in_use && p_scb->svc_conn) {
+ APPL_TRACE_DEBUG("bta_ag_api_result p_scb 0x%08x ", p_scb);
+ bta_ag_sm_execute(p_scb, BTA_AG_API_RESULT_EVT, p_data);
+ }
}
+ }
}
/*******************************************************************************
@@ -808,62 +716,55 @@
* Returns void
*
******************************************************************************/
-void bta_ag_sm_execute(tBTA_AG_SCB *p_scb, uint16_t event, tBTA_AG_DATA *p_data)
-{
- tBTA_AG_ST_TBL state_table;
- uint8_t action;
- int i;
+void bta_ag_sm_execute(tBTA_AG_SCB* p_scb, uint16_t event,
+ tBTA_AG_DATA* p_data) {
+ tBTA_AG_ST_TBL state_table;
+ uint8_t action;
+ int i;
#if (BTA_AG_DEBUG == TRUE)
- uint16_t in_event = event;
- uint8_t in_state = p_scb->state;
+ uint16_t in_event = event;
+ uint8_t in_state = p_scb->state;
- /* Ignore displaying of AT results when not connected (Ignored in state machine) */
- if (in_event != BTA_AG_API_RESULT_EVT || p_scb->state == BTA_AG_OPEN_ST)
- {
- APPL_TRACE_EVENT("AG evt (hdl 0x%04x): State %d (%s), Event 0x%04x (%s)",
- bta_ag_scb_to_idx(p_scb),
- p_scb->state, bta_ag_state_str(p_scb->state),
- event, bta_ag_evt_str(event, p_data->api_result.result));
- }
+ /* Ignore displaying of AT results when not connected (Ignored in state
+ * machine) */
+ if (in_event != BTA_AG_API_RESULT_EVT || p_scb->state == BTA_AG_OPEN_ST) {
+ APPL_TRACE_EVENT("AG evt (hdl 0x%04x): State %d (%s), Event 0x%04x (%s)",
+ bta_ag_scb_to_idx(p_scb), p_scb->state,
+ bta_ag_state_str(p_scb->state), event,
+ bta_ag_evt_str(event, p_data->api_result.result));
+ }
#else
- APPL_TRACE_EVENT("AG evt (hdl 0x%04x): State %d, Event 0x%04x",
- bta_ag_scb_to_idx(p_scb), p_scb->state, event);
+ APPL_TRACE_EVENT("AG evt (hdl 0x%04x): State %d, Event 0x%04x",
+ bta_ag_scb_to_idx(p_scb), p_scb->state, event);
#endif
- event &= 0x00FF;
- if (event >= (BTA_AG_MAX_EVT & 0x00FF))
- {
- APPL_TRACE_ERROR("AG evt out of range, ignoring...");
- return;
+ event &= 0x00FF;
+ if (event >= (BTA_AG_MAX_EVT & 0x00FF)) {
+ APPL_TRACE_ERROR("AG evt out of range, ignoring...");
+ return;
+ }
+
+ /* look up the state table for the current state */
+ state_table = bta_ag_st_tbl[p_scb->state];
+
+ /* set next state */
+ p_scb->state = state_table[event][BTA_AG_NEXT_STATE];
+
+ /* execute action functions */
+ for (i = 0; i < BTA_AG_ACTIONS; i++) {
+ if ((action = state_table[event][i]) != BTA_AG_IGNORE) {
+ (*bta_ag_action[action])(p_scb, p_data);
+ } else {
+ break;
}
-
- /* look up the state table for the current state */
- state_table = bta_ag_st_tbl[p_scb->state];
-
- /* set next state */
- p_scb->state = state_table[event][BTA_AG_NEXT_STATE];
-
- /* execute action functions */
- for (i = 0; i < BTA_AG_ACTIONS; i++)
- {
- if ((action = state_table[event][i]) != BTA_AG_IGNORE)
- {
- (*bta_ag_action[action])(p_scb, p_data);
- }
- else
- {
- break;
- }
- }
+ }
#if (BTA_AG_DEBUG == TRUE)
- if (p_scb->state != in_state)
- {
- APPL_TRACE_EVENT("BTA AG State Change: [%s] -> [%s] after Event [%s]",
- bta_ag_state_str(in_state),
- bta_ag_state_str(p_scb->state),
- bta_ag_evt_str(in_event, p_data->api_result.result));
- }
+ if (p_scb->state != in_state) {
+ APPL_TRACE_EVENT("BTA AG State Change: [%s] -> [%s] after Event [%s]",
+ bta_ag_state_str(in_state), bta_ag_state_str(p_scb->state),
+ bta_ag_evt_str(in_event, p_data->api_result.result));
+ }
#endif
}
@@ -877,143 +778,156 @@
* Returns bool
*
******************************************************************************/
-bool bta_ag_hdl_event(BT_HDR *p_msg)
-{
- tBTA_AG_SCB *p_scb;
+bool bta_ag_hdl_event(BT_HDR* p_msg) {
+ tBTA_AG_SCB* p_scb;
- APPL_TRACE_DEBUG("bta_ag_hdl_event: Event 0x%04x ", p_msg->event);
- switch (p_msg->event)
- {
- /* handle enable event */
- case BTA_AG_API_ENABLE_EVT:
- bta_ag_api_enable((tBTA_AG_DATA *) p_msg);
- break;
+ APPL_TRACE_DEBUG("bta_ag_hdl_event: Event 0x%04x ", p_msg->event);
+ switch (p_msg->event) {
+ /* handle enable event */
+ case BTA_AG_API_ENABLE_EVT:
+ bta_ag_api_enable((tBTA_AG_DATA*)p_msg);
+ break;
- /* handle disable event */
- case BTA_AG_API_DISABLE_EVT:
- bta_ag_api_disable((tBTA_AG_DATA *) p_msg);
- break;
+ /* handle disable event */
+ case BTA_AG_API_DISABLE_EVT:
+ bta_ag_api_disable((tBTA_AG_DATA*)p_msg);
+ break;
- /* handle register event */
- case BTA_AG_API_REGISTER_EVT:
- bta_ag_api_register((tBTA_AG_DATA *) p_msg);
- break;
+ /* handle register event */
+ case BTA_AG_API_REGISTER_EVT:
+ bta_ag_api_register((tBTA_AG_DATA*)p_msg);
+ break;
- /* handle result event */
- case BTA_AG_API_RESULT_EVT:
- bta_ag_api_result((tBTA_AG_DATA *) p_msg);
- break;
+ /* handle result event */
+ case BTA_AG_API_RESULT_EVT:
+ bta_ag_api_result((tBTA_AG_DATA*)p_msg);
+ break;
- /* all others reference scb by handle */
- default:
- if ((p_scb = bta_ag_scb_by_idx(p_msg->layer_specific)) != NULL)
- {
- APPL_TRACE_DEBUG("bta_ag_hdl_event: p_scb 0x%08x ", p_scb);
- bta_ag_sm_execute(p_scb, p_msg->event, (tBTA_AG_DATA *) p_msg);
- }
- break;
- }
- return true;
+ /* all others reference scb by handle */
+ default:
+ if ((p_scb = bta_ag_scb_by_idx(p_msg->layer_specific)) != NULL) {
+ APPL_TRACE_DEBUG("bta_ag_hdl_event: p_scb 0x%08x ", p_scb);
+ bta_ag_sm_execute(p_scb, p_msg->event, (tBTA_AG_DATA*)p_msg);
+ }
+ break;
+ }
+ return true;
}
#if (BTA_AG_DEBUG == TRUE)
-static char *bta_ag_evt_str(uint16_t event, tBTA_AG_RES result)
-{
- switch (event)
- {
+static char* bta_ag_evt_str(uint16_t event, tBTA_AG_RES result) {
+ switch (event) {
case BTA_AG_API_REGISTER_EVT:
- return "Register Request";
+ return "Register Request";
case BTA_AG_API_DEREGISTER_EVT:
- return "Deregister Request";
+ return "Deregister Request";
case BTA_AG_API_OPEN_EVT:
- return "Open SLC Request";
+ return "Open SLC Request";
case BTA_AG_API_CLOSE_EVT:
- return "Close SLC Request";
+ return "Close SLC Request";
case BTA_AG_API_AUDIO_OPEN_EVT:
- return "Open Audio Request";
+ return "Open Audio Request";
case BTA_AG_API_AUDIO_CLOSE_EVT:
- return "Close Audio Request";
+ return "Close Audio Request";
case BTA_AG_API_RESULT_EVT:
- switch (result)
- {
- case BTA_AG_SPK_RES: return ("AT Result BTA_AG_SPK_RES");
- case BTA_AG_MIC_RES: return ("AT Result BTA_AG_MIC_RES");
- case BTA_AG_INBAND_RING_RES: return ("AT Result BTA_AG_INBAND_RING_RES");
- case BTA_AG_CIND_RES: return ("AT Result BTA_AG_CIND_RES");
- case BTA_AG_BINP_RES: return ("AT Result BTA_AG_BINP_RES");
- case BTA_AG_IND_RES: return ("AT Result BTA_AG_IND_RES");
- case BTA_AG_BVRA_RES: return ("AT Result BTA_AG_BVRA_RES");
- case BTA_AG_CNUM_RES: return ("AT Result BTA_AG_CNUM_RES");
- case BTA_AG_BTRH_RES: return ("AT Result BTA_AG_BTRH_RES");
- case BTA_AG_CLCC_RES: return ("AT Result BTA_AG_CLCC_RES");
- case BTA_AG_COPS_RES: return ("AT Result BTA_AG_COPS_RES");
- case BTA_AG_IN_CALL_RES: return ("AT Result BTA_AG_IN_CALL_RES");
- case BTA_AG_IN_CALL_CONN_RES: return ("AT Result BTA_AG_IN_CALL_CONN_RES");
- case BTA_AG_CALL_WAIT_RES: return ("AT Result BTA_AG_CALL_WAIT_RES");
- case BTA_AG_OUT_CALL_ORIG_RES: return ("AT Result BTA_AG_OUT_CALL_ORIG_RES");
- case BTA_AG_OUT_CALL_ALERT_RES: return ("AT Result BTA_AG_OUT_CALL_ALERT_RES");
- case BTA_AG_OUT_CALL_CONN_RES: return ("AT Result BTA_AG_OUT_CALL_CONN_RES");
- case BTA_AG_CALL_CANCEL_RES: return ("AT Result BTA_AG_CALL_CANCEL_RES");
- case BTA_AG_END_CALL_RES: return ("AT Result BTA_AG_END_CALL_RES");
- case BTA_AG_UNAT_RES: return ("AT Result BTA_AG_UNAT_RES");
- default: return ("Unknown AG Result");
- }
+ switch (result) {
+ case BTA_AG_SPK_RES:
+ return ("AT Result BTA_AG_SPK_RES");
+ case BTA_AG_MIC_RES:
+ return ("AT Result BTA_AG_MIC_RES");
+ case BTA_AG_INBAND_RING_RES:
+ return ("AT Result BTA_AG_INBAND_RING_RES");
+ case BTA_AG_CIND_RES:
+ return ("AT Result BTA_AG_CIND_RES");
+ case BTA_AG_BINP_RES:
+ return ("AT Result BTA_AG_BINP_RES");
+ case BTA_AG_IND_RES:
+ return ("AT Result BTA_AG_IND_RES");
+ case BTA_AG_BVRA_RES:
+ return ("AT Result BTA_AG_BVRA_RES");
+ case BTA_AG_CNUM_RES:
+ return ("AT Result BTA_AG_CNUM_RES");
+ case BTA_AG_BTRH_RES:
+ return ("AT Result BTA_AG_BTRH_RES");
+ case BTA_AG_CLCC_RES:
+ return ("AT Result BTA_AG_CLCC_RES");
+ case BTA_AG_COPS_RES:
+ return ("AT Result BTA_AG_COPS_RES");
+ case BTA_AG_IN_CALL_RES:
+ return ("AT Result BTA_AG_IN_CALL_RES");
+ case BTA_AG_IN_CALL_CONN_RES:
+ return ("AT Result BTA_AG_IN_CALL_CONN_RES");
+ case BTA_AG_CALL_WAIT_RES:
+ return ("AT Result BTA_AG_CALL_WAIT_RES");
+ case BTA_AG_OUT_CALL_ORIG_RES:
+ return ("AT Result BTA_AG_OUT_CALL_ORIG_RES");
+ case BTA_AG_OUT_CALL_ALERT_RES:
+ return ("AT Result BTA_AG_OUT_CALL_ALERT_RES");
+ case BTA_AG_OUT_CALL_CONN_RES:
+ return ("AT Result BTA_AG_OUT_CALL_CONN_RES");
+ case BTA_AG_CALL_CANCEL_RES:
+ return ("AT Result BTA_AG_CALL_CANCEL_RES");
+ case BTA_AG_END_CALL_RES:
+ return ("AT Result BTA_AG_END_CALL_RES");
+ case BTA_AG_UNAT_RES:
+ return ("AT Result BTA_AG_UNAT_RES");
+ default:
+ return ("Unknown AG Result");
+ }
case BTA_AG_API_SETCODEC_EVT:
- return "Set Codec Request";
+ return "Set Codec Request";
case BTA_AG_RFC_OPEN_EVT:
- return "RFC Opened";
+ return "RFC Opened";
case BTA_AG_RFC_CLOSE_EVT:
- return "RFC Closed";
+ return "RFC Closed";
case BTA_AG_RFC_SRV_CLOSE_EVT:
- return "RFC SRV Closed";
+ return "RFC SRV Closed";
case BTA_AG_RFC_DATA_EVT:
- return "RFC Data";
+ return "RFC Data";
case BTA_AG_SCO_OPEN_EVT:
- return "Audio Opened";
+ return "Audio Opened";
case BTA_AG_SCO_CLOSE_EVT:
- return "Audio Closed";
+ return "Audio Closed";
case BTA_AG_DISC_ACP_RES_EVT:
- return "Discovery ACP Result";
+ return "Discovery ACP Result";
case BTA_AG_DISC_INT_RES_EVT:
- return "Discovery INT Result";
+ return "Discovery INT Result";
case BTA_AG_DISC_OK_EVT:
- return "Discovery OK";
+ return "Discovery OK";
case BTA_AG_DISC_FAIL_EVT:
- return "Discovery Failed";
+ return "Discovery Failed";
case BTA_AG_CI_RX_WRITE_EVT:
- return "CI RX Write";
+ return "CI RX Write";
case BTA_AG_RING_TIMEOUT_EVT:
- return "Ring Timeout";
+ return "Ring Timeout";
case BTA_AG_SVC_TIMEOUT_EVT:
- return "Service Timeout";
+ return "Service Timeout";
case BTA_AG_API_ENABLE_EVT:
- return "Enable AG";
+ return "Enable AG";
case BTA_AG_API_DISABLE_EVT:
- return "Disable AG";
+ return "Disable AG";
case BTA_AG_CI_SCO_DATA_EVT:
- return "SCO data Callin";
+ return "SCO data Callin";
case BTA_AG_CI_SLC_READY_EVT:
- return "SLC Ready Callin";
+ return "SLC Ready Callin";
default:
- return "Unknown AG Event";
- }
+ return "Unknown AG Event";
+ }
}
-static char *bta_ag_state_str(uint8_t state)
-{
- switch (state)
- {
+static char* bta_ag_state_str(uint8_t state) {
+ switch (state) {
case BTA_AG_INIT_ST:
- return "Initial";
+ return "Initial";
case BTA_AG_OPENING_ST:
- return "Opening";
+ return "Opening";
case BTA_AG_OPEN_ST:
- return "Open";
+ return "Open";
case BTA_AG_CLOSING_ST:
- return "Closing";
+ return "Closing";
default:
- return "Unknown AG State";
- }
+ return "Unknown AG State";
+ }
}
#endif
diff --git a/bta/ag/bta_ag_rfc.cc b/bta/ag/bta_ag_rfc.cc
index 2dc9bf2..22be803 100644
--- a/bta/ag/bta_ag_rfc.cc
+++ b/bta/ag/bta_ag_rfc.cc
@@ -25,20 +25,20 @@
#include <string.h>
+#include "bt_common.h"
+#include "bta_ag_api.h"
+#include "bta_ag_co.h"
+#include "bta_ag_int.h"
#include "bta_api.h"
#include "bta_sys.h"
-#include "bta_ag_api.h"
-#include "bta_ag_int.h"
-#include "bta_ag_co.h"
#include "btm_api.h"
#include "osi/include/osi.h"
#include "port_api.h"
#include "rfcdefs.h"
-#include "bt_common.h"
#include "utl.h"
/* Event mask for RfCOMM port callback */
-#define BTA_AG_PORT_EV_MASK PORT_EV_RXCHAR
+#define BTA_AG_PORT_EV_MASK PORT_EV_RXCHAR
/* each scb has its own rfcomm callbacks */
void bta_ag_port_cback_1(uint32_t code, uint16_t port_handle);
@@ -49,33 +49,21 @@
void bta_ag_mgmt_cback_2(uint32_t code, uint16_t port_handle);
void bta_ag_mgmt_cback_3(uint32_t code, uint16_t port_handle);
-int bta_ag_data_cback_1(uint16_t port_handle, void *p_data, uint16_t len);
-int bta_ag_data_cback_2(uint16_t port_handle, void *p_data, uint16_t len);
-int bta_ag_data_cback_3(uint16_t port_handle, void *p_data, uint16_t len);
+int bta_ag_data_cback_1(uint16_t port_handle, void* p_data, uint16_t len);
+int bta_ag_data_cback_2(uint16_t port_handle, void* p_data, uint16_t len);
+int bta_ag_data_cback_3(uint16_t port_handle, void* p_data, uint16_t len);
/* rfcomm callback function tables */
-typedef tPORT_CALLBACK *tBTA_AG_PORT_CBACK;
-const tBTA_AG_PORT_CBACK bta_ag_port_cback_tbl[] =
-{
- bta_ag_port_cback_1,
- bta_ag_port_cback_2,
- bta_ag_port_cback_3
-};
+typedef tPORT_CALLBACK* tBTA_AG_PORT_CBACK;
+const tBTA_AG_PORT_CBACK bta_ag_port_cback_tbl[] = {
+ bta_ag_port_cback_1, bta_ag_port_cback_2, bta_ag_port_cback_3};
-const tBTA_AG_PORT_CBACK bta_ag_mgmt_cback_tbl[] =
-{
- bta_ag_mgmt_cback_1,
- bta_ag_mgmt_cback_2,
- bta_ag_mgmt_cback_3
-};
+const tBTA_AG_PORT_CBACK bta_ag_mgmt_cback_tbl[] = {
+ bta_ag_mgmt_cback_1, bta_ag_mgmt_cback_2, bta_ag_mgmt_cback_3};
-typedef tPORT_DATA_CALLBACK *tBTA_AG_DATA_CBACK;
-const tBTA_AG_DATA_CBACK bta_ag_data_cback_tbl[] =
-{
- bta_ag_data_cback_1,
- bta_ag_data_cback_2,
- bta_ag_data_cback_3
-};
+typedef tPORT_DATA_CALLBACK* tBTA_AG_DATA_CBACK;
+const tBTA_AG_DATA_CBACK bta_ag_data_cback_tbl[] = {
+ bta_ag_data_cback_1, bta_ag_data_cback_2, bta_ag_data_cback_3};
/*******************************************************************************
*
@@ -88,25 +76,23 @@
*
******************************************************************************/
static void bta_ag_port_cback(UNUSED_ATTR uint32_t code, uint16_t port_handle,
- uint16_t handle)
-{
- tBTA_AG_SCB *p_scb;
+ uint16_t handle) {
+ tBTA_AG_SCB* p_scb;
- if ((p_scb = bta_ag_scb_by_idx(handle)) != NULL)
- {
- /* ignore port events for port handles other than connected handle */
- if (port_handle != p_scb->conn_handle)
- {
- APPL_TRACE_DEBUG("ag_port_cback ignoring handle:%d conn_handle = %d other handle = %d",
- port_handle, p_scb->conn_handle, handle);
- return;
- }
-
- BT_HDR *p_buf = (BT_HDR *)osi_malloc(sizeof(BT_HDR));
- p_buf->event = BTA_AG_RFC_DATA_EVT;
- p_buf->layer_specific = handle;
- bta_sys_sendmsg(p_buf);
+ if ((p_scb = bta_ag_scb_by_idx(handle)) != NULL) {
+ /* ignore port events for port handles other than connected handle */
+ if (port_handle != p_scb->conn_handle) {
+ APPL_TRACE_DEBUG(
+ "ag_port_cback ignoring handle:%d conn_handle = %d other handle = %d",
+ port_handle, p_scb->conn_handle, handle);
+ return;
}
+
+ BT_HDR* p_buf = (BT_HDR*)osi_malloc(sizeof(BT_HDR));
+ p_buf->event = BTA_AG_RFC_DATA_EVT;
+ p_buf->layer_specific = handle;
+ bta_sys_sendmsg(p_buf);
+ }
}
/*******************************************************************************
@@ -119,65 +105,56 @@
* Returns void
*
******************************************************************************/
-static void bta_ag_mgmt_cback(uint32_t code, uint16_t port_handle, uint16_t handle)
-{
- tBTA_AG_SCB *p_scb;
- uint16_t event;
- uint8_t i;
- bool found_handle = false;
+static void bta_ag_mgmt_cback(uint32_t code, uint16_t port_handle,
+ uint16_t handle) {
+ tBTA_AG_SCB* p_scb;
+ uint16_t event;
+ uint8_t i;
+ bool found_handle = false;
- APPL_TRACE_DEBUG("ag_mgmt_cback : code = %d, port_handle = %d, handle = %d",
- code, port_handle, handle);
+ APPL_TRACE_DEBUG("ag_mgmt_cback : code = %d, port_handle = %d, handle = %d",
+ code, port_handle, handle);
- if ((p_scb = bta_ag_scb_by_idx(handle)) != NULL)
- {
- /* ignore close event for port handles other than connected handle */
- if ((code != PORT_SUCCESS) && (port_handle != p_scb->conn_handle))
- {
- APPL_TRACE_DEBUG("ag_mgmt_cback ignoring handle:%d", port_handle);
- return;
- }
-
- if (code == PORT_SUCCESS)
- {
- if (p_scb->conn_handle) /* Outgoing connection */
- {
- if (port_handle == p_scb->conn_handle)
- found_handle = true;
- }
- else /* Incoming connection */
- {
- for (i = 0; i < BTA_AG_NUM_IDX; i++)
- {
- if (port_handle == p_scb->serv_handle[i])
- found_handle = true;
- }
- }
-
- if (!found_handle)
- {
- APPL_TRACE_ERROR ("bta_ag_mgmt_cback: PORT_SUCCESS, ignoring handle = %d", port_handle);
- return;
- }
-
- event = BTA_AG_RFC_OPEN_EVT;
- }
- /* distinguish server close events */
- else if (port_handle == p_scb->conn_handle)
- {
- event = BTA_AG_RFC_CLOSE_EVT;
- }
- else
- {
- event = BTA_AG_RFC_SRV_CLOSE_EVT;
- }
-
- tBTA_AG_RFC *p_buf = (tBTA_AG_RFC *)osi_malloc(sizeof(tBTA_AG_RFC));
- p_buf->hdr.event = event;
- p_buf->hdr.layer_specific = handle;
- p_buf->port_handle = port_handle;
- bta_sys_sendmsg(p_buf);
+ if ((p_scb = bta_ag_scb_by_idx(handle)) != NULL) {
+ /* ignore close event for port handles other than connected handle */
+ if ((code != PORT_SUCCESS) && (port_handle != p_scb->conn_handle)) {
+ APPL_TRACE_DEBUG("ag_mgmt_cback ignoring handle:%d", port_handle);
+ return;
}
+
+ if (code == PORT_SUCCESS) {
+ if (p_scb->conn_handle) /* Outgoing connection */
+ {
+ if (port_handle == p_scb->conn_handle) found_handle = true;
+ } else /* Incoming connection */
+ {
+ for (i = 0; i < BTA_AG_NUM_IDX; i++) {
+ if (port_handle == p_scb->serv_handle[i]) found_handle = true;
+ }
+ }
+
+ if (!found_handle) {
+ APPL_TRACE_ERROR(
+ "bta_ag_mgmt_cback: PORT_SUCCESS, ignoring handle = %d",
+ port_handle);
+ return;
+ }
+
+ event = BTA_AG_RFC_OPEN_EVT;
+ }
+ /* distinguish server close events */
+ else if (port_handle == p_scb->conn_handle) {
+ event = BTA_AG_RFC_CLOSE_EVT;
+ } else {
+ event = BTA_AG_RFC_SRV_CLOSE_EVT;
+ }
+
+ tBTA_AG_RFC* p_buf = (tBTA_AG_RFC*)osi_malloc(sizeof(tBTA_AG_RFC));
+ p_buf->hdr.event = event;
+ p_buf->hdr.layer_specific = handle;
+ p_buf->port_handle = port_handle;
+ bta_sys_sendmsg(p_buf);
+ }
}
/*******************************************************************************
@@ -190,12 +167,11 @@
* Returns void
*
******************************************************************************/
-static int bta_ag_data_cback(UNUSED_ATTR uint16_t port_handle, void *p_data,
- uint16_t len, uint16_t handle)
-{
- /* call data call-out directly */
- bta_ag_co_tx_write(handle, (uint8_t *) p_data, len);
- return 0;
+static int bta_ag_data_cback(UNUSED_ATTR uint16_t port_handle, void* p_data,
+ uint16_t len, uint16_t handle) {
+ /* call data call-out directly */
+ bta_ag_co_tx_write(handle, (uint8_t*)p_data, len);
+ return 0;
}
/*******************************************************************************
@@ -210,12 +186,24 @@
* Returns void
*
******************************************************************************/
-void bta_ag_mgmt_cback_1(uint32_t code, uint16_t handle) {bta_ag_mgmt_cback(code, handle, 1);}
-void bta_ag_mgmt_cback_2(uint32_t code, uint16_t handle) {bta_ag_mgmt_cback(code, handle, 2);}
-void bta_ag_mgmt_cback_3(uint32_t code, uint16_t handle) {bta_ag_mgmt_cback(code, handle, 3);}
-void bta_ag_port_cback_1(uint32_t code, uint16_t handle) {bta_ag_port_cback(code, handle, 1);}
-void bta_ag_port_cback_2(uint32_t code, uint16_t handle) {bta_ag_port_cback(code, handle, 2);}
-void bta_ag_port_cback_3(uint32_t code, uint16_t handle) {bta_ag_port_cback(code, handle, 3);}
+void bta_ag_mgmt_cback_1(uint32_t code, uint16_t handle) {
+ bta_ag_mgmt_cback(code, handle, 1);
+}
+void bta_ag_mgmt_cback_2(uint32_t code, uint16_t handle) {
+ bta_ag_mgmt_cback(code, handle, 2);
+}
+void bta_ag_mgmt_cback_3(uint32_t code, uint16_t handle) {
+ bta_ag_mgmt_cback(code, handle, 3);
+}
+void bta_ag_port_cback_1(uint32_t code, uint16_t handle) {
+ bta_ag_port_cback(code, handle, 1);
+}
+void bta_ag_port_cback_2(uint32_t code, uint16_t handle) {
+ bta_ag_port_cback(code, handle, 2);
+}
+void bta_ag_port_cback_3(uint32_t code, uint16_t handle) {
+ bta_ag_port_cback(code, handle, 3);
+}
/*******************************************************************************
*
@@ -228,17 +216,14 @@
* Returns void
*
******************************************************************************/
-int bta_ag_data_cback_1(uint16_t port_handle, void *p_data, uint16_t len)
-{
- return bta_ag_data_cback(port_handle, p_data, len, 1);
+int bta_ag_data_cback_1(uint16_t port_handle, void* p_data, uint16_t len) {
+ return bta_ag_data_cback(port_handle, p_data, len, 1);
}
-int bta_ag_data_cback_2(uint16_t port_handle, void *p_data, uint16_t len)
-{
- return bta_ag_data_cback(port_handle, p_data, len, 2);
+int bta_ag_data_cback_2(uint16_t port_handle, void* p_data, uint16_t len) {
+ return bta_ag_data_cback(port_handle, p_data, len, 2);
}
-int bta_ag_data_cback_3(uint16_t port_handle, void *p_data, uint16_t len)
-{
- return bta_ag_data_cback(port_handle, p_data, len, 3);
+int bta_ag_data_cback_3(uint16_t port_handle, void* p_data, uint16_t len) {
+ return bta_ag_data_cback(port_handle, p_data, len, 3);
}
/*******************************************************************************
@@ -251,18 +236,16 @@
* Returns void
*
******************************************************************************/
-void bta_ag_setup_port(tBTA_AG_SCB *p_scb, uint16_t handle)
-{
- uint16_t i = bta_ag_scb_to_idx(p_scb) - 1;
+void bta_ag_setup_port(tBTA_AG_SCB* p_scb, uint16_t handle) {
+ uint16_t i = bta_ag_scb_to_idx(p_scb) - 1;
- /* set up data callback if using pass through mode */
- if (bta_ag_cb.parse_mode == BTA_AG_PASS_THROUGH)
- {
- PORT_SetDataCallback(handle, bta_ag_data_cback_tbl[i]);
- }
+ /* set up data callback if using pass through mode */
+ if (bta_ag_cb.parse_mode == BTA_AG_PASS_THROUGH) {
+ PORT_SetDataCallback(handle, bta_ag_data_cback_tbl[i]);
+ }
- PORT_SetEventMask(handle, BTA_AG_PORT_EV_MASK);
- PORT_SetEventCallback(handle, bta_ag_port_cback_tbl[i]);
+ PORT_SetEventMask(handle, BTA_AG_PORT_EV_MASK);
+ PORT_SetEventCallback(handle, bta_ag_port_cback_tbl[i]);
}
/*******************************************************************************
@@ -275,35 +258,33 @@
* Returns void
*
******************************************************************************/
-void bta_ag_start_servers(tBTA_AG_SCB *p_scb, tBTA_SERVICE_MASK services)
-{
- int i;
- int bta_ag_port_status;
+void bta_ag_start_servers(tBTA_AG_SCB* p_scb, tBTA_SERVICE_MASK services) {
+ int i;
+ int bta_ag_port_status;
- services >>= BTA_HSP_SERVICE_ID;
- for (i = 0; i < BTA_AG_NUM_IDX && services != 0; i++, services >>= 1)
- {
- /* if service is set in mask */
- if (services & 1)
- {
- BTM_SetSecurityLevel(false, "", bta_ag_sec_id[i], p_scb->serv_sec_mask,
- BT_PSM_RFCOMM, BTM_SEC_PROTO_RFCOMM, bta_ag_cb.profile[i].scn);
+ services >>= BTA_HSP_SERVICE_ID;
+ for (i = 0; i < BTA_AG_NUM_IDX && services != 0; i++, services >>= 1) {
+ /* if service is set in mask */
+ if (services & 1) {
+ BTM_SetSecurityLevel(false, "", bta_ag_sec_id[i], p_scb->serv_sec_mask,
+ BT_PSM_RFCOMM, BTM_SEC_PROTO_RFCOMM,
+ bta_ag_cb.profile[i].scn);
- bta_ag_port_status = RFCOMM_CreateConnection(bta_ag_uuid[i], bta_ag_cb.profile[i].scn,
- true, BTA_AG_MTU, (uint8_t *) bd_addr_any, &(p_scb->serv_handle[i]),
- bta_ag_mgmt_cback_tbl[bta_ag_scb_to_idx(p_scb) - 1]);
+ bta_ag_port_status = RFCOMM_CreateConnection(
+ bta_ag_uuid[i], bta_ag_cb.profile[i].scn, true, BTA_AG_MTU,
+ (uint8_t*)bd_addr_any, &(p_scb->serv_handle[i]),
+ bta_ag_mgmt_cback_tbl[bta_ag_scb_to_idx(p_scb) - 1]);
- if( bta_ag_port_status == PORT_SUCCESS )
- {
- bta_ag_setup_port(p_scb, p_scb->serv_handle[i]);
- }
- else
- {
- /* TODO: CR#137125 to handle to error properly */
- APPL_TRACE_DEBUG("bta_ag_start_servers: RFCOMM_CreateConnection returned error:%d", bta_ag_port_status);
- }
- }
+ if (bta_ag_port_status == PORT_SUCCESS) {
+ bta_ag_setup_port(p_scb, p_scb->serv_handle[i]);
+ } else {
+ /* TODO: CR#137125 to handle to error properly */
+ APPL_TRACE_DEBUG(
+ "bta_ag_start_servers: RFCOMM_CreateConnection returned error:%d",
+ bta_ag_port_status);
+ }
}
+ }
}
/*******************************************************************************
@@ -316,20 +297,17 @@
* Returns void
*
******************************************************************************/
-void bta_ag_close_servers(tBTA_AG_SCB *p_scb, tBTA_SERVICE_MASK services)
-{
- int i;
+void bta_ag_close_servers(tBTA_AG_SCB* p_scb, tBTA_SERVICE_MASK services) {
+ int i;
- services >>= BTA_HSP_SERVICE_ID;
- for (i = 0; i < BTA_AG_NUM_IDX && services != 0; i++, services >>= 1)
- {
- /* if service is set in mask */
- if (services & 1)
- {
- RFCOMM_RemoveServer(p_scb->serv_handle[i]);
- p_scb->serv_handle[i] = 0;
- }
+ services >>= BTA_HSP_SERVICE_ID;
+ for (i = 0; i < BTA_AG_NUM_IDX && services != 0; i++, services >>= 1) {
+ /* if service is set in mask */
+ if (services & 1) {
+ RFCOMM_RemoveServer(p_scb->serv_handle[i]);
+ p_scb->serv_handle[i] = 0;
}
+ }
}
/*******************************************************************************
@@ -342,18 +320,15 @@
* Returns true if all servers are closed, false otherwise
*
******************************************************************************/
-bool bta_ag_is_server_closed (tBTA_AG_SCB *p_scb)
-{
- uint8_t xx;
- bool is_closed = true;
+bool bta_ag_is_server_closed(tBTA_AG_SCB* p_scb) {
+ uint8_t xx;
+ bool is_closed = true;
- for (xx = 0; xx < BTA_AG_NUM_IDX; xx++)
- {
- if (p_scb->serv_handle[xx] != 0)
- is_closed = false;
- }
+ for (xx = 0; xx < BTA_AG_NUM_IDX; xx++) {
+ if (p_scb->serv_handle[xx] != 0) is_closed = false;
+ }
- return is_closed;
+ return is_closed;
}
/*******************************************************************************
@@ -366,23 +341,24 @@
* Returns void
*
******************************************************************************/
-void bta_ag_rfc_do_open(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data)
-{
- BTM_SetSecurityLevel(true, "", bta_ag_sec_id[p_scb->conn_service],
- p_scb->cli_sec_mask, BT_PSM_RFCOMM, BTM_SEC_PROTO_RFCOMM, p_scb->peer_scn);
+void bta_ag_rfc_do_open(tBTA_AG_SCB* p_scb, tBTA_AG_DATA* p_data) {
+ BTM_SetSecurityLevel(true, "", bta_ag_sec_id[p_scb->conn_service],
+ p_scb->cli_sec_mask, BT_PSM_RFCOMM, BTM_SEC_PROTO_RFCOMM,
+ p_scb->peer_scn);
- if (RFCOMM_CreateConnection(bta_ag_uuid[p_scb->conn_service], p_scb->peer_scn,
- false, BTA_AG_MTU, p_scb->peer_addr, &(p_scb->conn_handle),
- bta_ag_mgmt_cback_tbl[bta_ag_scb_to_idx(p_scb) - 1]) == PORT_SUCCESS)
- {
- bta_ag_setup_port(p_scb, p_scb->conn_handle);
- APPL_TRACE_DEBUG("bta_ag_rfc_do_open : conn_handle = %d", p_scb->conn_handle);
- }
- /* RFCOMM create connection failed; send ourselves RFCOMM close event */
- else
- {
- bta_ag_sm_execute(p_scb, BTA_AG_RFC_CLOSE_EVT, p_data);
- }
+ if (RFCOMM_CreateConnection(
+ bta_ag_uuid[p_scb->conn_service], p_scb->peer_scn, false, BTA_AG_MTU,
+ p_scb->peer_addr, &(p_scb->conn_handle),
+ bta_ag_mgmt_cback_tbl[bta_ag_scb_to_idx(p_scb) - 1]) ==
+ PORT_SUCCESS) {
+ bta_ag_setup_port(p_scb, p_scb->conn_handle);
+ APPL_TRACE_DEBUG("bta_ag_rfc_do_open : conn_handle = %d",
+ p_scb->conn_handle);
+ }
+ /* RFCOMM create connection failed; send ourselves RFCOMM close event */
+ else {
+ bta_ag_sm_execute(p_scb, BTA_AG_RFC_CLOSE_EVT, p_data);
+ }
}
/*******************************************************************************
@@ -395,27 +371,24 @@
* Returns void
*
******************************************************************************/
-void bta_ag_rfc_do_close(tBTA_AG_SCB *p_scb,
- UNUSED_ATTR tBTA_AG_DATA *p_data)
-{
- if (p_scb->conn_handle) {
- RFCOMM_RemoveConnection(p_scb->conn_handle);
- } else {
- /* Close API was called while AG is in Opening state. */
- /* Need to trigger the state machine to send callback to the app */
- /* and move back to INIT state. */
- tBTA_AG_RFC *p_buf = (tBTA_AG_RFC *)osi_malloc(sizeof(tBTA_AG_RFC));
- p_buf->hdr.event = BTA_AG_RFC_CLOSE_EVT;
- p_buf->hdr.layer_specific = bta_ag_scb_to_idx(p_scb);
- bta_sys_sendmsg(p_buf);
+void bta_ag_rfc_do_close(tBTA_AG_SCB* p_scb, UNUSED_ATTR tBTA_AG_DATA* p_data) {
+ if (p_scb->conn_handle) {
+ RFCOMM_RemoveConnection(p_scb->conn_handle);
+ } else {
+ /* Close API was called while AG is in Opening state. */
+ /* Need to trigger the state machine to send callback to the app */
+ /* and move back to INIT state. */
+ tBTA_AG_RFC* p_buf = (tBTA_AG_RFC*)osi_malloc(sizeof(tBTA_AG_RFC));
+ p_buf->hdr.event = BTA_AG_RFC_CLOSE_EVT;
+ p_buf->hdr.layer_specific = bta_ag_scb_to_idx(p_scb);
+ bta_sys_sendmsg(p_buf);
- /* Cancel SDP if it had been started. */
- /*
- if(p_scb->p_disc_db)
- {
- (void)SDP_CancelServiceSearch (p_scb->p_disc_db);
- }
- */
+ /* Cancel SDP if it had been started. */
+ /*
+ if(p_scb->p_disc_db)
+ {
+ (void)SDP_CancelServiceSearch (p_scb->p_disc_db);
}
+ */
+ }
}
-
diff --git a/bta/ag/bta_ag_sco.cc b/bta/ag/bta_ag_sco.cc
index 17bbba2..9fa81ea 100644
--- a/bta/ag/bta_ag_sco.cc
+++ b/bta/ag/bta_ag_sco.cc
@@ -24,15 +24,15 @@
#include <stddef.h>
-#include "bta_api.h"
#include "bta_ag_api.h"
#include "bta_ag_co.h"
+#include "bta_api.h"
#if (BTM_SCO_HCI_INCLUDED == TRUE)
#include "bta_dm_co.h"
#endif
+#include "bt_common.h"
#include "bta_ag_int.h"
#include "btm_api.h"
-#include "bt_common.h"
#include "osi/include/osi.h"
#include "utl.h"
@@ -42,105 +42,91 @@
/* Codec negotiation timeout */
#ifndef BTA_AG_CODEC_NEGOTIATION_TIMEOUT_MS
-#define BTA_AG_CODEC_NEGOTIATION_TIMEOUT_MS (3 * 1000) /* 3 seconds */
+#define BTA_AG_CODEC_NEGOTIATION_TIMEOUT_MS (3 * 1000) /* 3 seconds */
#endif
-extern fixed_queue_t *btu_bta_alarm_queue;
+extern fixed_queue_t* btu_bta_alarm_queue;
#if (BTA_AG_SCO_DEBUG == TRUE)
-static char *bta_ag_sco_evt_str(uint8_t event);
-static char *bta_ag_sco_state_str(uint8_t state);
+static char* bta_ag_sco_evt_str(uint8_t event);
+static char* bta_ag_sco_state_str(uint8_t state);
#endif
-#define BTA_AG_NO_EDR_ESCO (BTM_SCO_PKT_TYPES_MASK_NO_2_EV3 | \
- BTM_SCO_PKT_TYPES_MASK_NO_3_EV3 | \
- BTM_SCO_PKT_TYPES_MASK_NO_2_EV5 | \
- BTM_SCO_PKT_TYPES_MASK_NO_3_EV5)
+#define BTA_AG_NO_EDR_ESCO \
+ (BTM_SCO_PKT_TYPES_MASK_NO_2_EV3 | BTM_SCO_PKT_TYPES_MASK_NO_3_EV3 | \
+ BTM_SCO_PKT_TYPES_MASK_NO_2_EV5 | BTM_SCO_PKT_TYPES_MASK_NO_3_EV5)
/* sco events */
-enum
-{
- BTA_AG_SCO_LISTEN_E, /* listen request */
- BTA_AG_SCO_OPEN_E, /* open request */
- BTA_AG_SCO_XFER_E, /* transfer request */
+enum {
+ BTA_AG_SCO_LISTEN_E, /* listen request */
+ BTA_AG_SCO_OPEN_E, /* open request */
+ BTA_AG_SCO_XFER_E, /* transfer request */
#if (BTM_WBS_INCLUDED == TRUE)
- BTA_AG_SCO_CN_DONE_E, /* codec negotiation done */
- BTA_AG_SCO_REOPEN_E, /* Retry with other codec when failed */
+ BTA_AG_SCO_CN_DONE_E, /* codec negotiation done */
+ BTA_AG_SCO_REOPEN_E, /* Retry with other codec when failed */
#endif
- BTA_AG_SCO_CLOSE_E, /* close request */
- BTA_AG_SCO_SHUTDOWN_E, /* shutdown request */
- BTA_AG_SCO_CONN_OPEN_E, /* sco open */
- BTA_AG_SCO_CONN_CLOSE_E, /* sco closed */
- BTA_AG_SCO_CI_DATA_E /* SCO data ready */
+ BTA_AG_SCO_CLOSE_E, /* close request */
+ BTA_AG_SCO_SHUTDOWN_E, /* shutdown request */
+ BTA_AG_SCO_CONN_OPEN_E, /* sco open */
+ BTA_AG_SCO_CONN_CLOSE_E, /* sco closed */
+ BTA_AG_SCO_CI_DATA_E /* SCO data ready */
};
#if (BTM_WBS_INCLUDED == TRUE)
-#define BTA_AG_NUM_CODECS 3
-#define BTA_AG_ESCO_SETTING_IDX_CVSD 0 /* eSCO setting for CVSD */
-#define BTA_AG_ESCO_SETTING_IDX_T1 1 /* eSCO setting for mSBC T1 */
-#define BTA_AG_ESCO_SETTING_IDX_T2 2 /* eSCO setting for mSBC T2 */
+#define BTA_AG_NUM_CODECS 3
+#define BTA_AG_ESCO_SETTING_IDX_CVSD 0 /* eSCO setting for CVSD */
+#define BTA_AG_ESCO_SETTING_IDX_T1 1 /* eSCO setting for mSBC T1 */
+#define BTA_AG_ESCO_SETTING_IDX_T2 2 /* eSCO setting for mSBC T2 */
-static const tBTM_ESCO_PARAMS bta_ag_esco_params[BTA_AG_NUM_CODECS] =
-{
+static const tBTM_ESCO_PARAMS bta_ag_esco_params[BTA_AG_NUM_CODECS] = {
/* CVSD */
{
- BTM_64KBITS_RATE, /* TX Bandwidth (64 kbits/sec) */
- BTM_64KBITS_RATE, /* RX Bandwidth (64 kbits/sec) */
- 0x000c, /* 12 ms (HS/HF can use EV3, 2-EV3, 3-EV3) */
- BTM_VOICE_SETTING_CVSD, /* Inp Linear, Air CVSD, 2s Comp, 16bit */
- (BTM_SCO_PKT_TYPES_MASK_HV1 + /* Packet Types */
- BTM_SCO_PKT_TYPES_MASK_HV2 +
- BTM_SCO_PKT_TYPES_MASK_HV3 +
- BTM_SCO_PKT_TYPES_MASK_EV3 +
- BTM_SCO_PKT_TYPES_MASK_EV4 +
- BTM_SCO_PKT_TYPES_MASK_EV5 +
- BTM_SCO_PKT_TYPES_MASK_NO_2_EV5 +
- BTM_SCO_PKT_TYPES_MASK_NO_3_EV5),
- BTM_ESCO_RETRANS_QUALITY /* Retransmission effort */
+ BTM_64KBITS_RATE, /* TX Bandwidth (64 kbits/sec) */
+ BTM_64KBITS_RATE, /* RX Bandwidth (64 kbits/sec) */
+ 0x000c, /* 12 ms (HS/HF can use EV3, 2-EV3, 3-EV3) */
+ BTM_VOICE_SETTING_CVSD, /* Inp Linear, Air CVSD, 2s Comp, 16bit */
+ (BTM_SCO_PKT_TYPES_MASK_HV1 + /* Packet Types */
+ BTM_SCO_PKT_TYPES_MASK_HV2 + BTM_SCO_PKT_TYPES_MASK_HV3 +
+ BTM_SCO_PKT_TYPES_MASK_EV3 + BTM_SCO_PKT_TYPES_MASK_EV4 +
+ BTM_SCO_PKT_TYPES_MASK_EV5 + BTM_SCO_PKT_TYPES_MASK_NO_2_EV5 +
+ BTM_SCO_PKT_TYPES_MASK_NO_3_EV5),
+ BTM_ESCO_RETRANS_QUALITY /* Retransmission effort */
},
/* mSBC T1 */
{
- BTM_64KBITS_RATE, /* TX Bandwidth (64 kbits/sec), 8000 */
- BTM_64KBITS_RATE, /* RX Bandwidth (64 kbits/sec), 8000 */
- 8, /* 8 ms */
- BTM_VOICE_SETTING_TRANS, /* Inp Linear, Transparent, 2s Comp, 16bit */
- (BTM_SCO_PKT_TYPES_MASK_EV3 | /* Packet Types : EV3 + NO_2_EV3 */
- BTM_SCO_PKT_TYPES_MASK_NO_3_EV3 |
- BTM_SCO_PKT_TYPES_MASK_NO_2_EV5 |
- BTM_SCO_PKT_TYPES_MASK_NO_3_EV5 |
- BTM_SCO_PKT_TYPES_MASK_NO_2_EV3 ),
- BTM_ESCO_RETRANS_QUALITY /* Retransmission effort */
+ BTM_64KBITS_RATE, /* TX Bandwidth (64 kbits/sec), 8000 */
+ BTM_64KBITS_RATE, /* RX Bandwidth (64 kbits/sec), 8000 */
+ 8, /* 8 ms */
+ BTM_VOICE_SETTING_TRANS, /* Inp Linear, Transparent, 2s Comp, 16bit */
+ (BTM_SCO_PKT_TYPES_MASK_EV3 | /* Packet Types : EV3 + NO_2_EV3 */
+ BTM_SCO_PKT_TYPES_MASK_NO_3_EV3 | BTM_SCO_PKT_TYPES_MASK_NO_2_EV5 |
+ BTM_SCO_PKT_TYPES_MASK_NO_3_EV5 | BTM_SCO_PKT_TYPES_MASK_NO_2_EV3),
+ BTM_ESCO_RETRANS_QUALITY /* Retransmission effort */
},
/* mSBC T2*/
{
- BTM_64KBITS_RATE, /* TX Bandwidth (64 kbits/sec), 8000 */
- BTM_64KBITS_RATE, /* RX Bandwidth (64 kbits/sec), 8000 */
- 13, /* 13 ms */
- BTM_VOICE_SETTING_TRANS, /* Inp Linear, Transparent, 2s Comp, 16bit */
- (BTM_SCO_PKT_TYPES_MASK_EV3 | /* Packet Types : EV3 + 2-EV3 */
- BTM_SCO_PKT_TYPES_MASK_NO_3_EV3 |
- BTM_SCO_PKT_TYPES_MASK_NO_2_EV5 |
- BTM_SCO_PKT_TYPES_MASK_NO_3_EV5),
- BTM_ESCO_RETRANS_QUALITY /* Retransmission effort */
- }
-};
+ BTM_64KBITS_RATE, /* TX Bandwidth (64 kbits/sec), 8000 */
+ BTM_64KBITS_RATE, /* RX Bandwidth (64 kbits/sec), 8000 */
+ 13, /* 13 ms */
+ BTM_VOICE_SETTING_TRANS, /* Inp Linear, Transparent, 2s Comp, 16bit */
+ (BTM_SCO_PKT_TYPES_MASK_EV3 | /* Packet Types : EV3 + 2-EV3 */
+ BTM_SCO_PKT_TYPES_MASK_NO_3_EV3 | BTM_SCO_PKT_TYPES_MASK_NO_2_EV5 |
+ BTM_SCO_PKT_TYPES_MASK_NO_3_EV5),
+ BTM_ESCO_RETRANS_QUALITY /* Retransmission effort */
+ }};
#else
/* WBS not included, CVSD by default */
-static const tBTM_ESCO_PARAMS bta_ag_esco_params =
-{
- BTM_64KBITS_RATE, /* TX Bandwidth (64 kbits/sec) */
- BTM_64KBITS_RATE, /* RX Bandwidth (64 kbits/sec) */
- 0x000a, /* 10 ms (HS/HF can use EV3, 2-EV3, 3-EV3) */
- 0x0060, /* Inp Linear, Air CVSD, 2s Comp, 16bit */
- (BTM_SCO_PKT_TYPES_MASK_HV1 + /* Packet Types */
- BTM_SCO_PKT_TYPES_MASK_HV2 +
- BTM_SCO_PKT_TYPES_MASK_HV3 +
- BTM_SCO_PKT_TYPES_MASK_EV3 +
- BTM_SCO_PKT_TYPES_MASK_EV4 +
- BTM_SCO_PKT_TYPES_MASK_EV5 +
- BTM_SCO_PKT_TYPES_MASK_NO_2_EV5 +
+static const tBTM_ESCO_PARAMS bta_ag_esco_params = {
+ BTM_64KBITS_RATE, /* TX Bandwidth (64 kbits/sec) */
+ BTM_64KBITS_RATE, /* RX Bandwidth (64 kbits/sec) */
+ 0x000a, /* 10 ms (HS/HF can use EV3, 2-EV3, 3-EV3) */
+ 0x0060, /* Inp Linear, Air CVSD, 2s Comp, 16bit */
+ (BTM_SCO_PKT_TYPES_MASK_HV1 + /* Packet Types */
+ BTM_SCO_PKT_TYPES_MASK_HV2 + BTM_SCO_PKT_TYPES_MASK_HV3 +
+ BTM_SCO_PKT_TYPES_MASK_EV3 + BTM_SCO_PKT_TYPES_MASK_EV4 +
+ BTM_SCO_PKT_TYPES_MASK_EV5 + BTM_SCO_PKT_TYPES_MASK_NO_2_EV5 +
BTM_SCO_PKT_TYPES_MASK_NO_3_EV5),
- BTM_ESCO_RETRANS_POWER /* Retransmission effort */
+ BTM_ESCO_RETRANS_POWER /* Retransmission effort */
};
#endif
@@ -154,37 +140,33 @@
* Returns void
*
******************************************************************************/
-static void bta_ag_sco_conn_cback(uint16_t sco_idx)
-{
- uint16_t handle;
- tBTA_AG_SCB *p_scb;
+static void bta_ag_sco_conn_cback(uint16_t sco_idx) {
+ uint16_t handle;
+ tBTA_AG_SCB* p_scb;
- /* match callback to scb; first check current sco scb */
- if (bta_ag_cb.sco.p_curr_scb != NULL && bta_ag_cb.sco.p_curr_scb->in_use)
- {
- handle = bta_ag_scb_to_idx(bta_ag_cb.sco.p_curr_scb);
- }
- /* then check for scb connected to this peer */
- else
- {
- /* Check if SLC is up */
- handle = bta_ag_idx_by_bdaddr(BTM_ReadScoBdAddr(sco_idx));
- p_scb = bta_ag_scb_by_idx(handle);
- if(p_scb && !p_scb->svc_conn)
- handle = 0;
- }
+ /* match callback to scb; first check current sco scb */
+ if (bta_ag_cb.sco.p_curr_scb != NULL && bta_ag_cb.sco.p_curr_scb->in_use) {
+ handle = bta_ag_scb_to_idx(bta_ag_cb.sco.p_curr_scb);
+ }
+ /* then check for scb connected to this peer */
+ else {
+ /* Check if SLC is up */
+ handle = bta_ag_idx_by_bdaddr(BTM_ReadScoBdAddr(sco_idx));
+ p_scb = bta_ag_scb_by_idx(handle);
+ if (p_scb && !p_scb->svc_conn) handle = 0;
+ }
- if (handle != 0) {
- BT_HDR *p_buf = (BT_HDR *)osi_malloc(sizeof(BT_HDR));
- p_buf->event = BTA_AG_SCO_OPEN_EVT;
- p_buf->layer_specific = handle;
- bta_sys_sendmsg(p_buf);
- } else {
- /* no match found; disconnect sco, init sco variables */
- bta_ag_cb.sco.p_curr_scb = NULL;
- bta_ag_cb.sco.state = BTA_AG_SCO_SHUTDOWN_ST;
- BTM_RemoveSco(sco_idx);
- }
+ if (handle != 0) {
+ BT_HDR* p_buf = (BT_HDR*)osi_malloc(sizeof(BT_HDR));
+ p_buf->event = BTA_AG_SCO_OPEN_EVT;
+ p_buf->layer_specific = handle;
+ bta_sys_sendmsg(p_buf);
+ } else {
+ /* no match found; disconnect sco, init sco variables */
+ bta_ag_cb.sco.p_curr_scb = NULL;
+ bta_ag_cb.sco.state = BTA_AG_SCO_SHUTDOWN_ST;
+ BTM_RemoveSco(sco_idx);
+ }
}
/*******************************************************************************
@@ -197,81 +179,83 @@
* Returns void
*
******************************************************************************/
-static void bta_ag_sco_disc_cback(uint16_t sco_idx)
-{
- uint16_t handle = 0;
+static void bta_ag_sco_disc_cback(uint16_t sco_idx) {
+ uint16_t handle = 0;
- APPL_TRACE_DEBUG ("bta_ag_sco_disc_cback(): sco_idx: 0x%x p_cur_scb: 0x%08x sco.state: %d", sco_idx, bta_ag_cb.sco.p_curr_scb, bta_ag_cb.sco.state);
+ APPL_TRACE_DEBUG(
+ "bta_ag_sco_disc_cback(): sco_idx: 0x%x p_cur_scb: 0x%08x sco.state: "
+ "%d",
+ sco_idx, bta_ag_cb.sco.p_curr_scb, bta_ag_cb.sco.state);
- APPL_TRACE_DEBUG ("bta_ag_sco_disc_cback(): scb[0] addr: 0x%08x in_use: %u sco_idx: 0x%x sco state: %u",
- &bta_ag_cb.scb[0], bta_ag_cb.scb[0].in_use, bta_ag_cb.scb[0].sco_idx, bta_ag_cb.scb[0].state);
- APPL_TRACE_DEBUG ("bta_ag_sco_disc_cback(): scb[1] addr: 0x%08x in_use: %u sco_idx: 0x%x sco state: %u",
- &bta_ag_cb.scb[1], bta_ag_cb.scb[1].in_use, bta_ag_cb.scb[1].sco_idx, bta_ag_cb.scb[1].state);
+ APPL_TRACE_DEBUG(
+ "bta_ag_sco_disc_cback(): scb[0] addr: 0x%08x in_use: %u sco_idx: 0x%x "
+ " sco state: %u",
+ &bta_ag_cb.scb[0], bta_ag_cb.scb[0].in_use, bta_ag_cb.scb[0].sco_idx,
+ bta_ag_cb.scb[0].state);
+ APPL_TRACE_DEBUG(
+ "bta_ag_sco_disc_cback(): scb[1] addr: 0x%08x in_use: %u sco_idx: 0x%x "
+ " sco state: %u",
+ &bta_ag_cb.scb[1], bta_ag_cb.scb[1].in_use, bta_ag_cb.scb[1].sco_idx,
+ bta_ag_cb.scb[1].state);
- /* match callback to scb */
- if (bta_ag_cb.sco.p_curr_scb != NULL && bta_ag_cb.sco.p_curr_scb->in_use)
- {
- /* We only care about callbacks for the active SCO */
- if (bta_ag_cb.sco.p_curr_scb->sco_idx != sco_idx)
- {
- if (bta_ag_cb.sco.p_curr_scb->sco_idx != 0xFFFF)
- return;
- }
- handle = bta_ag_scb_to_idx(bta_ag_cb.sco.p_curr_scb);
+ /* match callback to scb */
+ if (bta_ag_cb.sco.p_curr_scb != NULL && bta_ag_cb.sco.p_curr_scb->in_use) {
+ /* We only care about callbacks for the active SCO */
+ if (bta_ag_cb.sco.p_curr_scb->sco_idx != sco_idx) {
+ if (bta_ag_cb.sco.p_curr_scb->sco_idx != 0xFFFF) return;
}
+ handle = bta_ag_scb_to_idx(bta_ag_cb.sco.p_curr_scb);
+ }
- if (handle != 0)
- {
+ if (handle != 0) {
#if (BTM_SCO_HCI_INCLUDED == TRUE)
- tBTM_STATUS status = BTM_ConfigScoPath(BTM_SCO_ROUTE_PCM, NULL, NULL, true);
- APPL_TRACE_DEBUG("bta_ag_sco_disc_cback sco close config status = %d", status);
- /* SCO clean up here */
- bta_dm_sco_co_close();
+ tBTM_STATUS status = BTM_ConfigScoPath(BTM_SCO_ROUTE_PCM, NULL, NULL, true);
+ APPL_TRACE_DEBUG("bta_ag_sco_disc_cback sco close config status = %d",
+ status);
+ /* SCO clean up here */
+ bta_dm_sco_co_close();
#endif
#if (BTM_WBS_INCLUDED == TRUE)
- /* Restore settings */
- if(bta_ag_cb.sco.p_curr_scb->inuse_codec == BTA_AG_CODEC_MSBC)
- {
- /* set_sco_codec(BTM_SCO_CODEC_NONE); we should get a close */
- BTM_WriteVoiceSettings (BTM_VOICE_SETTING_CVSD);
+ /* Restore settings */
+ if (bta_ag_cb.sco.p_curr_scb->inuse_codec == BTA_AG_CODEC_MSBC) {
+ /* set_sco_codec(BTM_SCO_CODEC_NONE); we should get a close */
+ BTM_WriteVoiceSettings(BTM_VOICE_SETTING_CVSD);
- /* If SCO open was initiated by AG and failed for mSBC, then attempt
- mSBC with T1 settings i.e. 'Safe Settings'. If this fails, then switch to CVSD */
- if (bta_ag_sco_is_opening (bta_ag_cb.sco.p_curr_scb))
- {
- if (bta_ag_cb.sco.p_curr_scb->codec_msbc_settings == BTA_AG_SCO_MSBC_SETTINGS_T2)
- {
- APPL_TRACE_DEBUG("Fallback to mSBC T1 settings");
- bta_ag_cb.sco.p_curr_scb->codec_msbc_settings = BTA_AG_SCO_MSBC_SETTINGS_T1;
- }
- else
- {
- APPL_TRACE_DEBUG("Fallback to CVSD settings");
- bta_ag_cb.sco.p_curr_scb->codec_fallback = true;
- }
- }
+ /* If SCO open was initiated by AG and failed for mSBC, then attempt
+ mSBC with T1 settings i.e. 'Safe Settings'. If this fails, then switch to
+ CVSD */
+ if (bta_ag_sco_is_opening(bta_ag_cb.sco.p_curr_scb)) {
+ if (bta_ag_cb.sco.p_curr_scb->codec_msbc_settings ==
+ BTA_AG_SCO_MSBC_SETTINGS_T2) {
+ APPL_TRACE_DEBUG("Fallback to mSBC T1 settings");
+ bta_ag_cb.sco.p_curr_scb->codec_msbc_settings =
+ BTA_AG_SCO_MSBC_SETTINGS_T1;
+ } else {
+ APPL_TRACE_DEBUG("Fallback to CVSD settings");
+ bta_ag_cb.sco.p_curr_scb->codec_fallback = true;
}
+ }
+ }
- bta_ag_cb.sco.p_curr_scb->inuse_codec = BTA_AG_CODEC_NONE;
+ bta_ag_cb.sco.p_curr_scb->inuse_codec = BTA_AG_CODEC_NONE;
#endif
- BT_HDR *p_buf = (BT_HDR *)osi_malloc(sizeof(BT_HDR));
- p_buf->event = BTA_AG_SCO_CLOSE_EVT;
- p_buf->layer_specific = handle;
- bta_sys_sendmsg(p_buf);
- } else {
- /* no match found */
- APPL_TRACE_DEBUG("no scb for ag_sco_disc_cback");
+ BT_HDR* p_buf = (BT_HDR*)osi_malloc(sizeof(BT_HDR));
+ p_buf->event = BTA_AG_SCO_CLOSE_EVT;
+ p_buf->layer_specific = handle;
+ bta_sys_sendmsg(p_buf);
+ } else {
+ /* no match found */
+ APPL_TRACE_DEBUG("no scb for ag_sco_disc_cback");
- /* sco could be closed after scb dealloc'ed */
- if (bta_ag_cb.sco.p_curr_scb != NULL)
- {
- bta_ag_cb.sco.p_curr_scb->sco_idx = BTM_INVALID_SCO_INDEX;
- bta_ag_cb.sco.p_curr_scb = NULL;
- bta_ag_cb.sco.state = BTA_AG_SCO_SHUTDOWN_ST;
- }
+ /* sco could be closed after scb dealloc'ed */
+ if (bta_ag_cb.sco.p_curr_scb != NULL) {
+ bta_ag_cb.sco.p_curr_scb->sco_idx = BTM_INVALID_SCO_INDEX;
+ bta_ag_cb.sco.p_curr_scb = NULL;
+ bta_ag_cb.sco.state = BTA_AG_SCO_SHUTDOWN_ST;
}
+ }
}
#if (BTM_SCO_HCI_INCLUDED == TRUE)
/*******************************************************************************
@@ -284,15 +268,14 @@
* Returns void
*
******************************************************************************/
-static void bta_ag_sco_read_cback (uint16_t sco_inx, BT_HDR *p_data, tBTM_SCO_DATA_FLAG status)
-{
- if (status != BTM_SCO_DATA_CORRECT)
- {
- APPL_TRACE_DEBUG("bta_ag_sco_read_cback: status(%d)", status);
- }
+static void bta_ag_sco_read_cback(uint16_t sco_inx, BT_HDR* p_data,
+ tBTM_SCO_DATA_FLAG status) {
+ if (status != BTM_SCO_DATA_CORRECT) {
+ APPL_TRACE_DEBUG("bta_ag_sco_read_cback: status(%d)", status);
+ }
- /* Callout function must free the data. */
- bta_dm_sco_co_in_data (p_data, status);
+ /* Callout function must free the data. */
+ bta_dm_sco_co_in_data(p_data, status);
}
#endif
/*******************************************************************************
@@ -300,42 +283,38 @@
* Function bta_ag_remove_sco
*
* Description Removes the specified SCO from the system.
- * If only_active is true, then SCO is only removed if connected
+ * If only_active is true, then SCO is only removed if
+ *connected
*
* Returns bool - true if Sco removal was started
*
******************************************************************************/
-static bool bta_ag_remove_sco(tBTA_AG_SCB *p_scb, bool only_active)
-{
- bool removed_started = false;
- tBTM_STATUS status;
+static bool bta_ag_remove_sco(tBTA_AG_SCB* p_scb, bool only_active) {
+ bool removed_started = false;
+ tBTM_STATUS status;
- if (p_scb->sco_idx != BTM_INVALID_SCO_INDEX)
- {
- if (!only_active || p_scb->sco_idx == bta_ag_cb.sco.cur_idx)
- {
- status = BTM_RemoveSco(p_scb->sco_idx);
+ if (p_scb->sco_idx != BTM_INVALID_SCO_INDEX) {
+ if (!only_active || p_scb->sco_idx == bta_ag_cb.sco.cur_idx) {
+ status = BTM_RemoveSco(p_scb->sco_idx);
- APPL_TRACE_DEBUG("ag remove sco: inx 0x%04x, status:0x%x", p_scb->sco_idx, status);
+ APPL_TRACE_DEBUG("ag remove sco: inx 0x%04x, status:0x%x", p_scb->sco_idx,
+ status);
- if (status == BTM_CMD_STARTED)
- {
- /* Sco is connected; set current control block */
- bta_ag_cb.sco.p_curr_scb = p_scb;
+ if (status == BTM_CMD_STARTED) {
+ /* Sco is connected; set current control block */
+ bta_ag_cb.sco.p_curr_scb = p_scb;
- removed_started = true;
- }
- /* If no connection reset the sco handle */
- else if ( (status == BTM_SUCCESS) || (status == BTM_UNKNOWN_ADDR) )
- {
- p_scb->sco_idx = BTM_INVALID_SCO_INDEX;
- }
- }
+ removed_started = true;
+ }
+ /* If no connection reset the sco handle */
+ else if ((status == BTM_SUCCESS) || (status == BTM_UNKNOWN_ADDR)) {
+ p_scb->sco_idx = BTM_INVALID_SCO_INDEX;
+ }
}
- return removed_started;
+ }
+ return removed_started;
}
-
/*******************************************************************************
*
* Function bta_ag_esco_connreq_cback
@@ -346,62 +325,63 @@
* Returns void
*
******************************************************************************/
-static void bta_ag_esco_connreq_cback(tBTM_ESCO_EVT event, tBTM_ESCO_EVT_DATA *p_data)
-{
- tBTA_AG_SCB *p_scb;
- uint16_t handle;
- uint16_t sco_inx = p_data->conn_evt.sco_inx;
+static void bta_ag_esco_connreq_cback(tBTM_ESCO_EVT event,
+ tBTM_ESCO_EVT_DATA* p_data) {
+ tBTA_AG_SCB* p_scb;
+ uint16_t handle;
+ uint16_t sco_inx = p_data->conn_evt.sco_inx;
- /* Only process connection requests */
- if (event == BTM_ESCO_CONN_REQ_EVT)
- {
- if ((handle = bta_ag_idx_by_bdaddr(BTM_ReadScoBdAddr(sco_inx))) != 0 &&
- ((p_scb = bta_ag_scb_by_idx(handle)) != NULL) && p_scb->svc_conn)
- {
- p_scb->sco_idx = sco_inx;
+ /* Only process connection requests */
+ if (event == BTM_ESCO_CONN_REQ_EVT) {
+ if ((handle = bta_ag_idx_by_bdaddr(BTM_ReadScoBdAddr(sco_inx))) != 0 &&
+ ((p_scb = bta_ag_scb_by_idx(handle)) != NULL) && p_scb->svc_conn) {
+ p_scb->sco_idx = sco_inx;
- /* If no other SCO active, allow this one */
- if (!bta_ag_cb.sco.p_curr_scb)
- {
- APPL_TRACE_EVENT("bta_ag_esco_connreq_cback: Accept Conn Request (sco_inx 0x%04x)", sco_inx);
- bta_ag_sco_conn_rsp(p_scb, &p_data->conn_evt);
+ /* If no other SCO active, allow this one */
+ if (!bta_ag_cb.sco.p_curr_scb) {
+ APPL_TRACE_EVENT(
+ "bta_ag_esco_connreq_cback: Accept Conn Request (sco_inx 0x%04x)",
+ sco_inx);
+ bta_ag_sco_conn_rsp(p_scb, &p_data->conn_evt);
- bta_ag_cb.sco.state = BTA_AG_SCO_OPENING_ST;
- bta_ag_cb.sco.p_curr_scb = p_scb;
- bta_ag_cb.sco.cur_idx = p_scb->sco_idx;
- }
- else /* Begin a transfer: Close current SCO before responding */
- {
- APPL_TRACE_DEBUG("bta_ag_esco_connreq_cback: Begin XFER");
- bta_ag_cb.sco.p_xfer_scb = p_scb;
- bta_ag_cb.sco.conn_data = p_data->conn_evt;
- bta_ag_cb.sco.state = BTA_AG_SCO_OPEN_XFER_ST;
+ bta_ag_cb.sco.state = BTA_AG_SCO_OPENING_ST;
+ bta_ag_cb.sco.p_curr_scb = p_scb;
+ bta_ag_cb.sco.cur_idx = p_scb->sco_idx;
+ } else /* Begin a transfer: Close current SCO before responding */
+ {
+ APPL_TRACE_DEBUG("bta_ag_esco_connreq_cback: Begin XFER");
+ bta_ag_cb.sco.p_xfer_scb = p_scb;
+ bta_ag_cb.sco.conn_data = p_data->conn_evt;
+ bta_ag_cb.sco.state = BTA_AG_SCO_OPEN_XFER_ST;
- if (!bta_ag_remove_sco(bta_ag_cb.sco.p_curr_scb, true))
- {
- APPL_TRACE_ERROR("bta_ag_esco_connreq_cback: Nothing to remove so accept Conn Request (sco_inx 0x%04x)", sco_inx);
- bta_ag_cb.sco.p_xfer_scb = NULL;
- bta_ag_cb.sco.state = BTA_AG_SCO_LISTEN_ST;
+ if (!bta_ag_remove_sco(bta_ag_cb.sco.p_curr_scb, true)) {
+ APPL_TRACE_ERROR(
+ "bta_ag_esco_connreq_cback: Nothing to remove so accept Conn "
+ "Request (sco_inx 0x%04x)",
+ sco_inx);
+ bta_ag_cb.sco.p_xfer_scb = NULL;
+ bta_ag_cb.sco.state = BTA_AG_SCO_LISTEN_ST;
- bta_ag_sco_conn_rsp(p_scb, &p_data->conn_evt);
- }
- }
+ bta_ag_sco_conn_rsp(p_scb, &p_data->conn_evt);
}
- /* If error occurred send reject response immediately */
- else
- {
- APPL_TRACE_WARNING("no scb for bta_ag_esco_connreq_cback or no resources");
- BTM_EScoConnRsp(p_data->conn_evt.sco_inx, HCI_ERR_HOST_REJECT_RESOURCES, NULL);
- }
+ }
}
- /* Received a change in the esco link */
- else if (event == BTM_ESCO_CHG_EVT)
- {
- APPL_TRACE_EVENT("eSCO change event (inx %d): rtrans %d, rxlen %d, txlen %d, txint %d",
- p_data->chg_evt.sco_inx,
- p_data->chg_evt.retrans_window, p_data->chg_evt.rx_pkt_len,
- p_data->chg_evt.tx_pkt_len, p_data->chg_evt.tx_interval);
+ /* If error occurred send reject response immediately */
+ else {
+ APPL_TRACE_WARNING(
+ "no scb for bta_ag_esco_connreq_cback or no resources");
+ BTM_EScoConnRsp(p_data->conn_evt.sco_inx, HCI_ERR_HOST_REJECT_RESOURCES,
+ NULL);
}
+ }
+ /* Received a change in the esco link */
+ else if (event == BTM_ESCO_CHG_EVT) {
+ APPL_TRACE_EVENT(
+ "eSCO change event (inx %d): rtrans %d, rxlen %d, txlen %d, txint %d",
+ p_data->chg_evt.sco_inx, p_data->chg_evt.retrans_window,
+ p_data->chg_evt.rx_pkt_len, p_data->chg_evt.tx_pkt_len,
+ p_data->chg_evt.tx_interval);
+ }
}
/*******************************************************************************
@@ -414,15 +394,14 @@
* Returns void
*
******************************************************************************/
-static void bta_ag_cback_sco(tBTA_AG_SCB *p_scb, uint8_t event)
-{
- tBTA_AG_HDR sco;
+static void bta_ag_cback_sco(tBTA_AG_SCB* p_scb, uint8_t event) {
+ tBTA_AG_HDR sco;
- sco.handle = bta_ag_scb_to_idx(p_scb);
- sco.app_id = p_scb->app_id;
+ sco.handle = bta_ag_scb_to_idx(p_scb);
+ sco.app_id = p_scb->app_id;
- /* call close cback */
- (*bta_ag_cb.p_cback)(event, (tBTA_AG *) &sco);
+ /* call close cback */
+ (*bta_ag_cb.p_cback)(event, (tBTA_AG*)&sco);
}
/*******************************************************************************
@@ -435,181 +414,167 @@
* Returns void
*
******************************************************************************/
-static void bta_ag_create_sco(tBTA_AG_SCB *p_scb, bool is_orig)
-{
- tBTM_STATUS status;
- uint8_t *p_bd_addr = NULL;
- tBTM_ESCO_PARAMS params;
+static void bta_ag_create_sco(tBTA_AG_SCB* p_scb, bool is_orig) {
+ tBTM_STATUS status;
+ uint8_t* p_bd_addr = NULL;
+ tBTM_ESCO_PARAMS params;
#if (BTM_WBS_INCLUDED == TRUE)
- tBTA_AG_PEER_CODEC esco_codec = BTM_SCO_CODEC_CVSD;
- int codec_index = 0;
+ tBTA_AG_PEER_CODEC esco_codec = BTM_SCO_CODEC_CVSD;
+ int codec_index = 0;
#endif
#if (BTM_SCO_HCI_INCLUDED == TRUE)
- tBTM_SCO_ROUTE_TYPE sco_route;
- tBTA_CODEC_INFO codec_info = {BTA_SCO_CODEC_PCM};
- uint32_t pcm_sample_rate;
+ tBTM_SCO_ROUTE_TYPE sco_route;
+ tBTA_CODEC_INFO codec_info = {BTA_SCO_CODEC_PCM};
+ uint32_t pcm_sample_rate;
#endif
- /* Make sure this sco handle is not already in use */
- if (p_scb->sco_idx != BTM_INVALID_SCO_INDEX)
- {
- APPL_TRACE_WARNING("bta_ag_create_sco: Index 0x%04x Already In Use!",
- p_scb->sco_idx);
- return;
- }
+ /* Make sure this sco handle is not already in use */
+ if (p_scb->sco_idx != BTM_INVALID_SCO_INDEX) {
+ APPL_TRACE_WARNING("bta_ag_create_sco: Index 0x%04x Already In Use!",
+ p_scb->sco_idx);
+ return;
+ }
#if (BTM_WBS_INCLUDED == TRUE)
- if ((p_scb->sco_codec == BTM_SCO_CODEC_MSBC) &&
- !p_scb->codec_fallback &&
- !p_scb->retry_with_sco_only)
- esco_codec = BTM_SCO_CODEC_MSBC;
+ if ((p_scb->sco_codec == BTM_SCO_CODEC_MSBC) && !p_scb->codec_fallback &&
+ !p_scb->retry_with_sco_only)
+ esco_codec = BTM_SCO_CODEC_MSBC;
- if (p_scb->codec_fallback)
- {
- p_scb->codec_fallback = false;
+ if (p_scb->codec_fallback) {
+ p_scb->codec_fallback = false;
- /* Force AG to send +BCS for the next audio connection. */
- p_scb->codec_updated = true;
+ /* Force AG to send +BCS for the next audio connection. */
+ p_scb->codec_updated = true;
+ }
+
+ /* If WBS included, use CVSD by default, index is 0 for CVSD by initialization
+ */
+ /* If eSCO codec is mSBC, index is T2 or T1 */
+ if (esco_codec == BTM_SCO_CODEC_MSBC) {
+ if (p_scb->codec_msbc_settings == BTA_AG_SCO_MSBC_SETTINGS_T2) {
+ codec_index = BTA_AG_ESCO_SETTING_IDX_T2;
+ } else {
+ codec_index = BTA_AG_ESCO_SETTING_IDX_T1;
}
+ }
- /* If WBS included, use CVSD by default, index is 0 for CVSD by initialization */
- /* If eSCO codec is mSBC, index is T2 or T1 */
- if (esco_codec == BTM_SCO_CODEC_MSBC)
- {
- if (p_scb->codec_msbc_settings == BTA_AG_SCO_MSBC_SETTINGS_T2)
- {
- codec_index = BTA_AG_ESCO_SETTING_IDX_T2;
- }
- else
- {
- codec_index = BTA_AG_ESCO_SETTING_IDX_T1;
- }
- }
-
- params = bta_ag_esco_params[codec_index];
+ params = bta_ag_esco_params[codec_index];
#else
- /* When WBS is not included, use CVSD by default */
- params = bta_ag_esco_params;
+ /* When WBS is not included, use CVSD by default */
+ params = bta_ag_esco_params;
#endif
- if(bta_ag_cb.sco.param_updated) /* If we do not use the default parameters */
- params = bta_ag_cb.sco.params;
+ if (bta_ag_cb.sco.param_updated) /* If we do not use the default parameters */
+ params = bta_ag_cb.sco.params;
- if(!bta_ag_cb.sco.param_updated)
- {
+ if (!bta_ag_cb.sco.param_updated) {
#if (BTM_WBS_INCLUDED == TRUE)
- if (esco_codec == BTM_SCO_CODEC_CVSD) /* For CVSD */
+ if (esco_codec == BTM_SCO_CODEC_CVSD) /* For CVSD */
#endif
+ {
+ /* Use the application packet types (5 slot EV packets not allowed) */
+ params.packet_types = p_bta_ag_cfg->sco_pkt_types |
+ BTM_SCO_PKT_TYPES_MASK_NO_2_EV5 |
+ BTM_SCO_PKT_TYPES_MASK_NO_3_EV5;
+ }
+ }
+
+ /* if initiating set current scb and peer bd addr */
+ if (is_orig) {
+ /* Attempt to use eSCO if remote host supports HFP >= 1.5 */
+ /* Need to find out from SIG if HSP can use eSCO; for now use SCO */
+ if (p_scb->conn_service == BTA_AG_HFP &&
+ p_scb->peer_version >= HFP_VERSION_1_5 && !p_scb->retry_with_sco_only) {
+ BTM_SetEScoMode(BTM_LINK_TYPE_ESCO, ¶ms);
+ /* If ESCO or EDR ESCO, retry with SCO only in case of failure */
+ if ((params.packet_types & BTM_ESCO_LINK_ONLY_MASK) ||
+ !((params.packet_types &
+ ~(BTM_ESCO_LINK_ONLY_MASK | BTM_SCO_LINK_ONLY_MASK)) ^
+ BTA_AG_NO_EDR_ESCO)) {
+#if (BTM_WBS_INCLUDED == TRUE)
+ if (esco_codec != BTA_AG_CODEC_MSBC) {
+ p_scb->retry_with_sco_only = true;
+ APPL_TRACE_API("Setting retry_with_sco_only to true");
+ } else /* Do not use SCO when using mSBC */
{
- /* Use the application packet types (5 slot EV packets not allowed) */
- params.packet_types = p_bta_ag_cfg->sco_pkt_types |
- BTM_SCO_PKT_TYPES_MASK_NO_2_EV5 |
- BTM_SCO_PKT_TYPES_MASK_NO_3_EV5;
+ p_scb->retry_with_sco_only = false;
+ APPL_TRACE_API("Setting retry_with_sco_only to false");
}
+#else
+ p_scb->retry_with_sco_only = true;
+ APPL_TRACE_API("Setting retry_with_sco_only to true");
+#endif
+ }
+ } else {
+ if (p_scb->retry_with_sco_only) APPL_TRACE_API("retrying with SCO only");
+ p_scb->retry_with_sco_only = false;
+
+ BTM_SetEScoMode(BTM_LINK_TYPE_SCO, ¶ms);
}
- /* if initiating set current scb and peer bd addr */
- if (is_orig)
- {
- /* Attempt to use eSCO if remote host supports HFP >= 1.5 */
- /* Need to find out from SIG if HSP can use eSCO; for now use SCO */
- if (p_scb->conn_service == BTA_AG_HFP && p_scb->peer_version >= HFP_VERSION_1_5 && !p_scb->retry_with_sco_only)
- {
+ bta_ag_cb.sco.p_curr_scb = p_scb;
- BTM_SetEScoMode(BTM_LINK_TYPE_ESCO, ¶ms);
- /* If ESCO or EDR ESCO, retry with SCO only in case of failure */
- if((params.packet_types & BTM_ESCO_LINK_ONLY_MASK)
- ||!((params.packet_types & ~(BTM_ESCO_LINK_ONLY_MASK | BTM_SCO_LINK_ONLY_MASK)) ^ BTA_AG_NO_EDR_ESCO))
- {
-#if (BTM_WBS_INCLUDED == TRUE)
- if (esco_codec != BTA_AG_CODEC_MSBC)
- {
- p_scb->retry_with_sco_only = true;
- APPL_TRACE_API("Setting retry_with_sco_only to true");
- }
- else /* Do not use SCO when using mSBC */
- {
- p_scb->retry_with_sco_only = false;
- APPL_TRACE_API("Setting retry_with_sco_only to false");
- }
-#else
- p_scb->retry_with_sco_only = true;
- APPL_TRACE_API("Setting retry_with_sco_only to true");
-#endif
- }
- }
- else
- {
- if(p_scb->retry_with_sco_only)
- APPL_TRACE_API("retrying with SCO only");
- p_scb->retry_with_sco_only = false;
-
- BTM_SetEScoMode(BTM_LINK_TYPE_SCO, ¶ms);
- }
-
- bta_ag_cb.sco.p_curr_scb = p_scb;
-
- /* tell sys to stop av if any */
- bta_sys_sco_use(BTA_ID_AG, p_scb->app_id, p_scb->peer_addr);
+ /* tell sys to stop av if any */
+ bta_sys_sco_use(BTA_ID_AG, p_scb->app_id, p_scb->peer_addr);
#if (BTM_WBS_INCLUDED == TRUE)
- /* Allow any platform specific pre-SCO set up to take place */
- bta_ag_co_audio_state(bta_ag_scb_to_idx(p_scb), p_scb->app_id, SCO_STATE_SETUP,
- esco_codec);
+ /* Allow any platform specific pre-SCO set up to take place */
+ bta_ag_co_audio_state(bta_ag_scb_to_idx(p_scb), p_scb->app_id,
+ SCO_STATE_SETUP, esco_codec);
- /* This setting may not be necessary */
- /* To be verified with stable 2049 boards */
- if (esco_codec == BTA_AG_CODEC_MSBC)
- BTM_WriteVoiceSettings (BTM_VOICE_SETTING_TRANS);
- else
- BTM_WriteVoiceSettings (BTM_VOICE_SETTING_CVSD);
- /* save the current codec because sco_codec can be updated while SCO is open. */
- p_scb->inuse_codec = esco_codec;
-#else
- /* Allow any platform specific pre-SCO set up to take place */
- bta_ag_co_audio_state(bta_ag_scb_to_idx(p_scb), p_scb->app_id, SCO_STATE_SETUP);
-#endif
-
-#if (BTM_SCO_HCI_INCLUDED == TRUE)
-#if (BTM_WBS_INCLUDED == TRUE)
- if (esco_codec == BTA_AG_CODEC_MSBC)
- pcm_sample_rate = BTA_DM_SCO_SAMP_RATE_16K;
- else
-#endif
- pcm_sample_rate = BTA_DM_SCO_SAMP_RATE_8K;
-
- sco_route = bta_dm_sco_co_init(pcm_sample_rate, pcm_sample_rate, &codec_info, p_scb->app_id);
-#endif
-
-
-#if (BTM_SCO_HCI_INCLUDED == TRUE)
- /* initialize SCO setup, no voice setting for AG, data rate <==> sample rate */
- BTM_ConfigScoPath(sco_route, bta_ag_sco_read_cback, NULL, true);
-#endif
- bta_ag_cb.sco.cur_idx = p_scb->sco_idx;
- }
+ /* This setting may not be necessary */
+ /* To be verified with stable 2049 boards */
+ if (esco_codec == BTA_AG_CODEC_MSBC)
+ BTM_WriteVoiceSettings(BTM_VOICE_SETTING_TRANS);
else
- p_scb->retry_with_sco_only = false;
+ BTM_WriteVoiceSettings(BTM_VOICE_SETTING_CVSD);
+ /* save the current codec because sco_codec can be updated while SCO is
+ * open. */
+ p_scb->inuse_codec = esco_codec;
+#else
+ /* Allow any platform specific pre-SCO set up to take place */
+ bta_ag_co_audio_state(bta_ag_scb_to_idx(p_scb), p_scb->app_id,
+ SCO_STATE_SETUP);
+#endif
- p_bd_addr = p_scb->peer_addr;
+#if (BTM_SCO_HCI_INCLUDED == TRUE)
+#if (BTM_WBS_INCLUDED == TRUE)
+ if (esco_codec == BTA_AG_CODEC_MSBC)
+ pcm_sample_rate = BTA_DM_SCO_SAMP_RATE_16K;
+ else
+#endif
+ pcm_sample_rate = BTA_DM_SCO_SAMP_RATE_8K;
- status = BTM_CreateSco(p_bd_addr, is_orig, params.packet_types,
- &p_scb->sco_idx, bta_ag_sco_conn_cback,
- bta_ag_sco_disc_cback);
- if (status == BTM_CMD_STARTED)
+ sco_route = bta_dm_sco_co_init(pcm_sample_rate, pcm_sample_rate,
+ &codec_info, p_scb->app_id);
+#endif
+
+#if (BTM_SCO_HCI_INCLUDED == TRUE)
+ /* initialize SCO setup, no voice setting for AG, data rate <==> sample rate
+ */
+ BTM_ConfigScoPath(sco_route, bta_ag_sco_read_cback, NULL, true);
+#endif
+ bta_ag_cb.sco.cur_idx = p_scb->sco_idx;
+ } else
+ p_scb->retry_with_sco_only = false;
+
+ p_bd_addr = p_scb->peer_addr;
+
+ status =
+ BTM_CreateSco(p_bd_addr, is_orig, params.packet_types, &p_scb->sco_idx,
+ bta_ag_sco_conn_cback, bta_ag_sco_disc_cback);
+ if (status == BTM_CMD_STARTED) {
+ if (!is_orig) {
+ BTM_RegForEScoEvts(p_scb->sco_idx, bta_ag_esco_connreq_cback);
+ } else /* Initiating the connection, set the current sco handle */
{
- if (!is_orig)
- {
- BTM_RegForEScoEvts(p_scb->sco_idx, bta_ag_esco_connreq_cback);
- }
- else /* Initiating the connection, set the current sco handle */
- {
- bta_ag_cb.sco.cur_idx = p_scb->sco_idx;
- }
+ bta_ag_cb.sco.cur_idx = p_scb->sco_idx;
}
+ }
- APPL_TRACE_API("ag create sco: orig %d, inx 0x%04x, status 0x%x, pkt types 0x%04x",
- is_orig, p_scb->sco_idx, status, params.packet_types);
+ APPL_TRACE_API(
+ "ag create sco: orig %d, inx 0x%04x, status 0x%x, pkt types 0x%04x",
+ is_orig, p_scb->sco_idx, status, params.packet_types);
}
#if (BTM_WBS_INCLUDED == TRUE)
@@ -617,19 +582,19 @@
*
* Function bta_ag_attempt_msbc_safe_settings
*
- * Description Checks if ESCO connection needs to be attempted using mSBC T1(safe) settings
+ * Description Checks if ESCO connection needs to be attempted using mSBC
+ *T1(safe) settings
*
*
* Returns true if T1 settings has to be used, false otherwise
*
******************************************************************************/
-bool bta_ag_attempt_msbc_safe_settings(tBTA_AG_SCB *p_scb)
-{
- if (p_scb->svc_conn && p_scb->sco_codec == BTM_SCO_CODEC_MSBC &&
- p_scb->codec_msbc_settings == BTA_AG_SCO_MSBC_SETTINGS_T1)
- return true;
- else
- return false;
+bool bta_ag_attempt_msbc_safe_settings(tBTA_AG_SCB* p_scb) {
+ if (p_scb->svc_conn && p_scb->sco_codec == BTM_SCO_CODEC_MSBC &&
+ p_scb->codec_msbc_settings == BTA_AG_SCO_MSBC_SETTINGS_T1)
+ return true;
+ else
+ return false;
}
/*******************************************************************************
@@ -642,15 +607,14 @@
* Returns void
*
******************************************************************************/
-static void bta_ag_codec_negotiation_timer_cback(void *data)
-{
- tBTA_AG_SCB *p_scb = (tBTA_AG_SCB *)data;
+static void bta_ag_codec_negotiation_timer_cback(void* data) {
+ tBTA_AG_SCB* p_scb = (tBTA_AG_SCB*)data;
- /* Announce that codec negotiation failed. */
- bta_ag_sco_codec_nego(p_scb, false);
+ /* Announce that codec negotiation failed. */
+ bta_ag_sco_codec_nego(p_scb, false);
- /* call app callback */
- bta_ag_cback_sco(p_scb, BTA_AG_AUDIO_CLOSE_EVT);
+ /* call app callback */
+ bta_ag_cback_sco(p_scb, BTA_AG_AUDIO_CLOSE_EVT);
}
/*******************************************************************************
@@ -663,33 +627,29 @@
* Returns void
*
******************************************************************************/
-void bta_ag_codec_negotiate(tBTA_AG_SCB *p_scb)
-{
- bta_ag_cb.sco.p_curr_scb = p_scb;
+void bta_ag_codec_negotiate(tBTA_AG_SCB* p_scb) {
+ bta_ag_cb.sco.p_curr_scb = p_scb;
- if ((p_scb->codec_updated || p_scb->codec_fallback ||
- bta_ag_attempt_msbc_safe_settings(p_scb)) &&
- (p_scb->peer_features & BTA_AG_PEER_FEAT_CODEC))
- {
- /* Change the power mode to Active until sco open is completed. */
- bta_sys_busy(BTA_ID_AG, p_scb->app_id, p_scb->peer_addr);
+ if ((p_scb->codec_updated || p_scb->codec_fallback ||
+ bta_ag_attempt_msbc_safe_settings(p_scb)) &&
+ (p_scb->peer_features & BTA_AG_PEER_FEAT_CODEC)) {
+ /* Change the power mode to Active until sco open is completed. */
+ bta_sys_busy(BTA_ID_AG, p_scb->app_id, p_scb->peer_addr);
- /* Send +BCS to the peer */
- bta_ag_send_bcs(p_scb, NULL);
+ /* Send +BCS to the peer */
+ bta_ag_send_bcs(p_scb, NULL);
- /* Start timer to handle timeout */
- alarm_set_on_queue(p_scb->codec_negotiation_timer,
- BTA_AG_CODEC_NEGOTIATION_TIMEOUT_MS,
- bta_ag_codec_negotiation_timer_cback,
- p_scb,
- btu_bta_alarm_queue);
- }
- else
- {
- /* use same codec type as previous SCO connection, skip codec negotiation */
- APPL_TRACE_DEBUG("use same codec type as previous SCO connection,skip codec negotiation");
- bta_ag_sco_codec_nego(p_scb, true);
- }
+ /* Start timer to handle timeout */
+ alarm_set_on_queue(
+ p_scb->codec_negotiation_timer, BTA_AG_CODEC_NEGOTIATION_TIMEOUT_MS,
+ bta_ag_codec_negotiation_timer_cback, p_scb, btu_bta_alarm_queue);
+ } else {
+ /* use same codec type as previous SCO connection, skip codec negotiation */
+ APPL_TRACE_DEBUG(
+ "use same codec type as previous SCO connection,skip codec "
+ "negotiation");
+ bta_ag_sco_codec_nego(p_scb, true);
+ }
}
#endif /* (BTM_WBS_INCLUDED == TRUE) */
@@ -703,581 +663,544 @@
* Returns void
*
******************************************************************************/
-static void bta_ag_sco_event(tBTA_AG_SCB *p_scb, uint8_t event)
-{
- tBTA_AG_SCO_CB *p_sco = &bta_ag_cb.sco;
+static void bta_ag_sco_event(tBTA_AG_SCB* p_scb, uint8_t event) {
+ tBTA_AG_SCO_CB* p_sco = &bta_ag_cb.sco;
#if (BTM_WBS_INCLUDED == TRUE)
- tBTA_AG_SCB *p_cn_scb = NULL; /* For codec negotiation */
+ tBTA_AG_SCB* p_cn_scb = NULL; /* For codec negotiation */
#endif
#if (BTM_SCO_HCI_INCLUDED == TRUE)
- BT_HDR *p_buf;
+ BT_HDR* p_buf;
#endif
#if (BTA_AG_SCO_DEBUG == TRUE)
- uint8_t in_state = p_sco->state;
+ uint8_t in_state = p_sco->state;
- APPL_TRACE_EVENT("BTA ag sco evt (hdl 0x%04x): State %d (%s), Event %d (%s)",
- p_scb->sco_idx,
- p_sco->state, bta_ag_sco_state_str(p_sco->state),
- event, bta_ag_sco_evt_str(event));
+ APPL_TRACE_EVENT("BTA ag sco evt (hdl 0x%04x): State %d (%s), Event %d (%s)",
+ p_scb->sco_idx, p_sco->state,
+ bta_ag_sco_state_str(p_sco->state), event,
+ bta_ag_sco_evt_str(event));
#else
- APPL_TRACE_EVENT("BTA ag sco evt (hdl 0x%04x): State %d, Event %d",
- p_scb->sco_idx, p_sco->state, event);
+ APPL_TRACE_EVENT("BTA ag sco evt (hdl 0x%04x): State %d, Event %d",
+ p_scb->sco_idx, p_sco->state, event);
#endif
#if (BTM_SCO_HCI_INCLUDED == TRUE)
- if (event == BTA_AG_SCO_CI_DATA_E)
- {
- while (true)
- {
- bta_dm_sco_co_out_data(&p_buf);
- if (p_buf)
- {
- if (p_sco->state == BTA_AG_SCO_OPEN_ST)
- BTM_WriteScoData(p_sco->p_curr_scb->sco_idx, p_buf);
- else
- osi_free(p_buf);
- }
- else
- break;
- }
-
- return;
+ if (event == BTA_AG_SCO_CI_DATA_E) {
+ while (true) {
+ bta_dm_sco_co_out_data(&p_buf);
+ if (p_buf) {
+ if (p_sco->state == BTA_AG_SCO_OPEN_ST)
+ BTM_WriteScoData(p_sco->p_curr_scb->sco_idx, p_buf);
+ else
+ osi_free(p_buf);
+ } else
+ break;
}
+
+ return;
+ }
#endif
- switch (p_sco->state)
- {
- case BTA_AG_SCO_SHUTDOWN_ST:
- switch (event)
- {
- case BTA_AG_SCO_LISTEN_E:
- /* create sco listen connection */
- bta_ag_create_sco(p_scb, false);
- p_sco->state = BTA_AG_SCO_LISTEN_ST;
- break;
-
- default:
- APPL_TRACE_WARNING("BTA_AG_SCO_SHUTDOWN_ST: Ignoring event %d", event);
- break;
- }
- break;
-
- case BTA_AG_SCO_LISTEN_ST:
- switch (event)
- {
- case BTA_AG_SCO_LISTEN_E:
- /* create sco listen connection (Additional channel) */
- bta_ag_create_sco(p_scb, false);
- break;
-
- case BTA_AG_SCO_OPEN_E:
- /* remove listening connection */
- bta_ag_remove_sco(p_scb, false);
-
-#if (BTM_WBS_INCLUDED == TRUE)
- /* start codec negotiation */
- p_sco->state = BTA_AG_SCO_CODEC_ST;
- p_cn_scb = p_scb;
-#else
- /* create sco connection to peer */
- bta_ag_create_sco(p_scb, true);
- p_sco->state = BTA_AG_SCO_OPENING_ST;
-#endif
- break;
-
- case BTA_AG_SCO_SHUTDOWN_E:
- /* remove listening connection */
- bta_ag_remove_sco(p_scb, false);
-
- if (p_scb == p_sco->p_curr_scb)
- p_sco->p_curr_scb = NULL;
-
- /* If last SCO instance then finish shutting down */
- if (!bta_ag_other_scb_open(p_scb))
- {
- p_sco->state = BTA_AG_SCO_SHUTDOWN_ST;
- }
- break;
-
- case BTA_AG_SCO_CLOSE_E:
- /* remove listening connection */
- /* Ignore the event. We need to keep listening SCO for the active SLC */
- APPL_TRACE_WARNING("BTA_AG_SCO_LISTEN_ST: Ignoring event %d", event);
- break;
-
- case BTA_AG_SCO_CONN_CLOSE_E:
- /* sco failed; create sco listen connection */
- bta_ag_create_sco(p_scb, false);
- p_sco->state = BTA_AG_SCO_LISTEN_ST;
- break;
-
- default:
- APPL_TRACE_WARNING("BTA_AG_SCO_LISTEN_ST: Ignoring event %d", event);
- break;
- }
- break;
-
-#if (BTM_WBS_INCLUDED == TRUE)
- case BTA_AG_SCO_CODEC_ST:
- switch (event)
- {
- case BTA_AG_SCO_LISTEN_E:
- /* create sco listen connection (Additional channel) */
- bta_ag_create_sco(p_scb, false);
- break;
-
- case BTA_AG_SCO_CN_DONE_E:
- /* create sco connection to peer */
- bta_ag_create_sco(p_scb, true);
- p_sco->state = BTA_AG_SCO_OPENING_ST;
- break;
-
- case BTA_AG_SCO_XFER_E:
- /* save xfer scb */
- p_sco->p_xfer_scb = p_scb;
- p_sco->state = BTA_AG_SCO_CLOSE_XFER_ST;
- break;
-
- case BTA_AG_SCO_SHUTDOWN_E:
- /* remove listening connection */
- bta_ag_remove_sco(p_scb, false);
-
- if (p_scb == p_sco->p_curr_scb)
- p_sco->p_curr_scb = NULL;
-
- /* If last SCO instance then finish shutting down */
- if (!bta_ag_other_scb_open(p_scb))
- {
- p_sco->state = BTA_AG_SCO_SHUTDOWN_ST;
- }
- break;
-
- case BTA_AG_SCO_CLOSE_E:
- /* sco open is not started yet. just go back to listening */
- p_sco->state = BTA_AG_SCO_LISTEN_ST;
- break;
-
- case BTA_AG_SCO_CONN_CLOSE_E:
- /* sco failed; create sco listen connection */
- bta_ag_create_sco(p_scb, false);
- p_sco->state = BTA_AG_SCO_LISTEN_ST;
- break;
-
- default:
- APPL_TRACE_WARNING("BTA_AG_SCO_CODEC_ST: Ignoring event %d", event);
- break;
- }
- break;
-#endif
-
- case BTA_AG_SCO_OPENING_ST:
- switch (event)
- {
- case BTA_AG_SCO_LISTEN_E:
- /* second headset has now joined */
- /* create sco listen connection (Additional channel) */
- if (p_scb != p_sco->p_curr_scb)
- {
- bta_ag_create_sco(p_scb, false);
- }
- break;
-
-#if (BTM_WBS_INCLUDED == TRUE)
- case BTA_AG_SCO_REOPEN_E:
- /* start codec negotiation */
- p_sco->state = BTA_AG_SCO_CODEC_ST;
- p_cn_scb = p_scb;
- break;
-#endif
-
- case BTA_AG_SCO_XFER_E:
- /* save xfer scb */
- p_sco->p_xfer_scb = p_scb;
- p_sco->state = BTA_AG_SCO_CLOSE_XFER_ST;
- break;
-
- case BTA_AG_SCO_CLOSE_E:
- p_sco->state = BTA_AG_SCO_OPEN_CL_ST;
- break;
-
- case BTA_AG_SCO_SHUTDOWN_E:
- /* If not opening scb, just close it */
- if (p_scb != p_sco->p_curr_scb)
- {
- /* remove listening connection */
- bta_ag_remove_sco(p_scb, false);
- }
- else
- p_sco->state = BTA_AG_SCO_SHUTTING_ST;
-
- break;
-
- case BTA_AG_SCO_CONN_OPEN_E:
- p_sco->state = BTA_AG_SCO_OPEN_ST;
- break;
-
- case BTA_AG_SCO_CONN_CLOSE_E:
- /* sco failed; create sco listen connection */
- bta_ag_create_sco(p_scb, false);
- p_sco->state = BTA_AG_SCO_LISTEN_ST;
- break;
-
- default:
- APPL_TRACE_WARNING("BTA_AG_SCO_OPENING_ST: Ignoring event %d", event);
- break;
- }
- break;
-
- case BTA_AG_SCO_OPEN_CL_ST:
- switch (event)
- {
- case BTA_AG_SCO_XFER_E:
- /* save xfer scb */
- p_sco->p_xfer_scb = p_scb;
-
- p_sco->state = BTA_AG_SCO_CLOSE_XFER_ST;
- break;
-
- case BTA_AG_SCO_OPEN_E:
- p_sco->state = BTA_AG_SCO_OPENING_ST;
- break;
-
- case BTA_AG_SCO_SHUTDOWN_E:
- /* If not opening scb, just close it */
- if (p_scb != p_sco->p_curr_scb)
- {
- /* remove listening connection */
- bta_ag_remove_sco(p_scb, false);
- }
- else
- p_sco->state = BTA_AG_SCO_SHUTTING_ST;
-
- break;
-
- case BTA_AG_SCO_CONN_OPEN_E:
- /* close sco connection */
- bta_ag_remove_sco(p_scb, true);
-
- p_sco->state = BTA_AG_SCO_CLOSING_ST;
- break;
-
- case BTA_AG_SCO_CONN_CLOSE_E:
- /* sco failed; create sco listen connection */
-
- p_sco->state = BTA_AG_SCO_LISTEN_ST;
- break;
-
- default:
- APPL_TRACE_WARNING("BTA_AG_SCO_OPEN_CL_ST: Ignoring event %d", event);
- break;
- }
- break;
-
- case BTA_AG_SCO_OPEN_XFER_ST:
- switch (event)
- {
- case BTA_AG_SCO_CLOSE_E:
- /* close sco connection */
- bta_ag_remove_sco(p_scb, true);
-
- p_sco->state = BTA_AG_SCO_CLOSING_ST;
- break;
-
- case BTA_AG_SCO_SHUTDOWN_E:
- /* remove all connection */
- bta_ag_remove_sco(p_scb, false);
- p_sco->state = BTA_AG_SCO_SHUTTING_ST;
-
- break;
-
- case BTA_AG_SCO_CONN_CLOSE_E:
- /* closed sco; place in listen mode and
- accept the transferred connection */
- bta_ag_create_sco(p_scb, false); /* Back into listen mode */
-
- /* Accept sco connection with xfer scb */
- bta_ag_sco_conn_rsp(p_sco->p_xfer_scb, &p_sco->conn_data);
- p_sco->state = BTA_AG_SCO_OPENING_ST;
- p_sco->p_curr_scb = p_sco->p_xfer_scb;
- p_sco->cur_idx = p_sco->p_xfer_scb->sco_idx;
- p_sco->p_xfer_scb = NULL;
- break;
-
- default:
- APPL_TRACE_WARNING("BTA_AG_SCO_OPEN_XFER_ST: Ignoring event %d", event);
- break;
- }
- break;
-
- case BTA_AG_SCO_OPEN_ST:
- switch (event)
- {
- case BTA_AG_SCO_LISTEN_E:
- /* second headset has now joined */
- /* create sco listen connection (Additional channel) */
- if (p_scb != p_sco->p_curr_scb)
- {
- bta_ag_create_sco(p_scb, false);
- }
- break;
-
- case BTA_AG_SCO_XFER_E:
- /* close current sco connection */
- bta_ag_remove_sco(p_sco->p_curr_scb, true);
-
- /* save xfer scb */
- p_sco->p_xfer_scb = p_scb;
-
- p_sco->state = BTA_AG_SCO_CLOSE_XFER_ST;
- break;
-
- case BTA_AG_SCO_CLOSE_E:
- /* close sco connection if active */
- if (bta_ag_remove_sco(p_scb, true))
- {
- p_sco->state = BTA_AG_SCO_CLOSING_ST;
- }
- break;
-
- case BTA_AG_SCO_SHUTDOWN_E:
- /* remove all listening connections */
- bta_ag_remove_sco(p_scb, false);
-
- /* If SCO was active on this scb, close it */
- if (p_scb == p_sco->p_curr_scb)
- {
- p_sco->state = BTA_AG_SCO_SHUTTING_ST;
- }
- break;
-
- case BTA_AG_SCO_CONN_CLOSE_E:
- /* peer closed sco; create sco listen connection */
- bta_ag_create_sco(p_scb, false);
- p_sco->state = BTA_AG_SCO_LISTEN_ST;
- break;
-
- default:
- APPL_TRACE_WARNING("BTA_AG_SCO_OPEN_ST: Ignoring event %d", event);
- break;
- }
- break;
-
- case BTA_AG_SCO_CLOSING_ST:
- switch (event)
- {
- case BTA_AG_SCO_LISTEN_E:
- /* create sco listen connection (Additional channel) */
- if (p_scb != p_sco->p_curr_scb)
- {
- bta_ag_create_sco(p_scb, false);
- }
- break;
-
- case BTA_AG_SCO_OPEN_E:
- p_sco->state = BTA_AG_SCO_CLOSE_OP_ST;
- break;
-
- case BTA_AG_SCO_XFER_E:
- /* save xfer scb */
- p_sco->p_xfer_scb = p_scb;
-
- p_sco->state = BTA_AG_SCO_CLOSE_XFER_ST;
- break;
-
- case BTA_AG_SCO_SHUTDOWN_E:
- /* If not closing scb, just close it */
- if (p_scb != p_sco->p_curr_scb)
- {
- /* remove listening connection */
- bta_ag_remove_sco(p_scb, false);
- }
- else
- p_sco->state = BTA_AG_SCO_SHUTTING_ST;
-
- break;
-
- case BTA_AG_SCO_CONN_CLOSE_E:
- /* peer closed sco; create sco listen connection */
- bta_ag_create_sco(p_scb, false);
-
- p_sco->state = BTA_AG_SCO_LISTEN_ST;
- break;
-
- default:
- APPL_TRACE_WARNING("BTA_AG_SCO_CLOSING_ST: Ignoring event %d", event);
- break;
- }
- break;
-
- case BTA_AG_SCO_CLOSE_OP_ST:
- switch (event)
- {
- case BTA_AG_SCO_CLOSE_E:
- p_sco->state = BTA_AG_SCO_CLOSING_ST;
- break;
-
- case BTA_AG_SCO_SHUTDOWN_E:
- p_sco->state = BTA_AG_SCO_SHUTTING_ST;
- break;
-
- case BTA_AG_SCO_CONN_CLOSE_E:
-#if (BTM_WBS_INCLUDED == TRUE)
- /* start codec negotiation */
- p_sco->state = BTA_AG_SCO_CODEC_ST;
- p_cn_scb = p_scb;
-#else
- /* open sco connection */
- bta_ag_create_sco(p_scb, true);
- p_sco->state = BTA_AG_SCO_OPENING_ST;
-#endif
- break;
-
- case BTA_AG_SCO_LISTEN_E:
- /* create sco listen connection (Additional channel) */
- if (p_scb != p_sco->p_curr_scb)
- {
- bta_ag_create_sco(p_scb, false);
- }
- break;
-
- default:
- APPL_TRACE_WARNING("BTA_AG_SCO_CLOSE_OP_ST: Ignoring event %d", event);
- break;
- }
- break;
-
- case BTA_AG_SCO_CLOSE_XFER_ST:
- switch (event)
- {
- case BTA_AG_SCO_CONN_OPEN_E:
- /* close sco connection so headset can be transferred
- Probably entered this state from "opening state" */
- bta_ag_remove_sco(p_scb, true);
- break;
-
- case BTA_AG_SCO_CLOSE_E:
- /* clear xfer scb */
- p_sco->p_xfer_scb = NULL;
-
- p_sco->state = BTA_AG_SCO_CLOSING_ST;
- break;
-
- case BTA_AG_SCO_SHUTDOWN_E:
- /* clear xfer scb */
- p_sco->p_xfer_scb = NULL;
-
- p_sco->state = BTA_AG_SCO_SHUTTING_ST;
- break;
-
- case BTA_AG_SCO_CONN_CLOSE_E:
- /* closed sco; place old sco in listen mode,
- take current sco out of listen, and
- create originating sco for current */
- bta_ag_create_sco(p_scb, false);
- bta_ag_remove_sco(p_sco->p_xfer_scb, false);
-
-#if (BTM_WBS_INCLUDED == TRUE)
- /* start codec negotiation */
- p_sco->state = BTA_AG_SCO_CODEC_ST;
- p_cn_scb = p_sco->p_xfer_scb;
- p_sco->p_xfer_scb = NULL;
-#else
- /* create sco connection to peer */
- bta_ag_create_sco(p_sco->p_xfer_scb, true);
- p_sco->p_xfer_scb = NULL;
- p_sco->state = BTA_AG_SCO_OPENING_ST;
-#endif
- break;
-
- default:
- APPL_TRACE_WARNING("BTA_AG_SCO_CLOSE_XFER_ST: Ignoring event %d", event);
- break;
- }
- break;
-
- case BTA_AG_SCO_SHUTTING_ST:
- switch (event)
- {
- case BTA_AG_SCO_CONN_OPEN_E:
- /* close sco connection; wait for conn close event */
- bta_ag_remove_sco(p_scb, true);
- break;
-
- case BTA_AG_SCO_CONN_CLOSE_E:
- /* If last SCO instance then finish shutting down */
- if (!bta_ag_other_scb_open(p_scb))
- {
- p_sco->state = BTA_AG_SCO_SHUTDOWN_ST;
- }
- else /* Other instance is still listening */
- {
- p_sco->state = BTA_AG_SCO_LISTEN_ST;
- }
-
- /* If SCO closed for other HS which is not being disconnected,
- then create listen sco connection for it as scb still open */
- if (bta_ag_scb_open(p_scb))
- {
- bta_ag_create_sco(p_scb, false);
- p_sco->state = BTA_AG_SCO_LISTEN_ST;
- }
-
- if (p_scb == p_sco->p_curr_scb)
- {
- p_sco->p_curr_scb->sco_idx = BTM_INVALID_SCO_INDEX;
- p_sco->p_curr_scb = NULL;
- }
- break;
-
- case BTA_AG_SCO_LISTEN_E:
- /* create sco listen connection (Additional channel) */
- if (p_scb != p_sco->p_curr_scb)
- {
- bta_ag_create_sco(p_scb, false);
- }
- break;
-
- case BTA_AG_SCO_SHUTDOWN_E:
- if (!bta_ag_other_scb_open(p_scb))
- {
- p_sco->state = BTA_AG_SCO_SHUTDOWN_ST;
- }
- else /* Other instance is still listening */
- {
- p_sco->state = BTA_AG_SCO_LISTEN_ST;
- }
-
- if (p_scb == p_sco->p_curr_scb)
- {
- p_sco->p_curr_scb->sco_idx = BTM_INVALID_SCO_INDEX;
- p_sco->p_curr_scb = NULL;
- }
- break;
-
- default:
- APPL_TRACE_WARNING("BTA_AG_SCO_SHUTTING_ST: Ignoring event %d", event);
- break;
- }
- break;
+ switch (p_sco->state) {
+ case BTA_AG_SCO_SHUTDOWN_ST:
+ switch (event) {
+ case BTA_AG_SCO_LISTEN_E:
+ /* create sco listen connection */
+ bta_ag_create_sco(p_scb, false);
+ p_sco->state = BTA_AG_SCO_LISTEN_ST;
+ break;
default:
- break;
- }
+ APPL_TRACE_WARNING("BTA_AG_SCO_SHUTDOWN_ST: Ignoring event %d",
+ event);
+ break;
+ }
+ break;
+
+ case BTA_AG_SCO_LISTEN_ST:
+ switch (event) {
+ case BTA_AG_SCO_LISTEN_E:
+ /* create sco listen connection (Additional channel) */
+ bta_ag_create_sco(p_scb, false);
+ break;
+
+ case BTA_AG_SCO_OPEN_E:
+ /* remove listening connection */
+ bta_ag_remove_sco(p_scb, false);
+
+#if (BTM_WBS_INCLUDED == TRUE)
+ /* start codec negotiation */
+ p_sco->state = BTA_AG_SCO_CODEC_ST;
+ p_cn_scb = p_scb;
+#else
+ /* create sco connection to peer */
+ bta_ag_create_sco(p_scb, true);
+ p_sco->state = BTA_AG_SCO_OPENING_ST;
+#endif
+ break;
+
+ case BTA_AG_SCO_SHUTDOWN_E:
+ /* remove listening connection */
+ bta_ag_remove_sco(p_scb, false);
+
+ if (p_scb == p_sco->p_curr_scb) p_sco->p_curr_scb = NULL;
+
+ /* If last SCO instance then finish shutting down */
+ if (!bta_ag_other_scb_open(p_scb)) {
+ p_sco->state = BTA_AG_SCO_SHUTDOWN_ST;
+ }
+ break;
+
+ case BTA_AG_SCO_CLOSE_E:
+ /* remove listening connection */
+ /* Ignore the event. We need to keep listening SCO for the active SLC
+ */
+ APPL_TRACE_WARNING("BTA_AG_SCO_LISTEN_ST: Ignoring event %d", event);
+ break;
+
+ case BTA_AG_SCO_CONN_CLOSE_E:
+ /* sco failed; create sco listen connection */
+ bta_ag_create_sco(p_scb, false);
+ p_sco->state = BTA_AG_SCO_LISTEN_ST;
+ break;
+
+ default:
+ APPL_TRACE_WARNING("BTA_AG_SCO_LISTEN_ST: Ignoring event %d", event);
+ break;
+ }
+ break;
+
+#if (BTM_WBS_INCLUDED == TRUE)
+ case BTA_AG_SCO_CODEC_ST:
+ switch (event) {
+ case BTA_AG_SCO_LISTEN_E:
+ /* create sco listen connection (Additional channel) */
+ bta_ag_create_sco(p_scb, false);
+ break;
+
+ case BTA_AG_SCO_CN_DONE_E:
+ /* create sco connection to peer */
+ bta_ag_create_sco(p_scb, true);
+ p_sco->state = BTA_AG_SCO_OPENING_ST;
+ break;
+
+ case BTA_AG_SCO_XFER_E:
+ /* save xfer scb */
+ p_sco->p_xfer_scb = p_scb;
+ p_sco->state = BTA_AG_SCO_CLOSE_XFER_ST;
+ break;
+
+ case BTA_AG_SCO_SHUTDOWN_E:
+ /* remove listening connection */
+ bta_ag_remove_sco(p_scb, false);
+
+ if (p_scb == p_sco->p_curr_scb) p_sco->p_curr_scb = NULL;
+
+ /* If last SCO instance then finish shutting down */
+ if (!bta_ag_other_scb_open(p_scb)) {
+ p_sco->state = BTA_AG_SCO_SHUTDOWN_ST;
+ }
+ break;
+
+ case BTA_AG_SCO_CLOSE_E:
+ /* sco open is not started yet. just go back to listening */
+ p_sco->state = BTA_AG_SCO_LISTEN_ST;
+ break;
+
+ case BTA_AG_SCO_CONN_CLOSE_E:
+ /* sco failed; create sco listen connection */
+ bta_ag_create_sco(p_scb, false);
+ p_sco->state = BTA_AG_SCO_LISTEN_ST;
+ break;
+
+ default:
+ APPL_TRACE_WARNING("BTA_AG_SCO_CODEC_ST: Ignoring event %d", event);
+ break;
+ }
+ break;
+#endif
+
+ case BTA_AG_SCO_OPENING_ST:
+ switch (event) {
+ case BTA_AG_SCO_LISTEN_E:
+ /* second headset has now joined */
+ /* create sco listen connection (Additional channel) */
+ if (p_scb != p_sco->p_curr_scb) {
+ bta_ag_create_sco(p_scb, false);
+ }
+ break;
+
+#if (BTM_WBS_INCLUDED == TRUE)
+ case BTA_AG_SCO_REOPEN_E:
+ /* start codec negotiation */
+ p_sco->state = BTA_AG_SCO_CODEC_ST;
+ p_cn_scb = p_scb;
+ break;
+#endif
+
+ case BTA_AG_SCO_XFER_E:
+ /* save xfer scb */
+ p_sco->p_xfer_scb = p_scb;
+ p_sco->state = BTA_AG_SCO_CLOSE_XFER_ST;
+ break;
+
+ case BTA_AG_SCO_CLOSE_E:
+ p_sco->state = BTA_AG_SCO_OPEN_CL_ST;
+ break;
+
+ case BTA_AG_SCO_SHUTDOWN_E:
+ /* If not opening scb, just close it */
+ if (p_scb != p_sco->p_curr_scb) {
+ /* remove listening connection */
+ bta_ag_remove_sco(p_scb, false);
+ } else
+ p_sco->state = BTA_AG_SCO_SHUTTING_ST;
+
+ break;
+
+ case BTA_AG_SCO_CONN_OPEN_E:
+ p_sco->state = BTA_AG_SCO_OPEN_ST;
+ break;
+
+ case BTA_AG_SCO_CONN_CLOSE_E:
+ /* sco failed; create sco listen connection */
+ bta_ag_create_sco(p_scb, false);
+ p_sco->state = BTA_AG_SCO_LISTEN_ST;
+ break;
+
+ default:
+ APPL_TRACE_WARNING("BTA_AG_SCO_OPENING_ST: Ignoring event %d", event);
+ break;
+ }
+ break;
+
+ case BTA_AG_SCO_OPEN_CL_ST:
+ switch (event) {
+ case BTA_AG_SCO_XFER_E:
+ /* save xfer scb */
+ p_sco->p_xfer_scb = p_scb;
+
+ p_sco->state = BTA_AG_SCO_CLOSE_XFER_ST;
+ break;
+
+ case BTA_AG_SCO_OPEN_E:
+ p_sco->state = BTA_AG_SCO_OPENING_ST;
+ break;
+
+ case BTA_AG_SCO_SHUTDOWN_E:
+ /* If not opening scb, just close it */
+ if (p_scb != p_sco->p_curr_scb) {
+ /* remove listening connection */
+ bta_ag_remove_sco(p_scb, false);
+ } else
+ p_sco->state = BTA_AG_SCO_SHUTTING_ST;
+
+ break;
+
+ case BTA_AG_SCO_CONN_OPEN_E:
+ /* close sco connection */
+ bta_ag_remove_sco(p_scb, true);
+
+ p_sco->state = BTA_AG_SCO_CLOSING_ST;
+ break;
+
+ case BTA_AG_SCO_CONN_CLOSE_E:
+ /* sco failed; create sco listen connection */
+
+ p_sco->state = BTA_AG_SCO_LISTEN_ST;
+ break;
+
+ default:
+ APPL_TRACE_WARNING("BTA_AG_SCO_OPEN_CL_ST: Ignoring event %d", event);
+ break;
+ }
+ break;
+
+ case BTA_AG_SCO_OPEN_XFER_ST:
+ switch (event) {
+ case BTA_AG_SCO_CLOSE_E:
+ /* close sco connection */
+ bta_ag_remove_sco(p_scb, true);
+
+ p_sco->state = BTA_AG_SCO_CLOSING_ST;
+ break;
+
+ case BTA_AG_SCO_SHUTDOWN_E:
+ /* remove all connection */
+ bta_ag_remove_sco(p_scb, false);
+ p_sco->state = BTA_AG_SCO_SHUTTING_ST;
+
+ break;
+
+ case BTA_AG_SCO_CONN_CLOSE_E:
+ /* closed sco; place in listen mode and
+ accept the transferred connection */
+ bta_ag_create_sco(p_scb, false); /* Back into listen mode */
+
+ /* Accept sco connection with xfer scb */
+ bta_ag_sco_conn_rsp(p_sco->p_xfer_scb, &p_sco->conn_data);
+ p_sco->state = BTA_AG_SCO_OPENING_ST;
+ p_sco->p_curr_scb = p_sco->p_xfer_scb;
+ p_sco->cur_idx = p_sco->p_xfer_scb->sco_idx;
+ p_sco->p_xfer_scb = NULL;
+ break;
+
+ default:
+ APPL_TRACE_WARNING("BTA_AG_SCO_OPEN_XFER_ST: Ignoring event %d",
+ event);
+ break;
+ }
+ break;
+
+ case BTA_AG_SCO_OPEN_ST:
+ switch (event) {
+ case BTA_AG_SCO_LISTEN_E:
+ /* second headset has now joined */
+ /* create sco listen connection (Additional channel) */
+ if (p_scb != p_sco->p_curr_scb) {
+ bta_ag_create_sco(p_scb, false);
+ }
+ break;
+
+ case BTA_AG_SCO_XFER_E:
+ /* close current sco connection */
+ bta_ag_remove_sco(p_sco->p_curr_scb, true);
+
+ /* save xfer scb */
+ p_sco->p_xfer_scb = p_scb;
+
+ p_sco->state = BTA_AG_SCO_CLOSE_XFER_ST;
+ break;
+
+ case BTA_AG_SCO_CLOSE_E:
+ /* close sco connection if active */
+ if (bta_ag_remove_sco(p_scb, true)) {
+ p_sco->state = BTA_AG_SCO_CLOSING_ST;
+ }
+ break;
+
+ case BTA_AG_SCO_SHUTDOWN_E:
+ /* remove all listening connections */
+ bta_ag_remove_sco(p_scb, false);
+
+ /* If SCO was active on this scb, close it */
+ if (p_scb == p_sco->p_curr_scb) {
+ p_sco->state = BTA_AG_SCO_SHUTTING_ST;
+ }
+ break;
+
+ case BTA_AG_SCO_CONN_CLOSE_E:
+ /* peer closed sco; create sco listen connection */
+ bta_ag_create_sco(p_scb, false);
+ p_sco->state = BTA_AG_SCO_LISTEN_ST;
+ break;
+
+ default:
+ APPL_TRACE_WARNING("BTA_AG_SCO_OPEN_ST: Ignoring event %d", event);
+ break;
+ }
+ break;
+
+ case BTA_AG_SCO_CLOSING_ST:
+ switch (event) {
+ case BTA_AG_SCO_LISTEN_E:
+ /* create sco listen connection (Additional channel) */
+ if (p_scb != p_sco->p_curr_scb) {
+ bta_ag_create_sco(p_scb, false);
+ }
+ break;
+
+ case BTA_AG_SCO_OPEN_E:
+ p_sco->state = BTA_AG_SCO_CLOSE_OP_ST;
+ break;
+
+ case BTA_AG_SCO_XFER_E:
+ /* save xfer scb */
+ p_sco->p_xfer_scb = p_scb;
+
+ p_sco->state = BTA_AG_SCO_CLOSE_XFER_ST;
+ break;
+
+ case BTA_AG_SCO_SHUTDOWN_E:
+ /* If not closing scb, just close it */
+ if (p_scb != p_sco->p_curr_scb) {
+ /* remove listening connection */
+ bta_ag_remove_sco(p_scb, false);
+ } else
+ p_sco->state = BTA_AG_SCO_SHUTTING_ST;
+
+ break;
+
+ case BTA_AG_SCO_CONN_CLOSE_E:
+ /* peer closed sco; create sco listen connection */
+ bta_ag_create_sco(p_scb, false);
+
+ p_sco->state = BTA_AG_SCO_LISTEN_ST;
+ break;
+
+ default:
+ APPL_TRACE_WARNING("BTA_AG_SCO_CLOSING_ST: Ignoring event %d", event);
+ break;
+ }
+ break;
+
+ case BTA_AG_SCO_CLOSE_OP_ST:
+ switch (event) {
+ case BTA_AG_SCO_CLOSE_E:
+ p_sco->state = BTA_AG_SCO_CLOSING_ST;
+ break;
+
+ case BTA_AG_SCO_SHUTDOWN_E:
+ p_sco->state = BTA_AG_SCO_SHUTTING_ST;
+ break;
+
+ case BTA_AG_SCO_CONN_CLOSE_E:
+#if (BTM_WBS_INCLUDED == TRUE)
+ /* start codec negotiation */
+ p_sco->state = BTA_AG_SCO_CODEC_ST;
+ p_cn_scb = p_scb;
+#else
+ /* open sco connection */
+ bta_ag_create_sco(p_scb, true);
+ p_sco->state = BTA_AG_SCO_OPENING_ST;
+#endif
+ break;
+
+ case BTA_AG_SCO_LISTEN_E:
+ /* create sco listen connection (Additional channel) */
+ if (p_scb != p_sco->p_curr_scb) {
+ bta_ag_create_sco(p_scb, false);
+ }
+ break;
+
+ default:
+ APPL_TRACE_WARNING("BTA_AG_SCO_CLOSE_OP_ST: Ignoring event %d",
+ event);
+ break;
+ }
+ break;
+
+ case BTA_AG_SCO_CLOSE_XFER_ST:
+ switch (event) {
+ case BTA_AG_SCO_CONN_OPEN_E:
+ /* close sco connection so headset can be transferred
+ Probably entered this state from "opening state" */
+ bta_ag_remove_sco(p_scb, true);
+ break;
+
+ case BTA_AG_SCO_CLOSE_E:
+ /* clear xfer scb */
+ p_sco->p_xfer_scb = NULL;
+
+ p_sco->state = BTA_AG_SCO_CLOSING_ST;
+ break;
+
+ case BTA_AG_SCO_SHUTDOWN_E:
+ /* clear xfer scb */
+ p_sco->p_xfer_scb = NULL;
+
+ p_sco->state = BTA_AG_SCO_SHUTTING_ST;
+ break;
+
+ case BTA_AG_SCO_CONN_CLOSE_E:
+ /* closed sco; place old sco in listen mode,
+ take current sco out of listen, and
+ create originating sco for current */
+ bta_ag_create_sco(p_scb, false);
+ bta_ag_remove_sco(p_sco->p_xfer_scb, false);
+
+#if (BTM_WBS_INCLUDED == TRUE)
+ /* start codec negotiation */
+ p_sco->state = BTA_AG_SCO_CODEC_ST;
+ p_cn_scb = p_sco->p_xfer_scb;
+ p_sco->p_xfer_scb = NULL;
+#else
+ /* create sco connection to peer */
+ bta_ag_create_sco(p_sco->p_xfer_scb, true);
+ p_sco->p_xfer_scb = NULL;
+ p_sco->state = BTA_AG_SCO_OPENING_ST;
+#endif
+ break;
+
+ default:
+ APPL_TRACE_WARNING("BTA_AG_SCO_CLOSE_XFER_ST: Ignoring event %d",
+ event);
+ break;
+ }
+ break;
+
+ case BTA_AG_SCO_SHUTTING_ST:
+ switch (event) {
+ case BTA_AG_SCO_CONN_OPEN_E:
+ /* close sco connection; wait for conn close event */
+ bta_ag_remove_sco(p_scb, true);
+ break;
+
+ case BTA_AG_SCO_CONN_CLOSE_E:
+ /* If last SCO instance then finish shutting down */
+ if (!bta_ag_other_scb_open(p_scb)) {
+ p_sco->state = BTA_AG_SCO_SHUTDOWN_ST;
+ } else /* Other instance is still listening */
+ {
+ p_sco->state = BTA_AG_SCO_LISTEN_ST;
+ }
+
+ /* If SCO closed for other HS which is not being disconnected,
+ then create listen sco connection for it as scb still open */
+ if (bta_ag_scb_open(p_scb)) {
+ bta_ag_create_sco(p_scb, false);
+ p_sco->state = BTA_AG_SCO_LISTEN_ST;
+ }
+
+ if (p_scb == p_sco->p_curr_scb) {
+ p_sco->p_curr_scb->sco_idx = BTM_INVALID_SCO_INDEX;
+ p_sco->p_curr_scb = NULL;
+ }
+ break;
+
+ case BTA_AG_SCO_LISTEN_E:
+ /* create sco listen connection (Additional channel) */
+ if (p_scb != p_sco->p_curr_scb) {
+ bta_ag_create_sco(p_scb, false);
+ }
+ break;
+
+ case BTA_AG_SCO_SHUTDOWN_E:
+ if (!bta_ag_other_scb_open(p_scb)) {
+ p_sco->state = BTA_AG_SCO_SHUTDOWN_ST;
+ } else /* Other instance is still listening */
+ {
+ p_sco->state = BTA_AG_SCO_LISTEN_ST;
+ }
+
+ if (p_scb == p_sco->p_curr_scb) {
+ p_sco->p_curr_scb->sco_idx = BTM_INVALID_SCO_INDEX;
+ p_sco->p_curr_scb = NULL;
+ }
+ break;
+
+ default:
+ APPL_TRACE_WARNING("BTA_AG_SCO_SHUTTING_ST: Ignoring event %d",
+ event);
+ break;
+ }
+ break;
+
+ default:
+ break;
+ }
#if (BTA_AG_SCO_DEBUG == TRUE)
- if (p_sco->state != in_state)
- {
- APPL_TRACE_EVENT("BTA AG SCO State Change: [%s] -> [%s] after Event [%s]",
- bta_ag_sco_state_str(in_state),
- bta_ag_sco_state_str(p_sco->state),
- bta_ag_sco_evt_str(event));
- }
+ if (p_sco->state != in_state) {
+ APPL_TRACE_EVENT("BTA AG SCO State Change: [%s] -> [%s] after Event [%s]",
+ bta_ag_sco_state_str(in_state),
+ bta_ag_sco_state_str(p_sco->state),
+ bta_ag_sco_evt_str(event));
+ }
#endif
#if (BTM_WBS_INCLUDED == TRUE)
- if (p_cn_scb)
- {
- bta_ag_codec_negotiate(p_cn_scb);
- }
+ if (p_cn_scb) {
+ bta_ag_codec_negotiate(p_cn_scb);
+ }
#endif
}
@@ -1291,10 +1214,9 @@
* Returns true if sco open for this scb, false otherwise.
*
******************************************************************************/
-bool bta_ag_sco_is_open(tBTA_AG_SCB *p_scb)
-{
- return ((bta_ag_cb.sco.state == BTA_AG_SCO_OPEN_ST) &&
- (bta_ag_cb.sco.p_curr_scb == p_scb));
+bool bta_ag_sco_is_open(tBTA_AG_SCB* p_scb) {
+ return ((bta_ag_cb.sco.state == BTA_AG_SCO_OPEN_ST) &&
+ (bta_ag_cb.sco.p_curr_scb == p_scb));
}
/*******************************************************************************
@@ -1304,13 +1226,13 @@
* Description Check if sco is in Opening state.
*
*
- * Returns true if sco is in Opening state for this scb, false otherwise.
+ * Returns true if sco is in Opening state for this scb, false
+ *otherwise.
*
******************************************************************************/
-bool bta_ag_sco_is_opening(tBTA_AG_SCB *p_scb)
-{
- return ((bta_ag_cb.sco.state == BTA_AG_SCO_OPENING_ST) &&
- (bta_ag_cb.sco.p_curr_scb == p_scb));
+bool bta_ag_sco_is_opening(tBTA_AG_SCB* p_scb) {
+ return ((bta_ag_cb.sco.state == BTA_AG_SCO_OPENING_ST) &&
+ (bta_ag_cb.sco.p_curr_scb == p_scb));
}
/*******************************************************************************
@@ -1323,10 +1245,8 @@
* Returns void
*
******************************************************************************/
-void bta_ag_sco_listen(tBTA_AG_SCB *p_scb,
- UNUSED_ATTR tBTA_AG_DATA *p_data)
-{
- bta_ag_sco_event(p_scb, BTA_AG_SCO_LISTEN_E);
+void bta_ag_sco_listen(tBTA_AG_SCB* p_scb, UNUSED_ATTR tBTA_AG_DATA* p_data) {
+ bta_ag_sco_event(p_scb, BTA_AG_SCO_LISTEN_E);
}
/*******************************************************************************
@@ -1339,23 +1259,19 @@
* Returns void
*
******************************************************************************/
-void bta_ag_sco_open(tBTA_AG_SCB *p_scb,
- UNUSED_ATTR tBTA_AG_DATA *p_data)
-{
- uint8_t event;
+void bta_ag_sco_open(tBTA_AG_SCB* p_scb, UNUSED_ATTR tBTA_AG_DATA* p_data) {
+ uint8_t event;
- /* if another scb using sco, this is a transfer */
- if (bta_ag_cb.sco.p_curr_scb != NULL && bta_ag_cb.sco.p_curr_scb != p_scb)
- {
- event = BTA_AG_SCO_XFER_E;
- }
- /* else it is an open */
- else
- {
- event = BTA_AG_SCO_OPEN_E;
- }
+ /* if another scb using sco, this is a transfer */
+ if (bta_ag_cb.sco.p_curr_scb != NULL && bta_ag_cb.sco.p_curr_scb != p_scb) {
+ event = BTA_AG_SCO_XFER_E;
+ }
+ /* else it is an open */
+ else {
+ event = BTA_AG_SCO_OPEN_E;
+ }
- bta_ag_sco_event(p_scb, event);
+ bta_ag_sco_event(p_scb, event);
}
/*******************************************************************************
@@ -1368,20 +1284,20 @@
* Returns void
*
******************************************************************************/
-void bta_ag_sco_close(tBTA_AG_SCB *p_scb,
- UNUSED_ATTR tBTA_AG_DATA *p_data)
-{
- /* if scb is in use */
+void bta_ag_sco_close(tBTA_AG_SCB* p_scb, UNUSED_ATTR tBTA_AG_DATA* p_data) {
+/* if scb is in use */
#if (BTM_WBS_INCLUDED == TRUE)
- /* sco_idx is not allocated in SCO_CODEC_ST, we still need to move to listening state. */
- if ((p_scb->sco_idx != BTM_INVALID_SCO_INDEX) || (bta_ag_cb.sco.state == BTA_AG_SCO_CODEC_ST))
+ /* sco_idx is not allocated in SCO_CODEC_ST, we still need to move to
+ * listening state. */
+ if ((p_scb->sco_idx != BTM_INVALID_SCO_INDEX) ||
+ (bta_ag_cb.sco.state == BTA_AG_SCO_CODEC_ST))
#else
- if (p_scb->sco_idx != BTM_INVALID_SCO_INDEX)
+ if (p_scb->sco_idx != BTM_INVALID_SCO_INDEX)
#endif
- {
- APPL_TRACE_DEBUG("bta_ag_sco_close: sco_inx = %d", p_scb->sco_idx);
- bta_ag_sco_event(p_scb, BTA_AG_SCO_CLOSE_E);
- }
+ {
+ APPL_TRACE_DEBUG("bta_ag_sco_close: sco_inx = %d", p_scb->sco_idx);
+ bta_ag_sco_event(p_scb, BTA_AG_SCO_CLOSE_E);
+ }
}
#if (BTM_WBS_INCLUDED == TRUE)
@@ -1396,17 +1312,14 @@
* Returns void
*
******************************************************************************/
-void bta_ag_sco_codec_nego(tBTA_AG_SCB *p_scb, bool result)
-{
- if(result == true)
- {
- /* Subsequent sco connection will skip codec negotiation */
- p_scb->codec_updated = false;
+void bta_ag_sco_codec_nego(tBTA_AG_SCB* p_scb, bool result) {
+ if (result == true) {
+ /* Subsequent sco connection will skip codec negotiation */
+ p_scb->codec_updated = false;
- bta_ag_sco_event(p_scb, BTA_AG_SCO_CN_DONE_E);
- }
- else /* codec negotiation failed */
- bta_ag_sco_event(p_scb, BTA_AG_SCO_CLOSE_E);
+ bta_ag_sco_event(p_scb, BTA_AG_SCO_CN_DONE_E);
+ } else /* codec negotiation failed */
+ bta_ag_sco_event(p_scb, BTA_AG_SCO_CLOSE_E);
}
#endif
@@ -1420,10 +1333,8 @@
* Returns void
*
******************************************************************************/
-void bta_ag_sco_shutdown(tBTA_AG_SCB *p_scb,
- UNUSED_ATTR tBTA_AG_DATA *p_data)
-{
- bta_ag_sco_event(p_scb, BTA_AG_SCO_SHUTDOWN_E);
+void bta_ag_sco_shutdown(tBTA_AG_SCB* p_scb, UNUSED_ATTR tBTA_AG_DATA* p_data) {
+ bta_ag_sco_event(p_scb, BTA_AG_SCO_SHUTDOWN_E);
}
/*******************************************************************************
@@ -1436,32 +1347,32 @@
* Returns void
*
******************************************************************************/
-void bta_ag_sco_conn_open(tBTA_AG_SCB *p_scb,
- UNUSED_ATTR tBTA_AG_DATA *p_data)
-{
- bta_ag_sco_event(p_scb, BTA_AG_SCO_CONN_OPEN_E);
+void bta_ag_sco_conn_open(tBTA_AG_SCB* p_scb,
+ UNUSED_ATTR tBTA_AG_DATA* p_data) {
+ bta_ag_sco_event(p_scb, BTA_AG_SCO_CONN_OPEN_E);
- bta_sys_sco_open(BTA_ID_AG, p_scb->app_id, p_scb->peer_addr);
+ bta_sys_sco_open(BTA_ID_AG, p_scb->app_id, p_scb->peer_addr);
#if (BTM_WBS_INCLUDED == TRUE)
- bta_ag_co_audio_state(bta_ag_scb_to_idx(p_scb), p_scb->app_id, SCO_STATE_ON,
- p_scb->inuse_codec);
+ bta_ag_co_audio_state(bta_ag_scb_to_idx(p_scb), p_scb->app_id, SCO_STATE_ON,
+ p_scb->inuse_codec);
#else
- bta_ag_co_audio_state(bta_ag_scb_to_idx(p_scb), p_scb->app_id, SCO_STATE_ON);
+ bta_ag_co_audio_state(bta_ag_scb_to_idx(p_scb), p_scb->app_id, SCO_STATE_ON);
#endif
#if (BTM_SCO_HCI_INCLUDED == TRUE)
- /* open SCO codec if SCO is routed through transport */
- bta_dm_sco_co_open(bta_ag_scb_to_idx(p_scb), BTA_SCO_OUT_PKT_SIZE, BTA_AG_CI_SCO_DATA_EVT);
+ /* open SCO codec if SCO is routed through transport */
+ bta_dm_sco_co_open(bta_ag_scb_to_idx(p_scb), BTA_SCO_OUT_PKT_SIZE,
+ BTA_AG_CI_SCO_DATA_EVT);
#endif
- /* call app callback */
- bta_ag_cback_sco(p_scb, BTA_AG_AUDIO_OPEN_EVT);
+ /* call app callback */
+ bta_ag_cback_sco(p_scb, BTA_AG_AUDIO_OPEN_EVT);
- p_scb->retry_with_sco_only = false;
+ p_scb->retry_with_sco_only = false;
#if (BTM_WBS_INCLUDED == TRUE)
- /* reset to mSBC T2 settings as the preferred */
- p_scb->codec_msbc_settings = BTA_AG_SCO_MSBC_SETTINGS_T2;
+ /* reset to mSBC T2 settings as the preferred */
+ p_scb->codec_msbc_settings = BTA_AG_SCO_MSBC_SETTINGS_T2;
#endif
}
@@ -1475,65 +1386,62 @@
* Returns void
*
******************************************************************************/
-void bta_ag_sco_conn_close(tBTA_AG_SCB *p_scb,
- UNUSED_ATTR tBTA_AG_DATA *p_data)
-{
- uint16_t handle = bta_ag_scb_to_idx(p_scb);
+void bta_ag_sco_conn_close(tBTA_AG_SCB* p_scb,
+ UNUSED_ATTR tBTA_AG_DATA* p_data) {
+ uint16_t handle = bta_ag_scb_to_idx(p_scb);
- /* clear current scb */
- bta_ag_cb.sco.p_curr_scb = NULL;
- p_scb->sco_idx = BTM_INVALID_SCO_INDEX;
+ /* clear current scb */
+ bta_ag_cb.sco.p_curr_scb = NULL;
+ p_scb->sco_idx = BTM_INVALID_SCO_INDEX;
#if (BTM_WBS_INCLUDED == TRUE)
- /* codec_fallback is set when AG is initiator and connection failed for mSBC. */
- /* OR if codec is msbc and T2 settings failed, then retry Safe T1 settings */
- if ((p_scb->codec_fallback && p_scb->svc_conn) ||
- bta_ag_attempt_msbc_safe_settings(p_scb))
- {
- bta_ag_sco_event(p_scb, BTA_AG_SCO_REOPEN_E);
- }
- else if (p_scb->retry_with_sco_only && p_scb->svc_conn)
- {
- /* retry_with_sco_only is set when AG is initiator and connection failed for eSCO */
- bta_ag_create_sco(p_scb, true);
- }
+ /* codec_fallback is set when AG is initiator and connection failed for mSBC.
+ */
+ /* OR if codec is msbc and T2 settings failed, then retry Safe T1 settings */
+ if ((p_scb->codec_fallback && p_scb->svc_conn) ||
+ bta_ag_attempt_msbc_safe_settings(p_scb)) {
+ bta_ag_sco_event(p_scb, BTA_AG_SCO_REOPEN_E);
+ } else if (p_scb->retry_with_sco_only && p_scb->svc_conn) {
+ /* retry_with_sco_only is set when AG is initiator and connection failed for
+ * eSCO */
+ bta_ag_create_sco(p_scb, true);
+ }
#else
- /* retry_with_sco_only, will be set only when AG is initiator
- ** and AG is first trying to establish an eSCO connection */
- if (p_scb->retry_with_sco_only && p_scb->svc_conn)
- {
- bta_ag_create_sco(p_scb, true);
- }
+ /* retry_with_sco_only, will be set only when AG is initiator
+ ** and AG is first trying to establish an eSCO connection */
+ if (p_scb->retry_with_sco_only && p_scb->svc_conn) {
+ bta_ag_create_sco(p_scb, true);
+ }
#endif
- else
- {
- sco_state_t sco_state = bta_ag_cb.sco.p_xfer_scb ? SCO_STATE_OFF_TRANSFER : SCO_STATE_OFF;
+ else {
+ sco_state_t sco_state =
+ bta_ag_cb.sco.p_xfer_scb ? SCO_STATE_OFF_TRANSFER : SCO_STATE_OFF;
#if (BTM_WBS_INCLUDED == TRUE)
- /* Indicate if the closing of audio is because of transfer */
- bta_ag_co_audio_state(handle, p_scb->app_id, sco_state, p_scb->inuse_codec);
+ /* Indicate if the closing of audio is because of transfer */
+ bta_ag_co_audio_state(handle, p_scb->app_id, sco_state, p_scb->inuse_codec);
#else
- /* Indicate if the closing of audio is because of transfer */
- bta_ag_co_audio_state(handle, p_scb->app_id, sco_state);
+ /* Indicate if the closing of audio is because of transfer */
+ bta_ag_co_audio_state(handle, p_scb->app_id, sco_state);
#endif
- bta_ag_sco_event(p_scb, BTA_AG_SCO_CONN_CLOSE_E);
+ bta_ag_sco_event(p_scb, BTA_AG_SCO_CONN_CLOSE_E);
- bta_sys_sco_close(BTA_ID_AG, p_scb->app_id, p_scb->peer_addr);
+ bta_sys_sco_close(BTA_ID_AG, p_scb->app_id, p_scb->peer_addr);
- /* if av got suspended by this call, let it resume. */
- /* In case call stays alive regardless of sco, av should not be affected. */
- if(((p_scb->call_ind == BTA_AG_CALL_INACTIVE) && (p_scb->callsetup_ind == BTA_AG_CALLSETUP_NONE))
- || (p_scb->post_sco == BTA_AG_POST_SCO_CALL_END))
- {
- bta_sys_sco_unuse(BTA_ID_AG, p_scb->app_id, p_scb->peer_addr);
- }
-
- /* call app callback */
- bta_ag_cback_sco(p_scb, BTA_AG_AUDIO_CLOSE_EVT);
-#if (BTM_WBS_INCLUDED == TRUE)
- p_scb->codec_msbc_settings = BTA_AG_SCO_MSBC_SETTINGS_T2;
-#endif
+ /* if av got suspended by this call, let it resume. */
+ /* In case call stays alive regardless of sco, av should not be affected. */
+ if (((p_scb->call_ind == BTA_AG_CALL_INACTIVE) &&
+ (p_scb->callsetup_ind == BTA_AG_CALLSETUP_NONE)) ||
+ (p_scb->post_sco == BTA_AG_POST_SCO_CALL_END)) {
+ bta_sys_sco_unuse(BTA_ID_AG, p_scb->app_id, p_scb->peer_addr);
}
- p_scb->retry_with_sco_only = false;
+
+ /* call app callback */
+ bta_ag_cback_sco(p_scb, BTA_AG_AUDIO_CLOSE_EVT);
+#if (BTM_WBS_INCLUDED == TRUE)
+ p_scb->codec_msbc_settings = BTA_AG_SCO_MSBC_SETTINGS_T2;
+#endif
+ }
+ p_scb->retry_with_sco_only = false;
}
/*******************************************************************************
@@ -1546,78 +1454,73 @@
* Returns void
*
******************************************************************************/
-void bta_ag_sco_conn_rsp(tBTA_AG_SCB *p_scb, tBTM_ESCO_CONN_REQ_EVT_DATA *p_data)
-{
- tBTM_ESCO_PARAMS resp;
- uint8_t hci_status = HCI_SUCCESS;
+void bta_ag_sco_conn_rsp(tBTA_AG_SCB* p_scb,
+ tBTM_ESCO_CONN_REQ_EVT_DATA* p_data) {
+ tBTM_ESCO_PARAMS resp;
+ uint8_t hci_status = HCI_SUCCESS;
#if (BTM_SCO_HCI_INCLUDED == TRUE)
- tBTA_CODEC_INFO codec_info = {BTA_SCO_CODEC_PCM};
- uint32_t pcm_sample_rate;
+ tBTA_CODEC_INFO codec_info = {BTA_SCO_CODEC_PCM};
+ uint32_t pcm_sample_rate;
#endif
- if (bta_ag_cb.sco.state == BTA_AG_SCO_LISTEN_ST ||
- bta_ag_cb.sco.state == BTA_AG_SCO_CLOSE_XFER_ST ||
- bta_ag_cb.sco.state == BTA_AG_SCO_OPEN_XFER_ST)
- {
- /* If script overrided sco parameter by BTA_CMD_SET_ESCO_PARAM */
- if (bta_ag_cb.sco.param_updated)
- {
- resp = bta_ag_cb.sco.params;
- }
- else
- {
- resp.rx_bw = BTM_64KBITS_RATE;
- resp.tx_bw = BTM_64KBITS_RATE;
- resp.max_latency = 12;
- resp.voice_contfmt = 0x60;
- resp.retrans_effort = BTM_ESCO_RETRANS_QUALITY;
+ if (bta_ag_cb.sco.state == BTA_AG_SCO_LISTEN_ST ||
+ bta_ag_cb.sco.state == BTA_AG_SCO_CLOSE_XFER_ST ||
+ bta_ag_cb.sco.state == BTA_AG_SCO_OPEN_XFER_ST) {
+ /* If script overrided sco parameter by BTA_CMD_SET_ESCO_PARAM */
+ if (bta_ag_cb.sco.param_updated) {
+ resp = bta_ag_cb.sco.params;
+ } else {
+ resp.rx_bw = BTM_64KBITS_RATE;
+ resp.tx_bw = BTM_64KBITS_RATE;
+ resp.max_latency = 12;
+ resp.voice_contfmt = 0x60;
+ resp.retrans_effort = BTM_ESCO_RETRANS_QUALITY;
- if (p_data->link_type == BTM_LINK_TYPE_SCO)
- {
- resp.packet_types = (BTM_SCO_LINK_ONLY_MASK |
- BTM_SCO_PKT_TYPES_MASK_NO_2_EV3 |
- BTM_SCO_PKT_TYPES_MASK_NO_3_EV3 |
- BTM_SCO_PKT_TYPES_MASK_NO_2_EV5 |
- BTM_SCO_PKT_TYPES_MASK_NO_3_EV5);
- }
- else /* Allow controller to use all types available except 5-slot EDR */
- {
- resp.packet_types = (BTM_SCO_LINK_ALL_PKT_MASK |
- BTM_SCO_PKT_TYPES_MASK_NO_2_EV5 |
- BTM_SCO_PKT_TYPES_MASK_NO_3_EV5);
- }
- }
+ if (p_data->link_type == BTM_LINK_TYPE_SCO) {
+ resp.packet_types =
+ (BTM_SCO_LINK_ONLY_MASK | BTM_SCO_PKT_TYPES_MASK_NO_2_EV3 |
+ BTM_SCO_PKT_TYPES_MASK_NO_3_EV3 | BTM_SCO_PKT_TYPES_MASK_NO_2_EV5 |
+ BTM_SCO_PKT_TYPES_MASK_NO_3_EV5);
+ } else /* Allow controller to use all types available except 5-slot EDR */
+ {
+ resp.packet_types =
+ (BTM_SCO_LINK_ALL_PKT_MASK | BTM_SCO_PKT_TYPES_MASK_NO_2_EV5 |
+ BTM_SCO_PKT_TYPES_MASK_NO_3_EV5);
+ }
+ }
- /* tell sys to stop av if any */
- bta_sys_sco_use(BTA_ID_AG, p_scb->app_id, p_scb->peer_addr);
+ /* tell sys to stop av if any */
+ bta_sys_sco_use(BTA_ID_AG, p_scb->app_id, p_scb->peer_addr);
#if (BTM_WBS_INCLUDED == FALSE)
- /* Allow any platform specific pre-SCO set up to take place */
- bta_ag_co_audio_state(bta_ag_scb_to_idx(p_scb), p_scb->app_id, SCO_STATE_SETUP);
+ /* Allow any platform specific pre-SCO set up to take place */
+ bta_ag_co_audio_state(bta_ag_scb_to_idx(p_scb), p_scb->app_id,
+ SCO_STATE_SETUP);
#else
- /* When HS initiated SCO, it cannot be WBS. */
- /* Allow any platform specific pre-SCO set up to take place */
- bta_ag_co_audio_state(bta_ag_scb_to_idx(p_scb), p_scb->app_id, SCO_STATE_SETUP,
- BTA_AG_CODEC_CVSD);
+ /* When HS initiated SCO, it cannot be WBS. */
+ /* Allow any platform specific pre-SCO set up to take place */
+ bta_ag_co_audio_state(bta_ag_scb_to_idx(p_scb), p_scb->app_id,
+ SCO_STATE_SETUP, BTA_AG_CODEC_CVSD);
#endif
#if (BTM_SCO_HCI_INCLUDED == TRUE)
- pcm_sample_rate = BTA_DM_SCO_SAMP_RATE_8K;
+ pcm_sample_rate = BTA_DM_SCO_SAMP_RATE_8K;
- /* initialize SCO setup, no voice setting for AG, data rate <==> sample rate */
- BTM_ConfigScoPath(bta_dm_sco_co_init(pcm_sample_rate, pcm_sample_rate, &codec_info, p_scb->app_id),
- bta_ag_sco_read_cback, NULL, true);
+ /* initialize SCO setup, no voice setting for AG, data rate <==> sample rate
+ */
+ BTM_ConfigScoPath(bta_dm_sco_co_init(pcm_sample_rate, pcm_sample_rate,
+ &codec_info, p_scb->app_id),
+ bta_ag_sco_read_cback, NULL, true);
#endif
- }
- else
- hci_status = HCI_ERR_HOST_REJECT_DEVICE;
+ } else
+ hci_status = HCI_ERR_HOST_REJECT_DEVICE;
#if (BTM_WBS_INCLUDED == TRUE)
- /* If SCO open was initiated from HS, it must be CVSD */
- p_scb->inuse_codec = BTA_AG_CODEC_NONE;
+ /* If SCO open was initiated from HS, it must be CVSD */
+ p_scb->inuse_codec = BTA_AG_CODEC_NONE;
#endif
- BTM_EScoConnRsp(p_data->sco_inx, hci_status, &resp);
+ BTM_EScoConnRsp(p_data->sco_inx, hci_status, &resp);
}
/*******************************************************************************
@@ -1630,11 +1533,10 @@
* Returns void
*
******************************************************************************/
-void bta_ag_ci_sco_data(UNUSED_ATTR tBTA_AG_SCB *p_scb,
- UNUSED_ATTR tBTA_AG_DATA *p_data)
-{
+void bta_ag_ci_sco_data(UNUSED_ATTR tBTA_AG_SCB* p_scb,
+ UNUSED_ATTR tBTA_AG_DATA* p_data) {
#if (BTM_SCO_HCI_INCLUDED == TRUE)
- bta_ag_sco_event(p_scb, BTA_AG_SCO_CI_DATA_E);
+ bta_ag_sco_event(p_scb, BTA_AG_SCO_CI_DATA_E);
#endif
}
@@ -1648,19 +1550,17 @@
* Returns void
*
******************************************************************************/
-void bta_ag_set_esco_param(bool set_reset, tBTM_ESCO_PARAMS *param)
-{
- if(set_reset == false) /* reset the parameters to default */
- {
- bta_ag_cb.sco.param_updated = false;
- APPL_TRACE_DEBUG("bta_ag_set_esco_param : Resetting ESCO parameters to default");
- }
- else
- {
- bta_ag_cb.sco.param_updated = true;
- bta_ag_cb.sco.params = *param;
- APPL_TRACE_DEBUG("bta_ag_set_esco_param : Setting ESCO parameters");
- }
+void bta_ag_set_esco_param(bool set_reset, tBTM_ESCO_PARAMS* param) {
+ if (set_reset == false) /* reset the parameters to default */
+ {
+ bta_ag_cb.sco.param_updated = false;
+ APPL_TRACE_DEBUG(
+ "bta_ag_set_esco_param : Resetting ESCO parameters to default");
+ } else {
+ bta_ag_cb.sco.param_updated = true;
+ bta_ag_cb.sco.params = *param;
+ APPL_TRACE_DEBUG("bta_ag_set_esco_param : Setting ESCO parameters");
+ }
}
/*******************************************************************************
@@ -1668,68 +1568,64 @@
******************************************************************************/
#if (BTA_AG_SCO_DEBUG == TRUE)
-static char *bta_ag_sco_evt_str(uint8_t event)
-{
- switch (event)
- {
+static char* bta_ag_sco_evt_str(uint8_t event) {
+ switch (event) {
case BTA_AG_SCO_LISTEN_E:
- return "Listen Request";
+ return "Listen Request";
case BTA_AG_SCO_OPEN_E:
- return "Open Request";
+ return "Open Request";
case BTA_AG_SCO_XFER_E:
- return "Transfer Request";
+ return "Transfer Request";
#if (BTM_WBS_INCLUDED == TRUE)
case BTA_AG_SCO_CN_DONE_E:
- return "Codec Negotiation Done";
+ return "Codec Negotiation Done";
case BTA_AG_SCO_REOPEN_E:
- return "Reopen Request";
+ return "Reopen Request";
#endif
case BTA_AG_SCO_CLOSE_E:
- return "Close Request";
+ return "Close Request";
case BTA_AG_SCO_SHUTDOWN_E:
- return "Shutdown Request";
+ return "Shutdown Request";
case BTA_AG_SCO_CONN_OPEN_E:
- return "Opened";
+ return "Opened";
case BTA_AG_SCO_CONN_CLOSE_E:
- return "Closed";
- case BTA_AG_SCO_CI_DATA_E :
- return "Sco Data";
+ return "Closed";
+ case BTA_AG_SCO_CI_DATA_E:
+ return "Sco Data";
default:
- return "Unknown SCO Event";
- }
+ return "Unknown SCO Event";
+ }
}
-static char *bta_ag_sco_state_str(uint8_t state)
-{
- switch (state)
- {
+static char* bta_ag_sco_state_str(uint8_t state) {
+ switch (state) {
case BTA_AG_SCO_SHUTDOWN_ST:
- return "Shutdown";
+ return "Shutdown";
case BTA_AG_SCO_LISTEN_ST:
- return "Listening";
+ return "Listening";
#if (BTM_WBS_INCLUDED == TRUE)
case BTA_AG_SCO_CODEC_ST:
- return "Codec Negotiation";
+ return "Codec Negotiation";
#endif
case BTA_AG_SCO_OPENING_ST:
- return "Opening";
+ return "Opening";
case BTA_AG_SCO_OPEN_CL_ST:
- return "Open while closing";
+ return "Open while closing";
case BTA_AG_SCO_OPEN_XFER_ST:
- return "Opening while Transferring";
+ return "Opening while Transferring";
case BTA_AG_SCO_OPEN_ST:
- return "Open";
+ return "Open";
case BTA_AG_SCO_CLOSING_ST:
- return "Closing";
+ return "Closing";
case BTA_AG_SCO_CLOSE_OP_ST:
- return "Close while Opening";
+ return "Close while Opening";
case BTA_AG_SCO_CLOSE_XFER_ST:
- return "Close while Transferring";
+ return "Close while Transferring";
case BTA_AG_SCO_SHUTTING_ST:
- return "Shutting Down";
+ return "Shutting Down";
default:
- return "Unknown SCO State";
- }
+ return "Unknown SCO State";
+ }
}
#endif
diff --git a/bta/ag/bta_ag_sdp.cc b/bta/ag/bta_ag_sdp.cc
index e292b52..957bf8b 100644
--- a/bta/ag/bta_ag_sdp.cc
+++ b/bta/ag/bta_ag_sdp.cc
@@ -25,25 +25,25 @@
#include <string.h>
-#include "bta_api.h"
-#include "bta_sys.h"
+#include "bt_common.h"
#include "bta_ag_api.h"
#include "bta_ag_int.h"
-#include "sdp_api.h"
+#include "bta_api.h"
+#include "bta_sys.h"
#include "btm_api.h"
-#include "bt_common.h"
#include "osi/include/osi.h"
+#include "sdp_api.h"
#include "utl.h"
/* Number of protocol elements in protocol element list. */
-#define BTA_AG_NUM_PROTO_ELEMS 2
+#define BTA_AG_NUM_PROTO_ELEMS 2
/* Number of elements in service class id list. */
-#define BTA_AG_NUM_SVC_ELEMS 2
+#define BTA_AG_NUM_SVC_ELEMS 2
/* size of database for service discovery */
#ifndef BTA_AG_DISC_BUF_SIZE
-#define BTA_AG_DISC_BUF_SIZE BT_DEFAULT_BUFFER_SIZE
+#define BTA_AG_DISC_BUF_SIZE BT_DEFAULT_BUFFER_SIZE
#endif
/* declare sdp callback functions */
@@ -52,13 +52,9 @@
void bta_ag_sdp_cback_3(uint16_t status);
/* SDP callback function table */
-typedef tSDP_DISC_CMPL_CB *tBTA_AG_SDP_CBACK;
-const tBTA_AG_SDP_CBACK bta_ag_sdp_cback_tbl[] =
-{
- bta_ag_sdp_cback_1,
- bta_ag_sdp_cback_2,
- bta_ag_sdp_cback_3
-};
+typedef tSDP_DISC_CMPL_CB* tBTA_AG_SDP_CBACK;
+const tBTA_AG_SDP_CBACK bta_ag_sdp_cback_tbl[] = {
+ bta_ag_sdp_cback_1, bta_ag_sdp_cback_2, bta_ag_sdp_cback_3};
/*******************************************************************************
*
@@ -70,32 +66,27 @@
* Returns void
*
******************************************************************************/
-static void bta_ag_sdp_cback(uint16_t status, uint8_t idx)
-{
- uint16_t event;
- tBTA_AG_SCB *p_scb;
+static void bta_ag_sdp_cback(uint16_t status, uint8_t idx) {
+ uint16_t event;
+ tBTA_AG_SCB* p_scb;
- APPL_TRACE_DEBUG("%s status:0x%x", __func__, status);
+ APPL_TRACE_DEBUG("%s status:0x%x", __func__, status);
- if ((p_scb = bta_ag_scb_by_idx(idx)) != NULL)
- {
- /* set event according to int/acp */
- if (p_scb->role == BTA_AG_ACP)
- {
- event = BTA_AG_DISC_ACP_RES_EVT;
- }
- else
- {
- event = BTA_AG_DISC_INT_RES_EVT;
- }
-
- tBTA_AG_DISC_RESULT *p_buf =
- (tBTA_AG_DISC_RESULT *)osi_malloc(sizeof(tBTA_AG_DISC_RESULT));
- p_buf->hdr.event = event;
- p_buf->hdr.layer_specific = idx;
- p_buf->status = status;
- bta_sys_sendmsg(p_buf);
+ if ((p_scb = bta_ag_scb_by_idx(idx)) != NULL) {
+ /* set event according to int/acp */
+ if (p_scb->role == BTA_AG_ACP) {
+ event = BTA_AG_DISC_ACP_RES_EVT;
+ } else {
+ event = BTA_AG_DISC_INT_RES_EVT;
}
+
+ tBTA_AG_DISC_RESULT* p_buf =
+ (tBTA_AG_DISC_RESULT*)osi_malloc(sizeof(tBTA_AG_DISC_RESULT));
+ p_buf->hdr.event = event;
+ p_buf->hdr.layer_specific = idx;
+ p_buf->status = status;
+ bta_sys_sendmsg(p_buf);
+ }
}
/*******************************************************************************
@@ -110,9 +101,9 @@
* Returns void
*
******************************************************************************/
-void bta_ag_sdp_cback_1(uint16_t status) {bta_ag_sdp_cback(status, 1);}
-void bta_ag_sdp_cback_2(uint16_t status) {bta_ag_sdp_cback(status, 2);}
-void bta_ag_sdp_cback_3(uint16_t status) {bta_ag_sdp_cback(status, 3);}
+void bta_ag_sdp_cback_1(uint16_t status) { bta_ag_sdp_cback(status, 1); }
+void bta_ag_sdp_cback_2(uint16_t status) { bta_ag_sdp_cback(status, 2); }
+void bta_ag_sdp_cback_3(uint16_t status) { bta_ag_sdp_cback(status, 3); }
/******************************************************************************
*
@@ -127,80 +118,78 @@
* false if function execution failed.
*
*****************************************************************************/
-bool bta_ag_add_record(uint16_t service_uuid, char *p_service_name, uint8_t scn,
- tBTA_AG_FEAT features, uint32_t sdp_handle)
-{
- tSDP_PROTOCOL_ELEM proto_elem_list[BTA_AG_NUM_PROTO_ELEMS];
- uint16_t svc_class_id_list[BTA_AG_NUM_SVC_ELEMS];
- uint16_t browse_list[] = {UUID_SERVCLASS_PUBLIC_BROWSE_GROUP};
- uint16_t version;
- uint16_t profile_uuid;
- uint8_t network;
- bool result = true;
- bool codec_supported = false;
- uint8_t buf[2];
+bool bta_ag_add_record(uint16_t service_uuid, char* p_service_name, uint8_t scn,
+ tBTA_AG_FEAT features, uint32_t sdp_handle) {
+ tSDP_PROTOCOL_ELEM proto_elem_list[BTA_AG_NUM_PROTO_ELEMS];
+ uint16_t svc_class_id_list[BTA_AG_NUM_SVC_ELEMS];
+ uint16_t browse_list[] = {UUID_SERVCLASS_PUBLIC_BROWSE_GROUP};
+ uint16_t version;
+ uint16_t profile_uuid;
+ uint8_t network;
+ bool result = true;
+ bool codec_supported = false;
+ uint8_t buf[2];
- APPL_TRACE_DEBUG("%s uuid: %x", __func__, service_uuid);
+ APPL_TRACE_DEBUG("%s uuid: %x", __func__, service_uuid);
- memset( proto_elem_list, 0 , BTA_AG_NUM_PROTO_ELEMS*sizeof(tSDP_PROTOCOL_ELEM));
+ memset(proto_elem_list, 0,
+ BTA_AG_NUM_PROTO_ELEMS * sizeof(tSDP_PROTOCOL_ELEM));
- /* add the protocol element sequence */
- proto_elem_list[0].protocol_uuid = UUID_PROTOCOL_L2CAP;
- proto_elem_list[0].num_params = 0;
- proto_elem_list[1].protocol_uuid = UUID_PROTOCOL_RFCOMM;
- proto_elem_list[1].num_params = 1;
- proto_elem_list[1].params[0] = scn;
- result &= SDP_AddProtocolList(sdp_handle, BTA_AG_NUM_PROTO_ELEMS, proto_elem_list);
+ /* add the protocol element sequence */
+ proto_elem_list[0].protocol_uuid = UUID_PROTOCOL_L2CAP;
+ proto_elem_list[0].num_params = 0;
+ proto_elem_list[1].protocol_uuid = UUID_PROTOCOL_RFCOMM;
+ proto_elem_list[1].num_params = 1;
+ proto_elem_list[1].params[0] = scn;
+ result &=
+ SDP_AddProtocolList(sdp_handle, BTA_AG_NUM_PROTO_ELEMS, proto_elem_list);
- /* add service class id list */
- svc_class_id_list[0] = service_uuid;
- svc_class_id_list[1] = UUID_SERVCLASS_GENERIC_AUDIO;
- result &= SDP_AddServiceClassIdList(sdp_handle, BTA_AG_NUM_SVC_ELEMS, svc_class_id_list);
+ /* add service class id list */
+ svc_class_id_list[0] = service_uuid;
+ svc_class_id_list[1] = UUID_SERVCLASS_GENERIC_AUDIO;
+ result &= SDP_AddServiceClassIdList(sdp_handle, BTA_AG_NUM_SVC_ELEMS,
+ svc_class_id_list);
- /* add profile descriptor list */
- if (service_uuid == UUID_SERVCLASS_AG_HANDSFREE)
- {
- profile_uuid = UUID_SERVCLASS_HF_HANDSFREE;
- version = BTA_HFP_VERSION;
- }
- else
- {
- profile_uuid = UUID_SERVCLASS_HEADSET;
- version = HSP_VERSION_1_2;
- }
- result &= SDP_AddProfileDescriptorList(sdp_handle, profile_uuid, version);
+ /* add profile descriptor list */
+ if (service_uuid == UUID_SERVCLASS_AG_HANDSFREE) {
+ profile_uuid = UUID_SERVCLASS_HF_HANDSFREE;
+ version = BTA_HFP_VERSION;
+ } else {
+ profile_uuid = UUID_SERVCLASS_HEADSET;
+ version = HSP_VERSION_1_2;
+ }
+ result &= SDP_AddProfileDescriptorList(sdp_handle, profile_uuid, version);
- /* add service name */
- if (p_service_name != NULL && p_service_name[0] != 0)
- {
- result &= SDP_AddAttribute(sdp_handle, ATTR_ID_SERVICE_NAME, TEXT_STR_DESC_TYPE,
- (uint32_t)(strlen(p_service_name)+1), (uint8_t *) p_service_name);
- }
+ /* add service name */
+ if (p_service_name != NULL && p_service_name[0] != 0) {
+ result &= SDP_AddAttribute(
+ sdp_handle, ATTR_ID_SERVICE_NAME, TEXT_STR_DESC_TYPE,
+ (uint32_t)(strlen(p_service_name) + 1), (uint8_t*)p_service_name);
+ }
- /* add features and network */
- if (service_uuid == UUID_SERVCLASS_AG_HANDSFREE)
- {
- network = (features & BTA_AG_FEAT_REJECT) ? 1 : 0;
- result &= SDP_AddAttribute(sdp_handle, ATTR_ID_DATA_STORES_OR_NETWORK,
- UINT_DESC_TYPE, 1, &network);
+ /* add features and network */
+ if (service_uuid == UUID_SERVCLASS_AG_HANDSFREE) {
+ network = (features & BTA_AG_FEAT_REJECT) ? 1 : 0;
+ result &= SDP_AddAttribute(sdp_handle, ATTR_ID_DATA_STORES_OR_NETWORK,
+ UINT_DESC_TYPE, 1, &network);
- if (features & BTA_AG_FEAT_CODEC)
- codec_supported = true;
+ if (features & BTA_AG_FEAT_CODEC) codec_supported = true;
- features &= BTA_AG_SDP_FEAT_SPEC;
+ features &= BTA_AG_SDP_FEAT_SPEC;
- /* Codec bit position is different in SDP and in BRSF */
- if (codec_supported)
- features |= 0x0020;
+ /* Codec bit position is different in SDP and in BRSF */
+ if (codec_supported) features |= 0x0020;
- UINT16_TO_BE_FIELD(buf, features);
- result &= SDP_AddAttribute(sdp_handle, ATTR_ID_SUPPORTED_FEATURES, UINT_DESC_TYPE, 2, buf);
- }
+ UINT16_TO_BE_FIELD(buf, features);
+ result &= SDP_AddAttribute(sdp_handle, ATTR_ID_SUPPORTED_FEATURES,
+ UINT_DESC_TYPE, 2, buf);
+ }
- /* add browse group list */
- result &= SDP_AddUuidSequence(sdp_handle, ATTR_ID_BROWSE_GROUP_LIST, 1, browse_list);
+ /* add browse group list */
+ result &= SDP_AddUuidSequence(sdp_handle, ATTR_ID_BROWSE_GROUP_LIST, 1,
+ browse_list);
- return result;
+ return result;
}
/*******************************************************************************
@@ -213,32 +202,28 @@
* Returns void
*
******************************************************************************/
-void bta_ag_create_records(tBTA_AG_SCB *p_scb, tBTA_AG_DATA *p_data)
-{
- int i;
- tBTA_SERVICE_MASK services;
+void bta_ag_create_records(tBTA_AG_SCB* p_scb, tBTA_AG_DATA* p_data) {
+ int i;
+ tBTA_SERVICE_MASK services;
- services = p_scb->reg_services >> BTA_HSP_SERVICE_ID;
- for (i = 0; i < BTA_AG_NUM_IDX && services != 0; i++, services >>= 1)
- {
- /* if service is set in mask */
- if (services & 1)
- {
- /* add sdp record if not already registered */
- if (bta_ag_cb.profile[i].sdp_handle == 0)
- {
- bta_ag_cb.profile[i].sdp_handle = SDP_CreateRecord();
- bta_ag_cb.profile[i].scn = BTM_AllocateSCN();
- bta_ag_add_record(bta_ag_uuid[i], p_data->api_register.p_name[i],
- bta_ag_cb.profile[i].scn, p_data->api_register.features,
- bta_ag_cb.profile[i].sdp_handle);
- bta_sys_add_uuid(bta_ag_uuid[i]);
- }
- }
+ services = p_scb->reg_services >> BTA_HSP_SERVICE_ID;
+ for (i = 0; i < BTA_AG_NUM_IDX && services != 0; i++, services >>= 1) {
+ /* if service is set in mask */
+ if (services & 1) {
+ /* add sdp record if not already registered */
+ if (bta_ag_cb.profile[i].sdp_handle == 0) {
+ bta_ag_cb.profile[i].sdp_handle = SDP_CreateRecord();
+ bta_ag_cb.profile[i].scn = BTM_AllocateSCN();
+ bta_ag_add_record(bta_ag_uuid[i], p_data->api_register.p_name[i],
+ bta_ag_cb.profile[i].scn,
+ p_data->api_register.features,
+ bta_ag_cb.profile[i].sdp_handle);
+ bta_sys_add_uuid(bta_ag_uuid[i]);
+ }
}
+ }
- p_scb->hsp_version = HSP_VERSION_1_2;
-
+ p_scb->hsp_version = HSP_VERSION_1_2;
}
/*******************************************************************************
@@ -251,46 +236,40 @@
* Returns void
*
******************************************************************************/
-void bta_ag_del_records(tBTA_AG_SCB *p_scb,
- UNUSED_ATTR tBTA_AG_DATA *p_data)
-{
- tBTA_AG_SCB *p = &bta_ag_cb.scb[0];
- tBTA_SERVICE_MASK services;
- tBTA_SERVICE_MASK others = 0;
- int i;
+void bta_ag_del_records(tBTA_AG_SCB* p_scb, UNUSED_ATTR tBTA_AG_DATA* p_data) {
+ tBTA_AG_SCB* p = &bta_ag_cb.scb[0];
+ tBTA_SERVICE_MASK services;
+ tBTA_SERVICE_MASK others = 0;
+ int i;
- /* get services of all other registered servers */
- for (i = 0; i < BTA_AG_NUM_IDX; i++, p++)
- {
- if (p_scb == p)
- {
- continue;
- }
-
- if (p->in_use && p->dealloc == false)
- {
- others |= p->reg_services;
- }
+ /* get services of all other registered servers */
+ for (i = 0; i < BTA_AG_NUM_IDX; i++, p++) {
+ if (p_scb == p) {
+ continue;
}
- others >>= BTA_HSP_SERVICE_ID;
- services = p_scb->reg_services >> BTA_HSP_SERVICE_ID;
- for (i = 0; i < BTA_AG_NUM_IDX && services != 0; i++, services >>= 1, others >>= 1)
- {
- /* if service registered for this scb and not registered for any other scb */
- if (((services & 1) == 1) && ((others & 1) == 0))
- {
- APPL_TRACE_DEBUG("bta_ag_del_records %d", i);
- if (bta_ag_cb.profile[i].sdp_handle != 0)
- {
- SDP_DeleteRecord(bta_ag_cb.profile[i].sdp_handle);
- bta_ag_cb.profile[i].sdp_handle = 0;
- }
- BTM_FreeSCN(bta_ag_cb.profile[i].scn);
- BTM_SecClrService(bta_ag_sec_id[i]);
- bta_sys_remove_uuid(bta_ag_uuid[i]);
- }
+ if (p->in_use && p->dealloc == false) {
+ others |= p->reg_services;
}
+ }
+
+ others >>= BTA_HSP_SERVICE_ID;
+ services = p_scb->reg_services >> BTA_HSP_SERVICE_ID;
+ for (i = 0; i < BTA_AG_NUM_IDX && services != 0;
+ i++, services >>= 1, others >>= 1) {
+ /* if service registered for this scb and not registered for any other scb
+ */
+ if (((services & 1) == 1) && ((others & 1) == 0)) {
+ APPL_TRACE_DEBUG("bta_ag_del_records %d", i);
+ if (bta_ag_cb.profile[i].sdp_handle != 0) {
+ SDP_DeleteRecord(bta_ag_cb.profile[i].sdp_handle);
+ bta_ag_cb.profile[i].sdp_handle = 0;
+ }
+ BTM_FreeSCN(bta_ag_cb.profile[i].scn);
+ BTM_SecClrService(bta_ag_sec_id[i]);
+ bta_sys_remove_uuid(bta_ag_uuid[i]);
+ }
+ }
}
/*******************************************************************************
@@ -304,94 +283,77 @@
* Returns true if results found, false otherwise.
*
******************************************************************************/
-bool bta_ag_sdp_find_attr(tBTA_AG_SCB *p_scb, tBTA_SERVICE_MASK service)
-{
- tSDP_DISC_REC *p_rec = NULL;
- tSDP_DISC_ATTR *p_attr;
- tSDP_PROTOCOL_ELEM pe;
- uint16_t uuid;
- bool result = false;
+bool bta_ag_sdp_find_attr(tBTA_AG_SCB* p_scb, tBTA_SERVICE_MASK service) {
+ tSDP_DISC_REC* p_rec = NULL;
+ tSDP_DISC_ATTR* p_attr;
+ tSDP_PROTOCOL_ELEM pe;
+ uint16_t uuid;
+ bool result = false;
- if (service & BTA_HFP_SERVICE_MASK)
- {
- uuid = UUID_SERVCLASS_HF_HANDSFREE;
- p_scb->peer_version = HFP_VERSION_1_1; /* Default version */
- }
- else if (service & BTA_HSP_SERVICE_MASK && p_scb->role == BTA_AG_INT)
- {
- uuid = UUID_SERVCLASS_HEADSET_HS;
- p_scb->peer_version = 0x0100; /* Default version */
- }
- else
- {
- return result;
- }
+ if (service & BTA_HFP_SERVICE_MASK) {
+ uuid = UUID_SERVCLASS_HF_HANDSFREE;
+ p_scb->peer_version = HFP_VERSION_1_1; /* Default version */
+ } else if (service & BTA_HSP_SERVICE_MASK && p_scb->role == BTA_AG_INT) {
+ uuid = UUID_SERVCLASS_HEADSET_HS;
+ p_scb->peer_version = 0x0100; /* Default version */
+ } else {
+ return result;
+ }
- /* loop through all records we found */
- while (true)
- {
- /* get next record; if none found, we're done */
- if ((p_rec = SDP_FindServiceInDb(p_scb->p_disc_db, uuid, p_rec)) == NULL)
- {
- if (uuid == UUID_SERVCLASS_HEADSET_HS)
- {
- /* Search again in case the peer device is HSP v1.0 */
- uuid = UUID_SERVCLASS_HEADSET;
- if ((p_rec = SDP_FindServiceInDb(p_scb->p_disc_db, uuid, p_rec)) == NULL)
- {
- break;
- }
- }
- else
- break;
+ /* loop through all records we found */
+ while (true) {
+ /* get next record; if none found, we're done */
+ if ((p_rec = SDP_FindServiceInDb(p_scb->p_disc_db, uuid, p_rec)) == NULL) {
+ if (uuid == UUID_SERVCLASS_HEADSET_HS) {
+ /* Search again in case the peer device is HSP v1.0 */
+ uuid = UUID_SERVCLASS_HEADSET;
+ if ((p_rec = SDP_FindServiceInDb(p_scb->p_disc_db, uuid, p_rec)) ==
+ NULL) {
+ break;
}
-
- /* get scn from proto desc list if initiator */
- if (p_scb->role == BTA_AG_INT)
- {
- if (SDP_FindProtocolListElemInRec(p_rec, UUID_PROTOCOL_RFCOMM, &pe))
- {
- p_scb->peer_scn = (uint8_t) pe.params[0];
- }
- else
- {
- continue;
- }
- }
-
- /* get profile version (if failure, version parameter is not updated) */
- SDP_FindProfileVersionInRec(p_rec, uuid, &p_scb->peer_version);
-
- /* get features if HFP */
- if (service & BTA_HFP_SERVICE_MASK)
- {
- if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_SUPPORTED_FEATURES)) != NULL)
- {
- /* Found attribute. Get value. */
- /* There might be race condition between SDP and BRSF. */
- /* Do not update if we already received BRSF. */
- if (p_scb->peer_features == 0)
- p_scb->peer_features = p_attr->attr_value.v.u16;
- }
- }
- else /* HSP */
- {
- if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_REMOTE_AUDIO_VOLUME_CONTROL)) != NULL)
- {
- /* Remote volume control of HSP */
- if (p_attr->attr_value.v.u8)
- p_scb->peer_features |= BTA_AG_PEER_FEAT_VOL;
- else
- p_scb->peer_features &= ~BTA_AG_PEER_FEAT_VOL;
- }
-
- }
-
- /* found what we needed */
- result = true;
+ } else
break;
}
- return result;
+
+ /* get scn from proto desc list if initiator */
+ if (p_scb->role == BTA_AG_INT) {
+ if (SDP_FindProtocolListElemInRec(p_rec, UUID_PROTOCOL_RFCOMM, &pe)) {
+ p_scb->peer_scn = (uint8_t)pe.params[0];
+ } else {
+ continue;
+ }
+ }
+
+ /* get profile version (if failure, version parameter is not updated) */
+ SDP_FindProfileVersionInRec(p_rec, uuid, &p_scb->peer_version);
+
+ /* get features if HFP */
+ if (service & BTA_HFP_SERVICE_MASK) {
+ if ((p_attr = SDP_FindAttributeInRec(
+ p_rec, ATTR_ID_SUPPORTED_FEATURES)) != NULL) {
+ /* Found attribute. Get value. */
+ /* There might be race condition between SDP and BRSF. */
+ /* Do not update if we already received BRSF. */
+ if (p_scb->peer_features == 0)
+ p_scb->peer_features = p_attr->attr_value.v.u16;
+ }
+ } else /* HSP */
+ {
+ if ((p_attr = SDP_FindAttributeInRec(
+ p_rec, ATTR_ID_REMOTE_AUDIO_VOLUME_CONTROL)) != NULL) {
+ /* Remote volume control of HSP */
+ if (p_attr->attr_value.v.u8)
+ p_scb->peer_features |= BTA_AG_PEER_FEAT_VOL;
+ else
+ p_scb->peer_features &= ~BTA_AG_PEER_FEAT_VOL;
+ }
+ }
+
+ /* found what we needed */
+ result = true;
+ break;
+ }
+ return result;
}
/*******************************************************************************
@@ -404,78 +366,70 @@
* Returns void
*
******************************************************************************/
-void bta_ag_do_disc(tBTA_AG_SCB *p_scb, tBTA_SERVICE_MASK service)
-{
- tSDP_UUID uuid_list[2];
- uint16_t num_uuid = 1;
- uint16_t attr_list[4];
- uint8_t num_attr;
- bool db_inited = false;
+void bta_ag_do_disc(tBTA_AG_SCB* p_scb, tBTA_SERVICE_MASK service) {
+ tSDP_UUID uuid_list[2];
+ uint16_t num_uuid = 1;
+ uint16_t attr_list[4];
+ uint8_t num_attr;
+ bool db_inited = false;
- /* HFP initiator; get proto list and features */
- if (service & BTA_HFP_SERVICE_MASK && p_scb->role == BTA_AG_INT)
- {
- attr_list[0] = ATTR_ID_SERVICE_CLASS_ID_LIST;
- attr_list[1] = ATTR_ID_PROTOCOL_DESC_LIST;
- attr_list[2] = ATTR_ID_BT_PROFILE_DESC_LIST;
- attr_list[3] = ATTR_ID_SUPPORTED_FEATURES;
- num_attr = 4;
- uuid_list[0].uu.uuid16 = UUID_SERVCLASS_HF_HANDSFREE;
- }
- /* HFP acceptor; get features */
- else if (service & BTA_HFP_SERVICE_MASK && p_scb->role == BTA_AG_ACP)
- {
- attr_list[0] = ATTR_ID_SERVICE_CLASS_ID_LIST;
- attr_list[1] = ATTR_ID_BT_PROFILE_DESC_LIST;
- attr_list[2] = ATTR_ID_SUPPORTED_FEATURES;
- num_attr = 3;
- uuid_list[0].uu.uuid16 = UUID_SERVCLASS_HF_HANDSFREE;
- }
- /* HSP initiator; get proto list */
- else if (service & BTA_HSP_SERVICE_MASK && p_scb->role == BTA_AG_INT)
- {
- attr_list[0] = ATTR_ID_SERVICE_CLASS_ID_LIST;
- attr_list[1] = ATTR_ID_PROTOCOL_DESC_LIST;
- attr_list[2] = ATTR_ID_BT_PROFILE_DESC_LIST;
- attr_list[3] = ATTR_ID_REMOTE_AUDIO_VOLUME_CONTROL;
- num_attr = 4;
+ /* HFP initiator; get proto list and features */
+ if (service & BTA_HFP_SERVICE_MASK && p_scb->role == BTA_AG_INT) {
+ attr_list[0] = ATTR_ID_SERVICE_CLASS_ID_LIST;
+ attr_list[1] = ATTR_ID_PROTOCOL_DESC_LIST;
+ attr_list[2] = ATTR_ID_BT_PROFILE_DESC_LIST;
+ attr_list[3] = ATTR_ID_SUPPORTED_FEATURES;
+ num_attr = 4;
+ uuid_list[0].uu.uuid16 = UUID_SERVCLASS_HF_HANDSFREE;
+ }
+ /* HFP acceptor; get features */
+ else if (service & BTA_HFP_SERVICE_MASK && p_scb->role == BTA_AG_ACP) {
+ attr_list[0] = ATTR_ID_SERVICE_CLASS_ID_LIST;
+ attr_list[1] = ATTR_ID_BT_PROFILE_DESC_LIST;
+ attr_list[2] = ATTR_ID_SUPPORTED_FEATURES;
+ num_attr = 3;
+ uuid_list[0].uu.uuid16 = UUID_SERVCLASS_HF_HANDSFREE;
+ }
+ /* HSP initiator; get proto list */
+ else if (service & BTA_HSP_SERVICE_MASK && p_scb->role == BTA_AG_INT) {
+ attr_list[0] = ATTR_ID_SERVICE_CLASS_ID_LIST;
+ attr_list[1] = ATTR_ID_PROTOCOL_DESC_LIST;
+ attr_list[2] = ATTR_ID_BT_PROFILE_DESC_LIST;
+ attr_list[3] = ATTR_ID_REMOTE_AUDIO_VOLUME_CONTROL;
+ num_attr = 4;
- uuid_list[0].uu.uuid16 = UUID_SERVCLASS_HEADSET; /* Legacy from HSP v1.0 */
- if (p_scb->hsp_version >= HSP_VERSION_1_2)
- {
- uuid_list[1].uu.uuid16 = UUID_SERVCLASS_HEADSET_HS;
- num_uuid = 2;
- }
+ uuid_list[0].uu.uuid16 = UUID_SERVCLASS_HEADSET; /* Legacy from HSP v1.0 */
+ if (p_scb->hsp_version >= HSP_VERSION_1_2) {
+ uuid_list[1].uu.uuid16 = UUID_SERVCLASS_HEADSET_HS;
+ num_uuid = 2;
}
- /* HSP acceptor; no discovery */
- else
- {
- return;
- }
+ }
+ /* HSP acceptor; no discovery */
+ else {
+ return;
+ }
- /* allocate buffer for sdp database */
- p_scb->p_disc_db = (tSDP_DISCOVERY_DB *)osi_malloc(BTA_AG_DISC_BUF_SIZE);
- /* set up service discovery database; attr happens to be attr_list len */
- uuid_list[0].len = LEN_UUID_16;
- uuid_list[1].len = LEN_UUID_16;
- db_inited = SDP_InitDiscoveryDb(p_scb->p_disc_db, BTA_AG_DISC_BUF_SIZE,
- num_uuid, uuid_list, num_attr, attr_list);
+ /* allocate buffer for sdp database */
+ p_scb->p_disc_db = (tSDP_DISCOVERY_DB*)osi_malloc(BTA_AG_DISC_BUF_SIZE);
+ /* set up service discovery database; attr happens to be attr_list len */
+ uuid_list[0].len = LEN_UUID_16;
+ uuid_list[1].len = LEN_UUID_16;
+ db_inited = SDP_InitDiscoveryDb(p_scb->p_disc_db, BTA_AG_DISC_BUF_SIZE,
+ num_uuid, uuid_list, num_attr, attr_list);
- if(db_inited)
- {
- /*Service discovery not initiated */
- db_inited = SDP_ServiceSearchAttributeRequest(p_scb->peer_addr, p_scb->p_disc_db,
- bta_ag_sdp_cback_tbl[bta_ag_scb_to_idx(p_scb) - 1]);
- }
+ if (db_inited) {
+ /*Service discovery not initiated */
+ db_inited = SDP_ServiceSearchAttributeRequest(
+ p_scb->peer_addr, p_scb->p_disc_db,
+ bta_ag_sdp_cback_tbl[bta_ag_scb_to_idx(p_scb) - 1]);
+ }
- if(!db_inited)
- {
- /*free discover db */
- bta_ag_free_db(p_scb, NULL);
- /* sent failed event */
- bta_ag_sm_execute(p_scb, BTA_AG_DISC_FAIL_EVT, NULL);
- }
-
+ if (!db_inited) {
+ /*free discover db */
+ bta_ag_free_db(p_scb, NULL);
+ /* sent failed event */
+ bta_ag_sm_execute(p_scb, BTA_AG_DISC_FAIL_EVT, NULL);
+ }
}
/*******************************************************************************
@@ -488,8 +442,6 @@
* Returns void
*
******************************************************************************/
-void bta_ag_free_db(tBTA_AG_SCB *p_scb,
- UNUSED_ATTR tBTA_AG_DATA *p_data)
-{
- osi_free_and_reset((void **)&p_scb->p_disc_db);
+void bta_ag_free_db(tBTA_AG_SCB* p_scb, UNUSED_ATTR tBTA_AG_DATA* p_data) {
+ osi_free_and_reset((void**)&p_scb->p_disc_db);
}
diff --git a/bta/ar/bta_ar.cc b/bta/ar/bta_ar.cc
index 488ec39..c3ef92a 100644
--- a/bta/ar/bta_ar.cc
+++ b/bta/ar/bta_ar.cc
@@ -27,9 +27,8 @@
#include "bta_ar_api.h"
#include "bta_ar_int.h"
-
/* AV control block */
-tBTA_AR_CB bta_ar_cb;
+tBTA_AR_CB bta_ar_cb;
/*******************************************************************************
*
@@ -40,19 +39,15 @@
* Returns void
*
******************************************************************************/
-static uint8_t bta_ar_id(tBTA_SYS_ID sys_id)
-{
- uint8_t mask = 0;
- if (sys_id == BTA_ID_AV)
- {
- mask = BTA_AR_AV_MASK;
- }
- else if (sys_id == BTA_ID_AVK)
- {
- mask = BTA_AR_AVK_MASK;
- }
+static uint8_t bta_ar_id(tBTA_SYS_ID sys_id) {
+ uint8_t mask = 0;
+ if (sys_id == BTA_ID_AV) {
+ mask = BTA_AR_AV_MASK;
+ } else if (sys_id == BTA_ID_AVK) {
+ mask = BTA_AR_AVK_MASK;
+ }
- return mask;
+ return mask;
}
/*******************************************************************************
@@ -64,10 +59,9 @@
* Returns void
*
******************************************************************************/
-void bta_ar_init(void)
-{
- /* initialize control block */
- memset(&bta_ar_cb, 0, sizeof(tBTA_AR_CB));
+void bta_ar_init(void) {
+ /* initialize control block */
+ memset(&bta_ar_cb, 0, sizeof(tBTA_AR_CB));
}
/*******************************************************************************
@@ -79,13 +73,13 @@
* Returns void
*
******************************************************************************/
-static void bta_ar_avdt_cback(uint8_t handle, BD_ADDR bd_addr, uint8_t event, tAVDT_CTRL *p_data)
-{
- /* route the AVDT registration callback to av or avk */
- if (bta_ar_cb.p_av_conn_cback)
- (*bta_ar_cb.p_av_conn_cback)(handle, bd_addr, event, p_data);
- if (bta_ar_cb.p_avk_conn_cback)
- (*bta_ar_cb.p_avk_conn_cback)(handle, bd_addr, event, p_data);
+static void bta_ar_avdt_cback(uint8_t handle, BD_ADDR bd_addr, uint8_t event,
+ tAVDT_CTRL* p_data) {
+ /* route the AVDT registration callback to av or avk */
+ if (bta_ar_cb.p_av_conn_cback)
+ (*bta_ar_cb.p_av_conn_cback)(handle, bd_addr, event, p_data);
+ if (bta_ar_cb.p_avk_conn_cback)
+ (*bta_ar_cb.p_avk_conn_cback)(handle, bd_addr, event, p_data);
}
/*******************************************************************************
@@ -97,35 +91,30 @@
* Returns void
*
******************************************************************************/
-void bta_ar_reg_avdt(tAVDT_REG *p_reg, tAVDT_CTRL_CBACK *p_cback, tBTA_SYS_ID sys_id)
-{
- uint8_t mask = 0;
+void bta_ar_reg_avdt(tAVDT_REG* p_reg, tAVDT_CTRL_CBACK* p_cback,
+ tBTA_SYS_ID sys_id) {
+ uint8_t mask = 0;
- if (sys_id == BTA_ID_AV)
- {
- bta_ar_cb.p_av_conn_cback = p_cback;
- mask = BTA_AR_AV_MASK;
- }
- else if (sys_id == BTA_ID_AVK)
- {
- bta_ar_cb.p_avk_conn_cback = p_cback;
- mask = BTA_AR_AVK_MASK;
- }
+ if (sys_id == BTA_ID_AV) {
+ bta_ar_cb.p_av_conn_cback = p_cback;
+ mask = BTA_AR_AV_MASK;
+ } else if (sys_id == BTA_ID_AVK) {
+ bta_ar_cb.p_avk_conn_cback = p_cback;
+ mask = BTA_AR_AVK_MASK;
+ }
#if (BTA_AR_DEBUG == TRUE)
- else
- {
- APPL_TRACE_ERROR("bta_ar_reg_avdt: the registration is from wrong sys_id:%d", sys_id);
- }
+ else {
+ APPL_TRACE_ERROR(
+ "bta_ar_reg_avdt: the registration is from wrong sys_id:%d", sys_id);
+ }
#endif
- if (mask)
- {
- if (bta_ar_cb.avdt_registered == 0)
- {
- AVDT_Register(p_reg, bta_ar_avdt_cback);
- }
- bta_ar_cb.avdt_registered |= mask;
+ if (mask) {
+ if (bta_ar_cb.avdt_registered == 0) {
+ AVDT_Register(p_reg, bta_ar_avdt_cback);
}
+ bta_ar_cb.avdt_registered |= mask;
+ }
}
/*******************************************************************************
@@ -137,31 +126,27 @@
* Returns void
*
******************************************************************************/
-void bta_ar_dereg_avdt(tBTA_SYS_ID sys_id)
-{
- uint8_t mask = 0;
+void bta_ar_dereg_avdt(tBTA_SYS_ID sys_id) {
+ uint8_t mask = 0;
- if (sys_id == BTA_ID_AV)
- {
- bta_ar_cb.p_av_conn_cback = NULL;
- mask = BTA_AR_AV_MASK;
- }
- else if (sys_id == BTA_ID_AVK)
- {
- bta_ar_cb.p_avk_conn_cback = NULL;
- mask = BTA_AR_AVK_MASK;
- }
- bta_ar_cb.avdt_registered &= ~mask;
+ if (sys_id == BTA_ID_AV) {
+ bta_ar_cb.p_av_conn_cback = NULL;
+ mask = BTA_AR_AV_MASK;
+ } else if (sys_id == BTA_ID_AVK) {
+ bta_ar_cb.p_avk_conn_cback = NULL;
+ mask = BTA_AR_AVK_MASK;
+ }
+ bta_ar_cb.avdt_registered &= ~mask;
- if (bta_ar_cb.avdt_registered == 0)
- AVDT_Deregister();
+ if (bta_ar_cb.avdt_registered == 0) AVDT_Deregister();
}
/*******************************************************************************
*
* Function bta_ar_avdt_conn
*
- * Description This function is called to let ar know that some AVDTP profile
+ * Description This function is called to let ar know that some AVDTP
+ *profile
* is connected for this sys_id.
* If the other sys modules started a timer for PENDING_EVT,
* the timer can be stopped now.
@@ -169,25 +154,19 @@
* Returns void
*
******************************************************************************/
-void bta_ar_avdt_conn(tBTA_SYS_ID sys_id, BD_ADDR bd_addr)
-{
- uint8_t event = BTA_AR_AVDT_CONN_EVT;
- tAVDT_CTRL data;
+void bta_ar_avdt_conn(tBTA_SYS_ID sys_id, BD_ADDR bd_addr) {
+ uint8_t event = BTA_AR_AVDT_CONN_EVT;
+ tAVDT_CTRL data;
- if (sys_id == BTA_ID_AV)
- {
- if (bta_ar_cb.p_avk_conn_cback)
- {
- (*bta_ar_cb.p_avk_conn_cback)(0, bd_addr, event, &data);
- }
+ if (sys_id == BTA_ID_AV) {
+ if (bta_ar_cb.p_avk_conn_cback) {
+ (*bta_ar_cb.p_avk_conn_cback)(0, bd_addr, event, &data);
}
- else if (sys_id == BTA_ID_AVK)
- {
- if (bta_ar_cb.p_av_conn_cback)
- {
- (*bta_ar_cb.p_av_conn_cback)(0, bd_addr, event, &data);
- }
+ } else if (sys_id == BTA_ID_AVK) {
+ if (bta_ar_cb.p_av_conn_cback) {
+ (*bta_ar_cb.p_av_conn_cback)(0, bd_addr, event, &data);
}
+ }
}
/*******************************************************************************
@@ -199,18 +178,16 @@
* Returns void
*
******************************************************************************/
-void bta_ar_reg_avct(uint16_t mtu, uint16_t mtu_br, uint8_t sec_mask, tBTA_SYS_ID sys_id)
-{
- uint8_t mask = bta_ar_id (sys_id);
+void bta_ar_reg_avct(uint16_t mtu, uint16_t mtu_br, uint8_t sec_mask,
+ tBTA_SYS_ID sys_id) {
+ uint8_t mask = bta_ar_id(sys_id);
- if (mask)
- {
- if (bta_ar_cb.avct_registered == 0)
- {
- AVCT_Register(mtu, mtu_br, sec_mask);
- }
- bta_ar_cb.avct_registered |= mask;
+ if (mask) {
+ if (bta_ar_cb.avct_registered == 0) {
+ AVCT_Register(mtu, mtu_br, sec_mask);
}
+ bta_ar_cb.avct_registered |= mask;
+ }
}
/*******************************************************************************
@@ -222,14 +199,12 @@
* Returns void
*
******************************************************************************/
-void bta_ar_dereg_avct(tBTA_SYS_ID sys_id)
-{
- uint8_t mask = bta_ar_id (sys_id);
+void bta_ar_dereg_avct(tBTA_SYS_ID sys_id) {
+ uint8_t mask = bta_ar_id(sys_id);
- bta_ar_cb.avct_registered &= ~mask;
+ bta_ar_cb.avct_registered &= ~mask;
- if (bta_ar_cb.avct_registered == 0)
- AVCT_Deregister();
+ if (bta_ar_cb.avct_registered == 0) AVCT_Deregister();
}
/******************************************************************************
@@ -241,104 +216,87 @@
* Returns void
*
*****************************************************************************/
-void bta_ar_reg_avrc(uint16_t service_uuid, const char *service_name,
- const char *provider_name, uint16_t categories,
+void bta_ar_reg_avrc(uint16_t service_uuid, const char* service_name,
+ const char* provider_name, uint16_t categories,
tBTA_SYS_ID sys_id, bool browse_supported,
- uint16_t profile_version)
-{
- uint8_t mask = bta_ar_id (sys_id);
- uint8_t temp[8], *p;
+ uint16_t profile_version) {
+ uint8_t mask = bta_ar_id(sys_id);
+ uint8_t temp[8], *p;
- if (!mask || !categories)
- return;
+ if (!mask || !categories) return;
- if (service_uuid == UUID_SERVCLASS_AV_REM_CTRL_TARGET)
- {
- if (bta_ar_cb.sdp_tg_handle == 0)
- {
- bta_ar_cb.tg_registered = mask;
- bta_ar_cb.sdp_tg_handle = SDP_CreateRecord();
- AVRC_AddRecord(service_uuid, service_name, provider_name, categories,
- bta_ar_cb.sdp_tg_handle, browse_supported, profile_version);
- bta_sys_add_uuid(service_uuid);
- }
- /* only one TG is allowed (first-come, first-served).
- * If sdp_tg_handle is non-0, ignore this request */
+ if (service_uuid == UUID_SERVCLASS_AV_REM_CTRL_TARGET) {
+ if (bta_ar_cb.sdp_tg_handle == 0) {
+ bta_ar_cb.tg_registered = mask;
+ bta_ar_cb.sdp_tg_handle = SDP_CreateRecord();
+ AVRC_AddRecord(service_uuid, service_name, provider_name, categories,
+ bta_ar_cb.sdp_tg_handle, browse_supported,
+ profile_version);
+ bta_sys_add_uuid(service_uuid);
}
- else if ((service_uuid == UUID_SERVCLASS_AV_REMOTE_CONTROL)||
- (service_uuid == UUID_SERVCLASS_AV_REM_CTRL_CONTROL))
- {
- bta_ar_cb.ct_categories [mask - 1] = categories;
- categories = bta_ar_cb.ct_categories[0]|bta_ar_cb.ct_categories[1];
- if (bta_ar_cb.sdp_ct_handle == 0)
- {
- bta_ar_cb.sdp_ct_handle = SDP_CreateRecord();
- AVRC_AddRecord(service_uuid, service_name, provider_name, categories,
- bta_ar_cb.sdp_ct_handle, browse_supported, profile_version);
- bta_sys_add_uuid(service_uuid);
- }
- else
- {
- /* multiple CTs are allowed.
- * Change supported categories on the second one */
- p = temp;
- UINT16_TO_BE_STREAM(p, categories);
- SDP_AddAttribute(bta_ar_cb.sdp_ct_handle, ATTR_ID_SUPPORTED_FEATURES, UINT_DESC_TYPE,
- (uint32_t)2, (uint8_t*)temp);
- }
+ /* only one TG is allowed (first-come, first-served).
+ * If sdp_tg_handle is non-0, ignore this request */
+ } else if ((service_uuid == UUID_SERVCLASS_AV_REMOTE_CONTROL) ||
+ (service_uuid == UUID_SERVCLASS_AV_REM_CTRL_CONTROL)) {
+ bta_ar_cb.ct_categories[mask - 1] = categories;
+ categories = bta_ar_cb.ct_categories[0] | bta_ar_cb.ct_categories[1];
+ if (bta_ar_cb.sdp_ct_handle == 0) {
+ bta_ar_cb.sdp_ct_handle = SDP_CreateRecord();
+ AVRC_AddRecord(service_uuid, service_name, provider_name, categories,
+ bta_ar_cb.sdp_ct_handle, browse_supported,
+ profile_version);
+ bta_sys_add_uuid(service_uuid);
+ } else {
+ /* multiple CTs are allowed.
+ * Change supported categories on the second one */
+ p = temp;
+ UINT16_TO_BE_STREAM(p, categories);
+ SDP_AddAttribute(bta_ar_cb.sdp_ct_handle, ATTR_ID_SUPPORTED_FEATURES,
+ UINT_DESC_TYPE, (uint32_t)2, (uint8_t*)temp);
}
+ }
}
/******************************************************************************
*
* Function bta_ar_dereg_avrc
*
- * Description This function is called to de-register/delete an SDP record for AVRCP.
+ * Description This function is called to de-register/delete an SDP record
+ *for AVRCP.
*
* Returns void
*
*****************************************************************************/
-void bta_ar_dereg_avrc(uint16_t service_uuid, tBTA_SYS_ID sys_id)
-{
- uint8_t mask = bta_ar_id (sys_id);
- uint16_t categories = 0;
- uint8_t temp[8], *p;
+void bta_ar_dereg_avrc(uint16_t service_uuid, tBTA_SYS_ID sys_id) {
+ uint8_t mask = bta_ar_id(sys_id);
+ uint16_t categories = 0;
+ uint8_t temp[8], *p;
- if (!mask)
- return;
+ if (!mask) return;
- if (service_uuid == UUID_SERVCLASS_AV_REM_CTRL_TARGET)
- {
- if (bta_ar_cb.sdp_tg_handle && mask == bta_ar_cb.tg_registered)
- {
- bta_ar_cb.tg_registered = 0;
- SDP_DeleteRecord(bta_ar_cb.sdp_tg_handle);
- bta_ar_cb.sdp_tg_handle = 0;
- bta_sys_remove_uuid(service_uuid);
- }
+ if (service_uuid == UUID_SERVCLASS_AV_REM_CTRL_TARGET) {
+ if (bta_ar_cb.sdp_tg_handle && mask == bta_ar_cb.tg_registered) {
+ bta_ar_cb.tg_registered = 0;
+ SDP_DeleteRecord(bta_ar_cb.sdp_tg_handle);
+ bta_ar_cb.sdp_tg_handle = 0;
+ bta_sys_remove_uuid(service_uuid);
}
- else if (service_uuid == UUID_SERVCLASS_AV_REMOTE_CONTROL)
- {
- if (bta_ar_cb.sdp_ct_handle)
- {
- bta_ar_cb.ct_categories [mask - 1] = 0;
- categories = bta_ar_cb.ct_categories[0]|bta_ar_cb.ct_categories[1];
- if (!categories)
- {
- /* no CT is still registered - cleaup */
- SDP_DeleteRecord(bta_ar_cb.sdp_ct_handle);
- bta_ar_cb.sdp_ct_handle = 0;
- bta_sys_remove_uuid(service_uuid);
- }
- else
- {
- /* change supported categories to the remaning one */
- p = temp;
- UINT16_TO_BE_STREAM(p, categories);
- SDP_AddAttribute(bta_ar_cb.sdp_ct_handle, ATTR_ID_SUPPORTED_FEATURES, UINT_DESC_TYPE,
- (uint32_t)2, (uint8_t*)temp);
- }
- }
+ } else if (service_uuid == UUID_SERVCLASS_AV_REMOTE_CONTROL) {
+ if (bta_ar_cb.sdp_ct_handle) {
+ bta_ar_cb.ct_categories[mask - 1] = 0;
+ categories = bta_ar_cb.ct_categories[0] | bta_ar_cb.ct_categories[1];
+ if (!categories) {
+ /* no CT is still registered - cleaup */
+ SDP_DeleteRecord(bta_ar_cb.sdp_ct_handle);
+ bta_ar_cb.sdp_ct_handle = 0;
+ bta_sys_remove_uuid(service_uuid);
+ } else {
+ /* change supported categories to the remaning one */
+ p = temp;
+ UINT16_TO_BE_STREAM(p, categories);
+ SDP_AddAttribute(bta_ar_cb.sdp_ct_handle, ATTR_ID_SUPPORTED_FEATURES,
+ UINT_DESC_TYPE, (uint32_t)2, (uint8_t*)temp);
+ }
}
-
+ }
}
diff --git a/bta/ar/bta_ar_int.h b/bta/ar/bta_ar_int.h
index 1cab26f..679cd03 100644
--- a/bta/ar/bta_ar_int.h
+++ b/bta/ar/bta_ar_int.h
@@ -32,24 +32,24 @@
#endif
#ifndef BTA_AR_DEBUG
-#define BTA_AR_DEBUG TRUE
+#define BTA_AR_DEBUG TRUE
#endif
-#define BTA_AR_AV_MASK 0x01
-#define BTA_AR_AVK_MASK 0x02
+#define BTA_AR_AV_MASK 0x01
+#define BTA_AR_AVK_MASK 0x02
/* data associated with BTA_AR */
-typedef struct
-{
- tAVDT_CTRL_CBACK *p_av_conn_cback; /* av connection callback function */
- tAVDT_CTRL_CBACK *p_avk_conn_cback; /* avk connection callback function */
- uint8_t avdt_registered;
- uint8_t avct_registered;
- uint32_t sdp_tg_handle;
- uint32_t sdp_ct_handle;
- uint16_t ct_categories[2];
- uint8_t tg_registered;
- tBTA_AV_HNDL hndl; /* Handle associated with the stream that rejected the connection. */
+typedef struct {
+ tAVDT_CTRL_CBACK* p_av_conn_cback; /* av connection callback function */
+ tAVDT_CTRL_CBACK* p_avk_conn_cback; /* avk connection callback function */
+ uint8_t avdt_registered;
+ uint8_t avct_registered;
+ uint32_t sdp_tg_handle;
+ uint32_t sdp_ct_handle;
+ uint16_t ct_categories[2];
+ uint8_t tg_registered;
+ tBTA_AV_HNDL hndl; /* Handle associated with the stream that rejected the
+ connection. */
} tBTA_AR_CB;
/*****************************************************************************
diff --git a/bta/av/bta_av_aact.cc b/bta/av/bta_av_aact.cc
index 38aea6e..1a2a239 100644
--- a/bta/av/bta_av_aact.cc
+++ b/bta/av/bta_av_aact.cc
@@ -30,10 +30,10 @@
#include <string.h>
#include "avdt_api.h"
-#include "bta_av_int.h"
#include "bt_utils.h"
-#include "l2cdefs.h"
+#include "bta_av_int.h"
#include "l2c_api.h"
+#include "l2cdefs.h"
#include "osi/include/osi.h"
#include "osi/include/properties.h"
#include "utl.h"
@@ -49,54 +49,47 @@
/* the delay time in milliseconds to start service discovery on AVRCP */
#ifndef BTA_AV_RC_DISC_TIME_VAL
-#define BTA_AV_RC_DISC_TIME_VAL 3500
+#define BTA_AV_RC_DISC_TIME_VAL 3500
#endif
-/* the timer in milliseconds to guard against link busy and AVDT_CloseReq failed to be sent */
+/* the timer in milliseconds to guard against link busy and AVDT_CloseReq failed
+ * to be sent */
#ifndef BTA_AV_CLOSE_REQ_TIME_VAL
-#define BTA_AV_CLOSE_REQ_TIME_VAL 4000
+#define BTA_AV_CLOSE_REQ_TIME_VAL 4000
#endif
-/* number to retry on reconfigure failure - some headsets requirs this number to be more than 1 */
+/* number to retry on reconfigure failure - some headsets requirs this number to
+ * be more than 1 */
#ifndef BTA_AV_RECONFIG_RETRY
-#define BTA_AV_RECONFIG_RETRY 6
+#define BTA_AV_RECONFIG_RETRY 6
#endif
/* ACL quota we are letting FW use for A2DP Offload Tx. */
-#define BTA_AV_A2DP_OFFLOAD_XMIT_QUOTA 4
+#define BTA_AV_A2DP_OFFLOAD_XMIT_QUOTA 4
-static void bta_av_st_rc_timer(tBTA_AV_SCB *p_scb, UNUSED_ATTR tBTA_AV_DATA *p_data);
+static void bta_av_st_rc_timer(tBTA_AV_SCB* p_scb,
+ UNUSED_ATTR tBTA_AV_DATA* p_data);
/* state machine states */
-enum
-{
- BTA_AV_INIT_SST,
- BTA_AV_INCOMING_SST,
- BTA_AV_OPENING_SST,
- BTA_AV_OPEN_SST,
- BTA_AV_RCFG_SST,
- BTA_AV_CLOSING_SST
+enum {
+ BTA_AV_INIT_SST,
+ BTA_AV_INCOMING_SST,
+ BTA_AV_OPENING_SST,
+ BTA_AV_OPEN_SST,
+ BTA_AV_RCFG_SST,
+ BTA_AV_CLOSING_SST
};
-
/* the call out functions for audio stream */
-const tBTA_AV_CO_FUNCTS bta_av_a2dp_cos =
-{
- bta_av_co_audio_init,
- bta_av_co_audio_disc_res,
- bta_av_co_audio_getconfig,
- bta_av_co_audio_setconfig,
- bta_av_co_audio_open,
- bta_av_co_audio_close,
- bta_av_co_audio_start,
- bta_av_co_audio_stop,
- bta_av_co_audio_src_data_path,
- bta_av_co_audio_delay
-};
+const tBTA_AV_CO_FUNCTS bta_av_a2dp_cos = {
+ bta_av_co_audio_init, bta_av_co_audio_disc_res,
+ bta_av_co_audio_getconfig, bta_av_co_audio_setconfig,
+ bta_av_co_audio_open, bta_av_co_audio_close,
+ bta_av_co_audio_start, bta_av_co_audio_stop,
+ bta_av_co_audio_src_data_path, bta_av_co_audio_delay};
/* ssm action functions for audio stream */
-const tBTA_AV_SACT bta_av_a2dp_action[] =
-{
+const tBTA_AV_SACT bta_av_a2dp_action[] = {
bta_av_do_disc_a2dp, /* BTA_AV_DO_DISC */
bta_av_cleanup, /* BTA_AV_CLEANUP */
bta_av_free_sdb, /* BTA_AV_FREE_SDB */
@@ -147,94 +140,102 @@
bta_av_open_at_inc, /* BTA_AV_OPEN_AT_INC */
bta_av_offload_req, /* BTA_AV_OFFLOAD_REQ */
bta_av_offload_rsp, /* BTA_AV_OFFLOAD_RSP */
- NULL
-};
+ NULL};
/* these tables translate AVDT events to SSM events */
static const uint16_t bta_av_stream_evt_ok[] = {
- BTA_AV_STR_DISC_OK_EVT, /* AVDT_DISCOVER_CFM_EVT */
- BTA_AV_STR_GETCAP_OK_EVT, /* AVDT_GETCAP_CFM_EVT */
- BTA_AV_STR_OPEN_OK_EVT, /* AVDT_OPEN_CFM_EVT */
- BTA_AV_STR_OPEN_OK_EVT, /* AVDT_OPEN_IND_EVT */
- BTA_AV_STR_CONFIG_IND_EVT, /* AVDT_CONFIG_IND_EVT */
- BTA_AV_STR_START_OK_EVT, /* AVDT_START_CFM_EVT */
- BTA_AV_STR_START_OK_EVT, /* AVDT_START_IND_EVT */
- BTA_AV_STR_SUSPEND_CFM_EVT, /* AVDT_SUSPEND_CFM_EVT */
- BTA_AV_STR_SUSPEND_CFM_EVT, /* AVDT_SUSPEND_IND_EVT */
- BTA_AV_STR_CLOSE_EVT, /* AVDT_CLOSE_CFM_EVT */
- BTA_AV_STR_CLOSE_EVT, /* AVDT_CLOSE_IND_EVT */
- BTA_AV_STR_RECONFIG_CFM_EVT, /* AVDT_RECONFIG_CFM_EVT */
- 0, /* AVDT_RECONFIG_IND_EVT */
- BTA_AV_STR_SECURITY_CFM_EVT, /* AVDT_SECURITY_CFM_EVT */
- BTA_AV_STR_SECURITY_IND_EVT, /* AVDT_SECURITY_IND_EVT */
- BTA_AV_STR_WRITE_CFM_EVT, /* AVDT_WRITE_CFM_EVT */
- BTA_AV_AVDT_CONNECT_EVT, /* AVDT_CONNECT_IND_EVT */
- BTA_AV_AVDT_DISCONNECT_EVT, /* AVDT_DISCONNECT_IND_EVT */
+ BTA_AV_STR_DISC_OK_EVT, /* AVDT_DISCOVER_CFM_EVT */
+ BTA_AV_STR_GETCAP_OK_EVT, /* AVDT_GETCAP_CFM_EVT */
+ BTA_AV_STR_OPEN_OK_EVT, /* AVDT_OPEN_CFM_EVT */
+ BTA_AV_STR_OPEN_OK_EVT, /* AVDT_OPEN_IND_EVT */
+ BTA_AV_STR_CONFIG_IND_EVT, /* AVDT_CONFIG_IND_EVT */
+ BTA_AV_STR_START_OK_EVT, /* AVDT_START_CFM_EVT */
+ BTA_AV_STR_START_OK_EVT, /* AVDT_START_IND_EVT */
+ BTA_AV_STR_SUSPEND_CFM_EVT, /* AVDT_SUSPEND_CFM_EVT */
+ BTA_AV_STR_SUSPEND_CFM_EVT, /* AVDT_SUSPEND_IND_EVT */
+ BTA_AV_STR_CLOSE_EVT, /* AVDT_CLOSE_CFM_EVT */
+ BTA_AV_STR_CLOSE_EVT, /* AVDT_CLOSE_IND_EVT */
+ BTA_AV_STR_RECONFIG_CFM_EVT, /* AVDT_RECONFIG_CFM_EVT */
+ 0, /* AVDT_RECONFIG_IND_EVT */
+ BTA_AV_STR_SECURITY_CFM_EVT, /* AVDT_SECURITY_CFM_EVT */
+ BTA_AV_STR_SECURITY_IND_EVT, /* AVDT_SECURITY_IND_EVT */
+ BTA_AV_STR_WRITE_CFM_EVT, /* AVDT_WRITE_CFM_EVT */
+ BTA_AV_AVDT_CONNECT_EVT, /* AVDT_CONNECT_IND_EVT */
+ BTA_AV_AVDT_DISCONNECT_EVT, /* AVDT_DISCONNECT_IND_EVT */
#if (AVDT_REPORTING == TRUE)
- BTA_AV_AVDT_RPT_CONN_EVT, /* AVDT_REPORT_CONN_EVT */
- BTA_AV_AVDT_RPT_CONN_EVT, /* AVDT_REPORT_DISCONN_EVT */
+ BTA_AV_AVDT_RPT_CONN_EVT, /* AVDT_REPORT_CONN_EVT */
+ BTA_AV_AVDT_RPT_CONN_EVT, /* AVDT_REPORT_DISCONN_EVT */
#endif
- BTA_AV_AVDT_DELAY_RPT_EVT, /* AVDT_DELAY_REPORT_EVT */
- 0 /* AVDT_DELAY_REPORT_CFM_EVT */
+ BTA_AV_AVDT_DELAY_RPT_EVT, /* AVDT_DELAY_REPORT_EVT */
+ 0 /* AVDT_DELAY_REPORT_CFM_EVT */
};
static const uint16_t bta_av_stream_evt_fail[] = {
- BTA_AV_STR_DISC_FAIL_EVT, /* AVDT_DISCOVER_CFM_EVT */
- BTA_AV_STR_GETCAP_FAIL_EVT, /* AVDT_GETCAP_CFM_EVT */
- BTA_AV_STR_OPEN_FAIL_EVT, /* AVDT_OPEN_CFM_EVT */
- BTA_AV_STR_OPEN_OK_EVT, /* AVDT_OPEN_IND_EVT */
- BTA_AV_STR_CONFIG_IND_EVT, /* AVDT_CONFIG_IND_EVT */
- BTA_AV_STR_START_FAIL_EVT, /* AVDT_START_CFM_EVT */
- BTA_AV_STR_START_OK_EVT, /* AVDT_START_IND_EVT */
- BTA_AV_STR_SUSPEND_CFM_EVT, /* AVDT_SUSPEND_CFM_EVT */
- BTA_AV_STR_SUSPEND_CFM_EVT, /* AVDT_SUSPEND_IND_EVT */
- BTA_AV_STR_CLOSE_EVT, /* AVDT_CLOSE_CFM_EVT */
- BTA_AV_STR_CLOSE_EVT, /* AVDT_CLOSE_IND_EVT */
- BTA_AV_STR_RECONFIG_CFM_EVT, /* AVDT_RECONFIG_CFM_EVT */
- 0, /* AVDT_RECONFIG_IND_EVT */
- BTA_AV_STR_SECURITY_CFM_EVT, /* AVDT_SECURITY_CFM_EVT */
- BTA_AV_STR_SECURITY_IND_EVT, /* AVDT_SECURITY_IND_EVT */
- BTA_AV_STR_WRITE_CFM_EVT, /* AVDT_WRITE_CFM_EVT */
- BTA_AV_AVDT_CONNECT_EVT, /* AVDT_CONNECT_IND_EVT */
- BTA_AV_AVDT_DISCONNECT_EVT, /* AVDT_DISCONNECT_IND_EVT */
+ BTA_AV_STR_DISC_FAIL_EVT, /* AVDT_DISCOVER_CFM_EVT */
+ BTA_AV_STR_GETCAP_FAIL_EVT, /* AVDT_GETCAP_CFM_EVT */
+ BTA_AV_STR_OPEN_FAIL_EVT, /* AVDT_OPEN_CFM_EVT */
+ BTA_AV_STR_OPEN_OK_EVT, /* AVDT_OPEN_IND_EVT */
+ BTA_AV_STR_CONFIG_IND_EVT, /* AVDT_CONFIG_IND_EVT */
+ BTA_AV_STR_START_FAIL_EVT, /* AVDT_START_CFM_EVT */
+ BTA_AV_STR_START_OK_EVT, /* AVDT_START_IND_EVT */
+ BTA_AV_STR_SUSPEND_CFM_EVT, /* AVDT_SUSPEND_CFM_EVT */
+ BTA_AV_STR_SUSPEND_CFM_EVT, /* AVDT_SUSPEND_IND_EVT */
+ BTA_AV_STR_CLOSE_EVT, /* AVDT_CLOSE_CFM_EVT */
+ BTA_AV_STR_CLOSE_EVT, /* AVDT_CLOSE_IND_EVT */
+ BTA_AV_STR_RECONFIG_CFM_EVT, /* AVDT_RECONFIG_CFM_EVT */
+ 0, /* AVDT_RECONFIG_IND_EVT */
+ BTA_AV_STR_SECURITY_CFM_EVT, /* AVDT_SECURITY_CFM_EVT */
+ BTA_AV_STR_SECURITY_IND_EVT, /* AVDT_SECURITY_IND_EVT */
+ BTA_AV_STR_WRITE_CFM_EVT, /* AVDT_WRITE_CFM_EVT */
+ BTA_AV_AVDT_CONNECT_EVT, /* AVDT_CONNECT_IND_EVT */
+ BTA_AV_AVDT_DISCONNECT_EVT, /* AVDT_DISCONNECT_IND_EVT */
#if (AVDT_REPORTING == TRUE)
- BTA_AV_AVDT_RPT_CONN_EVT, /* AVDT_REPORT_CONN_EVT */
- BTA_AV_AVDT_RPT_CONN_EVT, /* AVDT_REPORT_DISCONN_EVT */
+ BTA_AV_AVDT_RPT_CONN_EVT, /* AVDT_REPORT_CONN_EVT */
+ BTA_AV_AVDT_RPT_CONN_EVT, /* AVDT_REPORT_DISCONN_EVT */
#endif
- BTA_AV_AVDT_DELAY_RPT_EVT, /* AVDT_DELAY_REPORT_EVT */
- 0 /* AVDT_DELAY_REPORT_CFM_EVT */
+ BTA_AV_AVDT_DELAY_RPT_EVT, /* AVDT_DELAY_REPORT_EVT */
+ 0 /* AVDT_DELAY_REPORT_CFM_EVT */
};
-static void bta_av_stream0_cback(uint8_t handle, BD_ADDR bd_addr, uint8_t event, tAVDT_CTRL *p_data);
-static void bta_av_stream1_cback(uint8_t handle, BD_ADDR bd_addr, uint8_t event, tAVDT_CTRL *p_data);
+static void bta_av_stream0_cback(uint8_t handle, BD_ADDR bd_addr, uint8_t event,
+ tAVDT_CTRL* p_data);
+static void bta_av_stream1_cback(uint8_t handle, BD_ADDR bd_addr, uint8_t event,
+ tAVDT_CTRL* p_data);
#if BTA_AV_NUM_STRS > 2
-static void bta_av_stream2_cback(uint8_t handle, BD_ADDR bd_addr, uint8_t event, tAVDT_CTRL *p_data);
+static void bta_av_stream2_cback(uint8_t handle, BD_ADDR bd_addr, uint8_t event,
+ tAVDT_CTRL* p_data);
#endif
#if BTA_AV_NUM_STRS > 3
-static void bta_av_stream3_cback(uint8_t handle, BD_ADDR bd_addr, uint8_t event, tAVDT_CTRL *p_data);
+static void bta_av_stream3_cback(uint8_t handle, BD_ADDR bd_addr, uint8_t event,
+ tAVDT_CTRL* p_data);
#endif
#if BTA_AV_NUM_STRS > 4
-static void bta_av_stream4_cback(uint8_t handle, BD_ADDR bd_addr, uint8_t event, tAVDT_CTRL *p_data);
+static void bta_av_stream4_cback(uint8_t handle, BD_ADDR bd_addr, uint8_t event,
+ tAVDT_CTRL* p_data);
#endif
#if BTA_AV_NUM_STRS > 5
-static void bta_av_stream5_cback(uint8_t handle, BD_ADDR bd_addr, uint8_t event, tAVDT_CTRL *p_data);
+static void bta_av_stream5_cback(uint8_t handle, BD_ADDR bd_addr, uint8_t event,
+ tAVDT_CTRL* p_data);
#endif
-/* the array of callback functions to receive events from AVDT control channel */
-tAVDT_CTRL_CBACK * const bta_av_dt_cback[] =
-{
- bta_av_stream0_cback
- ,bta_av_stream1_cback
+/* the array of callback functions to receive events from AVDT control channel
+ */
+tAVDT_CTRL_CBACK* const bta_av_dt_cback[] = {bta_av_stream0_cback,
+ bta_av_stream1_cback
#if BTA_AV_NUM_STRS > 2
- ,bta_av_stream2_cback
+ ,
+ bta_av_stream2_cback
#endif
#if BTA_AV_NUM_STRS > 3
- ,bta_av_stream3_cback
+ ,
+ bta_av_stream3_cback
#endif
#if BTA_AV_NUM_STRS > 4
- ,bta_av_stream4_cback
+ ,
+ bta_av_stream4_cback
#endif
#if BTA_AV_NUM_STRS > 5
- ,bta_av_stream5_cback
+ ,
+ bta_av_stream5_cback
#endif
};
/***********************************************
@@ -246,17 +247,16 @@
*
* Returns void
**********************************************/
-static uint8_t bta_av_get_scb_handle(tBTA_AV_SCB *p_scb, uint8_t local_sep)
-{
- for (int i = 0; i < A2DP_CODEC_SEP_INDEX_MAX; i++) {
- if ((p_scb->seps[i].tsep == local_sep) &&
- A2DP_CodecTypeEquals(p_scb->seps[i].codec_info,
- p_scb->cfg.codec_info)) {
- return (p_scb->seps[i].av_handle);
- }
+static uint8_t bta_av_get_scb_handle(tBTA_AV_SCB* p_scb, uint8_t local_sep) {
+ for (int i = 0; i < A2DP_CODEC_SEP_INDEX_MAX; i++) {
+ if ((p_scb->seps[i].tsep == local_sep) &&
+ A2DP_CodecTypeEquals(p_scb->seps[i].codec_info,
+ p_scb->cfg.codec_info)) {
+ return (p_scb->seps[i].av_handle);
}
- APPL_TRACE_DEBUG("%s: local sep_type %d not found", __func__, local_sep)
- return 0; /* return invalid handle */
+ }
+ APPL_TRACE_DEBUG("%s: local sep_type %d not found", __func__, local_sep)
+ return 0; /* return invalid handle */
}
/***********************************************
@@ -268,14 +268,13 @@
*
* Returns void
**********************************************/
-static uint8_t bta_av_get_scb_sep_type(tBTA_AV_SCB *p_scb, uint8_t tavdt_handle)
-{
- for (int i = 0; i < A2DP_CODEC_SEP_INDEX_MAX; i++) {
- if (p_scb->seps[i].av_handle == tavdt_handle)
- return (p_scb->seps[i].tsep);
- }
- APPL_TRACE_DEBUG("%s: handle %d not found", __func__, tavdt_handle)
- return AVDT_TSEP_INVALID;
+static uint8_t bta_av_get_scb_sep_type(tBTA_AV_SCB* p_scb,
+ uint8_t tavdt_handle) {
+ for (int i = 0; i < A2DP_CODEC_SEP_INDEX_MAX; i++) {
+ if (p_scb->seps[i].av_handle == tavdt_handle) return (p_scb->seps[i].tsep);
+ }
+ APPL_TRACE_DEBUG("%s: handle %d not found", __func__, tavdt_handle)
+ return AVDT_TSEP_INVALID;
}
/*******************************************************************************
@@ -288,21 +287,19 @@
* Returns void
*
******************************************************************************/
-static void bta_av_save_addr(tBTA_AV_SCB *p_scb, const BD_ADDR b)
-{
- APPL_TRACE_DEBUG("%s: r:%d, s:%d", __func__,
- p_scb->recfg_sup, p_scb->suspend_sup);
- if(bdcmp(p_scb->peer_addr, b) != 0)
- {
- APPL_TRACE_ERROR("%s: reset flags", __func__);
- /* a new addr, reset the supported flags */
- p_scb->recfg_sup = true;
- p_scb->suspend_sup = true;
- }
+static void bta_av_save_addr(tBTA_AV_SCB* p_scb, const BD_ADDR b) {
+ APPL_TRACE_DEBUG("%s: r:%d, s:%d", __func__, p_scb->recfg_sup,
+ p_scb->suspend_sup);
+ if (bdcmp(p_scb->peer_addr, b) != 0) {
+ APPL_TRACE_ERROR("%s: reset flags", __func__);
+ /* a new addr, reset the supported flags */
+ p_scb->recfg_sup = true;
+ p_scb->suspend_sup = true;
+ }
- /* do this copy anyway, just in case the first addr matches
- * the control block one by accident */
- bdcpy(p_scb->peer_addr, b);
+ /* do this copy anyway, just in case the first addr matches
+ * the control block one by accident */
+ bdcpy(p_scb->peer_addr, b);
}
/*******************************************************************************
@@ -315,16 +312,15 @@
* Returns void
*
******************************************************************************/
-static void notify_start_failed(tBTA_AV_SCB *p_scb)
-{
- tBTA_AV_START start;
- /* if start failed, clear role */
- p_scb->role &= ~BTA_AV_ROLE_START_INT;
- start.chnl = p_scb->chnl;
- start.status = BTA_AV_FAIL;
- start.initiator = true;
- start.hndl = p_scb->hndl;
- (*bta_av_cb.p_cback)(BTA_AV_START_EVT, (tBTA_AV *) &start);
+static void notify_start_failed(tBTA_AV_SCB* p_scb) {
+ tBTA_AV_START start;
+ /* if start failed, clear role */
+ p_scb->role &= ~BTA_AV_ROLE_START_INT;
+ start.chnl = p_scb->chnl;
+ start.status = BTA_AV_FAIL;
+ start.initiator = true;
+ start.hndl = p_scb->hndl;
+ (*bta_av_cb.p_cback)(BTA_AV_START_EVT, (tBTA_AV*)&start);
}
/*******************************************************************************
@@ -338,24 +334,21 @@
* Returns void
*
******************************************************************************/
-static void bta_av_st_rc_timer(tBTA_AV_SCB *p_scb,
- UNUSED_ATTR tBTA_AV_DATA *p_data)
-{
- APPL_TRACE_DEBUG("%s: rc_handle:%d, use_rc: %d", __func__,
- p_scb->rc_handle, p_scb->use_rc);
- /* for outgoing RC connection as INT/CT */
- if ((p_scb->rc_handle == BTA_AV_RC_HANDLE_NONE) &&
- /* (bta_av_cb.features & BTA_AV_FEAT_RCCT) && */
- (p_scb->use_rc == true || (p_scb->role & BTA_AV_ROLE_AD_ACP)))
- {
- if ((p_scb->wait & BTA_AV_WAIT_ROLE_SW_BITS) == 0) {
- bta_sys_start_timer(p_scb->avrc_ct_timer, BTA_AV_RC_DISC_TIME_VAL,
- BTA_AV_AVRC_TIMER_EVT, p_scb->hndl);
- } else {
- p_scb->wait |= BTA_AV_WAIT_CHECK_RC;
- }
+static void bta_av_st_rc_timer(tBTA_AV_SCB* p_scb,
+ UNUSED_ATTR tBTA_AV_DATA* p_data) {
+ APPL_TRACE_DEBUG("%s: rc_handle:%d, use_rc: %d", __func__, p_scb->rc_handle,
+ p_scb->use_rc);
+ /* for outgoing RC connection as INT/CT */
+ if ((p_scb->rc_handle == BTA_AV_RC_HANDLE_NONE) &&
+ /* (bta_av_cb.features & BTA_AV_FEAT_RCCT) && */
+ (p_scb->use_rc == true || (p_scb->role & BTA_AV_ROLE_AD_ACP))) {
+ if ((p_scb->wait & BTA_AV_WAIT_ROLE_SW_BITS) == 0) {
+ bta_sys_start_timer(p_scb->avrc_ct_timer, BTA_AV_RC_DISC_TIME_VAL,
+ BTA_AV_AVRC_TIMER_EVT, p_scb->hndl);
+ } else {
+ p_scb->wait |= BTA_AV_WAIT_CHECK_RC;
}
-
+ }
}
/*******************************************************************************
@@ -368,55 +361,46 @@
* Returns true if we sent request to AVDT, false otherwise.
*
******************************************************************************/
-static bool bta_av_next_getcap(tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data)
-{
- int i;
- tAVDT_GETCAP_REQ *p_req;
- bool sent_cmd = false;
- uint16_t uuid_int = p_scb->uuid_int;
- uint8_t sep_requested = 0;
+static bool bta_av_next_getcap(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data) {
+ int i;
+ tAVDT_GETCAP_REQ* p_req;
+ bool sent_cmd = false;
+ uint16_t uuid_int = p_scb->uuid_int;
+ uint8_t sep_requested = 0;
- if(uuid_int == UUID_SERVCLASS_AUDIO_SOURCE)
- sep_requested = AVDT_TSEP_SNK;
- else if(uuid_int == UUID_SERVCLASS_AUDIO_SINK)
- sep_requested = AVDT_TSEP_SRC;
+ if (uuid_int == UUID_SERVCLASS_AUDIO_SOURCE)
+ sep_requested = AVDT_TSEP_SNK;
+ else if (uuid_int == UUID_SERVCLASS_AUDIO_SINK)
+ sep_requested = AVDT_TSEP_SRC;
- for (i = p_scb->sep_info_idx; i < p_scb->num_seps; i++)
- {
- /* steam not in use, is a sink, and is the right media type (audio/video) */
- if ((p_scb->sep_info[i].in_use == false) &&
- (p_scb->sep_info[i].tsep == sep_requested) &&
- (p_scb->sep_info[i].media_type == p_scb->media_type))
- {
- p_scb->sep_info_idx = i;
+ for (i = p_scb->sep_info_idx; i < p_scb->num_seps; i++) {
+ /* steam not in use, is a sink, and is the right media type (audio/video) */
+ if ((p_scb->sep_info[i].in_use == false) &&
+ (p_scb->sep_info[i].tsep == sep_requested) &&
+ (p_scb->sep_info[i].media_type == p_scb->media_type)) {
+ p_scb->sep_info_idx = i;
- /* we got a stream; get its capabilities */
- if (p_scb->p_cap == NULL)
- p_scb->p_cap = (tAVDT_CFG *)osi_malloc(sizeof(tAVDT_CFG));
- if (p_scb->avdt_version >= AVDT_VERSION_SYNC)
- {
- p_req = AVDT_GetAllCapReq;
- }
- else
- {
- p_req = AVDT_GetCapReq;
- }
- (*p_req)(p_scb->peer_addr,
- p_scb->sep_info[i].seid,
- p_scb->p_cap, bta_av_dt_cback[p_scb->hdi]);
- sent_cmd = true;
- break;
- }
+ /* we got a stream; get its capabilities */
+ if (p_scb->p_cap == NULL)
+ p_scb->p_cap = (tAVDT_CFG*)osi_malloc(sizeof(tAVDT_CFG));
+ if (p_scb->avdt_version >= AVDT_VERSION_SYNC) {
+ p_req = AVDT_GetAllCapReq;
+ } else {
+ p_req = AVDT_GetCapReq;
+ }
+ (*p_req)(p_scb->peer_addr, p_scb->sep_info[i].seid, p_scb->p_cap,
+ bta_av_dt_cback[p_scb->hdi]);
+ sent_cmd = true;
+ break;
}
+ }
- /* if no streams available then stream open fails */
- if (!sent_cmd)
- {
- bta_av_ssm_execute(p_scb, BTA_AV_STR_GETCAP_FAIL_EVT, p_data);
- }
+ /* if no streams available then stream open fails */
+ if (!sent_cmd) {
+ bta_av_ssm_execute(p_scb, BTA_AV_STR_GETCAP_FAIL_EVT, p_data);
+ }
- return sent_cmd;
-
+ return sent_cmd;
}
/*******************************************************************************
@@ -428,143 +412,146 @@
* Returns void
*
******************************************************************************/
-static void bta_av_proc_stream_evt(uint8_t handle, BD_ADDR bd_addr, uint8_t event, tAVDT_CTRL *p_data, int index)
-{
- uint16_t sec_len = 0;
- tBTA_AV_SCB *p_scb = bta_av_cb.p_scb[index];
+static void bta_av_proc_stream_evt(uint8_t handle, BD_ADDR bd_addr,
+ uint8_t event, tAVDT_CTRL* p_data,
+ int index) {
+ uint16_t sec_len = 0;
+ tBTA_AV_SCB* p_scb = bta_av_cb.p_scb[index];
- if (p_data)
- {
- if (event == AVDT_SECURITY_IND_EVT)
- {
- sec_len = (p_data->security_ind.len < BTA_AV_SECURITY_MAX_LEN) ?
- p_data->security_ind.len : BTA_AV_SECURITY_MAX_LEN;
- }
- else if (event == AVDT_SECURITY_CFM_EVT && p_data->hdr.err_code == 0)
- {
- sec_len = (p_data->security_cfm.len < BTA_AV_SECURITY_MAX_LEN) ?
- p_data->security_cfm.len : BTA_AV_SECURITY_MAX_LEN;
- }
+ if (p_data) {
+ if (event == AVDT_SECURITY_IND_EVT) {
+ sec_len = (p_data->security_ind.len < BTA_AV_SECURITY_MAX_LEN)
+ ? p_data->security_ind.len
+ : BTA_AV_SECURITY_MAX_LEN;
+ } else if (event == AVDT_SECURITY_CFM_EVT && p_data->hdr.err_code == 0) {
+ sec_len = (p_data->security_cfm.len < BTA_AV_SECURITY_MAX_LEN)
+ ? p_data->security_cfm.len
+ : BTA_AV_SECURITY_MAX_LEN;
+ }
+ }
+
+ if (p_scb) {
+ tBTA_AV_STR_MSG* p_msg =
+ (tBTA_AV_STR_MSG*)osi_malloc(sizeof(tBTA_AV_STR_MSG) + sec_len);
+
+ /* copy event data, bd addr, and handle to event message buffer */
+ p_msg->hdr.offset = 0;
+
+ if (bd_addr != NULL) {
+ bdcpy(p_msg->bd_addr, bd_addr);
+ APPL_TRACE_DEBUG("%s: bd_addr:%02x-%02x-%02x-%02x-%02x-%02x", __func__,
+ bd_addr[0], bd_addr[1], bd_addr[2], bd_addr[3],
+ bd_addr[4], bd_addr[5]);
}
- if (p_scb) {
- tBTA_AV_STR_MSG *p_msg =
- (tBTA_AV_STR_MSG *)osi_malloc(sizeof(tBTA_AV_STR_MSG) + sec_len);
+ if (p_data != NULL) {
+ memcpy(&p_msg->msg, p_data, sizeof(tAVDT_CTRL));
+ /* copy config params to event message buffer */
+ switch (event) {
+ case AVDT_RECONFIG_CFM_EVT:
+ APPL_TRACE_DEBUG(
+ "%s: reconfig cfm event codec info = 0x%06x-%06x-%06x-%02x",
+ __func__,
+ (p_msg->msg.reconfig_cfm.p_cfg->codec_info[0] << 16) +
+ (p_msg->msg.reconfig_cfm.p_cfg->codec_info[1] << 8) +
+ p_msg->msg.reconfig_cfm.p_cfg->codec_info[2],
+ (p_msg->msg.reconfig_cfm.p_cfg->codec_info[3] << 16) +
+ (p_msg->msg.reconfig_cfm.p_cfg->codec_info[4] << 8) +
+ p_msg->msg.reconfig_cfm.p_cfg->codec_info[5],
+ (p_msg->msg.reconfig_cfm.p_cfg->codec_info[6] << 16) +
+ (p_msg->msg.reconfig_cfm.p_cfg->codec_info[7] << 8) +
+ p_msg->msg.reconfig_cfm.p_cfg->codec_info[8],
+ p_msg->msg.reconfig_cfm.p_cfg->codec_info[9]);
+ break;
- /* copy event data, bd addr, and handle to event message buffer */
- p_msg->hdr.offset = 0;
+ case AVDT_CONFIG_IND_EVT:
+ /* We might have 2 SEP signallings(A2DP + VDP) with one peer device on
+ * one L2CAP.
+ * If we already have a signalling connection with the bd_addr and the
+ * streaming
+ * SST is at INIT state, change it to INCOMING state to handle the
+ * signalling
+ * from the 2nd SEP. */
+ if ((bta_av_find_lcb(bd_addr, BTA_AV_LCB_FIND) != NULL) &&
+ (bta_av_is_scb_init(p_scb))) {
+ bta_av_set_scb_sst_incoming(p_scb);
- if (bd_addr != NULL)
- {
- bdcpy(p_msg->bd_addr, bd_addr);
- APPL_TRACE_DEBUG("%s: bd_addr:%02x-%02x-%02x-%02x-%02x-%02x",
- __func__, bd_addr[0], bd_addr[1], bd_addr[2],
- bd_addr[3], bd_addr[4], bd_addr[5]);
- }
-
- if (p_data != NULL)
- {
- memcpy(&p_msg->msg, p_data, sizeof (tAVDT_CTRL));
- /* copy config params to event message buffer */
- switch (event)
- {
- case AVDT_RECONFIG_CFM_EVT:
- APPL_TRACE_DEBUG("%s: reconfig cfm event codec info = 0x%06x-%06x-%06x-%02x",
- __func__,
- (p_msg->msg.reconfig_cfm.p_cfg->codec_info[0]<<16)+(p_msg->msg.reconfig_cfm.p_cfg->codec_info[1]<<8)+p_msg->msg.reconfig_cfm.p_cfg->codec_info[2],
- (p_msg->msg.reconfig_cfm.p_cfg->codec_info[3]<<16)+(p_msg->msg.reconfig_cfm.p_cfg->codec_info[4]<<8)+p_msg->msg.reconfig_cfm.p_cfg->codec_info[5],
- (p_msg->msg.reconfig_cfm.p_cfg->codec_info[6]<<16)+(p_msg->msg.reconfig_cfm.p_cfg->codec_info[7]<<8)+p_msg->msg.reconfig_cfm.p_cfg->codec_info[8],
- p_msg->msg.reconfig_cfm.p_cfg->codec_info[9]);
- break;
-
- case AVDT_CONFIG_IND_EVT:
- /* We might have 2 SEP signallings(A2DP + VDP) with one peer device on one L2CAP.
- * If we already have a signalling connection with the bd_addr and the streaming
- * SST is at INIT state, change it to INCOMING state to handle the signalling
- * from the 2nd SEP. */
- if ((bta_av_find_lcb(bd_addr, BTA_AV_LCB_FIND) != NULL) && (bta_av_is_scb_init(p_scb)))
- {
- bta_av_set_scb_sst_incoming (p_scb);
-
- /* When ACP_CONNECT_EVT was received, we put first available scb to incoming state.
- * Later when we receive AVDT_CONFIG_IND_EVT, we use a new p_scb and set its state to
- * incoming which we do it above.
- * We also have to set the old p_scb state to init to be used later */
- for (int i = 0; i < BTA_AV_NUM_STRS; i++) {
- if ((bta_av_cb.p_scb[i]) && (i != index)) {
- if (bta_av_cb.p_scb[i]->state == BTA_AV_INCOMING_SST) {
- bta_av_cb.p_scb[i]->state = BTA_AV_INIT_SST;
- bta_av_cb.p_scb[i]->coll_mask = 0;
- break;
- }
- }
+ /* When ACP_CONNECT_EVT was received, we put first available scb to
+ * incoming state.
+ * Later when we receive AVDT_CONFIG_IND_EVT, we use a new p_scb and
+ * set its state to
+ * incoming which we do it above.
+ * We also have to set the old p_scb state to init to be used later
+ */
+ for (int i = 0; i < BTA_AV_NUM_STRS; i++) {
+ if ((bta_av_cb.p_scb[i]) && (i != index)) {
+ if (bta_av_cb.p_scb[i]->state == BTA_AV_INCOMING_SST) {
+ bta_av_cb.p_scb[i]->state = BTA_AV_INIT_SST;
+ bta_av_cb.p_scb[i]->coll_mask = 0;
+ break;
}
+ }
}
+ }
- memcpy(&p_msg->cfg, p_data->config_ind.p_cfg, sizeof(tAVDT_CFG));
- break;
+ memcpy(&p_msg->cfg, p_data->config_ind.p_cfg, sizeof(tAVDT_CFG));
+ break;
- case AVDT_SECURITY_IND_EVT:
- p_msg->msg.security_ind.p_data = (uint8_t *) (p_msg + 1);
- memcpy(p_msg->msg.security_ind.p_data, p_data->security_ind.p_data, sec_len);
- break;
+ case AVDT_SECURITY_IND_EVT:
+ p_msg->msg.security_ind.p_data = (uint8_t*)(p_msg + 1);
+ memcpy(p_msg->msg.security_ind.p_data, p_data->security_ind.p_data,
+ sec_len);
+ break;
- case AVDT_SECURITY_CFM_EVT:
- p_msg->msg.security_cfm.p_data = (uint8_t *) (p_msg + 1);
- if (p_data->hdr.err_code == 0)
- {
- memcpy(p_msg->msg.security_cfm.p_data, p_data->security_cfm.p_data, sec_len);
- }
- break;
+ case AVDT_SECURITY_CFM_EVT:
+ p_msg->msg.security_cfm.p_data = (uint8_t*)(p_msg + 1);
+ if (p_data->hdr.err_code == 0) {
+ memcpy(p_msg->msg.security_cfm.p_data, p_data->security_cfm.p_data,
+ sec_len);
+ }
+ break;
- case AVDT_SUSPEND_IND_EVT:
- p_msg->msg.hdr.err_code = 0;
- break;
+ case AVDT_SUSPEND_IND_EVT:
+ p_msg->msg.hdr.err_code = 0;
+ break;
- case AVDT_CONNECT_IND_EVT:
- p_scb->recfg_sup = true;
- p_scb->suspend_sup = true;
- break;
+ case AVDT_CONNECT_IND_EVT:
+ p_scb->recfg_sup = true;
+ p_scb->suspend_sup = true;
+ break;
- default:
- break;
- }
- }
- else
- p_msg->msg.hdr.err_code = 0;
+ default:
+ break;
+ }
+ } else
+ p_msg->msg.hdr.err_code = 0;
- /* look up application event */
- if ((p_data == NULL) || (p_data->hdr.err_code == 0))
- {
- p_msg->hdr.event = bta_av_stream_evt_ok[event];
- }
- else
- {
- p_msg->hdr.event = bta_av_stream_evt_fail[event];
- }
-
- p_msg->initiator = false;
- if (event == AVDT_SUSPEND_CFM_EVT)
- p_msg->initiator = true;
-
- APPL_TRACE_VERBOSE("%s: hndl:x%x", __func__, p_scb->hndl);
- p_msg->hdr.layer_specific = p_scb->hndl;
- p_msg->handle = handle;
- p_msg->avdt_event = event;
- bta_sys_sendmsg(p_msg);
+ /* look up application event */
+ if ((p_data == NULL) || (p_data->hdr.err_code == 0)) {
+ p_msg->hdr.event = bta_av_stream_evt_ok[event];
+ } else {
+ p_msg->hdr.event = bta_av_stream_evt_fail[event];
}
-/* coverity[var_deref_model] */
-/* false-positive: bta_av_conn_cback only processes AVDT_CONNECT_IND_EVT and AVDT_DISCONNECT_IND_EVT event
- * these 2 events always have associated p_data */
- if (p_data)
- {
- bta_av_conn_cback(handle, bd_addr, event, p_data);
- }
- else
- {
- APPL_TRACE_ERROR("%s: p_data is null", __func__);
- }
+ p_msg->initiator = false;
+ if (event == AVDT_SUSPEND_CFM_EVT) p_msg->initiator = true;
+
+ APPL_TRACE_VERBOSE("%s: hndl:x%x", __func__, p_scb->hndl);
+ p_msg->hdr.layer_specific = p_scb->hndl;
+ p_msg->handle = handle;
+ p_msg->avdt_event = event;
+ bta_sys_sendmsg(p_msg);
+ }
+
+ /* coverity[var_deref_model] */
+ /* false-positive: bta_av_conn_cback only processes AVDT_CONNECT_IND_EVT and
+ * AVDT_DISCONNECT_IND_EVT event
+ * these 2 events always have associated p_data */
+ if (p_data) {
+ bta_av_conn_cback(handle, bd_addr, event, p_data);
+ } else {
+ APPL_TRACE_ERROR("%s: p_data is null", __func__);
+ }
}
/*******************************************************************************
@@ -576,34 +563,33 @@
* Returns void
*
******************************************************************************/
-void bta_av_sink_data_cback(uint8_t handle, BT_HDR *p_pkt, uint32_t time_stamp,
- uint8_t m_pt)
-{
- int index = 0;
- tBTA_AV_SCB *p_scb;
- APPL_TRACE_DEBUG("%s: avdt_handle: %d pkt_len=0x%x offset = 0x%x "
- "number of frames 0x%x sequence number 0x%x",
- __func__, handle, p_pkt->len, p_pkt->offset,
- *((uint8_t*)(p_pkt + 1) + p_pkt->offset),
- p_pkt->layer_specific);
- /* Get SCB and correct sep type */
- for (index = 0; index < BTA_AV_NUM_STRS; index++) {
- p_scb = bta_av_cb.p_scb[index];
- if ((p_scb->avdt_handle == handle) &&
- (p_scb->seps[p_scb->sep_idx].tsep == AVDT_TSEP_SNK)) {
- break;
- }
+void bta_av_sink_data_cback(uint8_t handle, BT_HDR* p_pkt, uint32_t time_stamp,
+ uint8_t m_pt) {
+ int index = 0;
+ tBTA_AV_SCB* p_scb;
+ APPL_TRACE_DEBUG(
+ "%s: avdt_handle: %d pkt_len=0x%x offset = 0x%x "
+ "number of frames 0x%x sequence number 0x%x",
+ __func__, handle, p_pkt->len, p_pkt->offset,
+ *((uint8_t*)(p_pkt + 1) + p_pkt->offset), p_pkt->layer_specific);
+ /* Get SCB and correct sep type */
+ for (index = 0; index < BTA_AV_NUM_STRS; index++) {
+ p_scb = bta_av_cb.p_scb[index];
+ if ((p_scb->avdt_handle == handle) &&
+ (p_scb->seps[p_scb->sep_idx].tsep == AVDT_TSEP_SNK)) {
+ break;
}
- if (index == BTA_AV_NUM_STRS) {
- /* cannot find correct handler */
- osi_free(p_pkt);
- return;
- }
- p_pkt->event = BTA_AV_SINK_MEDIA_DATA_EVT;
- p_scb->seps[p_scb->sep_idx].p_app_sink_data_cback(BTA_AV_SINK_MEDIA_DATA_EVT,
- (tBTA_AV_MEDIA *)p_pkt);
- /* Free the buffer: a copy of the packet has been delivered */
+ }
+ if (index == BTA_AV_NUM_STRS) {
+ /* cannot find correct handler */
osi_free(p_pkt);
+ return;
+ }
+ p_pkt->event = BTA_AV_SINK_MEDIA_DATA_EVT;
+ p_scb->seps[p_scb->sep_idx].p_app_sink_data_cback(BTA_AV_SINK_MEDIA_DATA_EVT,
+ (tBTA_AV_MEDIA*)p_pkt);
+ /* Free the buffer: a copy of the packet has been delivered */
+ osi_free(p_pkt);
}
/*******************************************************************************
@@ -615,11 +601,10 @@
* Returns void
*
******************************************************************************/
-static void bta_av_stream0_cback(uint8_t handle, BD_ADDR bd_addr, uint8_t event, tAVDT_CTRL *p_data)
-{
- APPL_TRACE_VERBOSE("%s: avdt_handle: %d event=0x%x",
- __func__, handle, event);
- bta_av_proc_stream_evt(handle, bd_addr, event, p_data, 0);
+static void bta_av_stream0_cback(uint8_t handle, BD_ADDR bd_addr, uint8_t event,
+ tAVDT_CTRL* p_data) {
+ APPL_TRACE_VERBOSE("%s: avdt_handle: %d event=0x%x", __func__, handle, event);
+ bta_av_proc_stream_evt(handle, bd_addr, event, p_data, 0);
}
/*******************************************************************************
@@ -631,10 +616,10 @@
* Returns void
*
******************************************************************************/
-static void bta_av_stream1_cback(uint8_t handle, BD_ADDR bd_addr, uint8_t event, tAVDT_CTRL *p_data)
-{
- APPL_TRACE_EVENT("%s: avdt_handle: %d event=0x%x", __func__, handle, event);
- bta_av_proc_stream_evt(handle, bd_addr, event, p_data, 1);
+static void bta_av_stream1_cback(uint8_t handle, BD_ADDR bd_addr, uint8_t event,
+ tAVDT_CTRL* p_data) {
+ APPL_TRACE_EVENT("%s: avdt_handle: %d event=0x%x", __func__, handle, event);
+ bta_av_proc_stream_evt(handle, bd_addr, event, p_data, 1);
}
#if BTA_AV_NUM_STRS > 2
@@ -647,10 +632,10 @@
* Returns void
*
******************************************************************************/
-static void bta_av_stream2_cback(uint8_t handle, BD_ADDR bd_addr, uint8_t event, tAVDT_CTRL *p_data)
-{
- APPL_TRACE_EVENT("%s: avdt_handle: %d event=0x%x", __func__, handle, event);
- bta_av_proc_stream_evt(handle, bd_addr, event, p_data, 2);
+static void bta_av_stream2_cback(uint8_t handle, BD_ADDR bd_addr, uint8_t event,
+ tAVDT_CTRL* p_data) {
+ APPL_TRACE_EVENT("%s: avdt_handle: %d event=0x%x", __func__, handle, event);
+ bta_av_proc_stream_evt(handle, bd_addr, event, p_data, 2);
}
#endif
@@ -664,10 +649,10 @@
* Returns void
*
******************************************************************************/
-static void bta_av_stream3_cback(uint8_t handle, BD_ADDR bd_addr, uint8_t event, tAVDT_CTRL *p_data)
-{
- APPL_TRACE_EVENT("%s: avdt_handle: %d event=0x%x", __func__, handle, event);
- bta_av_proc_stream_evt(handle, bd_addr, event, p_data, 3);
+static void bta_av_stream3_cback(uint8_t handle, BD_ADDR bd_addr, uint8_t event,
+ tAVDT_CTRL* p_data) {
+ APPL_TRACE_EVENT("%s: avdt_handle: %d event=0x%x", __func__, handle, event);
+ bta_av_proc_stream_evt(handle, bd_addr, event, p_data, 3);
}
#endif
@@ -681,10 +666,10 @@
*
******************************************************************************/
#if BTA_AV_NUM_STRS > 4
-static void bta_av_stream4_cback(uint8_t handle, BD_ADDR bd_addr, uint8_t event, tAVDT_CTRL *p_data)
-{
- APPL_TRACE_EVENT("%s: avdt_handle: %d event=0x%x", __func__, handle, event);
- bta_av_proc_stream_evt(handle, bd_addr, event, p_data, 4);
+static void bta_av_stream4_cback(uint8_t handle, BD_ADDR bd_addr, uint8_t event,
+ tAVDT_CTRL* p_data) {
+ APPL_TRACE_EVENT("%s: avdt_handle: %d event=0x%x", __func__, handle, event);
+ bta_av_proc_stream_evt(handle, bd_addr, event, p_data, 4);
}
#endif
@@ -698,10 +683,10 @@
*
******************************************************************************/
#if BTA_AV_NUM_STRS > 5
-static void bta_av_stream5_cback(uint8_t handle, BD_ADDR bd_addr, uint8_t event, tAVDT_CTRL *p_data)
-{
- APPL_TRACE_EVENT("%s: avdt_handle: %d event=0x%x", __func__, handle, event);
- bta_av_proc_stream_evt(handle, bd_addr, event, p_data, 5);
+static void bta_av_stream5_cback(uint8_t handle, BD_ADDR bd_addr, uint8_t event,
+ tAVDT_CTRL* p_data) {
+ APPL_TRACE_EVENT("%s: avdt_handle: %d event=0x%x", __func__, handle, event);
+ bta_av_proc_stream_evt(handle, bd_addr, event, p_data, 5);
}
#endif
@@ -714,27 +699,26 @@
* Returns void
*
******************************************************************************/
-static void bta_av_a2dp_sdp_cback(bool found, tA2DP_Service *p_service)
-{
- tBTA_AV_SCB *p_scb = bta_av_hndl_to_scb(bta_av_cb.handle);
+static void bta_av_a2dp_sdp_cback(bool found, tA2DP_Service* p_service) {
+ tBTA_AV_SCB* p_scb = bta_av_hndl_to_scb(bta_av_cb.handle);
- if (p_scb == NULL) {
- APPL_TRACE_ERROR("%s: no scb found for handle(0x%x)", __func__,
- bta_av_cb.handle);
- return;
- }
+ if (p_scb == NULL) {
+ APPL_TRACE_ERROR("%s: no scb found for handle(0x%x)", __func__,
+ bta_av_cb.handle);
+ return;
+ }
- tBTA_AV_SDP_RES *p_msg =
- (tBTA_AV_SDP_RES *)osi_malloc(sizeof(tBTA_AV_SDP_RES));
- p_msg->hdr.event = (found) ?
- BTA_AV_SDP_DISC_OK_EVT : BTA_AV_SDP_DISC_FAIL_EVT;
- if (found && (p_service != NULL))
- p_scb->avdt_version = p_service->avdt_version;
- else
- p_scb->avdt_version = 0x00;
- p_msg->hdr.layer_specific = bta_av_cb.handle;
+ tBTA_AV_SDP_RES* p_msg =
+ (tBTA_AV_SDP_RES*)osi_malloc(sizeof(tBTA_AV_SDP_RES));
+ p_msg->hdr.event =
+ (found) ? BTA_AV_SDP_DISC_OK_EVT : BTA_AV_SDP_DISC_FAIL_EVT;
+ if (found && (p_service != NULL))
+ p_scb->avdt_version = p_service->avdt_version;
+ else
+ p_scb->avdt_version = 0x00;
+ p_msg->hdr.layer_specific = bta_av_cb.handle;
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
}
/*******************************************************************************
@@ -746,23 +730,21 @@
* Returns
*
******************************************************************************/
-static void bta_av_adjust_seps_idx(tBTA_AV_SCB *p_scb, uint8_t avdt_handle)
-{
- APPL_TRACE_DEBUG("%s: codec: %s", __func__,
- A2DP_CodecName(p_scb->cfg.codec_info));
- for (int i = 0; i < A2DP_CODEC_SEP_INDEX_MAX; i++) {
- APPL_TRACE_DEBUG("%s: av_handle: %d codec: %s", __func__,
- p_scb->seps[i].av_handle,
- A2DP_CodecName(p_scb->seps[i].codec_info));
- if (p_scb->seps[i].av_handle &&
- (p_scb->seps[i].av_handle == avdt_handle) &&
- A2DP_CodecTypeEquals(p_scb->seps[i].codec_info,
- p_scb->cfg.codec_info)) {
- p_scb->sep_idx = i;
- p_scb->avdt_handle = p_scb->seps[i].av_handle;
- break;
- }
+static void bta_av_adjust_seps_idx(tBTA_AV_SCB* p_scb, uint8_t avdt_handle) {
+ APPL_TRACE_DEBUG("%s: codec: %s", __func__,
+ A2DP_CodecName(p_scb->cfg.codec_info));
+ for (int i = 0; i < A2DP_CODEC_SEP_INDEX_MAX; i++) {
+ APPL_TRACE_DEBUG("%s: av_handle: %d codec: %s", __func__,
+ p_scb->seps[i].av_handle,
+ A2DP_CodecName(p_scb->seps[i].codec_info));
+ if (p_scb->seps[i].av_handle && (p_scb->seps[i].av_handle == avdt_handle) &&
+ A2DP_CodecTypeEquals(p_scb->seps[i].codec_info,
+ p_scb->cfg.codec_info)) {
+ p_scb->sep_idx = i;
+ p_scb->avdt_handle = p_scb->seps[i].av_handle;
+ break;
}
+ }
}
/*******************************************************************************
@@ -775,49 +757,41 @@
* Returns void
*
******************************************************************************/
-void bta_av_switch_role (tBTA_AV_SCB *p_scb,
- UNUSED_ATTR tBTA_AV_DATA *p_data)
-{
- tBTA_AV_RS_RES switch_res = BTA_AV_RS_NONE;
- tBTA_AV_API_OPEN *p_buf = &p_scb->q_info.open;
+void bta_av_switch_role(tBTA_AV_SCB* p_scb, UNUSED_ATTR tBTA_AV_DATA* p_data) {
+ tBTA_AV_RS_RES switch_res = BTA_AV_RS_NONE;
+ tBTA_AV_API_OPEN* p_buf = &p_scb->q_info.open;
- APPL_TRACE_DEBUG("%s: wait:x%x", __func__, p_scb->wait);
- if (p_scb->wait & BTA_AV_WAIT_ROLE_SW_RES_START)
- p_scb->wait |= BTA_AV_WAIT_ROLE_SW_RETRY;
+ APPL_TRACE_DEBUG("%s: wait:x%x", __func__, p_scb->wait);
+ if (p_scb->wait & BTA_AV_WAIT_ROLE_SW_RES_START)
+ p_scb->wait |= BTA_AV_WAIT_ROLE_SW_RETRY;
- /* clear the masks set when the timer is started */
- p_scb->wait &= ~(BTA_AV_WAIT_ROLE_SW_RES_OPEN|BTA_AV_WAIT_ROLE_SW_RES_START);
+ /* clear the masks set when the timer is started */
+ p_scb->wait &=
+ ~(BTA_AV_WAIT_ROLE_SW_RES_OPEN | BTA_AV_WAIT_ROLE_SW_RES_START);
- if (p_scb->q_tag == BTA_AV_Q_TAG_OPEN)
- {
- if (bta_av_switch_if_needed(p_scb) ||
- !bta_av_link_role_ok(p_scb, A2DP_SET_MULTL_BIT)) {
- p_scb->wait |= BTA_AV_WAIT_ROLE_SW_RES_OPEN;
- }
- else
- {
- /* this should not happen in theory. Just in case...
- * continue to do_disc_a2dp */
- switch_res = BTA_AV_RS_DONE;
- }
+ if (p_scb->q_tag == BTA_AV_Q_TAG_OPEN) {
+ if (bta_av_switch_if_needed(p_scb) ||
+ !bta_av_link_role_ok(p_scb, A2DP_SET_MULTL_BIT)) {
+ p_scb->wait |= BTA_AV_WAIT_ROLE_SW_RES_OPEN;
+ } else {
+ /* this should not happen in theory. Just in case...
+ * continue to do_disc_a2dp */
+ switch_res = BTA_AV_RS_DONE;
}
- else
- {
- /* report failure on OPEN */
- switch_res = BTA_AV_RS_FAIL;
- }
+ } else {
+ /* report failure on OPEN */
+ switch_res = BTA_AV_RS_FAIL;
+ }
- if (switch_res != BTA_AV_RS_NONE)
- {
- if (bta_av_cb.rs_idx == (p_scb->hdi + 1))
- {
- bta_av_cb.rs_idx = 0;
- }
- p_scb->wait &= ~BTA_AV_WAIT_ROLE_SW_RETRY;
- p_scb->q_tag = 0;
- p_buf->switch_res = switch_res;
- bta_av_do_disc_a2dp(p_scb, (tBTA_AV_DATA *)p_buf);
+ if (switch_res != BTA_AV_RS_NONE) {
+ if (bta_av_cb.rs_idx == (p_scb->hdi + 1)) {
+ bta_av_cb.rs_idx = 0;
}
+ p_scb->wait &= ~BTA_AV_WAIT_ROLE_SW_RETRY;
+ p_scb->q_tag = 0;
+ p_buf->switch_res = switch_res;
+ bta_av_do_disc_a2dp(p_scb, (tBTA_AV_DATA*)p_buf);
+ }
}
/*******************************************************************************
@@ -830,77 +804,62 @@
* Returns void
*
******************************************************************************/
-void bta_av_role_res (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data)
-{
- bool initiator = false;
- tBTA_AV_START start;
- tBTA_AV_OPEN av_open;
+void bta_av_role_res(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data) {
+ bool initiator = false;
+ tBTA_AV_START start;
+ tBTA_AV_OPEN av_open;
- APPL_TRACE_DEBUG("%s: q_tag:%d, wait:x%x, role:x%x", __func__,
- p_scb->q_tag, p_scb->wait, p_scb->role);
- if (p_scb->role & BTA_AV_ROLE_START_INT)
- initiator = true;
+ APPL_TRACE_DEBUG("%s: q_tag:%d, wait:x%x, role:x%x", __func__, p_scb->q_tag,
+ p_scb->wait, p_scb->role);
+ if (p_scb->role & BTA_AV_ROLE_START_INT) initiator = true;
- if (p_scb->q_tag == BTA_AV_Q_TAG_START)
- {
- if (p_scb->wait & BTA_AV_WAIT_ROLE_SW_STARTED)
- {
- p_scb->wait &= ~BTA_AV_WAIT_ROLE_SW_BITS;
- if (p_data->role_res.hci_status != HCI_SUCCESS)
- {
- p_scb->role &= ~BTA_AV_ROLE_START_INT;
- bta_sys_idle(BTA_ID_AV, bta_av_cb.audio_open_cnt, p_scb->peer_addr);
- /* start failed because of role switch. */
- start.chnl = p_scb->chnl;
- start.status = BTA_AV_FAIL_ROLE;
- start.hndl = p_scb->hndl;
- start.initiator = initiator;
- (*bta_av_cb.p_cback)(BTA_AV_START_EVT, (tBTA_AV *) &start);
- }
- else
- {
- bta_av_start_ok(p_scb, p_data);
- }
- }
- else if (p_scb->wait & BTA_AV_WAIT_ROLE_SW_RES_START)
- p_scb->wait |= BTA_AV_WAIT_ROLE_SW_FAILED;
+ if (p_scb->q_tag == BTA_AV_Q_TAG_START) {
+ if (p_scb->wait & BTA_AV_WAIT_ROLE_SW_STARTED) {
+ p_scb->wait &= ~BTA_AV_WAIT_ROLE_SW_BITS;
+ if (p_data->role_res.hci_status != HCI_SUCCESS) {
+ p_scb->role &= ~BTA_AV_ROLE_START_INT;
+ bta_sys_idle(BTA_ID_AV, bta_av_cb.audio_open_cnt, p_scb->peer_addr);
+ /* start failed because of role switch. */
+ start.chnl = p_scb->chnl;
+ start.status = BTA_AV_FAIL_ROLE;
+ start.hndl = p_scb->hndl;
+ start.initiator = initiator;
+ (*bta_av_cb.p_cback)(BTA_AV_START_EVT, (tBTA_AV*)&start);
+ } else {
+ bta_av_start_ok(p_scb, p_data);
+ }
+ } else if (p_scb->wait & BTA_AV_WAIT_ROLE_SW_RES_START)
+ p_scb->wait |= BTA_AV_WAIT_ROLE_SW_FAILED;
+ } else if (p_scb->q_tag == BTA_AV_Q_TAG_OPEN) {
+ if (p_scb->wait & BTA_AV_WAIT_ROLE_SW_RES_OPEN) {
+ p_scb->role &= ~BTA_AV_ROLE_START_INT;
+ p_scb->wait &= ~BTA_AV_WAIT_ROLE_SW_BITS;
+
+ if (p_data->role_res.hci_status != HCI_SUCCESS) {
+ /* Open failed because of role switch. */
+ bdcpy(av_open.bd_addr, p_scb->peer_addr);
+ av_open.chnl = p_scb->chnl;
+ av_open.hndl = p_scb->hndl;
+ start.status = BTA_AV_FAIL_ROLE;
+ if (p_scb->seps[p_scb->sep_idx].tsep == AVDT_TSEP_SRC)
+ av_open.sep = AVDT_TSEP_SNK;
+ else if (p_scb->seps[p_scb->sep_idx].tsep == AVDT_TSEP_SNK)
+ av_open.sep = AVDT_TSEP_SRC;
+ (*bta_av_cb.p_cback)(BTA_AV_OPEN_EVT, (tBTA_AV*)&av_open);
+ } else {
+ /* Continue av open process */
+ p_scb->q_info.open.switch_res = BTA_AV_RS_DONE;
+ bta_av_do_disc_a2dp(p_scb, (tBTA_AV_DATA*)&(p_scb->q_info.open));
+ }
+ } else {
+ APPL_TRACE_WARNING(
+ "%s: unexpected role switch event: q_tag = %d wait = %d", __func__,
+ p_scb->q_tag, p_scb->wait);
}
- else if (p_scb->q_tag == BTA_AV_Q_TAG_OPEN)
- {
- if (p_scb->wait & BTA_AV_WAIT_ROLE_SW_RES_OPEN)
- {
- p_scb->role &= ~BTA_AV_ROLE_START_INT;
- p_scb->wait &= ~BTA_AV_WAIT_ROLE_SW_BITS;
+ }
- if (p_data->role_res.hci_status != HCI_SUCCESS)
- {
- /* Open failed because of role switch. */
- bdcpy(av_open.bd_addr, p_scb->peer_addr);
- av_open.chnl = p_scb->chnl;
- av_open.hndl = p_scb->hndl;
- start.status = BTA_AV_FAIL_ROLE;
- if(p_scb->seps[p_scb->sep_idx].tsep == AVDT_TSEP_SRC )
- av_open.sep = AVDT_TSEP_SNK;
- else if(p_scb->seps[p_scb->sep_idx].tsep == AVDT_TSEP_SNK )
- av_open.sep = AVDT_TSEP_SRC;
- (*bta_av_cb.p_cback)(BTA_AV_OPEN_EVT, (tBTA_AV *)&av_open);
- }
- else
- {
- /* Continue av open process */
- p_scb->q_info.open.switch_res = BTA_AV_RS_DONE;
- bta_av_do_disc_a2dp(p_scb, (tBTA_AV_DATA *)&(p_scb->q_info.open));
- }
- }
- else
- {
- APPL_TRACE_WARNING("%s: unexpected role switch event: q_tag = %d wait = %d",
- __func__, p_scb->q_tag, p_scb->wait);
- }
- }
-
- APPL_TRACE_DEBUG("%s: wait:x%x, role:x%x", __func__, p_scb->wait,
- p_scb->role);
+ APPL_TRACE_DEBUG("%s: wait:x%x, role:x%x", __func__, p_scb->wait,
+ p_scb->role);
}
/*******************************************************************************
@@ -913,9 +872,8 @@
* Returns void
*
******************************************************************************/
-void bta_av_delay_co (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data)
-{
- p_scb->p_cos->delay(p_scb->hndl, p_data->str_msg.msg.delay_rpt_cmd.delay);
+void bta_av_delay_co(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data) {
+ p_scb->p_cos->delay(p_scb->hndl, p_data->str_msg.msg.delay_rpt_cmd.delay);
}
/*******************************************************************************
@@ -927,129 +885,118 @@
* Returns void
*
******************************************************************************/
-void bta_av_do_disc_a2dp(tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data)
-{
- bool ok_continue = false;
- tA2DP_SDP_DB_PARAMS db_params;
- uint16_t attr_list[] = {ATTR_ID_SERVICE_CLASS_ID_LIST,
- ATTR_ID_PROTOCOL_DESC_LIST,
- ATTR_ID_BT_PROFILE_DESC_LIST};
- uint16_t sdp_uuid = 0; /* UUID for which SDP has to be done */
+void bta_av_do_disc_a2dp(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data) {
+ bool ok_continue = false;
+ tA2DP_SDP_DB_PARAMS db_params;
+ uint16_t attr_list[] = {ATTR_ID_SERVICE_CLASS_ID_LIST,
+ ATTR_ID_PROTOCOL_DESC_LIST,
+ ATTR_ID_BT_PROFILE_DESC_LIST};
+ uint16_t sdp_uuid = 0; /* UUID for which SDP has to be done */
- APPL_TRACE_DEBUG("%s: use_rc: %d rs:%d, oc:%d", __func__,
- p_data->api_open.use_rc, p_data->api_open.switch_res, bta_av_cb.audio_open_cnt);
+ APPL_TRACE_DEBUG("%s: use_rc: %d rs:%d, oc:%d", __func__,
+ p_data->api_open.use_rc, p_data->api_open.switch_res,
+ bta_av_cb.audio_open_cnt);
- memcpy (&(p_scb->open_api), &(p_data->api_open), sizeof(tBTA_AV_API_OPEN));
+ memcpy(&(p_scb->open_api), &(p_data->api_open), sizeof(tBTA_AV_API_OPEN));
- switch(p_data->api_open.switch_res)
- {
+ switch (p_data->api_open.switch_res) {
case BTA_AV_RS_NONE:
- if (bta_av_switch_if_needed(p_scb) ||
- !bta_av_link_role_ok(p_scb, A2DP_SET_MULTL_BIT)) {
- /* waiting for role switch result. save the api to control block */
- memcpy(&p_scb->q_info.open, &p_data->api_open, sizeof(tBTA_AV_API_OPEN));
- p_scb->wait |= BTA_AV_WAIT_ROLE_SW_RES_OPEN;
- p_scb->q_tag = BTA_AV_Q_TAG_OPEN;
- }
- else
- {
- ok_continue = true;
- }
- break;
+ if (bta_av_switch_if_needed(p_scb) ||
+ !bta_av_link_role_ok(p_scb, A2DP_SET_MULTL_BIT)) {
+ /* waiting for role switch result. save the api to control block */
+ memcpy(&p_scb->q_info.open, &p_data->api_open,
+ sizeof(tBTA_AV_API_OPEN));
+ p_scb->wait |= BTA_AV_WAIT_ROLE_SW_RES_OPEN;
+ p_scb->q_tag = BTA_AV_Q_TAG_OPEN;
+ } else {
+ ok_continue = true;
+ }
+ break;
case BTA_AV_RS_FAIL:
- /* report a new failure event */
- p_scb->open_status = BTA_AV_FAIL_ROLE;
- bta_av_ssm_execute(p_scb, BTA_AV_SDP_DISC_FAIL_EVT, NULL);
- break;
+ /* report a new failure event */
+ p_scb->open_status = BTA_AV_FAIL_ROLE;
+ bta_av_ssm_execute(p_scb, BTA_AV_SDP_DISC_FAIL_EVT, NULL);
+ break;
case BTA_AV_RS_OK:
- p_data = (tBTA_AV_DATA *)&p_scb->q_info.open;
- /* continue to open if link role is ok */
- if (bta_av_link_role_ok(p_scb, A2DP_SET_MULTL_BIT))
- {
- ok_continue = true;
- }
- else
- {
- p_scb->wait |= BTA_AV_WAIT_ROLE_SW_RES_OPEN;
- }
- break;
+ p_data = (tBTA_AV_DATA*)&p_scb->q_info.open;
+ /* continue to open if link role is ok */
+ if (bta_av_link_role_ok(p_scb, A2DP_SET_MULTL_BIT)) {
+ ok_continue = true;
+ } else {
+ p_scb->wait |= BTA_AV_WAIT_ROLE_SW_RES_OPEN;
+ }
+ break;
case BTA_AV_RS_DONE:
- ok_continue = true;
- break;
+ ok_continue = true;
+ break;
+ }
+
+ APPL_TRACE_DEBUG("%s: ok_continue: %d wait:x%x, q_tag: %d", __func__,
+ ok_continue, p_scb->wait, p_scb->q_tag);
+ if (!ok_continue) return;
+
+ /* clear the role switch bits */
+ p_scb->wait &= ~BTA_AV_WAIT_ROLE_SW_BITS;
+
+ if (p_scb->wait & BTA_AV_WAIT_CHECK_RC) {
+ p_scb->wait &= ~BTA_AV_WAIT_CHECK_RC;
+ bta_sys_start_timer(p_scb->avrc_ct_timer, BTA_AV_RC_DISC_TIME_VAL,
+ BTA_AV_AVRC_TIMER_EVT, p_scb->hndl);
+ }
+
+ if (bta_av_cb.features & BTA_AV_FEAT_MASTER) {
+ L2CA_SetDesireRole(L2CAP_ROLE_DISALLOW_SWITCH);
+
+ if (bta_av_cb.audio_open_cnt == 1) {
+ /* there's already an A2DP connection. do not allow switch */
+ bta_sys_clear_default_policy(BTA_ID_AV, HCI_ENABLE_MASTER_SLAVE_SWITCH);
}
+ }
+ /* store peer addr other parameters */
+ bta_av_save_addr(p_scb, p_data->api_open.bd_addr);
+ p_scb->sec_mask = p_data->api_open.sec_mask;
+ p_scb->use_rc = p_data->api_open.use_rc;
- APPL_TRACE_DEBUG("%s: ok_continue: %d wait:x%x, q_tag: %d", __func__,
- ok_continue, p_scb->wait, p_scb->q_tag);
- if (!ok_continue)
- return;
+ bta_sys_app_open(BTA_ID_AV, p_scb->app_id, p_scb->peer_addr);
- /* clear the role switch bits */
- p_scb->wait &= ~BTA_AV_WAIT_ROLE_SW_BITS;
-
- if (p_scb->wait & BTA_AV_WAIT_CHECK_RC)
- {
- p_scb->wait &= ~BTA_AV_WAIT_CHECK_RC;
- bta_sys_start_timer(p_scb->avrc_ct_timer, BTA_AV_RC_DISC_TIME_VAL,
- BTA_AV_AVRC_TIMER_EVT, p_scb->hndl);
- }
-
- if (bta_av_cb.features & BTA_AV_FEAT_MASTER)
- {
- L2CA_SetDesireRole(L2CAP_ROLE_DISALLOW_SWITCH);
-
- if (bta_av_cb.audio_open_cnt == 1)
- {
- /* there's already an A2DP connection. do not allow switch */
- bta_sys_clear_default_policy(BTA_ID_AV, HCI_ENABLE_MASTER_SLAVE_SWITCH);
- }
- }
- /* store peer addr other parameters */
- bta_av_save_addr(p_scb, p_data->api_open.bd_addr);
- p_scb->sec_mask = p_data->api_open.sec_mask;
- p_scb->use_rc = p_data->api_open.use_rc;
-
- bta_sys_app_open(BTA_ID_AV, p_scb->app_id, p_scb->peer_addr);
-
- if (p_scb->skip_sdp == true)
- {
- tA2DP_Service a2dp_ser;
- a2dp_ser.avdt_version = AVDT_VERSION;
- p_scb->skip_sdp = false;
- p_scb->uuid_int = p_data->api_open.uuid;
- /* only one A2DP find service is active at a time */
- bta_av_cb.handle = p_scb->hndl;
- APPL_TRACE_WARNING("%s: Skip Sdp for incoming A2dp connection",
- __func__);
- bta_av_a2dp_sdp_cback(true, &a2dp_ser);
- return;
- }
-
+ if (p_scb->skip_sdp == true) {
+ tA2DP_Service a2dp_ser;
+ a2dp_ser.avdt_version = AVDT_VERSION;
+ p_scb->skip_sdp = false;
+ p_scb->uuid_int = p_data->api_open.uuid;
/* only one A2DP find service is active at a time */
bta_av_cb.handle = p_scb->hndl;
+ APPL_TRACE_WARNING("%s: Skip Sdp for incoming A2dp connection", __func__);
+ bta_av_a2dp_sdp_cback(true, &a2dp_ser);
+ return;
+ }
- /* set up parameters */
- db_params.db_len = BTA_AV_DISC_BUF_SIZE;
- db_params.num_attr = 3;
- db_params.p_attrs = attr_list;
- p_scb->uuid_int = p_data->api_open.uuid;
- p_scb->sdp_discovery_started = true;
- if (p_scb->uuid_int == UUID_SERVCLASS_AUDIO_SINK)
- sdp_uuid = UUID_SERVCLASS_AUDIO_SOURCE;
- else if (p_scb->uuid_int == UUID_SERVCLASS_AUDIO_SOURCE)
- sdp_uuid = UUID_SERVCLASS_AUDIO_SINK;
+ /* only one A2DP find service is active at a time */
+ bta_av_cb.handle = p_scb->hndl;
- APPL_TRACE_DEBUG("%s: uuid_int 0x%x, Doing SDP For 0x%x", __func__,
- p_scb->uuid_int, sdp_uuid);
- if (A2DP_FindService(sdp_uuid, p_scb->peer_addr, &db_params,
- bta_av_a2dp_sdp_cback) == A2DP_SUCCESS)
- return;
+ /* set up parameters */
+ db_params.db_len = BTA_AV_DISC_BUF_SIZE;
+ db_params.num_attr = 3;
+ db_params.p_attrs = attr_list;
+ p_scb->uuid_int = p_data->api_open.uuid;
+ p_scb->sdp_discovery_started = true;
+ if (p_scb->uuid_int == UUID_SERVCLASS_AUDIO_SINK)
+ sdp_uuid = UUID_SERVCLASS_AUDIO_SOURCE;
+ else if (p_scb->uuid_int == UUID_SERVCLASS_AUDIO_SOURCE)
+ sdp_uuid = UUID_SERVCLASS_AUDIO_SINK;
- /* when the code reaches here, either the DB is NULL
- * or A2DP_FindService is not successful */
- bta_av_a2dp_sdp_cback(false, NULL);
+ APPL_TRACE_DEBUG("%s: uuid_int 0x%x, Doing SDP For 0x%x", __func__,
+ p_scb->uuid_int, sdp_uuid);
+ if (A2DP_FindService(sdp_uuid, p_scb->peer_addr, &db_params,
+ bta_av_a2dp_sdp_cback) == A2DP_SUCCESS)
+ return;
+
+ /* when the code reaches here, either the DB is NULL
+ * or A2DP_FindService is not successful */
+ bta_av_a2dp_sdp_cback(false, NULL);
}
/*******************************************************************************
@@ -1061,59 +1008,53 @@
* Returns void
*
******************************************************************************/
-void bta_av_cleanup(tBTA_AV_SCB *p_scb,
- UNUSED_ATTR tBTA_AV_DATA *p_data)
-{
- tBTA_AV_CONN_CHG msg;
- uint8_t role = BTA_AV_ROLE_AD_INT;
+void bta_av_cleanup(tBTA_AV_SCB* p_scb, UNUSED_ATTR tBTA_AV_DATA* p_data) {
+ tBTA_AV_CONN_CHG msg;
+ uint8_t role = BTA_AV_ROLE_AD_INT;
- APPL_TRACE_DEBUG("%s", __func__);
+ APPL_TRACE_DEBUG("%s", __func__);
- /* free any buffers */
- osi_free_and_reset((void **)&p_scb->p_cap);
- p_scb->sdp_discovery_started = false;
- p_scb->avdt_version = 0;
+ /* free any buffers */
+ osi_free_and_reset((void**)&p_scb->p_cap);
+ p_scb->sdp_discovery_started = false;
+ p_scb->avdt_version = 0;
- /* initialize some control block variables */
- p_scb->open_status = BTA_AV_SUCCESS;
+ /* initialize some control block variables */
+ p_scb->open_status = BTA_AV_SUCCESS;
- /* if de-registering shut everything down */
- msg.hdr.layer_specific = p_scb->hndl;
- p_scb->started = false;
- p_scb->cong = false;
- p_scb->role = role;
- p_scb->cur_psc_mask = 0;
- p_scb->wait = 0;
- p_scb->num_disc_snks = 0;
- alarm_cancel(p_scb->avrc_ct_timer);
+ /* if de-registering shut everything down */
+ msg.hdr.layer_specific = p_scb->hndl;
+ p_scb->started = false;
+ p_scb->cong = false;
+ p_scb->role = role;
+ p_scb->cur_psc_mask = 0;
+ p_scb->wait = 0;
+ p_scb->num_disc_snks = 0;
+ alarm_cancel(p_scb->avrc_ct_timer);
- vendor_get_interface()->send_command(
- (vendor_opcode_t)BT_VND_OP_A2DP_OFFLOAD_STOP, (void*)&p_scb->l2c_cid);
- if (p_scb->offload_start_pending) {
- tBTA_AV_STATUS status = BTA_AV_FAIL_STREAM;
- (*bta_av_cb.p_cback)(BTA_AV_OFFLOAD_START_RSP_EVT, (tBTA_AV *)&status);
+ vendor_get_interface()->send_command(
+ (vendor_opcode_t)BT_VND_OP_A2DP_OFFLOAD_STOP, (void*)&p_scb->l2c_cid);
+ if (p_scb->offload_start_pending) {
+ tBTA_AV_STATUS status = BTA_AV_FAIL_STREAM;
+ (*bta_av_cb.p_cback)(BTA_AV_OFFLOAD_START_RSP_EVT, (tBTA_AV*)&status);
+ }
+ p_scb->offload_start_pending = false;
+
+ p_scb->skip_sdp = false;
+ if (p_scb->deregistring) {
+ /* remove stream */
+ for (int i = 0; i < A2DP_CODEC_SEP_INDEX_MAX; i++) {
+ if (p_scb->seps[i].av_handle) AVDT_RemoveStream(p_scb->seps[i].av_handle);
+ p_scb->seps[i].av_handle = 0;
}
- p_scb->offload_start_pending = false;
- p_scb->skip_sdp = false;
- if (p_scb->deregistring)
- {
- /* remove stream */
- for (int i = 0; i < A2DP_CODEC_SEP_INDEX_MAX; i++) {
- if (p_scb->seps[i].av_handle)
- AVDT_RemoveStream(p_scb->seps[i].av_handle);
- p_scb->seps[i].av_handle = 0;
- }
-
- bta_av_dereg_comp((tBTA_AV_DATA *) &msg);
- }
- else
- {
- /* report stream closed to main SM */
- msg.is_up = false;
- bdcpy(msg.peer_addr, p_scb->peer_addr);
- bta_av_conn_chg((tBTA_AV_DATA *) &msg);
- }
+ bta_av_dereg_comp((tBTA_AV_DATA*)&msg);
+ } else {
+ /* report stream closed to main SM */
+ msg.is_up = false;
+ bdcpy(msg.peer_addr, p_scb->peer_addr);
+ bta_av_conn_chg((tBTA_AV_DATA*)&msg);
+ }
}
/*******************************************************************************
@@ -1125,10 +1066,8 @@
* Returns void
*
******************************************************************************/
-void bta_av_free_sdb(tBTA_AV_SCB *p_scb,
- UNUSED_ATTR tBTA_AV_DATA *p_data)
-{
- p_scb->sdp_discovery_started = false;
+void bta_av_free_sdb(tBTA_AV_SCB* p_scb, UNUSED_ATTR tBTA_AV_DATA* p_data) {
+ p_scb->sdp_discovery_started = false;
}
/*******************************************************************************
@@ -1140,83 +1079,70 @@
* Returns void
*
******************************************************************************/
-void bta_av_config_ind (tBTA_AV_SCB *p_scb,
- UNUSED_ATTR tBTA_AV_DATA *p_data)
-{
- tBTA_AV_CI_SETCONFIG setconfig;
- tAVDT_SEP_INFO *p_info;
- tAVDT_CFG *p_evt_cfg = &p_data->str_msg.cfg;
- uint8_t psc_mask = (p_evt_cfg->psc_mask | p_scb->cfg.psc_mask);
- uint8_t local_sep; /* sep type of local handle on which connection was received */
- tBTA_AV_STR_MSG *p_msg = (tBTA_AV_STR_MSG *)p_data;
+void bta_av_config_ind(tBTA_AV_SCB* p_scb, UNUSED_ATTR tBTA_AV_DATA* p_data) {
+ tBTA_AV_CI_SETCONFIG setconfig;
+ tAVDT_SEP_INFO* p_info;
+ tAVDT_CFG* p_evt_cfg = &p_data->str_msg.cfg;
+ uint8_t psc_mask = (p_evt_cfg->psc_mask | p_scb->cfg.psc_mask);
+ uint8_t
+ local_sep; /* sep type of local handle on which connection was received */
+ tBTA_AV_STR_MSG* p_msg = (tBTA_AV_STR_MSG*)p_data;
- local_sep = bta_av_get_scb_sep_type(p_scb, p_msg->handle);
- p_scb->avdt_label = p_data->str_msg.msg.hdr.label;
- memcpy(p_scb->cfg.codec_info, p_evt_cfg->codec_info, AVDT_CODEC_SIZE);
- bta_av_save_addr(p_scb, p_data->str_msg.bd_addr);
+ local_sep = bta_av_get_scb_sep_type(p_scb, p_msg->handle);
+ p_scb->avdt_label = p_data->str_msg.msg.hdr.label;
+ memcpy(p_scb->cfg.codec_info, p_evt_cfg->codec_info, AVDT_CODEC_SIZE);
+ bta_av_save_addr(p_scb, p_data->str_msg.bd_addr);
- /* Clear collision mask */
- p_scb->coll_mask = 0;
- alarm_cancel(bta_av_cb.accept_signalling_timer);
+ /* Clear collision mask */
+ p_scb->coll_mask = 0;
+ alarm_cancel(bta_av_cb.accept_signalling_timer);
- /* if no codec parameters in configuration, fail */
- if ((p_evt_cfg->num_codec == 0) ||
- /* or the peer requests for a service we do not support */
- ((psc_mask != p_scb->cfg.psc_mask) &&
- (psc_mask != (p_scb->cfg.psc_mask&~AVDT_PSC_DELAY_RPT))) )
- {
- setconfig.hndl = p_scb->hndl; /* we may not need this */
- setconfig.err_code = AVDT_ERR_UNSUP_CFG;
- bta_av_ssm_execute(p_scb, BTA_AV_CI_SETCONFIG_FAIL_EVT, (tBTA_AV_DATA *) &setconfig);
- }
+ /* if no codec parameters in configuration, fail */
+ if ((p_evt_cfg->num_codec == 0) ||
+ /* or the peer requests for a service we do not support */
+ ((psc_mask != p_scb->cfg.psc_mask) &&
+ (psc_mask != (p_scb->cfg.psc_mask & ~AVDT_PSC_DELAY_RPT)))) {
+ setconfig.hndl = p_scb->hndl; /* we may not need this */
+ setconfig.err_code = AVDT_ERR_UNSUP_CFG;
+ bta_av_ssm_execute(p_scb, BTA_AV_CI_SETCONFIG_FAIL_EVT,
+ (tBTA_AV_DATA*)&setconfig);
+ } else {
+ p_info = &p_scb->sep_info[0];
+ p_info->in_use = 0;
+ p_info->media_type = p_scb->media_type;
+ p_info->seid = p_data->str_msg.msg.config_ind.int_seid;
+
+ /* Sep type of Peer will be oppsite role to our local sep */
+ if (local_sep == AVDT_TSEP_SRC)
+ p_info->tsep = AVDT_TSEP_SNK;
+ else if (local_sep == AVDT_TSEP_SNK)
+ p_info->tsep = AVDT_TSEP_SRC;
+
+ p_scb->role |= BTA_AV_ROLE_AD_ACP;
+ p_scb->cur_psc_mask = p_evt_cfg->psc_mask;
+ if (bta_av_cb.features & BTA_AV_FEAT_RCTG)
+ p_scb->use_rc = true;
else
- {
- p_info = &p_scb->sep_info[0];
- p_info->in_use = 0;
- p_info->media_type = p_scb->media_type;
- p_info->seid = p_data->str_msg.msg.config_ind.int_seid;
+ p_scb->use_rc = false;
- /* Sep type of Peer will be oppsite role to our local sep */
- if (local_sep == AVDT_TSEP_SRC)
- p_info->tsep = AVDT_TSEP_SNK;
- else if (local_sep == AVDT_TSEP_SNK)
- p_info->tsep = AVDT_TSEP_SRC;
-
- p_scb->role |= BTA_AV_ROLE_AD_ACP;
- p_scb->cur_psc_mask = p_evt_cfg->psc_mask;
- if (bta_av_cb.features & BTA_AV_FEAT_RCTG)
- p_scb->use_rc = true;
- else
- p_scb->use_rc = false;
-
- p_scb->num_seps = 1;
- p_scb->sep_info_idx = 0;
- APPL_TRACE_DEBUG("%s: SEID: %d use_rc: %d cur_psc_mask:0x%x", __func__,
- p_info->seid, p_scb->use_rc, p_scb->cur_psc_mask);
- /* in case of A2DP SINK this is the first time peer data is being sent to co functions */
- if (local_sep == AVDT_TSEP_SNK)
- {
- p_scb->p_cos->setcfg(p_scb->hndl,
- p_evt_cfg->codec_info,
- p_info->seid,
- p_scb->peer_addr,
- p_evt_cfg->num_protect,
- p_evt_cfg->protect_info,
- AVDT_TSEP_SNK,
- p_msg->handle);
- }
- else
- {
- p_scb->p_cos->setcfg(p_scb->hndl,
- p_evt_cfg->codec_info,
- p_info->seid,
- p_scb->peer_addr,
- p_evt_cfg->num_protect,
- p_evt_cfg->protect_info,
- AVDT_TSEP_SRC,
- p_msg->handle);
- }
+ p_scb->num_seps = 1;
+ p_scb->sep_info_idx = 0;
+ APPL_TRACE_DEBUG("%s: SEID: %d use_rc: %d cur_psc_mask:0x%x", __func__,
+ p_info->seid, p_scb->use_rc, p_scb->cur_psc_mask);
+ /* in case of A2DP SINK this is the first time peer data is being sent to
+ * co functions */
+ if (local_sep == AVDT_TSEP_SNK) {
+ p_scb->p_cos->setcfg(p_scb->hndl, p_evt_cfg->codec_info, p_info->seid,
+ p_scb->peer_addr, p_evt_cfg->num_protect,
+ p_evt_cfg->protect_info, AVDT_TSEP_SNK,
+ p_msg->handle);
+ } else {
+ p_scb->p_cos->setcfg(p_scb->hndl, p_evt_cfg->codec_info, p_info->seid,
+ p_scb->peer_addr, p_evt_cfg->num_protect,
+ p_evt_cfg->protect_info, AVDT_TSEP_SRC,
+ p_msg->handle);
}
+ }
}
/*******************************************************************************
@@ -1228,24 +1154,22 @@
* Returns void
*
******************************************************************************/
-void bta_av_disconnect_req (tBTA_AV_SCB *p_scb,
- UNUSED_ATTR tBTA_AV_DATA *p_data)
-{
- tBTA_AV_RCB *p_rcb;
+void bta_av_disconnect_req(tBTA_AV_SCB* p_scb,
+ UNUSED_ATTR tBTA_AV_DATA* p_data) {
+ tBTA_AV_RCB* p_rcb;
- APPL_TRACE_DEBUG("%s: conn_lcb: 0x%x", __func__, bta_av_cb.conn_lcb);
+ APPL_TRACE_DEBUG("%s: conn_lcb: 0x%x", __func__, bta_av_cb.conn_lcb);
- alarm_cancel(bta_av_cb.link_signalling_timer);
- alarm_cancel(p_scb->avrc_ct_timer);
+ alarm_cancel(bta_av_cb.link_signalling_timer);
+ alarm_cancel(p_scb->avrc_ct_timer);
- if (bta_av_cb.conn_lcb) {
- p_rcb = bta_av_get_rcb_by_shdl((uint8_t)(p_scb->hdi + 1));
- if (p_rcb)
- bta_av_del_rc(p_rcb);
- AVDT_DisconnectReq(p_scb->peer_addr, bta_av_dt_cback[p_scb->hdi]);
- } else {
- bta_av_ssm_execute(p_scb, BTA_AV_AVDT_DISCONNECT_EVT, NULL);
- }
+ if (bta_av_cb.conn_lcb) {
+ p_rcb = bta_av_get_rcb_by_shdl((uint8_t)(p_scb->hdi + 1));
+ if (p_rcb) bta_av_del_rc(p_rcb);
+ AVDT_DisconnectReq(p_scb->peer_addr, bta_av_dt_cback[p_scb->hdi]);
+ } else {
+ bta_av_ssm_execute(p_scb, BTA_AV_AVDT_DISCONNECT_EVT, NULL);
+ }
}
/*******************************************************************************
@@ -1257,13 +1181,11 @@
* Returns void
*
******************************************************************************/
-void bta_av_security_req (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data)
-{
- if (bta_av_cb.features & BTA_AV_FEAT_PROTECT)
- {
- AVDT_SecurityReq(p_scb->avdt_handle, p_data->api_protect_req.p_data,
- p_data->api_protect_req.len);
- }
+void bta_av_security_req(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data) {
+ if (bta_av_cb.features & BTA_AV_FEAT_PROTECT) {
+ AVDT_SecurityReq(p_scb->avdt_handle, p_data->api_protect_req.p_data,
+ p_data->api_protect_req.len);
+ }
}
/*******************************************************************************
@@ -1275,18 +1197,16 @@
* Returns void
*
******************************************************************************/
-void bta_av_security_rsp (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data)
-{
- if (bta_av_cb.features & BTA_AV_FEAT_PROTECT)
- {
- AVDT_SecurityRsp(p_scb->avdt_handle, p_scb->avdt_label, p_data->api_protect_rsp.error_code,
- p_data->api_protect_rsp.p_data, p_data->api_protect_rsp.len);
- }
- else
- {
- AVDT_SecurityRsp(p_scb->avdt_handle, p_scb->avdt_label, AVDT_ERR_NSC,
- NULL, 0);
- }
+void bta_av_security_rsp(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data) {
+ if (bta_av_cb.features & BTA_AV_FEAT_PROTECT) {
+ AVDT_SecurityRsp(p_scb->avdt_handle, p_scb->avdt_label,
+ p_data->api_protect_rsp.error_code,
+ p_data->api_protect_rsp.p_data,
+ p_data->api_protect_rsp.len);
+ } else {
+ AVDT_SecurityRsp(p_scb->avdt_handle, p_scb->avdt_label, AVDT_ERR_NSC, NULL,
+ 0);
+ }
}
/*******************************************************************************
@@ -1298,89 +1218,82 @@
* Returns void
*
******************************************************************************/
-void bta_av_setconfig_rsp (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data)
-{
- uint8_t num = p_data->ci_setconfig.num_seid + 1;
- uint8_t avdt_handle = p_data->ci_setconfig.avdt_handle;
- uint8_t *p_seid = p_data->ci_setconfig.p_seid;
- int i;
- uint8_t local_sep;
+void bta_av_setconfig_rsp(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data) {
+ uint8_t num = p_data->ci_setconfig.num_seid + 1;
+ uint8_t avdt_handle = p_data->ci_setconfig.avdt_handle;
+ uint8_t* p_seid = p_data->ci_setconfig.p_seid;
+ int i;
+ uint8_t local_sep;
- /* we like this codec_type. find the sep_idx */
- local_sep = bta_av_get_scb_sep_type(p_scb,avdt_handle);
- bta_av_adjust_seps_idx(p_scb, avdt_handle);
- APPL_TRACE_DEBUG("%s: sep_idx: %d cur_psc_mask:0x%x", __func__,
- p_scb->sep_idx, p_scb->cur_psc_mask);
+ /* we like this codec_type. find the sep_idx */
+ local_sep = bta_av_get_scb_sep_type(p_scb, avdt_handle);
+ bta_av_adjust_seps_idx(p_scb, avdt_handle);
+ APPL_TRACE_DEBUG("%s: sep_idx: %d cur_psc_mask:0x%x", __func__,
+ p_scb->sep_idx, p_scb->cur_psc_mask);
- if ((AVDT_TSEP_SNK == local_sep) &&
- (p_data->ci_setconfig.err_code == AVDT_SUCCESS) &&
- (p_scb->seps[p_scb->sep_idx].p_app_sink_data_cback != NULL)) {
- tBTA_AV_MEDIA av_sink_codec_info;
- memcpy(av_sink_codec_info.avk_config.bd_addr, p_scb->peer_addr,
- sizeof(BD_ADDR));
- av_sink_codec_info.avk_config.codec_info = p_scb->cfg.codec_info;
- p_scb->seps[p_scb->sep_idx].p_app_sink_data_cback(BTA_AV_SINK_MEDIA_CFG_EVT,
- &av_sink_codec_info);
+ if ((AVDT_TSEP_SNK == local_sep) &&
+ (p_data->ci_setconfig.err_code == AVDT_SUCCESS) &&
+ (p_scb->seps[p_scb->sep_idx].p_app_sink_data_cback != NULL)) {
+ tBTA_AV_MEDIA av_sink_codec_info;
+ memcpy(av_sink_codec_info.avk_config.bd_addr, p_scb->peer_addr,
+ sizeof(BD_ADDR));
+ av_sink_codec_info.avk_config.codec_info = p_scb->cfg.codec_info;
+ p_scb->seps[p_scb->sep_idx].p_app_sink_data_cback(BTA_AV_SINK_MEDIA_CFG_EVT,
+ &av_sink_codec_info);
+ }
+
+ AVDT_ConfigRsp(p_scb->avdt_handle, p_scb->avdt_label,
+ p_data->ci_setconfig.err_code, p_data->ci_setconfig.category);
+
+ alarm_cancel(bta_av_cb.link_signalling_timer);
+
+ if (p_data->ci_setconfig.err_code == AVDT_SUCCESS) {
+ p_scb->wait = BTA_AV_WAIT_ACP_CAPS_ON;
+ if (p_data->ci_setconfig.recfg_needed)
+ p_scb->role |= BTA_AV_ROLE_SUSPEND_OPT;
+ APPL_TRACE_DEBUG("%s: recfg_needed:%d role:x%x num:%d", __func__,
+ p_data->ci_setconfig.recfg_needed, p_scb->role, num);
+ /* callout module tells BTA the number of "good" SEPs and their SEIDs.
+ * getcap on these SEID */
+ p_scb->num_seps = num;
+
+ if (p_scb->cur_psc_mask & AVDT_PSC_DELAY_RPT)
+ p_scb->avdt_version = AVDT_VERSION_SYNC;
+
+ if (A2DP_GetCodecType(p_scb->cfg.codec_info) == A2DP_MEDIA_CT_SBC ||
+ num > 1) {
+ /* if SBC is used by the SNK as INT, discover req is not sent in
+ * bta_av_config_ind.
+ * call disc_res now */
+ /* this is called in A2DP SRC path only, In case of SINK we don't need it
+ */
+ if (local_sep == AVDT_TSEP_SRC)
+ p_scb->p_cos->disc_res(p_scb->hndl, num, num, 0, p_scb->peer_addr,
+ UUID_SERVCLASS_AUDIO_SOURCE);
+ } else {
+ /* we do not know the peer device and it is using non-SBC codec
+ * we need to know all the SEPs on SNK */
+ bta_av_discover_req(p_scb, NULL);
+ return;
}
-
- AVDT_ConfigRsp(p_scb->avdt_handle, p_scb->avdt_label, p_data->ci_setconfig.err_code,
- p_data->ci_setconfig.category);
-
- alarm_cancel(bta_av_cb.link_signalling_timer);
-
- if(p_data->ci_setconfig.err_code == AVDT_SUCCESS)
- {
- p_scb->wait = BTA_AV_WAIT_ACP_CAPS_ON;
- if(p_data->ci_setconfig.recfg_needed)
- p_scb->role |= BTA_AV_ROLE_SUSPEND_OPT;
- APPL_TRACE_DEBUG("%s: recfg_needed:%d role:x%x num:%d", __func__,
- p_data->ci_setconfig.recfg_needed, p_scb->role, num);
- /* callout module tells BTA the number of "good" SEPs and their SEIDs.
- * getcap on these SEID */
- p_scb->num_seps = num;
-
- if (p_scb->cur_psc_mask & AVDT_PSC_DELAY_RPT)
- p_scb->avdt_version = AVDT_VERSION_SYNC;
-
-
- if (A2DP_GetCodecType(p_scb->cfg.codec_info) == A2DP_MEDIA_CT_SBC ||
- num > 1) {
- /* if SBC is used by the SNK as INT, discover req is not sent in bta_av_config_ind.
- * call disc_res now */
- /* this is called in A2DP SRC path only, In case of SINK we don't need it */
- if (local_sep == AVDT_TSEP_SRC)
- p_scb->p_cos->disc_res(p_scb->hndl, num, num, 0, p_scb->peer_addr,
- UUID_SERVCLASS_AUDIO_SOURCE);
- }
- else
- {
- /* we do not know the peer device and it is using non-SBC codec
- * we need to know all the SEPs on SNK */
- bta_av_discover_req(p_scb, NULL);
- return;
- }
-
- for (i = 1; i < num; i++)
- {
- APPL_TRACE_DEBUG("%s: sep_info[%d] SEID: %d", __func__, i,
- p_seid[i-1]);
- /* initialize the sep_info[] to get capabilities */
- p_scb->sep_info[i].in_use = false;
- p_scb->sep_info[i].tsep = AVDT_TSEP_SNK;
- p_scb->sep_info[i].media_type = p_scb->media_type;
- p_scb->sep_info[i].seid = p_seid[i-1];
- }
-
- /* only in case of local sep as SRC we need to look for other SEPs, In case of SINK we don't */
- if (local_sep == AVDT_TSEP_SRC)
- {
- /* Make sure UUID has been initialized... */
- if (p_scb->uuid_int == 0)
- p_scb->uuid_int = p_scb->open_api.uuid;
- bta_av_next_getcap(p_scb, p_data);
- }
+ for (i = 1; i < num; i++) {
+ APPL_TRACE_DEBUG("%s: sep_info[%d] SEID: %d", __func__, i, p_seid[i - 1]);
+ /* initialize the sep_info[] to get capabilities */
+ p_scb->sep_info[i].in_use = false;
+ p_scb->sep_info[i].tsep = AVDT_TSEP_SNK;
+ p_scb->sep_info[i].media_type = p_scb->media_type;
+ p_scb->sep_info[i].seid = p_seid[i - 1];
}
+
+ /* only in case of local sep as SRC we need to look for other SEPs, In case
+ * of SINK we don't */
+ if (local_sep == AVDT_TSEP_SRC) {
+ /* Make sure UUID has been initialized... */
+ if (p_scb->uuid_int == 0) p_scb->uuid_int = p_scb->open_api.uuid;
+ bta_av_next_getcap(p_scb, p_data);
+ }
+ }
}
/*******************************************************************************
@@ -1392,86 +1305,80 @@
* Returns void
*
******************************************************************************/
-void bta_av_str_opened (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data)
-{
- tBTA_AV_CONN_CHG msg;
- tBTA_AV_OPEN open;
- uint8_t *p;
- uint16_t mtu;
+void bta_av_str_opened(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data) {
+ tBTA_AV_CONN_CHG msg;
+ tBTA_AV_OPEN open;
+ uint8_t* p;
+ uint16_t mtu;
- msg.hdr.layer_specific = p_scb->hndl;
- msg.is_up = true;
- bdcpy(msg.peer_addr, p_scb->peer_addr);
- p_scb->l2c_cid = AVDT_GetL2CapChannel(p_scb->avdt_handle);
- bta_av_conn_chg((tBTA_AV_DATA *) &msg);
- /* set the congestion flag, so AV would not send media packets by accident */
- p_scb->cong = true;
- p_scb->offload_start_pending = false;
+ msg.hdr.layer_specific = p_scb->hndl;
+ msg.is_up = true;
+ bdcpy(msg.peer_addr, p_scb->peer_addr);
+ p_scb->l2c_cid = AVDT_GetL2CapChannel(p_scb->avdt_handle);
+ bta_av_conn_chg((tBTA_AV_DATA*)&msg);
+ /* set the congestion flag, so AV would not send media packets by accident */
+ p_scb->cong = true;
+ p_scb->offload_start_pending = false;
+ p_scb->stream_mtu =
+ p_data->str_msg.msg.open_ind.peer_mtu - AVDT_MEDIA_HDR_SIZE;
+ mtu = bta_av_chk_mtu(p_scb, p_scb->stream_mtu);
+ APPL_TRACE_DEBUG("%s: l2c_cid: 0x%x stream_mtu: %d mtu: %d", __func__,
+ p_scb->l2c_cid, p_scb->stream_mtu, mtu);
+ if (mtu == 0 || mtu > p_scb->stream_mtu) mtu = p_scb->stream_mtu;
- p_scb->stream_mtu = p_data->str_msg.msg.open_ind.peer_mtu - AVDT_MEDIA_HDR_SIZE;
- mtu = bta_av_chk_mtu(p_scb, p_scb->stream_mtu);
- APPL_TRACE_DEBUG("%s: l2c_cid: 0x%x stream_mtu: %d mtu: %d", __func__,
- p_scb->l2c_cid, p_scb->stream_mtu, mtu);
- if(mtu == 0 || mtu > p_scb->stream_mtu)
- mtu = p_scb->stream_mtu;
+ /* Set the media channel as medium priority */
+ L2CA_SetTxPriority(p_scb->l2c_cid, L2CAP_CHNL_PRIORITY_MEDIUM);
+ L2CA_SetChnlFlushability(p_scb->l2c_cid, true);
- /* Set the media channel as medium priority */
- L2CA_SetTxPriority(p_scb->l2c_cid, L2CAP_CHNL_PRIORITY_MEDIUM);
- L2CA_SetChnlFlushability (p_scb->l2c_cid, true);
+ bta_sys_conn_open(BTA_ID_AV, p_scb->app_id, p_scb->peer_addr);
+ memset(&p_scb->q_info, 0, sizeof(tBTA_AV_Q_INFO));
- bta_sys_conn_open(BTA_ID_AV, p_scb->app_id, p_scb->peer_addr);
- memset(&p_scb->q_info, 0, sizeof(tBTA_AV_Q_INFO));
+ p_scb->l2c_bufs = 0;
+ p_scb->p_cos->open(p_scb->hndl, p_scb->cfg.codec_info, mtu);
- p_scb->l2c_bufs = 0;
- p_scb->p_cos->open(p_scb->hndl, p_scb->cfg.codec_info, mtu);
-
- {
- /* TODO check if other audio channel is open.
- * If yes, check if reconfig is needed
- * Rigt now we do not do this kind of checking.
- * BTA-AV is INT for 2nd audio connection.
- * The application needs to make sure the current codec_info is proper.
- * If one audio connection is open and another SNK attempts to connect to AV,
- * the connection will be rejected.
- */
- /* check if other audio channel is started. If yes, start */
- bdcpy(open.bd_addr, p_scb->peer_addr);
- open.chnl = p_scb->chnl;
- open.hndl = p_scb->hndl;
- open.status = BTA_AV_SUCCESS;
- open.starting = bta_av_chk_start(p_scb);
- open.edr = 0;
- if( NULL != (p = BTM_ReadRemoteFeatures(p_scb->peer_addr)))
- {
- if(HCI_EDR_ACL_2MPS_SUPPORTED(p))
- open.edr |= BTA_AV_EDR_2MBPS;
- if(HCI_EDR_ACL_3MPS_SUPPORTED(p))
- open.edr |= BTA_AV_EDR_3MBPS;
- }
+ {
+ /* TODO check if other audio channel is open.
+ * If yes, check if reconfig is needed
+ * Rigt now we do not do this kind of checking.
+ * BTA-AV is INT for 2nd audio connection.
+ * The application needs to make sure the current codec_info is proper.
+ * If one audio connection is open and another SNK attempts to connect to
+ * AV,
+ * the connection will be rejected.
+ */
+ /* check if other audio channel is started. If yes, start */
+ bdcpy(open.bd_addr, p_scb->peer_addr);
+ open.chnl = p_scb->chnl;
+ open.hndl = p_scb->hndl;
+ open.status = BTA_AV_SUCCESS;
+ open.starting = bta_av_chk_start(p_scb);
+ open.edr = 0;
+ if (NULL != (p = BTM_ReadRemoteFeatures(p_scb->peer_addr))) {
+ if (HCI_EDR_ACL_2MPS_SUPPORTED(p)) open.edr |= BTA_AV_EDR_2MBPS;
+ if (HCI_EDR_ACL_3MPS_SUPPORTED(p)) open.edr |= BTA_AV_EDR_3MBPS;
+ }
#if (BTA_AR_INCLUDED == TRUE)
- bta_ar_avdt_conn(BTA_ID_AV, open.bd_addr);
+ bta_ar_avdt_conn(BTA_ID_AV, open.bd_addr);
#endif
- if (p_scb->seps[p_scb->sep_idx].tsep == AVDT_TSEP_SRC )
- open.sep = AVDT_TSEP_SNK;
- else if (p_scb->seps[p_scb->sep_idx].tsep == AVDT_TSEP_SNK )
- open.sep = AVDT_TSEP_SRC;
+ if (p_scb->seps[p_scb->sep_idx].tsep == AVDT_TSEP_SRC)
+ open.sep = AVDT_TSEP_SNK;
+ else if (p_scb->seps[p_scb->sep_idx].tsep == AVDT_TSEP_SNK)
+ open.sep = AVDT_TSEP_SRC;
- (*bta_av_cb.p_cback)(BTA_AV_OPEN_EVT, (tBTA_AV *) &open);
- if(open.starting)
- {
- bta_av_ssm_execute(p_scb, BTA_AV_AP_START_EVT, NULL);
- }
+ (*bta_av_cb.p_cback)(BTA_AV_OPEN_EVT, (tBTA_AV*)&open);
+ if (open.starting) {
+ bta_av_ssm_execute(p_scb, BTA_AV_AP_START_EVT, NULL);
}
+ }
- // This code is used to pass PTS TC for AVDTP ABORT
- char value[PROPERTY_VALUE_MAX] = {0};
- if ((osi_property_get("bluetooth.pts.force_a2dp_abort", value, "false"))
- && (!strcmp(value, "true")))
- {
- APPL_TRACE_ERROR("%s: Calling AVDT_AbortReq", __func__);
- AVDT_AbortReq(p_scb->avdt_handle);
- }
+ // This code is used to pass PTS TC for AVDTP ABORT
+ char value[PROPERTY_VALUE_MAX] = {0};
+ if ((osi_property_get("bluetooth.pts.force_a2dp_abort", value, "false")) &&
+ (!strcmp(value, "true"))) {
+ APPL_TRACE_ERROR("%s: Calling AVDT_AbortReq", __func__);
+ AVDT_AbortReq(p_scb->avdt_handle);
+ }
}
/*******************************************************************************
@@ -1483,26 +1390,24 @@
* Returns void
*
******************************************************************************/
-void bta_av_security_ind (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data)
-{
- tBTA_AV_PROTECT_REQ protect_req;
+void bta_av_security_ind(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data) {
+ tBTA_AV_PROTECT_REQ protect_req;
- p_scb->avdt_label = p_data->str_msg.msg.hdr.label;
+ p_scb->avdt_label = p_data->str_msg.msg.hdr.label;
- if (bta_av_cb.features & BTA_AV_FEAT_PROTECT)
- {
- protect_req.chnl = p_scb->chnl;
- protect_req.hndl = p_scb->hndl;
- protect_req.p_data = p_data->str_msg.msg.security_ind.p_data;
- protect_req.len = p_data->str_msg.msg.security_ind.len;
+ if (bta_av_cb.features & BTA_AV_FEAT_PROTECT) {
+ protect_req.chnl = p_scb->chnl;
+ protect_req.hndl = p_scb->hndl;
+ protect_req.p_data = p_data->str_msg.msg.security_ind.p_data;
+ protect_req.len = p_data->str_msg.msg.security_ind.len;
- (*bta_av_cb.p_cback)(BTA_AV_PROTECT_REQ_EVT, (tBTA_AV *) &protect_req);
- }
- /* app doesn't support security indication; respond with failure */
- else
- {
- AVDT_SecurityRsp(p_scb->avdt_handle, p_scb->avdt_label, AVDT_ERR_NSC, NULL, 0);
- }
+ (*bta_av_cb.p_cback)(BTA_AV_PROTECT_REQ_EVT, (tBTA_AV*)&protect_req);
+ }
+ /* app doesn't support security indication; respond with failure */
+ else {
+ AVDT_SecurityRsp(p_scb->avdt_handle, p_scb->avdt_label, AVDT_ERR_NSC, NULL,
+ 0);
+ }
}
/*******************************************************************************
@@ -1514,20 +1419,18 @@
* Returns void
*
******************************************************************************/
-void bta_av_security_cfm (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data)
-{
- tBTA_AV_PROTECT_RSP protect_rsp;
+void bta_av_security_cfm(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data) {
+ tBTA_AV_PROTECT_RSP protect_rsp;
- if (bta_av_cb.features & BTA_AV_FEAT_PROTECT)
- {
- protect_rsp.chnl = p_scb->chnl;
- protect_rsp.hndl = p_scb->hndl;
- protect_rsp.p_data = p_data->str_msg.msg.security_cfm.p_data;
- protect_rsp.len = p_data->str_msg.msg.security_cfm.len;
- protect_rsp.err_code= p_data->str_msg.msg.hdr.err_code;
+ if (bta_av_cb.features & BTA_AV_FEAT_PROTECT) {
+ protect_rsp.chnl = p_scb->chnl;
+ protect_rsp.hndl = p_scb->hndl;
+ protect_rsp.p_data = p_data->str_msg.msg.security_cfm.p_data;
+ protect_rsp.len = p_data->str_msg.msg.security_cfm.len;
+ protect_rsp.err_code = p_data->str_msg.msg.hdr.err_code;
- (*bta_av_cb.p_cback)(BTA_AV_PROTECT_RSP_EVT, (tBTA_AV *) &protect_rsp);
- }
+ (*bta_av_cb.p_cback)(BTA_AV_PROTECT_RSP_EVT, (tBTA_AV*)&protect_rsp);
+ }
}
/*******************************************************************************
@@ -1539,29 +1442,27 @@
* Returns void
*
******************************************************************************/
-void bta_av_do_close (tBTA_AV_SCB *p_scb,
- UNUSED_ATTR tBTA_AV_DATA *p_data)
-{
- /* stop stream if started */
- if (p_scb->co_started)
- {
- bta_av_str_stopped(p_scb, NULL);
- }
- alarm_cancel(bta_av_cb.link_signalling_timer);
+void bta_av_do_close(tBTA_AV_SCB* p_scb, UNUSED_ATTR tBTA_AV_DATA* p_data) {
+ /* stop stream if started */
+ if (p_scb->co_started) {
+ bta_av_str_stopped(p_scb, NULL);
+ }
+ alarm_cancel(bta_av_cb.link_signalling_timer);
- /* close stream */
- p_scb->started = false;
+ /* close stream */
+ p_scb->started = false;
- /* drop the buffers queued in L2CAP */
- L2CA_FlushChannel (p_scb->l2c_cid, L2CAP_FLUSH_CHANS_ALL);
+ /* drop the buffers queued in L2CAP */
+ L2CA_FlushChannel(p_scb->l2c_cid, L2CAP_FLUSH_CHANS_ALL);
- AVDT_CloseReq(p_scb->avdt_handle);
- /* just in case that the link is congested, link is flow controled by peer or
- * for whatever reason the the close request can not be sent in time.
- * when this timer expires, AVDT_DisconnectReq will be called to disconnect the link
- */
- bta_sys_start_timer(p_scb->avrc_ct_timer, BTA_AV_CLOSE_REQ_TIME_VAL,
- BTA_AV_API_CLOSE_EVT, p_scb->hndl);
+ AVDT_CloseReq(p_scb->avdt_handle);
+ /* just in case that the link is congested, link is flow controled by peer or
+ * for whatever reason the the close request can not be sent in time.
+ * when this timer expires, AVDT_DisconnectReq will be called to disconnect
+ * the link
+ */
+ bta_sys_start_timer(p_scb->avrc_ct_timer, BTA_AV_CLOSE_REQ_TIME_VAL,
+ BTA_AV_API_CLOSE_EVT, p_scb->hndl);
}
/*******************************************************************************
@@ -1573,22 +1474,20 @@
* Returns void
*
******************************************************************************/
-void bta_av_connect_req(tBTA_AV_SCB *p_scb,
- UNUSED_ATTR tBTA_AV_DATA *p_data)
-{
- p_scb->sdp_discovery_started = false;
- if (p_scb->coll_mask & BTA_AV_COLL_INC_TMR)
- {
- /* SNK initiated L2C connection while SRC was doing SDP. */
- /* Wait until timeout to check if SNK starts signalling. */
- APPL_TRACE_EVENT("%s: coll_mask = 0x%2X", __func__, p_scb->coll_mask);
- p_scb->coll_mask |= BTA_AV_COLL_API_CALLED;
- APPL_TRACE_EVENT("%s: updated coll_mask = 0x%2X", __func__,
- p_scb->coll_mask);
- return;
- }
+void bta_av_connect_req(tBTA_AV_SCB* p_scb, UNUSED_ATTR tBTA_AV_DATA* p_data) {
+ p_scb->sdp_discovery_started = false;
+ if (p_scb->coll_mask & BTA_AV_COLL_INC_TMR) {
+ /* SNK initiated L2C connection while SRC was doing SDP. */
+ /* Wait until timeout to check if SNK starts signalling. */
+ APPL_TRACE_EVENT("%s: coll_mask = 0x%2X", __func__, p_scb->coll_mask);
+ p_scb->coll_mask |= BTA_AV_COLL_API_CALLED;
+ APPL_TRACE_EVENT("%s: updated coll_mask = 0x%2X", __func__,
+ p_scb->coll_mask);
+ return;
+ }
- AVDT_ConnectReq(p_scb->peer_addr, p_scb->sec_mask, bta_av_dt_cback[p_scb->hdi]);
+ AVDT_ConnectReq(p_scb->peer_addr, p_scb->sec_mask,
+ bta_av_dt_cback[p_scb->hdi]);
}
/*******************************************************************************
@@ -1600,13 +1499,11 @@
* Returns void
*
******************************************************************************/
-void bta_av_sdp_failed(tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data)
-{
- if (!p_scb->open_status)
- p_scb->open_status = BTA_AV_FAIL_SDP;
+void bta_av_sdp_failed(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data) {
+ if (!p_scb->open_status) p_scb->open_status = BTA_AV_FAIL_SDP;
- p_scb->sdp_discovery_started = false;
- bta_av_str_closed(p_scb, p_data);
+ p_scb->sdp_discovery_started = false;
+ bta_av_str_closed(p_scb, p_data);
}
/*******************************************************************************
@@ -1620,52 +1517,46 @@
* Returns void
*
******************************************************************************/
-void bta_av_disc_results (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data)
-{
- uint8_t num_snks = 0, num_srcs =0, i;
- /* our uuid in case we initiate connection */
- uint16_t uuid_int = p_scb->uuid_int;
+void bta_av_disc_results(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data) {
+ uint8_t num_snks = 0, num_srcs = 0, i;
+ /* our uuid in case we initiate connection */
+ uint16_t uuid_int = p_scb->uuid_int;
- APPL_TRACE_DEBUG("%s: initiator UUID 0x%x", __func__, uuid_int);
- /* store number of stream endpoints returned */
- p_scb->num_seps = p_data->str_msg.msg.discover_cfm.num_seps;
+ APPL_TRACE_DEBUG("%s: initiator UUID 0x%x", __func__, uuid_int);
+ /* store number of stream endpoints returned */
+ p_scb->num_seps = p_data->str_msg.msg.discover_cfm.num_seps;
- for (i = 0; i < p_scb->num_seps; i++)
- {
- /* steam not in use, is a sink, and is audio */
- if ((p_scb->sep_info[i].in_use == false) &&
- (p_scb->sep_info[i].media_type == p_scb->media_type))
- {
- if((p_scb->sep_info[i].tsep == AVDT_TSEP_SNK) &&
- (uuid_int == UUID_SERVCLASS_AUDIO_SOURCE))
- num_snks++;
+ for (i = 0; i < p_scb->num_seps; i++) {
+ /* steam not in use, is a sink, and is audio */
+ if ((p_scb->sep_info[i].in_use == false) &&
+ (p_scb->sep_info[i].media_type == p_scb->media_type)) {
+ if ((p_scb->sep_info[i].tsep == AVDT_TSEP_SNK) &&
+ (uuid_int == UUID_SERVCLASS_AUDIO_SOURCE))
+ num_snks++;
- if((p_scb->sep_info[i].tsep == AVDT_TSEP_SRC) &&
- (uuid_int == UUID_SERVCLASS_AUDIO_SINK))
- num_srcs++;
-
- }
+ if ((p_scb->sep_info[i].tsep == AVDT_TSEP_SRC) &&
+ (uuid_int == UUID_SERVCLASS_AUDIO_SINK))
+ num_srcs++;
}
+ }
- p_scb->p_cos->disc_res(p_scb->hndl, p_scb->num_seps, num_snks, num_srcs, p_scb->peer_addr,
- uuid_int);
- p_scb->num_disc_snks = num_snks;
- p_scb->num_disc_srcs = num_srcs;
+ p_scb->p_cos->disc_res(p_scb->hndl, p_scb->num_seps, num_snks, num_srcs,
+ p_scb->peer_addr, uuid_int);
+ p_scb->num_disc_snks = num_snks;
+ p_scb->num_disc_srcs = num_srcs;
- /* if we got any */
- if (p_scb->num_seps > 0)
- {
- /* initialize index into discovery results */
- p_scb->sep_info_idx = 0;
+ /* if we got any */
+ if (p_scb->num_seps > 0) {
+ /* initialize index into discovery results */
+ p_scb->sep_info_idx = 0;
- /* get the capabilities of the first available stream */
- bta_av_next_getcap(p_scb, p_data);
- }
- /* else we got discover response but with no streams; we're done */
- else
- {
- bta_av_ssm_execute(p_scb, BTA_AV_STR_DISC_FAIL_EVT, p_data);
- }
+ /* get the capabilities of the first available stream */
+ bta_av_next_getcap(p_scb, p_data);
+ }
+ /* else we got discover response but with no streams; we're done */
+ else {
+ bta_av_ssm_execute(p_scb, BTA_AV_STR_DISC_FAIL_EVT, p_data);
+ }
}
/*******************************************************************************
@@ -1679,44 +1570,37 @@
* Returns void
*
******************************************************************************/
-void bta_av_disc_res_as_acp (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data)
-{
- uint8_t num_snks = 0, i;
+void bta_av_disc_res_as_acp(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data) {
+ uint8_t num_snks = 0, i;
- /* store number of stream endpoints returned */
- p_scb->num_seps = p_data->str_msg.msg.discover_cfm.num_seps;
+ /* store number of stream endpoints returned */
+ p_scb->num_seps = p_data->str_msg.msg.discover_cfm.num_seps;
-
-
- for (i = 0; i < p_scb->num_seps; i++)
- {
- /* steam is a sink, and is audio */
- if ((p_scb->sep_info[i].tsep == AVDT_TSEP_SNK) &&
- (p_scb->sep_info[i].media_type == p_scb->media_type))
- {
- p_scb->sep_info[i].in_use = false;
- num_snks++;
- }
+ for (i = 0; i < p_scb->num_seps; i++) {
+ /* steam is a sink, and is audio */
+ if ((p_scb->sep_info[i].tsep == AVDT_TSEP_SNK) &&
+ (p_scb->sep_info[i].media_type == p_scb->media_type)) {
+ p_scb->sep_info[i].in_use = false;
+ num_snks++;
}
- p_scb->p_cos->disc_res(p_scb->hndl, p_scb->num_seps, num_snks, 0, p_scb->peer_addr,
- UUID_SERVCLASS_AUDIO_SOURCE);
- p_scb->num_disc_snks = num_snks;
- p_scb->num_disc_srcs = 0;
+ }
+ p_scb->p_cos->disc_res(p_scb->hndl, p_scb->num_seps, num_snks, 0,
+ p_scb->peer_addr, UUID_SERVCLASS_AUDIO_SOURCE);
+ p_scb->num_disc_snks = num_snks;
+ p_scb->num_disc_srcs = 0;
- /* if we got any */
- if (p_scb->num_seps > 0)
- {
- /* initialize index into discovery results */
- p_scb->sep_info_idx = 0;
+ /* if we got any */
+ if (p_scb->num_seps > 0) {
+ /* initialize index into discovery results */
+ p_scb->sep_info_idx = 0;
- /* get the capabilities of the first available stream */
- bta_av_next_getcap(p_scb, p_data);
- }
- /* else we got discover response but with no streams; we're done */
- else
- {
- bta_av_ssm_execute(p_scb, BTA_AV_STR_DISC_FAIL_EVT, p_data);
- }
+ /* get the capabilities of the first available stream */
+ bta_av_next_getcap(p_scb, p_data);
+ }
+ /* else we got discover response but with no streams; we're done */
+ else {
+ bta_av_ssm_execute(p_scb, BTA_AV_STR_DISC_FAIL_EVT, p_data);
+ }
}
/*******************************************************************************
@@ -1728,43 +1612,37 @@
* Returns void
*
******************************************************************************/
-void bta_av_save_caps(tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data)
-{
- tAVDT_CFG cfg;
- tAVDT_SEP_INFO *p_info = &p_scb->sep_info[p_scb->sep_info_idx];
- uint8_t old_wait = p_scb->wait;
- bool getcap_done = false;
+void bta_av_save_caps(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data) {
+ tAVDT_CFG cfg;
+ tAVDT_SEP_INFO* p_info = &p_scb->sep_info[p_scb->sep_info_idx];
+ uint8_t old_wait = p_scb->wait;
+ bool getcap_done = false;
- APPL_TRACE_DEBUG("%s: num_seps:%d sep_info_idx:%d wait:x%x", __func__,
- p_scb->num_seps, p_scb->sep_info_idx, p_scb->wait);
- memcpy(&cfg, p_scb->p_cap, sizeof(tAVDT_CFG));
- /* let application know the capability of the SNK */
- p_scb->p_cos->getcfg(p_scb->hndl, cfg.codec_info, &p_scb->sep_info_idx,
- p_info->seid, &cfg.num_protect, cfg.protect_info);
+ APPL_TRACE_DEBUG("%s: num_seps:%d sep_info_idx:%d wait:x%x", __func__,
+ p_scb->num_seps, p_scb->sep_info_idx, p_scb->wait);
+ memcpy(&cfg, p_scb->p_cap, sizeof(tAVDT_CFG));
+ /* let application know the capability of the SNK */
+ p_scb->p_cos->getcfg(p_scb->hndl, cfg.codec_info, &p_scb->sep_info_idx,
+ p_info->seid, &cfg.num_protect, cfg.protect_info);
- p_scb->sep_info_idx++;
- if(p_scb->num_seps > p_scb->sep_info_idx)
- {
- /* Some devices have seps at the end of the discover list, which is not */
- /* matching media type(video not audio). */
- /* In this case, we are done with getcap without sending another */
- /* request to AVDT. */
- if (!bta_av_next_getcap(p_scb, p_data))
- getcap_done = true;
+ p_scb->sep_info_idx++;
+ if (p_scb->num_seps > p_scb->sep_info_idx) {
+ /* Some devices have seps at the end of the discover list, which is not */
+ /* matching media type(video not audio). */
+ /* In this case, we are done with getcap without sending another */
+ /* request to AVDT. */
+ if (!bta_av_next_getcap(p_scb, p_data)) getcap_done = true;
+ } else
+ getcap_done = true;
+
+ if (getcap_done) {
+ /* we are done getting capabilities. restore the p_cb->sep_info_idx */
+ p_scb->sep_info_idx = 0;
+ p_scb->wait &= ~(BTA_AV_WAIT_ACP_CAPS_ON | BTA_AV_WAIT_ACP_CAPS_STARTED);
+ if (old_wait & BTA_AV_WAIT_ACP_CAPS_STARTED) {
+ bta_av_start_ok(p_scb, NULL);
}
- else
- getcap_done = true;
-
- if (getcap_done)
- {
- /* we are done getting capabilities. restore the p_cb->sep_info_idx */
- p_scb->sep_info_idx = 0;
- p_scb->wait &= ~(BTA_AV_WAIT_ACP_CAPS_ON|BTA_AV_WAIT_ACP_CAPS_STARTED);
- if (old_wait & BTA_AV_WAIT_ACP_CAPS_STARTED)
- {
- bta_av_start_ok (p_scb, NULL);
- }
- }
+ }
}
/*******************************************************************************
@@ -1776,10 +1654,8 @@
* Returns void
*
******************************************************************************/
-void bta_av_set_use_rc (tBTA_AV_SCB *p_scb,
- UNUSED_ATTR tBTA_AV_DATA *p_data)
-{
- p_scb->use_rc = true;
+void bta_av_set_use_rc(tBTA_AV_SCB* p_scb, UNUSED_ATTR tBTA_AV_DATA* p_data) {
+ p_scb->use_rc = true;
}
/*******************************************************************************
@@ -1791,14 +1667,12 @@
* Returns void
*
******************************************************************************/
-void bta_av_cco_close (tBTA_AV_SCB *p_scb,
- UNUSED_ATTR tBTA_AV_DATA *p_data)
-{
- uint16_t mtu;
+void bta_av_cco_close(tBTA_AV_SCB* p_scb, UNUSED_ATTR tBTA_AV_DATA* p_data) {
+ uint16_t mtu;
- mtu = bta_av_chk_mtu(p_scb, BTA_AV_MAX_A2DP_MTU);
+ mtu = bta_av_chk_mtu(p_scb, BTA_AV_MAX_A2DP_MTU);
- p_scb->p_cos->close(p_scb->hndl, mtu);
+ p_scb->p_cos->close(p_scb->hndl, mtu);
}
/*******************************************************************************
@@ -1810,55 +1684,50 @@
* Returns void
*
******************************************************************************/
-void bta_av_open_failed (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data)
-{
+void bta_av_open_failed(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data) {
+ bool is_av_opened = false;
+ tBTA_AV_SCB* p_opened_scb = NULL;
+ uint8_t idx;
+ tBTA_AV_OPEN open;
- bool is_av_opened = false;
- tBTA_AV_SCB * p_opened_scb = NULL;
- uint8_t idx;
- tBTA_AV_OPEN open;
+ APPL_TRACE_DEBUG("%s", __func__);
+ p_scb->open_status = BTA_AV_FAIL_STREAM;
+ bta_av_cco_close(p_scb, p_data);
- APPL_TRACE_DEBUG("%s", __func__);
- p_scb->open_status = BTA_AV_FAIL_STREAM;
- bta_av_cco_close(p_scb, p_data);
+ /* check whether there is already an opened audio or video connection with the
+ * same device */
+ for (idx = 0; (idx < BTA_AV_NUM_STRS) && (is_av_opened == false); idx++) {
+ p_opened_scb = bta_av_cb.p_scb[idx];
+ if (p_opened_scb && (p_opened_scb->state == BTA_AV_OPEN_SST) &&
+ (!bdcmp(p_opened_scb->peer_addr, p_scb->peer_addr)))
+ is_av_opened = true;
+ }
- /* check whether there is already an opened audio or video connection with the same device */
- for (idx = 0; (idx < BTA_AV_NUM_STRS) && (is_av_opened == false); idx++ )
- {
- p_opened_scb = bta_av_cb.p_scb[idx];
- if (p_opened_scb && (p_opened_scb->state == BTA_AV_OPEN_SST) && (!bdcmp(p_opened_scb->peer_addr,p_scb->peer_addr )) )
- is_av_opened = true;
+ /* if there is already an active AV connnection with the same bd_addr,
+ don't send disconnect req, just report the open event with
+ BTA_AV_FAIL_GET_CAP status */
+ if (is_av_opened == true) {
+ bdcpy(open.bd_addr, p_scb->peer_addr);
+ open.chnl = p_scb->chnl;
+ open.hndl = p_scb->hndl;
+ open.status = BTA_AV_FAIL_GET_CAP;
+ open.starting = bta_av_chk_start(p_scb);
+ open.edr = 0;
+ /* set the state back to initial state */
+ bta_av_set_scb_sst_init(p_scb);
- }
+ if (p_scb->seps[p_scb->sep_idx].tsep == AVDT_TSEP_SRC)
+ open.sep = AVDT_TSEP_SNK;
+ else if (p_scb->seps[p_scb->sep_idx].tsep == AVDT_TSEP_SNK)
+ open.sep = AVDT_TSEP_SRC;
- /* if there is already an active AV connnection with the same bd_addr,
- don't send disconnect req, just report the open event with BTA_AV_FAIL_GET_CAP status */
- if (is_av_opened == true)
- {
- bdcpy(open.bd_addr, p_scb->peer_addr);
- open.chnl = p_scb->chnl;
- open.hndl = p_scb->hndl;
- open.status = BTA_AV_FAIL_GET_CAP;
- open.starting = bta_av_chk_start(p_scb);
- open.edr = 0;
- /* set the state back to initial state */
- bta_av_set_scb_sst_init(p_scb);
+ (*bta_av_cb.p_cback)(BTA_AV_OPEN_EVT, (tBTA_AV*)&open);
- if (p_scb->seps[p_scb->sep_idx].tsep == AVDT_TSEP_SRC )
- open.sep = AVDT_TSEP_SNK;
- else if (p_scb->seps[p_scb->sep_idx].tsep == AVDT_TSEP_SNK )
- open.sep = AVDT_TSEP_SRC;
-
- (*bta_av_cb.p_cback)(BTA_AV_OPEN_EVT, (tBTA_AV *) &open);
-
- }
- else
- {
- AVDT_DisconnectReq(p_scb->peer_addr, bta_av_dt_cback[p_scb->hdi]);
- }
+ } else {
+ AVDT_DisconnectReq(p_scb->peer_addr, bta_av_dt_cback[p_scb->hdi]);
+ }
}
-
/*******************************************************************************
*
* Function bta_av_getcap_results
@@ -1870,79 +1739,72 @@
* Returns void
*
******************************************************************************/
-void bta_av_getcap_results (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data)
-{
- tAVDT_CFG cfg;
- uint8_t media_type;
- tAVDT_SEP_INFO *p_info = &p_scb->sep_info[p_scb->sep_info_idx];
- uint16_t uuid_int; /* UUID for which connection was initiatied */
+void bta_av_getcap_results(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data) {
+ tAVDT_CFG cfg;
+ uint8_t media_type;
+ tAVDT_SEP_INFO* p_info = &p_scb->sep_info[p_scb->sep_info_idx];
+ uint16_t uuid_int; /* UUID for which connection was initiatied */
- memcpy(&cfg, &p_scb->cfg, sizeof(tAVDT_CFG));
- cfg.num_codec = 1;
- cfg.num_protect = p_scb->p_cap->num_protect;
- memcpy(cfg.codec_info, p_scb->p_cap->codec_info, AVDT_CODEC_SIZE);
- memcpy(cfg.protect_info, p_scb->p_cap->protect_info, AVDT_PROTECT_SIZE);
- media_type = A2DP_GetMediaType(p_scb->p_cap->codec_info);
+ memcpy(&cfg, &p_scb->cfg, sizeof(tAVDT_CFG));
+ cfg.num_codec = 1;
+ cfg.num_protect = p_scb->p_cap->num_protect;
+ memcpy(cfg.codec_info, p_scb->p_cap->codec_info, AVDT_CODEC_SIZE);
+ memcpy(cfg.protect_info, p_scb->p_cap->protect_info, AVDT_PROTECT_SIZE);
+ media_type = A2DP_GetMediaType(p_scb->p_cap->codec_info);
- APPL_TRACE_DEBUG("%s: num_codec %d", __func__, p_scb->p_cap->num_codec);
- APPL_TRACE_DEBUG("%s: media type x%x, x%x", __func__, media_type,
- p_scb->media_type);
+ APPL_TRACE_DEBUG("%s: num_codec %d", __func__, p_scb->p_cap->num_codec);
+ APPL_TRACE_DEBUG("%s: media type x%x, x%x", __func__, media_type,
+ p_scb->media_type);
- /* if codec present and we get a codec configuration */
- if ((p_scb->p_cap->num_codec != 0) &&
- (media_type == p_scb->media_type) &&
- (p_scb->p_cos->getcfg(p_scb->hndl, cfg.codec_info,
- &p_scb->sep_info_idx, p_info->seid,
- &cfg.num_protect, cfg.protect_info) ==
- A2DP_SUCCESS)) {
- /* save copy of codec configuration */
- memcpy(&p_scb->cfg, &cfg, sizeof(tAVDT_CFG));
+ /* if codec present and we get a codec configuration */
+ if ((p_scb->p_cap->num_codec != 0) && (media_type == p_scb->media_type) &&
+ (p_scb->p_cos->getcfg(p_scb->hndl, cfg.codec_info, &p_scb->sep_info_idx,
+ p_info->seid, &cfg.num_protect,
+ cfg.protect_info) == A2DP_SUCCESS)) {
+ /* save copy of codec configuration */
+ memcpy(&p_scb->cfg, &cfg, sizeof(tAVDT_CFG));
- uuid_int = p_scb->uuid_int;
- APPL_TRACE_DEBUG("%s: initiator UUID = 0x%x", __func__, uuid_int);
- if (uuid_int == UUID_SERVCLASS_AUDIO_SOURCE)
- bta_av_adjust_seps_idx(p_scb, bta_av_get_scb_handle(p_scb, AVDT_TSEP_SRC));
- else if (uuid_int == UUID_SERVCLASS_AUDIO_SINK)
- bta_av_adjust_seps_idx(p_scb, bta_av_get_scb_handle(p_scb, AVDT_TSEP_SNK));
+ uuid_int = p_scb->uuid_int;
+ APPL_TRACE_DEBUG("%s: initiator UUID = 0x%x", __func__, uuid_int);
+ if (uuid_int == UUID_SERVCLASS_AUDIO_SOURCE)
+ bta_av_adjust_seps_idx(p_scb,
+ bta_av_get_scb_handle(p_scb, AVDT_TSEP_SRC));
+ else if (uuid_int == UUID_SERVCLASS_AUDIO_SINK)
+ bta_av_adjust_seps_idx(p_scb,
+ bta_av_get_scb_handle(p_scb, AVDT_TSEP_SNK));
- /* use only the services peer supports */
- cfg.psc_mask &= p_scb->p_cap->psc_mask;
- p_scb->cur_psc_mask = cfg.psc_mask;
+ /* use only the services peer supports */
+ cfg.psc_mask &= p_scb->p_cap->psc_mask;
+ p_scb->cur_psc_mask = cfg.psc_mask;
- if ((uuid_int == UUID_SERVCLASS_AUDIO_SINK) &&
- (p_scb->seps[p_scb->sep_idx].p_app_sink_data_cback != NULL))
- {
- APPL_TRACE_DEBUG("%s: configure decoder for Sink connection",
- __func__);
- tBTA_AV_MEDIA av_sink_codec_info;
- memcpy(av_sink_codec_info.avk_config.bd_addr, p_scb->peer_addr,
- sizeof(BD_ADDR));
- av_sink_codec_info.avk_config.codec_info = p_scb->cfg.codec_info;
- p_scb->seps[p_scb->sep_idx].p_app_sink_data_cback(BTA_AV_SINK_MEDIA_CFG_EVT,
- &av_sink_codec_info);
- }
-
- if (uuid_int == UUID_SERVCLASS_AUDIO_SOURCE) {
- A2DP_AdjustCodec(cfg.codec_info);
- }
-
- /* open the stream */
- AVDT_OpenReq(p_scb->seps[p_scb->sep_idx].av_handle, p_scb->peer_addr,
- p_scb->sep_info[p_scb->sep_info_idx].seid, &cfg);
-
- if (!bta_av_is_rcfg_sst(p_scb))
- {
- /* free capabilities buffer */
- osi_free_and_reset((void **)&p_scb->p_cap);
- }
- }
- else
- {
- /* try the next stream, if any */
- p_scb->sep_info_idx++;
- bta_av_next_getcap(p_scb, p_data);
+ if ((uuid_int == UUID_SERVCLASS_AUDIO_SINK) &&
+ (p_scb->seps[p_scb->sep_idx].p_app_sink_data_cback != NULL)) {
+ APPL_TRACE_DEBUG("%s: configure decoder for Sink connection", __func__);
+ tBTA_AV_MEDIA av_sink_codec_info;
+ memcpy(av_sink_codec_info.avk_config.bd_addr, p_scb->peer_addr,
+ sizeof(BD_ADDR));
+ av_sink_codec_info.avk_config.codec_info = p_scb->cfg.codec_info;
+ p_scb->seps[p_scb->sep_idx].p_app_sink_data_cback(
+ BTA_AV_SINK_MEDIA_CFG_EVT, &av_sink_codec_info);
}
+ if (uuid_int == UUID_SERVCLASS_AUDIO_SOURCE) {
+ A2DP_AdjustCodec(cfg.codec_info);
+ }
+
+ /* open the stream */
+ AVDT_OpenReq(p_scb->seps[p_scb->sep_idx].av_handle, p_scb->peer_addr,
+ p_scb->sep_info[p_scb->sep_info_idx].seid, &cfg);
+
+ if (!bta_av_is_rcfg_sst(p_scb)) {
+ /* free capabilities buffer */
+ osi_free_and_reset((void**)&p_scb->p_cap);
+ }
+ } else {
+ /* try the next stream, if any */
+ p_scb->sep_info_idx++;
+ bta_av_next_getcap(p_scb, p_data);
+ }
}
/*******************************************************************************
@@ -1954,18 +1816,17 @@
* Returns void
*
******************************************************************************/
-void bta_av_setconfig_rej (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data)
-{
- tBTA_AV_REJECT reject;
- uint8_t avdt_handle = p_data->ci_setconfig.avdt_handle;
+void bta_av_setconfig_rej(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data) {
+ tBTA_AV_REJECT reject;
+ uint8_t avdt_handle = p_data->ci_setconfig.avdt_handle;
- bta_av_adjust_seps_idx(p_scb, avdt_handle);
- APPL_TRACE_DEBUG("%s: sep_idx: %d", __func__, p_scb->sep_idx);
- AVDT_ConfigRsp(p_scb->avdt_handle, p_scb->avdt_label, AVDT_ERR_UNSUP_CFG, 0);
+ bta_av_adjust_seps_idx(p_scb, avdt_handle);
+ APPL_TRACE_DEBUG("%s: sep_idx: %d", __func__, p_scb->sep_idx);
+ AVDT_ConfigRsp(p_scb->avdt_handle, p_scb->avdt_label, AVDT_ERR_UNSUP_CFG, 0);
- bdcpy(reject.bd_addr, p_data->str_msg.bd_addr);
- reject.hndl = p_scb->hndl;
- (*bta_av_cb.p_cback)(BTA_AV_REJECT_EVT, (tBTA_AV *) &reject);
+ bdcpy(reject.bd_addr, p_data->str_msg.bd_addr);
+ reject.hndl = p_scb->hndl;
+ (*bta_av_cb.p_cback)(BTA_AV_REJECT_EVT, (tBTA_AV*)&reject);
}
/*******************************************************************************
@@ -1977,12 +1838,11 @@
* Returns void
*
******************************************************************************/
-void bta_av_discover_req (tBTA_AV_SCB *p_scb,
- UNUSED_ATTR tBTA_AV_DATA *p_data)
-{
- /* send avdtp discover request */
+void bta_av_discover_req(tBTA_AV_SCB* p_scb, UNUSED_ATTR tBTA_AV_DATA* p_data) {
+ /* send avdtp discover request */
- AVDT_DiscoverReq(p_scb->peer_addr, p_scb->sep_info, BTA_AV_NUM_SEPS, bta_av_dt_cback[p_scb->hdi]);
+ AVDT_DiscoverReq(p_scb->peer_addr, p_scb->sep_info, BTA_AV_NUM_SEPS,
+ bta_av_dt_cback[p_scb->hdi]);
}
/*******************************************************************************
@@ -1994,10 +1854,9 @@
* Returns void
*
******************************************************************************/
-void bta_av_conn_failed (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data)
-{
- p_scb->open_status = BTA_AV_FAIL_STREAM;
- bta_av_str_closed(p_scb, p_data);
+void bta_av_conn_failed(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data) {
+ p_scb->open_status = BTA_AV_FAIL_STREAM;
+ bta_av_str_closed(p_scb, p_data);
}
/*******************************************************************************
@@ -2009,50 +1868,45 @@
* Returns void
*
******************************************************************************/
-void bta_av_do_start (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data)
-{
- uint8_t policy = HCI_ENABLE_SNIFF_MODE;
- uint8_t cur_role;
+void bta_av_do_start(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data) {
+ uint8_t policy = HCI_ENABLE_SNIFF_MODE;
+ uint8_t cur_role;
- APPL_TRACE_DEBUG("%s: sco_occupied:%d, role:x%x, started:%d", __func__,
- bta_av_cb.sco_occupied, p_scb->role, p_scb->started);
- if (bta_av_cb.sco_occupied)
- {
- bta_av_start_failed(p_scb, p_data);
- return;
+ APPL_TRACE_DEBUG("%s: sco_occupied:%d, role:x%x, started:%d", __func__,
+ bta_av_cb.sco_occupied, p_scb->role, p_scb->started);
+ if (bta_av_cb.sco_occupied) {
+ bta_av_start_failed(p_scb, p_data);
+ return;
+ }
+
+ /* disallow role switch during streaming, only if we are the master role
+ * i.e. allow role switch, if we are slave.
+ * It would not hurt us, if the peer device wants us to be master */
+ if ((BTM_GetRole(p_scb->peer_addr, &cur_role) == BTM_SUCCESS) &&
+ (cur_role == BTM_ROLE_MASTER)) {
+ policy |= HCI_ENABLE_MASTER_SLAVE_SWITCH;
+ }
+
+ bta_sys_clear_policy(BTA_ID_AV, policy, p_scb->peer_addr);
+
+ if ((p_scb->started == false) &&
+ ((p_scb->role & BTA_AV_ROLE_START_INT) == 0)) {
+ p_scb->role |= BTA_AV_ROLE_START_INT;
+ bta_sys_busy(BTA_ID_AV, bta_av_cb.audio_open_cnt, p_scb->peer_addr);
+
+ AVDT_StartReq(&p_scb->avdt_handle, 1);
+ } else if (p_scb->started) {
+ p_scb->role |= BTA_AV_ROLE_START_INT;
+ if (p_scb->wait == 0) {
+ if (p_scb->role & BTA_AV_ROLE_SUSPEND) {
+ notify_start_failed(p_scb);
+ } else {
+ bta_av_start_ok(p_scb, NULL);
+ }
}
-
- /* disallow role switch during streaming, only if we are the master role
- * i.e. allow role switch, if we are slave.
- * It would not hurt us, if the peer device wants us to be master */
- if ((BTM_GetRole (p_scb->peer_addr, &cur_role) == BTM_SUCCESS) &&
- (cur_role == BTM_ROLE_MASTER) )
- {
- policy |= HCI_ENABLE_MASTER_SLAVE_SWITCH;
- }
-
- bta_sys_clear_policy(BTA_ID_AV, policy, p_scb->peer_addr);
-
- if ((p_scb->started == false) && ((p_scb->role & BTA_AV_ROLE_START_INT) == 0))
- {
- p_scb->role |= BTA_AV_ROLE_START_INT;
- bta_sys_busy(BTA_ID_AV, bta_av_cb.audio_open_cnt, p_scb->peer_addr);
-
- AVDT_StartReq(&p_scb->avdt_handle, 1);
- }
- else if (p_scb->started)
- {
- p_scb->role |= BTA_AV_ROLE_START_INT;
- if ( p_scb->wait == 0 ) {
- if (p_scb->role & BTA_AV_ROLE_SUSPEND) {
- notify_start_failed(p_scb);
- } else {
- bta_av_start_ok(p_scb, NULL);
- }
- }
- }
- APPL_TRACE_DEBUG("%s: started %d role:x%x", __func__, p_scb->started,
- p_scb->role);
+ }
+ APPL_TRACE_DEBUG("%s: started %d role:x%x", __func__, p_scb->started,
+ p_scb->role);
}
/*******************************************************************************
@@ -2064,88 +1918,80 @@
* Returns void
*
******************************************************************************/
-void bta_av_str_stopped (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data)
-{
- tBTA_AV_SUSPEND suspend_rsp;
- uint8_t start = p_scb->started;
- bool sus_evt = true;
- BT_HDR *p_buf;
- uint8_t policy = HCI_ENABLE_SNIFF_MODE;
+void bta_av_str_stopped(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data) {
+ tBTA_AV_SUSPEND suspend_rsp;
+ uint8_t start = p_scb->started;
+ bool sus_evt = true;
+ BT_HDR* p_buf;
+ uint8_t policy = HCI_ENABLE_SNIFF_MODE;
- APPL_TRACE_ERROR("%s: audio_open_cnt=%d, p_data %x", __func__,
- bta_av_cb.audio_open_cnt, p_data);
+ APPL_TRACE_ERROR("%s: audio_open_cnt=%d, p_data %x", __func__,
+ bta_av_cb.audio_open_cnt, p_data);
- bta_sys_idle(BTA_ID_AV, bta_av_cb.audio_open_cnt, p_scb->peer_addr);
- if ((bta_av_cb.features & BTA_AV_FEAT_MASTER) == 0 || bta_av_cb.audio_open_cnt == 1)
- policy |= HCI_ENABLE_MASTER_SLAVE_SWITCH;
- bta_sys_set_policy(BTA_ID_AV, policy, p_scb->peer_addr);
+ bta_sys_idle(BTA_ID_AV, bta_av_cb.audio_open_cnt, p_scb->peer_addr);
+ if ((bta_av_cb.features & BTA_AV_FEAT_MASTER) == 0 ||
+ bta_av_cb.audio_open_cnt == 1)
+ policy |= HCI_ENABLE_MASTER_SLAVE_SWITCH;
+ bta_sys_set_policy(BTA_ID_AV, policy, p_scb->peer_addr);
- if (p_scb->co_started)
- {
- vendor_get_interface()->send_command(
- (vendor_opcode_t)BT_VND_OP_A2DP_OFFLOAD_STOP,
- (void*)&p_scb->l2c_cid);
- if (p_scb->offload_start_pending) {
- tBTA_AV_STATUS status = BTA_AV_FAIL_STREAM;
- (*bta_av_cb.p_cback)(BTA_AV_OFFLOAD_START_RSP_EVT, (tBTA_AV *)&status);
- }
- p_scb->offload_start_pending = false;
-
- bta_av_stream_chg(p_scb, false);
- p_scb->co_started = false;
-
- p_scb->p_cos->stop(p_scb->hndl);
- L2CA_SetFlushTimeout(p_scb->peer_addr, L2CAP_DEFAULT_FLUSH_TO);
+ if (p_scb->co_started) {
+ vendor_get_interface()->send_command(
+ (vendor_opcode_t)BT_VND_OP_A2DP_OFFLOAD_STOP, (void*)&p_scb->l2c_cid);
+ if (p_scb->offload_start_pending) {
+ tBTA_AV_STATUS status = BTA_AV_FAIL_STREAM;
+ (*bta_av_cb.p_cback)(BTA_AV_OFFLOAD_START_RSP_EVT, (tBTA_AV*)&status);
}
+ p_scb->offload_start_pending = false;
- /* if q_info.a2dp_list is not empty, drop it now */
- if (BTA_AV_CHNL_AUDIO == p_scb->chnl) {
- while (!list_is_empty(p_scb->a2dp_list))
- {
- p_buf = (BT_HDR *)list_front(p_scb->a2dp_list);
- list_remove(p_scb->a2dp_list, p_buf);
- osi_free(p_buf);
- }
+ bta_av_stream_chg(p_scb, false);
+ p_scb->co_started = false;
+
+ p_scb->p_cos->stop(p_scb->hndl);
+ L2CA_SetFlushTimeout(p_scb->peer_addr, L2CAP_DEFAULT_FLUSH_TO);
+ }
+
+ /* if q_info.a2dp_list is not empty, drop it now */
+ if (BTA_AV_CHNL_AUDIO == p_scb->chnl) {
+ while (!list_is_empty(p_scb->a2dp_list)) {
+ p_buf = (BT_HDR*)list_front(p_scb->a2dp_list);
+ list_remove(p_scb->a2dp_list, p_buf);
+ osi_free(p_buf);
+ }
/* drop the audio buffers queued in L2CAP */
- if (p_data && p_data->api_stop.flush)
- L2CA_FlushChannel (p_scb->l2c_cid, L2CAP_FLUSH_CHANS_ALL);
+ if (p_data && p_data->api_stop.flush)
+ L2CA_FlushChannel(p_scb->l2c_cid, L2CAP_FLUSH_CHANS_ALL);
+ }
+
+ suspend_rsp.chnl = p_scb->chnl;
+ suspend_rsp.hndl = p_scb->hndl;
+
+ if (p_data && p_data->api_stop.suspend) {
+ APPL_TRACE_DEBUG("%s: suspending: %d, sup:%d", __func__, start,
+ p_scb->suspend_sup);
+ if ((start) && (p_scb->suspend_sup)) {
+ sus_evt = false;
+ p_scb->l2c_bufs = 0;
+ AVDT_SuspendReq(&p_scb->avdt_handle, 1);
}
- suspend_rsp.chnl = p_scb->chnl;
- suspend_rsp.hndl = p_scb->hndl;
-
- if (p_data && p_data->api_stop.suspend)
- {
- APPL_TRACE_DEBUG("%s: suspending: %d, sup:%d", __func__, start,
- p_scb->suspend_sup);
- if ((start) && (p_scb->suspend_sup))
- {
- sus_evt = false;
- p_scb->l2c_bufs = 0;
- AVDT_SuspendReq(&p_scb->avdt_handle, 1);
- }
-
- /* send SUSPEND_EVT event only if not in reconfiguring state and sus_evt is true*/
- if ((sus_evt)&&(p_scb->state != BTA_AV_RCFG_SST))
- {
- suspend_rsp.status = BTA_AV_SUCCESS;
- suspend_rsp.initiator = true;
- (*bta_av_cb.p_cback)(BTA_AV_SUSPEND_EVT, (tBTA_AV *) &suspend_rsp);
- }
+ /* send SUSPEND_EVT event only if not in reconfiguring state and sus_evt is
+ * true*/
+ if ((sus_evt) && (p_scb->state != BTA_AV_RCFG_SST)) {
+ suspend_rsp.status = BTA_AV_SUCCESS;
+ suspend_rsp.initiator = true;
+ (*bta_av_cb.p_cback)(BTA_AV_SUSPEND_EVT, (tBTA_AV*)&suspend_rsp);
}
- else
- {
- suspend_rsp.status = BTA_AV_SUCCESS;
- suspend_rsp.initiator = true;
- APPL_TRACE_EVENT("%s: status %d", __func__, suspend_rsp.status);
+ } else {
+ suspend_rsp.status = BTA_AV_SUCCESS;
+ suspend_rsp.initiator = true;
+ APPL_TRACE_EVENT("%s: status %d", __func__, suspend_rsp.status);
- /* send STOP_EVT event only if not in reconfiguring state */
- if (p_scb->state != BTA_AV_RCFG_SST)
- {
- (*bta_av_cb.p_cback)(BTA_AV_STOP_EVT, (tBTA_AV *) &suspend_rsp);
- }
+ /* send STOP_EVT event only if not in reconfiguring state */
+ if (p_scb->state != BTA_AV_RCFG_SST) {
+ (*bta_av_cb.p_cback)(BTA_AV_STOP_EVT, (tBTA_AV*)&suspend_rsp);
}
+ }
}
/*******************************************************************************
@@ -2159,64 +2005,56 @@
* Returns void
*
******************************************************************************/
-void bta_av_reconfig (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data)
-{
- tAVDT_CFG *p_cfg;
- tBTA_AV_API_STOP stop;
- tBTA_AV_API_RCFG *p_rcfg = &p_data->api_reconfig;
+void bta_av_reconfig(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data) {
+ tAVDT_CFG* p_cfg;
+ tBTA_AV_API_STOP stop;
+ tBTA_AV_API_RCFG* p_rcfg = &p_data->api_reconfig;
- APPL_TRACE_DEBUG("%s: r:%d, s:%d idx: %d (o:%d)", __func__,
- p_scb->recfg_sup, p_scb->suspend_sup,
- p_scb->rcfg_idx, p_scb->sep_info_idx);
+ APPL_TRACE_DEBUG("%s: r:%d, s:%d idx: %d (o:%d)", __func__, p_scb->recfg_sup,
+ p_scb->suspend_sup, p_scb->rcfg_idx, p_scb->sep_info_idx);
- p_scb->num_recfg = 0;
- /* store the new configuration in control block */
- if (p_scb->p_cap == NULL)
- p_scb->p_cap = (tAVDT_CFG *)osi_malloc(sizeof(tAVDT_CFG));
- p_cfg = p_scb->p_cap;
+ p_scb->num_recfg = 0;
+ /* store the new configuration in control block */
+ if (p_scb->p_cap == NULL)
+ p_scb->p_cap = (tAVDT_CFG*)osi_malloc(sizeof(tAVDT_CFG));
+ p_cfg = p_scb->p_cap;
- alarm_cancel(p_scb->avrc_ct_timer);
+ alarm_cancel(p_scb->avrc_ct_timer);
- memcpy(p_cfg, &p_scb->cfg, sizeof(tAVDT_CFG));
- p_cfg->num_protect = p_rcfg->num_protect;
- memcpy(p_cfg->codec_info, p_rcfg->codec_info, AVDT_CODEC_SIZE);
- memcpy(p_cfg->protect_info, p_rcfg->p_protect_info, p_rcfg->num_protect);
- p_scb->rcfg_idx = p_rcfg->sep_info_idx;
- p_scb->p_cap->psc_mask = p_scb->cur_psc_mask;
+ memcpy(p_cfg, &p_scb->cfg, sizeof(tAVDT_CFG));
+ p_cfg->num_protect = p_rcfg->num_protect;
+ memcpy(p_cfg->codec_info, p_rcfg->codec_info, AVDT_CODEC_SIZE);
+ memcpy(p_cfg->protect_info, p_rcfg->p_protect_info, p_rcfg->num_protect);
+ p_scb->rcfg_idx = p_rcfg->sep_info_idx;
+ p_scb->p_cap->psc_mask = p_scb->cur_psc_mask;
- /* if the requested index differs from the current one, we can only close/open */
- if ((p_scb->rcfg_idx == p_scb->sep_info_idx) &&
- (p_rcfg->suspend)&& (p_scb->recfg_sup) && (p_scb->suspend_sup))
- {
- if(p_scb->started)
- {
- stop.flush = false;
- stop.suspend = true;
- bta_av_str_stopped(p_scb, (tBTA_AV_DATA *)&stop);
- }
- else
- {
- APPL_TRACE_DEBUG("%s: reconfig", __func__);
- AVDT_ReconfigReq(p_scb->avdt_handle, p_scb->p_cap);
- p_scb->p_cap->psc_mask = p_scb->cur_psc_mask;
- }
+ /* if the requested index differs from the current one, we can only close/open
+ */
+ if ((p_scb->rcfg_idx == p_scb->sep_info_idx) && (p_rcfg->suspend) &&
+ (p_scb->recfg_sup) && (p_scb->suspend_sup)) {
+ if (p_scb->started) {
+ stop.flush = false;
+ stop.suspend = true;
+ bta_av_str_stopped(p_scb, (tBTA_AV_DATA*)&stop);
+ } else {
+ APPL_TRACE_DEBUG("%s: reconfig", __func__);
+ AVDT_ReconfigReq(p_scb->avdt_handle, p_scb->p_cap);
+ p_scb->p_cap->psc_mask = p_scb->cur_psc_mask;
}
- else
- {
- /* close the stream */
- APPL_TRACE_DEBUG("%s: close/open num_protect: %d", __func__,
- p_cfg->num_protect);
- if(p_scb->started)
- {
- bta_av_str_stopped(p_scb, NULL);
- p_scb->started = false;
+ } else {
+ /* close the stream */
+ APPL_TRACE_DEBUG("%s: close/open num_protect: %d", __func__,
+ p_cfg->num_protect);
+ if (p_scb->started) {
+ bta_av_str_stopped(p_scb, NULL);
+ p_scb->started = false;
- /* drop the buffers queued in L2CAP */
- L2CA_FlushChannel (p_scb->l2c_cid, L2CAP_FLUSH_CHANS_ALL);
+ /* drop the buffers queued in L2CAP */
+ L2CA_FlushChannel(p_scb->l2c_cid, L2CAP_FLUSH_CHANS_ALL);
- AVDT_CloseReq(p_scb->avdt_handle);
- }
+ AVDT_CloseReq(p_scb->avdt_handle);
}
+ }
}
/*******************************************************************************
@@ -2228,89 +2066,73 @@
* Returns void
*
******************************************************************************/
-void bta_av_data_path (tBTA_AV_SCB *p_scb,
- UNUSED_ATTR tBTA_AV_DATA *p_data)
-{
- BT_HDR *p_buf = NULL;
- uint32_t timestamp;
- bool new_buf = false;
- tA2DP_CODEC_TYPE codec_type = A2DP_GetCodecType(p_scb->cfg.codec_info);
- uint8_t m_pt = 0x60 | codec_type;
- tAVDT_DATA_OPT_MASK opt;
+void bta_av_data_path(tBTA_AV_SCB* p_scb, UNUSED_ATTR tBTA_AV_DATA* p_data) {
+ BT_HDR* p_buf = NULL;
+ uint32_t timestamp;
+ bool new_buf = false;
+ tA2DP_CODEC_TYPE codec_type = A2DP_GetCodecType(p_scb->cfg.codec_info);
+ uint8_t m_pt = 0x60 | codec_type;
+ tAVDT_DATA_OPT_MASK opt;
- if (p_scb->cong)
- return;
+ if (p_scb->cong) return;
- //Always get the current number of bufs que'd up
- p_scb->l2c_bufs = (uint8_t)L2CA_FlushChannel (p_scb->l2c_cid, L2CAP_FLUSH_CHANS_GET);
+ // Always get the current number of bufs que'd up
+ p_scb->l2c_bufs =
+ (uint8_t)L2CA_FlushChannel(p_scb->l2c_cid, L2CAP_FLUSH_CHANS_GET);
- if (!list_is_empty(p_scb->a2dp_list)) {
- p_buf = (BT_HDR *)list_front(p_scb->a2dp_list);
- list_remove(p_scb->a2dp_list, p_buf);
- /* use q_info.a2dp data, read the timestamp */
- timestamp = *(uint32_t *)(p_buf + 1);
+ if (!list_is_empty(p_scb->a2dp_list)) {
+ p_buf = (BT_HDR*)list_front(p_scb->a2dp_list);
+ list_remove(p_scb->a2dp_list, p_buf);
+ /* use q_info.a2dp data, read the timestamp */
+ timestamp = *(uint32_t*)(p_buf + 1);
+ } else {
+ new_buf = true;
+ /* A2DP_list empty, call co_data, dup data to other channels */
+ p_buf = (BT_HDR*)p_scb->p_cos->data(p_scb->cfg.codec_info, ×tamp);
+
+ if (p_buf) {
+ /* use the offset area for the time stamp */
+ *(uint32_t*)(p_buf + 1) = timestamp;
+
+ /* dup the data to other channels */
+ bta_av_dup_audio_buf(p_scb, p_buf);
}
- else
- {
- new_buf = true;
- /* A2DP_list empty, call co_data, dup data to other channels */
- p_buf = (BT_HDR *)p_scb->p_cos->data(p_scb->cfg.codec_info,
- ×tamp);
+ }
- if (p_buf)
- {
- /* use the offset area for the time stamp */
- *(uint32_t *)(p_buf + 1) = timestamp;
+ if (p_buf) {
+ if (p_scb->l2c_bufs < (BTA_AV_QUEUE_DATA_CHK_NUM)) {
+ /* There's a buffer, just queue it to L2CAP.
+ * There's no need to increment it here, it is always read from
+ * L2CAP (see above).
+ */
- /* dup the data to other channels */
- bta_av_dup_audio_buf(p_scb, p_buf);
+ /* opt is a bit mask, it could have several options set */
+ opt = AVDT_DATA_OPT_NONE;
+ if (p_scb->no_rtp_hdr) {
+ opt |= AVDT_DATA_OPT_NO_RTP;
+ }
+
+ AVDT_WriteReqOpt(p_scb->avdt_handle, p_buf, timestamp, m_pt, opt);
+ p_scb->cong = true;
+ } else {
+ /* there's a buffer, but L2CAP does not seem to be moving data */
+ if (new_buf) {
+ /* just got this buffer from co_data,
+ * put it in queue */
+ list_append(p_scb->a2dp_list, p_buf);
+ } else {
+ /* just dequeue it from the a2dp_list */
+ if (list_length(p_scb->a2dp_list) < 3) {
+ /* put it back to the queue */
+ list_prepend(p_scb->a2dp_list, p_buf);
+ } else {
+ /* too many buffers in a2dp_list, drop it. */
+ bta_av_co_audio_drop(p_scb->hndl);
+ osi_free(p_buf);
}
+ }
}
-
- if(p_buf)
- {
- if(p_scb->l2c_bufs < (BTA_AV_QUEUE_DATA_CHK_NUM))
- {
- /* There's a buffer, just queue it to L2CAP.
- * There's no need to increment it here, it is always read from
- * L2CAP (see above).
- */
-
- /* opt is a bit mask, it could have several options set */
- opt = AVDT_DATA_OPT_NONE;
- if (p_scb->no_rtp_hdr)
- {
- opt |= AVDT_DATA_OPT_NO_RTP;
- }
-
- AVDT_WriteReqOpt(p_scb->avdt_handle, p_buf, timestamp, m_pt, opt);
- p_scb->cong = true;
- }
- else
- {
- /* there's a buffer, but L2CAP does not seem to be moving data */
- if(new_buf)
- {
- /* just got this buffer from co_data,
- * put it in queue */
- list_append(p_scb->a2dp_list, p_buf);
- }
- else
- {
- /* just dequeue it from the a2dp_list */
- if (list_length(p_scb->a2dp_list) < 3) {
- /* put it back to the queue */
- list_prepend(p_scb->a2dp_list, p_buf);
- }
- else
- {
- /* too many buffers in a2dp_list, drop it. */
- bta_av_co_audio_drop(p_scb->hndl);
- osi_free(p_buf);
- }
- }
- }
- }
+ }
}
/*******************************************************************************
@@ -2322,176 +2144,164 @@
* Returns void
*
******************************************************************************/
-void bta_av_start_ok (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data)
-{
- tBTA_AV_START start;
- tBTA_AV_API_STOP stop;
- bool initiator = false;
- bool suspend = false;
- uint16_t flush_to;
- uint8_t new_role = p_scb->role;
- BT_HDR hdr;
- uint8_t policy = HCI_ENABLE_SNIFF_MODE;
- uint8_t cur_role;
+void bta_av_start_ok(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data) {
+ tBTA_AV_START start;
+ tBTA_AV_API_STOP stop;
+ bool initiator = false;
+ bool suspend = false;
+ uint16_t flush_to;
+ uint8_t new_role = p_scb->role;
+ BT_HDR hdr;
+ uint8_t policy = HCI_ENABLE_SNIFF_MODE;
+ uint8_t cur_role;
- APPL_TRACE_DEBUG("%s: wait:x%x, role:x%x", __func__, p_scb->wait,
- p_scb->role);
+ APPL_TRACE_DEBUG("%s: wait:x%x, role:x%x", __func__, p_scb->wait,
+ p_scb->role);
- p_scb->started = true;
- if (p_scb->sco_suspend)
- {
- p_scb->sco_suspend = false;
+ p_scb->started = true;
+ if (p_scb->sco_suspend) {
+ p_scb->sco_suspend = false;
+ }
+
+ if (new_role & BTA_AV_ROLE_START_INT) initiator = true;
+
+ /* for A2DP SINK we do not send get_caps */
+ if ((p_scb->avdt_handle == p_scb->seps[p_scb->sep_idx].av_handle) &&
+ (p_scb->seps[p_scb->sep_idx].tsep == AVDT_TSEP_SNK)) {
+ p_scb->wait &= ~(BTA_AV_WAIT_ACP_CAPS_ON);
+ APPL_TRACE_DEBUG("%s: local SEP type is SNK new wait is 0x%x", __func__,
+ p_scb->wait);
+ }
+ if (p_scb->wait & BTA_AV_WAIT_ROLE_SW_FAILED) {
+ /* role switch has failed */
+ p_scb->wait &= ~BTA_AV_WAIT_ROLE_SW_FAILED;
+ p_data = (tBTA_AV_DATA*)&hdr;
+ hdr.offset = BTA_AV_RS_FAIL;
+ }
+ APPL_TRACE_DEBUG("%s: wait:x%x", __func__, p_scb->wait);
+
+ if (p_data && (p_data->hdr.offset != BTA_AV_RS_NONE)) {
+ p_scb->wait &= ~BTA_AV_WAIT_ROLE_SW_BITS;
+ if (p_data->hdr.offset == BTA_AV_RS_FAIL) {
+ bta_sys_idle(BTA_ID_AV, bta_av_cb.audio_open_cnt, p_scb->peer_addr);
+ start.chnl = p_scb->chnl;
+ start.status = BTA_AV_FAIL_ROLE;
+ start.hndl = p_scb->hndl;
+ start.initiator = initiator;
+ (*bta_av_cb.p_cback)(BTA_AV_START_EVT, (tBTA_AV*)&start);
+ return;
+ }
+ }
+
+ if (!bta_av_link_role_ok(p_scb, A2DP_SET_ONE_BIT))
+ p_scb->q_tag = BTA_AV_Q_TAG_START;
+ else {
+ /* The wait flag may be set here while we are already master on the link */
+ /* this could happen if a role switch complete event occurred during
+ * reconfig */
+ /* if we are now master on the link, there is no need to wait for the role
+ * switch, */
+ /* complete anymore so we can clear the wait for role switch flag */
+ p_scb->wait &= ~BTA_AV_WAIT_ROLE_SW_BITS;
+ }
+
+ if (p_scb->wait &
+ (BTA_AV_WAIT_ROLE_SW_RES_OPEN | BTA_AV_WAIT_ROLE_SW_RES_START)) {
+ p_scb->wait |= BTA_AV_WAIT_ROLE_SW_STARTED;
+ p_scb->q_tag = BTA_AV_Q_TAG_START;
+ }
+
+ if (p_scb->wait) {
+ APPL_TRACE_ERROR("%s: wait:x%x q_tag:%d- not started", __func__,
+ p_scb->wait, p_scb->q_tag);
+ /* Clear first bit of p_scb->wait and not to return from this point else
+ * HAL layer gets blocked. And if there is delay in Get Capability response
+ * as
+ * first bit of p_scb->wait is cleared hence it ensures bt_av_start_ok is
+ * not called
+ * again from bta_av_save_caps.
+ */
+ p_scb->wait &= ~BTA_AV_WAIT_ACP_CAPS_ON;
+ }
+
+ /* tell role manager to check M/S role */
+ bta_sys_conn_open(BTA_ID_AV, p_scb->app_id, p_scb->peer_addr);
+
+ bta_sys_busy(BTA_ID_AV, bta_av_cb.audio_open_cnt, p_scb->peer_addr);
+
+ if (p_scb->media_type == AVDT_MEDIA_TYPE_AUDIO) {
+ /* in normal logic, conns should be bta_av_cb.audio_count - 1,
+ * However, bta_av_stream_chg is not called to increase
+ * bta_av_cb.audio_count yet.
+ * If the code were to be re-arranged for some reasons, this number may need
+ * to be changed
+ */
+ p_scb->co_started = bta_av_cb.audio_open_cnt;
+ flush_to = p_bta_av_cfg->p_audio_flush_to[p_scb->co_started - 1];
+ } else {
+ flush_to = p_bta_av_cfg->video_flush_to;
+ }
+ L2CA_SetFlushTimeout(p_scb->peer_addr, flush_to);
+
+ /* clear the congestion flag */
+ p_scb->cong = false;
+
+ if (new_role & BTA_AV_ROLE_START_INT) {
+ new_role &= ~BTA_AV_ROLE_START_INT;
+ } else if ((new_role & BTA_AV_ROLE_AD_ACP) &&
+ (new_role & BTA_AV_ROLE_SUSPEND_OPT)) {
+ suspend = true;
+ }
+
+ if (!suspend) {
+ p_scb->q_tag = BTA_AV_Q_TAG_STREAM;
+ bta_av_stream_chg(p_scb, true);
+ }
+
+ {
+ /* If sink starts stream, disable sniff mode here */
+ if (!initiator) {
+ /* If souce is the master role, disable role switch during streaming.
+ * Otherwise allow role switch, if source is slave.
+ * Because it would not hurt source, if the peer device wants source to be
+ * master */
+ if ((BTM_GetRole(p_scb->peer_addr, &cur_role) == BTM_SUCCESS) &&
+ (cur_role == BTM_ROLE_MASTER)) {
+ policy |= HCI_ENABLE_MASTER_SLAVE_SWITCH;
+ }
+
+ bta_sys_clear_policy(BTA_ID_AV, policy, p_scb->peer_addr);
}
- if (new_role & BTA_AV_ROLE_START_INT)
- initiator = true;
+ p_scb->role = new_role;
+ p_scb->role &= ~BTA_AV_ROLE_AD_ACP;
+ p_scb->role &= ~BTA_AV_ROLE_SUSPEND_OPT;
- /* for A2DP SINK we do not send get_caps */
- if ((p_scb->avdt_handle == p_scb->seps[p_scb->sep_idx].av_handle)
- &&(p_scb->seps[p_scb->sep_idx].tsep == AVDT_TSEP_SNK))
- {
- p_scb->wait &= ~(BTA_AV_WAIT_ACP_CAPS_ON);
- APPL_TRACE_DEBUG("%s: local SEP type is SNK new wait is 0x%x",
- __func__, p_scb->wait);
+ p_scb->no_rtp_hdr = false;
+ p_scb->p_cos->start(p_scb->hndl, p_scb->cfg.codec_info, &p_scb->no_rtp_hdr);
+ p_scb->co_started = true;
+
+ APPL_TRACE_DEBUG("%s: suspending: %d, role:x%x, init %d", __func__, suspend,
+ p_scb->role, initiator);
+
+ start.suspending = suspend;
+ start.initiator = initiator;
+ start.chnl = p_scb->chnl;
+ start.status = BTA_AV_SUCCESS;
+ start.hndl = p_scb->hndl;
+ (*bta_av_cb.p_cback)(BTA_AV_START_EVT, (tBTA_AV*)&start);
+
+ if (suspend) {
+ p_scb->role |= BTA_AV_ROLE_SUSPEND;
+ p_scb->cong = true; /* do not allow the media data to go through */
+ /* do not duplicate the media packets to this channel */
+ p_scb->p_cos->stop(p_scb->hndl);
+ p_scb->co_started = false;
+ stop.flush = false;
+ stop.suspend = true;
+ bta_av_ssm_execute(p_scb, BTA_AV_AP_STOP_EVT, (tBTA_AV_DATA*)&stop);
}
- if (p_scb->wait & BTA_AV_WAIT_ROLE_SW_FAILED)
- {
- /* role switch has failed */
- p_scb->wait &= ~BTA_AV_WAIT_ROLE_SW_FAILED;
- p_data = (tBTA_AV_DATA *)&hdr;
- hdr.offset = BTA_AV_RS_FAIL;
- }
- APPL_TRACE_DEBUG("%s: wait:x%x", __func__, p_scb->wait);
-
- if (p_data && (p_data->hdr.offset != BTA_AV_RS_NONE))
- {
- p_scb->wait &= ~BTA_AV_WAIT_ROLE_SW_BITS;
- if (p_data->hdr.offset == BTA_AV_RS_FAIL)
- {
- bta_sys_idle(BTA_ID_AV, bta_av_cb.audio_open_cnt, p_scb->peer_addr);
- start.chnl = p_scb->chnl;
- start.status = BTA_AV_FAIL_ROLE;
- start.hndl = p_scb->hndl;
- start.initiator = initiator;
- (*bta_av_cb.p_cback)(BTA_AV_START_EVT, (tBTA_AV *) &start);
- return;
- }
- }
-
- if (!bta_av_link_role_ok(p_scb, A2DP_SET_ONE_BIT))
- p_scb->q_tag = BTA_AV_Q_TAG_START;
- else
- {
- /* The wait flag may be set here while we are already master on the link */
- /* this could happen if a role switch complete event occurred during reconfig */
- /* if we are now master on the link, there is no need to wait for the role switch, */
- /* complete anymore so we can clear the wait for role switch flag */
- p_scb->wait &= ~BTA_AV_WAIT_ROLE_SW_BITS;
- }
-
- if (p_scb->wait & (BTA_AV_WAIT_ROLE_SW_RES_OPEN|BTA_AV_WAIT_ROLE_SW_RES_START))
- {
- p_scb->wait |= BTA_AV_WAIT_ROLE_SW_STARTED;
- p_scb->q_tag = BTA_AV_Q_TAG_START;
- }
-
- if (p_scb->wait)
- {
- APPL_TRACE_ERROR("%s: wait:x%x q_tag:%d- not started", __func__,
- p_scb->wait, p_scb->q_tag);
- /* Clear first bit of p_scb->wait and not to return from this point else
- * HAL layer gets blocked. And if there is delay in Get Capability response as
- * first bit of p_scb->wait is cleared hence it ensures bt_av_start_ok is not called
- * again from bta_av_save_caps.
- */
- p_scb->wait &= ~BTA_AV_WAIT_ACP_CAPS_ON;
- }
-
- /* tell role manager to check M/S role */
- bta_sys_conn_open(BTA_ID_AV, p_scb->app_id, p_scb->peer_addr);
-
- bta_sys_busy(BTA_ID_AV, bta_av_cb.audio_open_cnt, p_scb->peer_addr);
-
- if(p_scb->media_type == AVDT_MEDIA_TYPE_AUDIO)
- {
- /* in normal logic, conns should be bta_av_cb.audio_count - 1,
- * However, bta_av_stream_chg is not called to increase bta_av_cb.audio_count yet.
- * If the code were to be re-arranged for some reasons, this number may need to be changed
- */
- p_scb->co_started = bta_av_cb.audio_open_cnt;
- flush_to = p_bta_av_cfg->p_audio_flush_to[p_scb->co_started - 1];
- }
- else
- {
- flush_to = p_bta_av_cfg->video_flush_to;
- }
- L2CA_SetFlushTimeout(p_scb->peer_addr, flush_to );
-
- /* clear the congestion flag */
- p_scb->cong = false;
-
- if (new_role & BTA_AV_ROLE_START_INT)
- {
- new_role &= ~BTA_AV_ROLE_START_INT;
- }
- else if ((new_role & BTA_AV_ROLE_AD_ACP) && (new_role & BTA_AV_ROLE_SUSPEND_OPT))
- {
- suspend = true;
- }
-
- if (!suspend)
- {
- p_scb->q_tag = BTA_AV_Q_TAG_STREAM;
- bta_av_stream_chg(p_scb, true);
- }
-
- {
- /* If sink starts stream, disable sniff mode here */
- if (!initiator)
- {
- /* If souce is the master role, disable role switch during streaming.
- * Otherwise allow role switch, if source is slave.
- * Because it would not hurt source, if the peer device wants source to be master */
- if ((BTM_GetRole (p_scb->peer_addr, &cur_role) == BTM_SUCCESS) &&
- (cur_role == BTM_ROLE_MASTER) )
- {
- policy |= HCI_ENABLE_MASTER_SLAVE_SWITCH;
- }
-
- bta_sys_clear_policy(BTA_ID_AV, policy, p_scb->peer_addr);
- }
-
- p_scb->role = new_role;
- p_scb->role &= ~BTA_AV_ROLE_AD_ACP;
- p_scb->role &= ~BTA_AV_ROLE_SUSPEND_OPT;
-
- p_scb->no_rtp_hdr = false;
- p_scb->p_cos->start(p_scb->hndl, p_scb->cfg.codec_info,
- &p_scb->no_rtp_hdr);
- p_scb->co_started = true;
-
- APPL_TRACE_DEBUG("%s: suspending: %d, role:x%x, init %d", __func__,
- suspend, p_scb->role, initiator);
-
- start.suspending = suspend;
- start.initiator = initiator;
- start.chnl = p_scb->chnl;
- start.status = BTA_AV_SUCCESS;
- start.hndl = p_scb->hndl;
- (*bta_av_cb.p_cback)(BTA_AV_START_EVT, (tBTA_AV *) &start);
-
- if(suspend)
- {
- p_scb->role |= BTA_AV_ROLE_SUSPEND;
- p_scb->cong = true; /* do not allow the media data to go through */
- /* do not duplicate the media packets to this channel */
- p_scb->p_cos->stop(p_scb->hndl);
- p_scb->co_started = false;
- stop.flush = false;
- stop.suspend = true;
- bta_av_ssm_execute(p_scb, BTA_AV_AP_STOP_EVT, (tBTA_AV_DATA *)&stop);
- }
- }
+ }
}
/*******************************************************************************
@@ -2503,17 +2313,16 @@
* Returns void
*
******************************************************************************/
-void bta_av_start_failed (tBTA_AV_SCB *p_scb,
- UNUSED_ATTR tBTA_AV_DATA *p_data)
-{
- if(p_scb->started == false && p_scb->co_started == false)
- {
- bta_sys_idle(BTA_ID_AV, bta_av_cb.audio_open_cnt, p_scb->peer_addr);
- notify_start_failed(p_scb);
- }
+void bta_av_start_failed(tBTA_AV_SCB* p_scb, UNUSED_ATTR tBTA_AV_DATA* p_data) {
+ if (p_scb->started == false && p_scb->co_started == false) {
+ bta_sys_idle(BTA_ID_AV, bta_av_cb.audio_open_cnt, p_scb->peer_addr);
+ notify_start_failed(p_scb);
+ }
- bta_sys_set_policy(BTA_ID_AV, (HCI_ENABLE_SNIFF_MODE|HCI_ENABLE_MASTER_SLAVE_SWITCH), p_scb->peer_addr);
- p_scb->sco_suspend = false;
+ bta_sys_set_policy(BTA_ID_AV,
+ (HCI_ENABLE_SNIFF_MODE | HCI_ENABLE_MASTER_SLAVE_SWITCH),
+ p_scb->peer_addr);
+ p_scb->sco_suspend = false;
}
/*******************************************************************************
@@ -2525,64 +2334,59 @@
* Returns void
*
******************************************************************************/
-void bta_av_str_closed (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data)
-{
- tBTA_AV data;
- tBTA_AV_EVT event;
- uint16_t mtu;
- uint8_t policy = HCI_ENABLE_SNIFF_MODE;
+void bta_av_str_closed(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data) {
+ tBTA_AV data;
+ tBTA_AV_EVT event;
+ uint16_t mtu;
+ uint8_t policy = HCI_ENABLE_SNIFF_MODE;
- if ((bta_av_cb.features & BTA_AV_FEAT_MASTER) == 0 || bta_av_cb.audio_open_cnt == 1)
- policy |= HCI_ENABLE_MASTER_SLAVE_SWITCH;
- bta_sys_set_policy(BTA_ID_AV, policy, p_scb->peer_addr);
- if (bta_av_cb.audio_open_cnt <= 1)
- {
- /* last connection - restore the allow switch flag */
- L2CA_SetDesireRole(L2CAP_ROLE_ALLOW_SWITCH);
+ if ((bta_av_cb.features & BTA_AV_FEAT_MASTER) == 0 ||
+ bta_av_cb.audio_open_cnt == 1)
+ policy |= HCI_ENABLE_MASTER_SLAVE_SWITCH;
+ bta_sys_set_policy(BTA_ID_AV, policy, p_scb->peer_addr);
+ if (bta_av_cb.audio_open_cnt <= 1) {
+ /* last connection - restore the allow switch flag */
+ L2CA_SetDesireRole(L2CAP_ROLE_ALLOW_SWITCH);
+ }
+
+ if (p_scb->open_status) {
+ /* must be failure when opening the stream */
+ bdcpy(data.open.bd_addr, p_scb->peer_addr);
+ data.open.status = p_scb->open_status;
+ data.open.chnl = p_scb->chnl;
+ data.open.hndl = p_scb->hndl;
+
+ if (p_scb->seps[p_scb->sep_idx].tsep == AVDT_TSEP_SRC)
+ data.open.sep = AVDT_TSEP_SNK;
+ else if (p_scb->seps[p_scb->sep_idx].tsep == AVDT_TSEP_SNK)
+ data.open.sep = AVDT_TSEP_SRC;
+
+ event = BTA_AV_OPEN_EVT;
+ p_scb->open_status = BTA_AV_SUCCESS;
+
+ bta_sys_conn_close(BTA_ID_AV, p_scb->app_id, p_scb->peer_addr);
+ bta_av_cleanup(p_scb, p_data);
+ (*bta_av_cb.p_cback)(event, &data);
+ } else {
+ /* do stop if we were started */
+ if (p_scb->co_started) {
+ bta_av_str_stopped(p_scb, NULL);
}
- if (p_scb->open_status)
+ /* Update common mtu shared by remaining connectons */
+ mtu = bta_av_chk_mtu(p_scb, BTA_AV_MAX_A2DP_MTU);
+
{
- /* must be failure when opening the stream */
- bdcpy(data.open.bd_addr, p_scb->peer_addr);
- data.open.status = p_scb->open_status;
- data.open.chnl = p_scb->chnl;
- data.open.hndl = p_scb->hndl;
+ p_scb->p_cos->close(p_scb->hndl, mtu);
+ data.close.chnl = p_scb->chnl;
+ data.close.hndl = p_scb->hndl;
+ event = BTA_AV_CLOSE_EVT;
- if (p_scb->seps[p_scb->sep_idx].tsep == AVDT_TSEP_SRC )
- data.open.sep = AVDT_TSEP_SNK;
- else if (p_scb->seps[p_scb->sep_idx].tsep == AVDT_TSEP_SNK )
- data.open.sep = AVDT_TSEP_SRC;
-
- event = BTA_AV_OPEN_EVT;
- p_scb->open_status = BTA_AV_SUCCESS;
-
- bta_sys_conn_close(BTA_ID_AV, p_scb->app_id, p_scb->peer_addr);
- bta_av_cleanup(p_scb, p_data);
- (*bta_av_cb.p_cback)(event, &data);
+ bta_sys_conn_close(BTA_ID_AV, p_scb->app_id, p_scb->peer_addr);
+ bta_av_cleanup(p_scb, p_data);
+ (*bta_av_cb.p_cback)(event, &data);
}
- else
- {
- /* do stop if we were started */
- if (p_scb->co_started)
- {
- bta_av_str_stopped(p_scb, NULL);
- }
-
- /* Update common mtu shared by remaining connectons */
- mtu = bta_av_chk_mtu(p_scb, BTA_AV_MAX_A2DP_MTU);
-
- {
- p_scb->p_cos->close(p_scb->hndl, mtu);
- data.close.chnl = p_scb->chnl;
- data.close.hndl = p_scb->hndl;
- event = BTA_AV_CLOSE_EVT;
-
- bta_sys_conn_close(BTA_ID_AV, p_scb->app_id, p_scb->peer_addr);
- bta_av_cleanup(p_scb, p_data);
- (*bta_av_cb.p_cback)(event, &data);
- }
- }
+ }
}
/*******************************************************************************
@@ -2594,11 +2398,8 @@
* Returns void
*
******************************************************************************/
-void bta_av_clr_cong (tBTA_AV_SCB *p_scb,
- UNUSED_ATTR tBTA_AV_DATA *p_data)
-{
- if(p_scb->co_started)
- p_scb->cong = false;
+void bta_av_clr_cong(tBTA_AV_SCB* p_scb, UNUSED_ATTR tBTA_AV_DATA* p_data) {
+ if (p_scb->co_started) p_scb->cong = false;
}
/*******************************************************************************
@@ -2610,84 +2411,77 @@
* Returns void
*
******************************************************************************/
-void bta_av_suspend_cfm (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data)
-{
- tBTA_AV_SUSPEND suspend_rsp;
- uint8_t err_code = p_data->str_msg.msg.hdr.err_code;
- uint8_t policy = HCI_ENABLE_SNIFF_MODE;
+void bta_av_suspend_cfm(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data) {
+ tBTA_AV_SUSPEND suspend_rsp;
+ uint8_t err_code = p_data->str_msg.msg.hdr.err_code;
+ uint8_t policy = HCI_ENABLE_SNIFF_MODE;
- APPL_TRACE_DEBUG("%s: audio_open_cnt = %d, err_code = %d", __func__,
- bta_av_cb.audio_open_cnt, err_code);
+ APPL_TRACE_DEBUG("%s: audio_open_cnt = %d, err_code = %d", __func__,
+ bta_av_cb.audio_open_cnt, err_code);
- if (p_scb->started == false)
- {
- /* handle the condition where there is a collision of SUSPEND req from either side
- ** Second SUSPEND req could be rejected. Do not treat this as a failure
- */
- APPL_TRACE_WARNING("%s: already suspended, ignore, err_code %d",
- __func__, err_code);
- return;
+ if (p_scb->started == false) {
+ /* handle the condition where there is a collision of SUSPEND req from
+ *either side
+ ** Second SUSPEND req could be rejected. Do not treat this as a failure
+ */
+ APPL_TRACE_WARNING("%s: already suspended, ignore, err_code %d", __func__,
+ err_code);
+ return;
+ }
+
+ suspend_rsp.status = BTA_AV_SUCCESS;
+ if (err_code && (err_code != AVDT_ERR_BAD_STATE)) {
+ /* Disable suspend feature only with explicit rejection(not with timeout) */
+ if (err_code != AVDT_ERR_TIMEOUT) {
+ p_scb->suspend_sup = false;
}
+ suspend_rsp.status = BTA_AV_FAIL;
- suspend_rsp.status = BTA_AV_SUCCESS;
- if (err_code && (err_code != AVDT_ERR_BAD_STATE))
- {
- /* Disable suspend feature only with explicit rejection(not with timeout) */
- if (err_code != AVDT_ERR_TIMEOUT)
- {
- p_scb->suspend_sup = false;
- }
- suspend_rsp.status = BTA_AV_FAIL;
+ APPL_TRACE_ERROR("%s: suspend failed, closing connection", __func__);
- APPL_TRACE_ERROR("%s: suspend failed, closing connection", __func__);
+ /* SUSPEND failed. Close connection. */
+ bta_av_ssm_execute(p_scb, BTA_AV_API_CLOSE_EVT, NULL);
+ } else {
+ /* only set started to false when suspend is successful */
+ p_scb->started = false;
+ }
- /* SUSPEND failed. Close connection. */
- bta_av_ssm_execute(p_scb, BTA_AV_API_CLOSE_EVT, NULL);
+ if (p_scb->role & BTA_AV_ROLE_SUSPEND) {
+ p_scb->role &= ~BTA_AV_ROLE_SUSPEND;
+ p_scb->cong = false;
+ }
+
+ bta_sys_idle(BTA_ID_AV, bta_av_cb.audio_open_cnt, p_scb->peer_addr);
+ if ((bta_av_cb.features & BTA_AV_FEAT_MASTER) == 0 ||
+ bta_av_cb.audio_open_cnt == 1)
+ policy |= HCI_ENABLE_MASTER_SLAVE_SWITCH;
+ bta_sys_set_policy(BTA_ID_AV, policy, p_scb->peer_addr);
+
+ /* in case that we received suspend_ind, we may need to call co_stop here */
+ if (p_scb->co_started) {
+ vendor_get_interface()->send_command(
+ (vendor_opcode_t)BT_VND_OP_A2DP_OFFLOAD_STOP, (void*)&p_scb->l2c_cid);
+ if (p_scb->offload_start_pending) {
+ tBTA_AV_STATUS status = BTA_AV_FAIL_STREAM;
+ (*bta_av_cb.p_cback)(BTA_AV_OFFLOAD_START_RSP_EVT, (tBTA_AV*)&status);
}
- else
- {
- /* only set started to false when suspend is successful */
- p_scb->started = false;
- }
+ p_scb->offload_start_pending = false;
- if (p_scb->role & BTA_AV_ROLE_SUSPEND)
- {
- p_scb->role &= ~BTA_AV_ROLE_SUSPEND;
- p_scb->cong = false;
- }
-
- bta_sys_idle(BTA_ID_AV, bta_av_cb.audio_open_cnt, p_scb->peer_addr);
- if ((bta_av_cb.features & BTA_AV_FEAT_MASTER) == 0 || bta_av_cb.audio_open_cnt == 1)
- policy |= HCI_ENABLE_MASTER_SLAVE_SWITCH;
- bta_sys_set_policy(BTA_ID_AV, policy, p_scb->peer_addr);
-
- /* in case that we received suspend_ind, we may need to call co_stop here */
- if(p_scb->co_started)
- {
- vendor_get_interface()->send_command(
- (vendor_opcode_t)BT_VND_OP_A2DP_OFFLOAD_STOP,
- (void*)&p_scb->l2c_cid);
- if (p_scb->offload_start_pending) {
- tBTA_AV_STATUS status = BTA_AV_FAIL_STREAM;
- (*bta_av_cb.p_cback)(BTA_AV_OFFLOAD_START_RSP_EVT, (tBTA_AV *)&status);
- }
- p_scb->offload_start_pending = false;
-
- bta_av_stream_chg(p_scb, false);
-
- {
- p_scb->co_started = false;
- p_scb->p_cos->stop(p_scb->hndl);
- }
- L2CA_SetFlushTimeout(p_scb->peer_addr, L2CAP_DEFAULT_FLUSH_TO);
- }
+ bta_av_stream_chg(p_scb, false);
{
- suspend_rsp.chnl = p_scb->chnl;
- suspend_rsp.hndl = p_scb->hndl;
- suspend_rsp.initiator = p_data->str_msg.initiator;
- (*bta_av_cb.p_cback)(BTA_AV_SUSPEND_EVT, (tBTA_AV *) &suspend_rsp);
+ p_scb->co_started = false;
+ p_scb->p_cos->stop(p_scb->hndl);
}
+ L2CA_SetFlushTimeout(p_scb->peer_addr, L2CAP_DEFAULT_FLUSH_TO);
+ }
+
+ {
+ suspend_rsp.chnl = p_scb->chnl;
+ suspend_rsp.hndl = p_scb->hndl;
+ suspend_rsp.initiator = p_data->str_msg.initiator;
+ (*bta_av_cb.p_cback)(BTA_AV_SUSPEND_EVT, (tBTA_AV*)&suspend_rsp);
+ }
}
/*******************************************************************************
@@ -2699,30 +2493,28 @@
* Returns void
*
******************************************************************************/
-void bta_av_rcfg_str_ok (tBTA_AV_SCB *p_scb,
- UNUSED_ATTR tBTA_AV_DATA *p_data)
-{
- tBTA_AV_RECONFIG evt;
+void bta_av_rcfg_str_ok(tBTA_AV_SCB* p_scb, UNUSED_ATTR tBTA_AV_DATA* p_data) {
+ tBTA_AV_RECONFIG evt;
- p_scb->l2c_cid = AVDT_GetL2CapChannel(p_scb->avdt_handle);
- APPL_TRACE_DEBUG("%s: l2c_cid: %d", __func__, p_scb->l2c_cid);
+ p_scb->l2c_cid = AVDT_GetL2CapChannel(p_scb->avdt_handle);
+ APPL_TRACE_DEBUG("%s: l2c_cid: %d", __func__, p_scb->l2c_cid);
- /* rc listen */
- bta_av_st_rc_timer(p_scb, NULL);
- osi_free_and_reset((void **)&p_scb->p_cap);
+ /* rc listen */
+ bta_av_st_rc_timer(p_scb, NULL);
+ osi_free_and_reset((void**)&p_scb->p_cap);
- /* No need to keep the role bits once reconfig is done. */
- p_scb->role &= ~BTA_AV_ROLE_AD_ACP;
- p_scb->role &= ~BTA_AV_ROLE_SUSPEND_OPT;
- p_scb->role &= ~BTA_AV_ROLE_START_INT;
+ /* No need to keep the role bits once reconfig is done. */
+ p_scb->role &= ~BTA_AV_ROLE_AD_ACP;
+ p_scb->role &= ~BTA_AV_ROLE_SUSPEND_OPT;
+ p_scb->role &= ~BTA_AV_ROLE_START_INT;
- {
- /* reconfigure success */
- evt.status = BTA_AV_SUCCESS;
- evt.chnl = p_scb->chnl;
- evt.hndl = p_scb->hndl;
- (*bta_av_cb.p_cback)(BTA_AV_RECONFIG_EVT, (tBTA_AV *)&evt);
- }
+ {
+ /* reconfigure success */
+ evt.status = BTA_AV_SUCCESS;
+ evt.chnl = p_scb->chnl;
+ evt.hndl = p_scb->hndl;
+ (*bta_av_cb.p_cback)(BTA_AV_RECONFIG_EVT, (tBTA_AV*)&evt);
+ }
}
/*******************************************************************************
@@ -2734,36 +2526,29 @@
* Returns void
*
******************************************************************************/
-void bta_av_rcfg_failed (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data)
-{
- tBTA_AV_RECONFIG evt;
+void bta_av_rcfg_failed(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data) {
+ tBTA_AV_RECONFIG evt;
- APPL_TRACE_DEBUG("%s: num_recfg: %d, conn_lcb:0x%x", __func__,
- p_scb->num_recfg, bta_av_cb.conn_lcb);
- if(p_scb->num_recfg > BTA_AV_RECONFIG_RETRY)
- {
- bta_av_cco_close(p_scb, p_data);
- /* report failure */
- evt.status = BTA_AV_FAIL_STREAM;
- evt.chnl = p_scb->chnl;
- evt.hndl = p_scb->hndl;
- (*bta_av_cb.p_cback)(BTA_AV_RECONFIG_EVT, (tBTA_AV *)&evt);
- /* go to closing state */
- bta_av_ssm_execute(p_scb, BTA_AV_API_CLOSE_EVT, NULL);
+ APPL_TRACE_DEBUG("%s: num_recfg: %d, conn_lcb:0x%x", __func__,
+ p_scb->num_recfg, bta_av_cb.conn_lcb);
+ if (p_scb->num_recfg > BTA_AV_RECONFIG_RETRY) {
+ bta_av_cco_close(p_scb, p_data);
+ /* report failure */
+ evt.status = BTA_AV_FAIL_STREAM;
+ evt.chnl = p_scb->chnl;
+ evt.hndl = p_scb->hndl;
+ (*bta_av_cb.p_cback)(BTA_AV_RECONFIG_EVT, (tBTA_AV*)&evt);
+ /* go to closing state */
+ bta_av_ssm_execute(p_scb, BTA_AV_API_CLOSE_EVT, NULL);
+ } else {
+ /* open failed. try again */
+ p_scb->num_recfg++;
+ if (bta_av_cb.conn_lcb) {
+ AVDT_DisconnectReq(p_scb->peer_addr, bta_av_dt_cback[p_scb->hdi]);
+ } else {
+ bta_av_connect_req(p_scb, NULL);
}
- else
- {
- /* open failed. try again */
- p_scb->num_recfg++;
- if(bta_av_cb.conn_lcb)
- {
- AVDT_DisconnectReq(p_scb->peer_addr, bta_av_dt_cback[p_scb->hdi]);
- }
- else
- {
- bta_av_connect_req(p_scb, NULL);
- }
- }
+ }
}
/*******************************************************************************
@@ -2775,19 +2560,16 @@
* Returns void
*
******************************************************************************/
-void bta_av_rcfg_connect (tBTA_AV_SCB *p_scb,
- UNUSED_ATTR tBTA_AV_DATA *p_data)
-{
- p_scb->cong = false;
- p_scb->num_recfg++;
- APPL_TRACE_DEBUG("%s: num_recfg: %d", __func__, p_scb->num_recfg);
- if(p_scb->num_recfg > BTA_AV_RECONFIG_RETRY)
- {
- /* let bta_av_rcfg_failed report fail */
- bta_av_rcfg_failed(p_scb, NULL);
- }
- else
- AVDT_ConnectReq(p_scb->peer_addr, p_scb->sec_mask, bta_av_dt_cback[p_scb->hdi]);
+void bta_av_rcfg_connect(tBTA_AV_SCB* p_scb, UNUSED_ATTR tBTA_AV_DATA* p_data) {
+ p_scb->cong = false;
+ p_scb->num_recfg++;
+ APPL_TRACE_DEBUG("%s: num_recfg: %d", __func__, p_scb->num_recfg);
+ if (p_scb->num_recfg > BTA_AV_RECONFIG_RETRY) {
+ /* let bta_av_rcfg_failed report fail */
+ bta_av_rcfg_failed(p_scb, NULL);
+ } else
+ AVDT_ConnectReq(p_scb->peer_addr, p_scb->sec_mask,
+ bta_av_dt_cback[p_scb->hdi]);
}
/*******************************************************************************
@@ -2799,25 +2581,22 @@
* Returns void
*
******************************************************************************/
-void bta_av_rcfg_discntd (tBTA_AV_SCB *p_scb,
- UNUSED_ATTR tBTA_AV_DATA *p_data)
-{
- tBTA_AV_RECONFIG evt;
+void bta_av_rcfg_discntd(tBTA_AV_SCB* p_scb, UNUSED_ATTR tBTA_AV_DATA* p_data) {
+ tBTA_AV_RECONFIG evt;
- APPL_TRACE_DEBUG("%s: num_recfg: %d", __func__, p_scb->num_recfg);
- p_scb->num_recfg++;
- if(p_scb->num_recfg > BTA_AV_RECONFIG_RETRY)
- {
- /* report failure */
- evt.status = BTA_AV_FAIL_STREAM;
- evt.chnl = p_scb->chnl;
- evt.hndl = p_scb->hndl;
- (*bta_av_cb.p_cback)(BTA_AV_RECONFIG_EVT, (tBTA_AV *)&evt);
- /* report close event & go to init state */
- bta_av_ssm_execute(p_scb, BTA_AV_STR_DISC_FAIL_EVT, NULL);
- }
- else
- AVDT_ConnectReq(p_scb->peer_addr, p_scb->sec_mask, bta_av_dt_cback[p_scb->hdi]);
+ APPL_TRACE_DEBUG("%s: num_recfg: %d", __func__, p_scb->num_recfg);
+ p_scb->num_recfg++;
+ if (p_scb->num_recfg > BTA_AV_RECONFIG_RETRY) {
+ /* report failure */
+ evt.status = BTA_AV_FAIL_STREAM;
+ evt.chnl = p_scb->chnl;
+ evt.hndl = p_scb->hndl;
+ (*bta_av_cb.p_cback)(BTA_AV_RECONFIG_EVT, (tBTA_AV*)&evt);
+ /* report close event & go to init state */
+ bta_av_ssm_execute(p_scb, BTA_AV_STR_DISC_FAIL_EVT, NULL);
+ } else
+ AVDT_ConnectReq(p_scb->peer_addr, p_scb->sec_mask,
+ bta_av_dt_cback[p_scb->hdi]);
}
/*******************************************************************************
@@ -2830,44 +2609,37 @@
* Returns void
*
******************************************************************************/
-void bta_av_suspend_cont (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data)
-{
- uint8_t err_code = p_data->str_msg.msg.hdr.err_code;
- tBTA_AV_RECONFIG evt;
+void bta_av_suspend_cont(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data) {
+ uint8_t err_code = p_data->str_msg.msg.hdr.err_code;
+ tBTA_AV_RECONFIG evt;
- p_scb->started = false;
- p_scb->cong = false;
- if (err_code)
- {
- if (AVDT_ERR_CONNECT == err_code)
- {
- /* report failure */
- evt.status = BTA_AV_FAIL;
- (*bta_av_cb.p_cback)(BTA_AV_RECONFIG_EVT, (tBTA_AV *)&evt);
- bta_av_ssm_execute(p_scb, BTA_AV_STR_DISC_FAIL_EVT, NULL);
- }
- else
- {
- APPL_TRACE_ERROR("%s: suspend rejected, try close", __func__);
- /* Disable suspend feature only with explicit rejection(not with timeout) */
- if (err_code != AVDT_ERR_TIMEOUT)
- {
- p_scb->suspend_sup = false;
- }
- /* drop the buffers queued in L2CAP */
- L2CA_FlushChannel (p_scb->l2c_cid, L2CAP_FLUSH_CHANS_ALL);
+ p_scb->started = false;
+ p_scb->cong = false;
+ if (err_code) {
+ if (AVDT_ERR_CONNECT == err_code) {
+ /* report failure */
+ evt.status = BTA_AV_FAIL;
+ (*bta_av_cb.p_cback)(BTA_AV_RECONFIG_EVT, (tBTA_AV*)&evt);
+ bta_av_ssm_execute(p_scb, BTA_AV_STR_DISC_FAIL_EVT, NULL);
+ } else {
+ APPL_TRACE_ERROR("%s: suspend rejected, try close", __func__);
+ /* Disable suspend feature only with explicit rejection(not with timeout)
+ */
+ if (err_code != AVDT_ERR_TIMEOUT) {
+ p_scb->suspend_sup = false;
+ }
+ /* drop the buffers queued in L2CAP */
+ L2CA_FlushChannel(p_scb->l2c_cid, L2CAP_FLUSH_CHANS_ALL);
- AVDT_CloseReq(p_scb->avdt_handle);
- }
+ AVDT_CloseReq(p_scb->avdt_handle);
}
- else
- {
- APPL_TRACE_DEBUG("%s: calling AVDT_ReconfigReq", __func__);
- /* reconfig the stream */
+ } else {
+ APPL_TRACE_DEBUG("%s: calling AVDT_ReconfigReq", __func__);
+ /* reconfig the stream */
- AVDT_ReconfigReq(p_scb->avdt_handle, p_scb->p_cap);
- p_scb->p_cap->psc_mask = p_scb->cur_psc_mask;
- }
+ AVDT_ReconfigReq(p_scb->avdt_handle, p_scb->p_cap);
+ p_scb->p_cap->psc_mask = p_scb->cur_psc_mask;
+ }
}
/*******************************************************************************
@@ -2880,71 +2652,65 @@
* Returns void
*
******************************************************************************/
-void bta_av_rcfg_cfm (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data)
-{
- uint8_t err_code = p_data->str_msg.msg.hdr.err_code;
+void bta_av_rcfg_cfm(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data) {
+ uint8_t err_code = p_data->str_msg.msg.hdr.err_code;
- APPL_TRACE_DEBUG("%s: err_code = %d", __func__, err_code);
- if (err_code)
- {
- APPL_TRACE_ERROR("%s: reconfig rejected, try close", __func__);
- /* Disable reconfiguration feature only with explicit rejection(not with timeout) */
- if (err_code != AVDT_ERR_TIMEOUT)
- {
- p_scb->recfg_sup = false;
- }
- /* started flag is false when reconfigure command is sent */
- /* drop the buffers queued in L2CAP */
- L2CA_FlushChannel (p_scb->l2c_cid, L2CAP_FLUSH_CHANS_ALL);
- AVDT_CloseReq(p_scb->avdt_handle);
+ APPL_TRACE_DEBUG("%s: err_code = %d", __func__, err_code);
+ if (err_code) {
+ APPL_TRACE_ERROR("%s: reconfig rejected, try close", __func__);
+ /* Disable reconfiguration feature only with explicit rejection(not with
+ * timeout) */
+ if (err_code != AVDT_ERR_TIMEOUT) {
+ p_scb->recfg_sup = false;
}
- else
- {
- /* update the codec info after rcfg cfm */
- APPL_TRACE_DEBUG("%s: updating from codec %s to codec %s",
- __func__, A2DP_CodecName(p_scb->cfg.codec_info),
- A2DP_CodecName(p_data->str_msg.msg.reconfig_cfm.p_cfg->codec_info));
- memcpy(p_scb->cfg.codec_info,p_data->str_msg.msg.reconfig_cfm.p_cfg->codec_info,AVDT_CODEC_SIZE);
- /* take the SSM back to OPEN state */
- bta_av_ssm_execute(p_scb, BTA_AV_STR_OPEN_OK_EVT, NULL);
- }
+ /* started flag is false when reconfigure command is sent */
+ /* drop the buffers queued in L2CAP */
+ L2CA_FlushChannel(p_scb->l2c_cid, L2CAP_FLUSH_CHANS_ALL);
+ AVDT_CloseReq(p_scb->avdt_handle);
+ } else {
+ /* update the codec info after rcfg cfm */
+ APPL_TRACE_DEBUG(
+ "%s: updating from codec %s to codec %s", __func__,
+ A2DP_CodecName(p_scb->cfg.codec_info),
+ A2DP_CodecName(p_data->str_msg.msg.reconfig_cfm.p_cfg->codec_info));
+ memcpy(p_scb->cfg.codec_info,
+ p_data->str_msg.msg.reconfig_cfm.p_cfg->codec_info, AVDT_CODEC_SIZE);
+ /* take the SSM back to OPEN state */
+ bta_av_ssm_execute(p_scb, BTA_AV_STR_OPEN_OK_EVT, NULL);
+ }
}
/*******************************************************************************
*
* Function bta_av_rcfg_open
*
- * Description AVDT is connected. open the stream with the new configuration
+ * Description AVDT is connected. open the stream with the new
+ *configuration
*
* Returns void
*
******************************************************************************/
-void bta_av_rcfg_open (tBTA_AV_SCB *p_scb,
- UNUSED_ATTR tBTA_AV_DATA *p_data)
-{
- APPL_TRACE_DEBUG("%s: num_disc_snks = %d", __func__, p_scb->num_disc_snks);
+void bta_av_rcfg_open(tBTA_AV_SCB* p_scb, UNUSED_ATTR tBTA_AV_DATA* p_data) {
+ APPL_TRACE_DEBUG("%s: num_disc_snks = %d", __func__, p_scb->num_disc_snks);
- if (p_scb->num_disc_snks == 0)
- {
- /* Need to update call-out module so that it will be ready for discover */
- p_scb->p_cos->stop(p_scb->hndl);
+ if (p_scb->num_disc_snks == 0) {
+ /* Need to update call-out module so that it will be ready for discover */
+ p_scb->p_cos->stop(p_scb->hndl);
- /* send avdtp discover request */
- AVDT_DiscoverReq(p_scb->peer_addr, p_scb->sep_info, BTA_AV_NUM_SEPS, bta_av_dt_cback[p_scb->hdi]);
- }
- else
- {
- memcpy(p_scb->cfg.codec_info, p_scb->p_cap->codec_info, AVDT_CODEC_SIZE);
- /* we may choose to use a different SEP at reconfig.
- * adjust the sep_idx now */
- bta_av_adjust_seps_idx(p_scb, bta_av_get_scb_handle(p_scb, AVDT_TSEP_SRC));
+ /* send avdtp discover request */
+ AVDT_DiscoverReq(p_scb->peer_addr, p_scb->sep_info, BTA_AV_NUM_SEPS,
+ bta_av_dt_cback[p_scb->hdi]);
+ } else {
+ memcpy(p_scb->cfg.codec_info, p_scb->p_cap->codec_info, AVDT_CODEC_SIZE);
+ /* we may choose to use a different SEP at reconfig.
+ * adjust the sep_idx now */
+ bta_av_adjust_seps_idx(p_scb, bta_av_get_scb_handle(p_scb, AVDT_TSEP_SRC));
- /* open the stream with the new config */
- p_scb->sep_info_idx = p_scb->rcfg_idx;
- AVDT_OpenReq(p_scb->avdt_handle, p_scb->peer_addr,
- p_scb->sep_info[p_scb->sep_info_idx].seid, p_scb->p_cap);
- }
-
+ /* open the stream with the new config */
+ p_scb->sep_info_idx = p_scb->rcfg_idx;
+ AVDT_OpenReq(p_scb->avdt_handle, p_scb->peer_addr,
+ p_scb->sep_info[p_scb->sep_info_idx].seid, p_scb->p_cap);
+ }
}
/*******************************************************************************
@@ -2956,11 +2722,9 @@
* Returns void
*
******************************************************************************/
-void bta_av_security_rej (tBTA_AV_SCB *p_scb,
- UNUSED_ATTR tBTA_AV_DATA *p_data)
-{
- AVDT_SecurityRsp(p_scb->avdt_handle, p_scb->avdt_label, AVDT_ERR_BAD_STATE,
- NULL, 0);
+void bta_av_security_rej(tBTA_AV_SCB* p_scb, UNUSED_ATTR tBTA_AV_DATA* p_data) {
+ AVDT_SecurityRsp(p_scb->avdt_handle, p_scb->avdt_label, AVDT_ERR_BAD_STATE,
+ NULL, 0);
}
/*******************************************************************************
@@ -2968,46 +2732,43 @@
* Function bta_av_chk_2nd_start
*
* Description check if this is 2nd stream and if it needs to be started.
- * This function needs to be kept very similar to bta_av_chk_start
+ * This function needs to be kept very similar to
+ *bta_av_chk_start
*
* Returns void
*
******************************************************************************/
-void bta_av_chk_2nd_start (tBTA_AV_SCB *p_scb,
- UNUSED_ATTR tBTA_AV_DATA *p_data)
-{
- tBTA_AV_SCB *p_scbi;
- int i;
- bool new_started = false;
+void bta_av_chk_2nd_start(tBTA_AV_SCB* p_scb,
+ UNUSED_ATTR tBTA_AV_DATA* p_data) {
+ tBTA_AV_SCB* p_scbi;
+ int i;
+ bool new_started = false;
- if ((p_scb->chnl == BTA_AV_CHNL_AUDIO) && (bta_av_cb.audio_open_cnt >= 2))
- {
- /* more than one audio channel is connected */
- if (!(p_scb->role & BTA_AV_ROLE_SUSPEND_OPT))
- {
- /* this channel does not need to be reconfigured.
- * if there is other channel streaming, start the stream now */
- for(i=0; i<BTA_AV_NUM_STRS; i++)
- {
- p_scbi = bta_av_cb.p_scb[i];
- if(p_scbi && p_scbi->chnl == BTA_AV_CHNL_AUDIO && p_scbi->co_started)
- {
- if (!new_started)
- {
- /* start the new stream */
- new_started = true;
- bta_av_ssm_execute(p_scb, BTA_AV_AP_START_EVT, NULL);
- }
- /* may need to update the flush timeout of this already started stream */
- if (p_scbi->co_started != bta_av_cb.audio_open_cnt)
- {
- p_scbi->co_started = bta_av_cb.audio_open_cnt;
- L2CA_SetFlushTimeout(p_scbi->peer_addr, p_bta_av_cfg->p_audio_flush_to[p_scbi->co_started - 1] );
- }
- }
- }
+ if ((p_scb->chnl == BTA_AV_CHNL_AUDIO) && (bta_av_cb.audio_open_cnt >= 2)) {
+ /* more than one audio channel is connected */
+ if (!(p_scb->role & BTA_AV_ROLE_SUSPEND_OPT)) {
+ /* this channel does not need to be reconfigured.
+ * if there is other channel streaming, start the stream now */
+ for (i = 0; i < BTA_AV_NUM_STRS; i++) {
+ p_scbi = bta_av_cb.p_scb[i];
+ if (p_scbi && p_scbi->chnl == BTA_AV_CHNL_AUDIO && p_scbi->co_started) {
+ if (!new_started) {
+ /* start the new stream */
+ new_started = true;
+ bta_av_ssm_execute(p_scb, BTA_AV_AP_START_EVT, NULL);
+ }
+ /* may need to update the flush timeout of this already started stream
+ */
+ if (p_scbi->co_started != bta_av_cb.audio_open_cnt) {
+ p_scbi->co_started = bta_av_cb.audio_open_cnt;
+ L2CA_SetFlushTimeout(
+ p_scbi->peer_addr,
+ p_bta_av_cfg->p_audio_flush_to[p_scbi->co_started - 1]);
+ }
}
+ }
}
+ }
}
/*******************************************************************************
@@ -3019,70 +2780,58 @@
* Returns void
*
******************************************************************************/
-void bta_av_open_rc (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data)
-{
- tBTA_AV_START start;
+void bta_av_open_rc(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data) {
+ tBTA_AV_START start;
- APPL_TRACE_DEBUG("%s: use_rc: %d, wait: x%x role:x%x", __func__,
- p_scb->use_rc, p_scb->wait, p_scb->role);
- if ((p_scb->wait & BTA_AV_WAIT_ROLE_SW_BITS) && (p_scb->q_tag == BTA_AV_Q_TAG_START))
- {
- /* waiting for role switch for some reason & the timer expires */
- if (!bta_av_link_role_ok(p_scb, A2DP_SET_ONE_BIT))
- {
- APPL_TRACE_ERROR ("%s: failed to start streaming for role management reasons!!",
- __func__);
- alarm_cancel(p_scb->avrc_ct_timer);
- start.chnl = p_scb->chnl;
- start.status = BTA_AV_FAIL_ROLE;
- start.initiator = true;
- start.hndl = p_scb->hndl;
- p_scb->wait &= ~BTA_AV_WAIT_ROLE_SW_BITS;
- bta_av_cb.rs_idx = 0;
- (*bta_av_cb.p_cback)(BTA_AV_START_EVT, (tBTA_AV *) &start);
- }
- else
- {
- /* role switch is done. continue to start streaming */
- bta_av_cb.rs_idx = 0;
- p_data->hdr.offset = BTA_AV_RS_OK;
- bta_av_start_ok (p_scb, p_data);
- }
- return;
+ APPL_TRACE_DEBUG("%s: use_rc: %d, wait: x%x role:x%x", __func__,
+ p_scb->use_rc, p_scb->wait, p_scb->role);
+ if ((p_scb->wait & BTA_AV_WAIT_ROLE_SW_BITS) &&
+ (p_scb->q_tag == BTA_AV_Q_TAG_START)) {
+ /* waiting for role switch for some reason & the timer expires */
+ if (!bta_av_link_role_ok(p_scb, A2DP_SET_ONE_BIT)) {
+ APPL_TRACE_ERROR(
+ "%s: failed to start streaming for role management reasons!!",
+ __func__);
+ alarm_cancel(p_scb->avrc_ct_timer);
+ start.chnl = p_scb->chnl;
+ start.status = BTA_AV_FAIL_ROLE;
+ start.initiator = true;
+ start.hndl = p_scb->hndl;
+ p_scb->wait &= ~BTA_AV_WAIT_ROLE_SW_BITS;
+ bta_av_cb.rs_idx = 0;
+ (*bta_av_cb.p_cback)(BTA_AV_START_EVT, (tBTA_AV*)&start);
+ } else {
+ /* role switch is done. continue to start streaming */
+ bta_av_cb.rs_idx = 0;
+ p_data->hdr.offset = BTA_AV_RS_OK;
+ bta_av_start_ok(p_scb, p_data);
}
+ return;
+ }
- if(p_scb->use_rc == true || (p_scb->role & BTA_AV_ROLE_AD_ACP) )
- {
- if(bta_av_cb.disc)
- {
- /* AVRC discover db is in use */
- if(p_scb->rc_handle == BTA_AV_RC_HANDLE_NONE)
- {
- /* AVRC channel is not connected. delay a little bit */
- if ((p_scb->wait & BTA_AV_WAIT_ROLE_SW_BITS) == 0) {
- bta_sys_start_timer(p_scb->avrc_ct_timer,
- BTA_AV_RC_DISC_TIME_VAL,
- BTA_AV_AVRC_TIMER_EVT, p_scb->hndl);
- } else {
- p_scb->wait |= BTA_AV_WAIT_CHECK_RC;
- }
- }
+ if (p_scb->use_rc == true || (p_scb->role & BTA_AV_ROLE_AD_ACP)) {
+ if (bta_av_cb.disc) {
+ /* AVRC discover db is in use */
+ if (p_scb->rc_handle == BTA_AV_RC_HANDLE_NONE) {
+ /* AVRC channel is not connected. delay a little bit */
+ if ((p_scb->wait & BTA_AV_WAIT_ROLE_SW_BITS) == 0) {
+ bta_sys_start_timer(p_scb->avrc_ct_timer, BTA_AV_RC_DISC_TIME_VAL,
+ BTA_AV_AVRC_TIMER_EVT, p_scb->hndl);
+ } else {
+ p_scb->wait |= BTA_AV_WAIT_CHECK_RC;
}
- else
- {
- /* use main SM for AVRC SDP activities */
- bta_av_rc_disc((uint8_t)(p_scb->hdi + 1));
- }
+ }
+ } else {
+ /* use main SM for AVRC SDP activities */
+ bta_av_rc_disc((uint8_t)(p_scb->hdi + 1));
}
- else
- {
- if(BTA_AV_RC_HANDLE_NONE != p_scb->rc_handle)
- {
- /* the open API said that this handle does not want a RC connection.
- * disconnect it now */
- AVRC_Close(p_scb->rc_handle);
- }
+ } else {
+ if (BTA_AV_RC_HANDLE_NONE != p_scb->rc_handle) {
+ /* the open API said that this handle does not want a RC connection.
+ * disconnect it now */
+ AVRC_Close(p_scb->rc_handle);
}
+ }
}
/*******************************************************************************
@@ -3095,30 +2844,26 @@
* Returns void
*
******************************************************************************/
-void bta_av_open_at_inc (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data)
-{
- memcpy (&(p_scb->open_api), &(p_data->api_open), sizeof(tBTA_AV_API_OPEN));
+void bta_av_open_at_inc(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data) {
+ memcpy(&(p_scb->open_api), &(p_data->api_open), sizeof(tBTA_AV_API_OPEN));
- if (p_scb->coll_mask & BTA_AV_COLL_INC_TMR)
- {
- p_scb->coll_mask |= BTA_AV_COLL_API_CALLED;
+ if (p_scb->coll_mask & BTA_AV_COLL_INC_TMR) {
+ p_scb->coll_mask |= BTA_AV_COLL_API_CALLED;
- /* API open will be handled at timeout if SNK did not start signalling. */
- /* API open will be ignored if SNK starts signalling. */
- }
- else
- {
- /* SNK did not start signalling, API was called N seconds timeout. */
- /* We need to switch to INIT state and start opening connection. */
- p_scb->coll_mask = 0;
- bta_av_set_scb_sst_init(p_scb);
+ /* API open will be handled at timeout if SNK did not start signalling. */
+ /* API open will be ignored if SNK starts signalling. */
+ } else {
+ /* SNK did not start signalling, API was called N seconds timeout. */
+ /* We need to switch to INIT state and start opening connection. */
+ p_scb->coll_mask = 0;
+ bta_av_set_scb_sst_init(p_scb);
- tBTA_AV_API_OPEN *p_buf =
- (tBTA_AV_API_OPEN *)osi_malloc(sizeof(tBTA_AV_API_OPEN));
- memcpy(p_buf, &(p_scb->open_api), sizeof(tBTA_AV_API_OPEN));
- p_scb->skip_sdp = true;
- bta_sys_sendmsg(p_buf);
- }
+ tBTA_AV_API_OPEN* p_buf =
+ (tBTA_AV_API_OPEN*)osi_malloc(sizeof(tBTA_AV_API_OPEN));
+ memcpy(p_buf, &(p_scb->open_api), sizeof(tBTA_AV_API_OPEN));
+ p_scb->skip_sdp = true;
+ bta_sys_sendmsg(p_buf);
+ }
}
/*******************************************************************************
@@ -3131,55 +2876,55 @@
* Returns void
*
******************************************************************************/
-void bta_av_offload_req(tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data)
-{
- tBTA_AV_STATUS status = BTA_AV_FAIL_RESOURCES;
- uint16_t mtu = bta_av_chk_mtu(p_scb, p_scb->stream_mtu);
+void bta_av_offload_req(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data) {
+ tBTA_AV_STATUS status = BTA_AV_FAIL_RESOURCES;
+ uint16_t mtu = bta_av_chk_mtu(p_scb, p_scb->stream_mtu);
- APPL_TRACE_DEBUG("%s: stream %s, audio channels open %d", __func__,
- p_scb->started ? "STARTED" : "STOPPED",
- bta_av_cb.audio_open_cnt);
+ APPL_TRACE_DEBUG("%s: stream %s, audio channels open %d", __func__,
+ p_scb->started ? "STARTED" : "STOPPED",
+ bta_av_cb.audio_open_cnt);
- /* Check if stream has already been started. */
- /* Support offload if only one audio source stream is open. */
- if (p_scb->started != true) {
- status = BTA_AV_FAIL_STREAM;
+ /* Check if stream has already been started. */
+ /* Support offload if only one audio source stream is open. */
+ if (p_scb->started != true) {
+ status = BTA_AV_FAIL_STREAM;
- } else if (bta_av_cb.audio_open_cnt == 1 &&
- p_scb->seps[p_scb->sep_idx].tsep == AVDT_TSEP_SRC &&
- p_scb->chnl == BTA_AV_CHNL_AUDIO) {
+ } else if (bta_av_cb.audio_open_cnt == 1 &&
+ p_scb->seps[p_scb->sep_idx].tsep == AVDT_TSEP_SRC &&
+ p_scb->chnl == BTA_AV_CHNL_AUDIO) {
+ bt_vendor_op_a2dp_offload_t a2dp_offload_start;
- bt_vendor_op_a2dp_offload_t a2dp_offload_start;
+ if (L2CA_GetConnectionConfig(
+ p_scb->l2c_cid, &a2dp_offload_start.acl_data_size,
+ &a2dp_offload_start.remote_cid, &a2dp_offload_start.lm_handle)) {
+ APPL_TRACE_DEBUG("%s: l2cmtu %d lcid 0x%02X rcid 0x%02X lm_handle 0x%02X",
+ __func__, a2dp_offload_start.acl_data_size,
+ p_scb->l2c_cid, a2dp_offload_start.remote_cid,
+ a2dp_offload_start.lm_handle);
- if (L2CA_GetConnectionConfig(p_scb->l2c_cid, &a2dp_offload_start.acl_data_size,
- &a2dp_offload_start.remote_cid, &a2dp_offload_start.lm_handle)) {
+ a2dp_offload_start.bta_av_handle = p_scb->hndl;
+ a2dp_offload_start.xmit_quota = BTA_AV_A2DP_OFFLOAD_XMIT_QUOTA;
+ a2dp_offload_start.stream_mtu =
+ (mtu < p_scb->stream_mtu) ? mtu : p_scb->stream_mtu;
+ a2dp_offload_start.local_cid = p_scb->l2c_cid;
+ a2dp_offload_start.is_flushable = true;
+ a2dp_offload_start.stream_source =
+ ((uint32_t)(p_scb->cfg.codec_info[1] | p_scb->cfg.codec_info[2]));
- APPL_TRACE_DEBUG("%s: l2cmtu %d lcid 0x%02X rcid 0x%02X lm_handle 0x%02X",
- __func__,
- a2dp_offload_start.acl_data_size, p_scb->l2c_cid,
- a2dp_offload_start.remote_cid, a2dp_offload_start.lm_handle);
+ memcpy(a2dp_offload_start.codec_info, p_scb->cfg.codec_info,
+ sizeof(a2dp_offload_start.codec_info));
- a2dp_offload_start.bta_av_handle = p_scb->hndl;
- a2dp_offload_start.xmit_quota = BTA_AV_A2DP_OFFLOAD_XMIT_QUOTA;
- a2dp_offload_start.stream_mtu = (mtu < p_scb->stream_mtu) ? mtu : p_scb->stream_mtu;
- a2dp_offload_start.local_cid = p_scb->l2c_cid;
- a2dp_offload_start.is_flushable = true;
- a2dp_offload_start.stream_source = ((uint32_t)(p_scb->cfg.codec_info[1] | p_scb->cfg.codec_info[2]));
-
- memcpy(a2dp_offload_start.codec_info, p_scb->cfg.codec_info,
- sizeof(a2dp_offload_start.codec_info));
-
- if (!vendor_get_interface()->send_command(
- (vendor_opcode_t)BT_VND_OP_A2DP_OFFLOAD_START,
- &a2dp_offload_start)) {
- status = BTA_AV_SUCCESS;
- p_scb->offload_start_pending = true;
- }
- }
+ if (!vendor_get_interface()->send_command(
+ (vendor_opcode_t)BT_VND_OP_A2DP_OFFLOAD_START,
+ &a2dp_offload_start)) {
+ status = BTA_AV_SUCCESS;
+ p_scb->offload_start_pending = true;
+ }
}
+ }
- if (status != BTA_AV_SUCCESS)
- (*bta_av_cb.p_cback)(BTA_AV_OFFLOAD_START_RSP_EVT, (tBTA_AV *)&status);
+ if (status != BTA_AV_SUCCESS)
+ (*bta_av_cb.p_cback)(BTA_AV_OFFLOAD_START_RSP_EVT, (tBTA_AV*)&status);
}
/*******************************************************************************
@@ -3192,19 +2937,18 @@
* Returns void
*
******************************************************************************/
-void bta_av_offload_rsp(tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data)
-{
- tBTA_AV_STATUS status = p_data->api_status_rsp.status;
+void bta_av_offload_rsp(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data) {
+ tBTA_AV_STATUS status = p_data->api_status_rsp.status;
- APPL_TRACE_DEBUG("%s: stream %s status %s", __func__,
- p_scb->started ? "STARTED" : "STOPPED",
- status ? "FAIL" : "SUCCESS");
+ APPL_TRACE_DEBUG("%s: stream %s status %s", __func__,
+ p_scb->started ? "STARTED" : "STOPPED",
+ status ? "FAIL" : "SUCCESS");
- /* Check if stream has already been started. */
- if (status == BTA_AV_SUCCESS && p_scb->started != true) {
- status = BTA_AV_FAIL_STREAM;
- }
+ /* Check if stream has already been started. */
+ if (status == BTA_AV_SUCCESS && p_scb->started != true) {
+ status = BTA_AV_FAIL_STREAM;
+ }
- p_scb->offload_start_pending = false;
- (*bta_av_cb.p_cback)(BTA_AV_OFFLOAD_START_RSP_EVT, (tBTA_AV *)&status);
+ p_scb->offload_start_pending = false;
+ (*bta_av_cb.p_cback)(BTA_AV_OFFLOAD_START_RSP_EVT, (tBTA_AV*)&status);
}
diff --git a/bta/av/bta_av_act.cc b/bta/av/bta_av_act.cc
index 0286156..134e22f 100644
--- a/bta/av/bta_av_act.cc
+++ b/bta/av/bta_av_act.cc
@@ -48,18 +48,18 @@
****************************************************************************/
/* the timeout to wait for open req after setconfig for incoming connections */
#ifndef BTA_AV_SIGNALLING_TIMEOUT_MS
-#define BTA_AV_SIGNALLING_TIMEOUT_MS (8 * 1000) /* 8 seconds */
+#define BTA_AV_SIGNALLING_TIMEOUT_MS (8 * 1000) /* 8 seconds */
#endif
/* Time to wait for signalling from SNK when it is initiated from SNK. */
/* If not, we will start signalling from SRC. */
#ifndef BTA_AV_ACCEPT_SIGNALLING_TIMEOUT_MS
-#define BTA_AV_ACCEPT_SIGNALLING_TIMEOUT_MS (2 * 1000) /* 2 seconds */
+#define BTA_AV_ACCEPT_SIGNALLING_TIMEOUT_MS (2 * 1000) /* 2 seconds */
#endif
-extern fixed_queue_t *btu_bta_alarm_queue;
+extern fixed_queue_t* btu_bta_alarm_queue;
-static void bta_av_accept_signalling_timer_cback(void *data);
+static void bta_av_accept_signalling_timer_cback(void* data);
#ifndef AVRC_MIN_META_CMD_LEN
#define AVRC_MIN_META_CMD_LEN 20
@@ -74,22 +74,20 @@
* Returns tBTA_AV_RCB
*
******************************************************************************/
-tBTA_AV_RCB * bta_av_get_rcb_by_shdl(uint8_t shdl)
-{
- tBTA_AV_RCB *p_rcb = NULL;
- int i;
+tBTA_AV_RCB* bta_av_get_rcb_by_shdl(uint8_t shdl) {
+ tBTA_AV_RCB* p_rcb = NULL;
+ int i;
- for (i=0; i<BTA_AV_NUM_RCB; i++)
- {
- if (bta_av_cb.rcb[i].shdl == shdl && bta_av_cb.rcb[i].handle != BTA_AV_RC_HANDLE_NONE)
- {
- p_rcb = &bta_av_cb.rcb[i];
- break;
- }
+ for (i = 0; i < BTA_AV_NUM_RCB; i++) {
+ if (bta_av_cb.rcb[i].shdl == shdl &&
+ bta_av_cb.rcb[i].handle != BTA_AV_RC_HANDLE_NONE) {
+ p_rcb = &bta_av_cb.rcb[i];
+ break;
}
- return p_rcb;
+ }
+ return p_rcb;
}
-#define BTA_AV_STS_NO_RSP 0xFF /* a number not used by tAVRC_STS */
+#define BTA_AV_STS_NO_RSP 0xFF /* a number not used by tAVRC_STS */
/*******************************************************************************
*
@@ -100,51 +98,49 @@
* Returns void
*
******************************************************************************/
-void bta_av_del_rc(tBTA_AV_RCB *p_rcb)
-{
- tBTA_AV_SCB *p_scb;
- uint8_t rc_handle; /* connected AVRCP handle */
+void bta_av_del_rc(tBTA_AV_RCB* p_rcb) {
+ tBTA_AV_SCB* p_scb;
+ uint8_t rc_handle; /* connected AVRCP handle */
- p_scb = NULL;
- if (p_rcb->handle != BTA_AV_RC_HANDLE_NONE)
- {
- if (p_rcb->shdl)
- {
- /* Validate array index*/
- if ((p_rcb->shdl - 1) < BTA_AV_NUM_STRS)
- {
- p_scb = bta_av_cb.p_scb[p_rcb->shdl - 1];
- }
- if (p_scb)
- {
- APPL_TRACE_DEBUG("bta_av_del_rc shdl:%d, srch:%d rc_handle:%d", p_rcb->shdl,
- p_scb->rc_handle, p_rcb->handle);
- if (p_scb->rc_handle == p_rcb->handle)
- p_scb->rc_handle = BTA_AV_RC_HANDLE_NONE;
- /* just in case the RC timer is active
- if (bta_av_cb.features & BTA_AV_FEAT_RCCT && p_scb->chnl == BTA_AV_CHNL_AUDIO) */
- alarm_cancel(p_scb->avrc_ct_timer);
- }
- }
-
- APPL_TRACE_EVENT("bta_av_del_rc handle: %d status=0x%x, rc_acp_handle:%d, idx:%d",
- p_rcb->handle, p_rcb->status, bta_av_cb.rc_acp_handle, bta_av_cb.rc_acp_idx);
- rc_handle = p_rcb->handle;
- if (!(p_rcb->status & BTA_AV_RC_CONN_MASK) ||
- ((p_rcb->status & BTA_AV_RC_ROLE_MASK) == BTA_AV_RC_ROLE_INT) )
- {
- p_rcb->status = 0;
- p_rcb->handle = BTA_AV_RC_HANDLE_NONE;
- p_rcb->shdl = 0;
- p_rcb->lidx = 0;
- }
- /* else ACP && connected. do not clear the handle yet */
- AVRC_Close(rc_handle);
- if (rc_handle == bta_av_cb.rc_acp_handle)
- bta_av_cb.rc_acp_handle = BTA_AV_RC_HANDLE_NONE;
- APPL_TRACE_EVENT("end del_rc handle: %d status=0x%x, rc_acp_handle:%d, lidx:%d",
- p_rcb->handle, p_rcb->status, bta_av_cb.rc_acp_handle, p_rcb->lidx);
+ p_scb = NULL;
+ if (p_rcb->handle != BTA_AV_RC_HANDLE_NONE) {
+ if (p_rcb->shdl) {
+ /* Validate array index*/
+ if ((p_rcb->shdl - 1) < BTA_AV_NUM_STRS) {
+ p_scb = bta_av_cb.p_scb[p_rcb->shdl - 1];
+ }
+ if (p_scb) {
+ APPL_TRACE_DEBUG("bta_av_del_rc shdl:%d, srch:%d rc_handle:%d",
+ p_rcb->shdl, p_scb->rc_handle, p_rcb->handle);
+ if (p_scb->rc_handle == p_rcb->handle)
+ p_scb->rc_handle = BTA_AV_RC_HANDLE_NONE;
+ /* just in case the RC timer is active
+ if (bta_av_cb.features & BTA_AV_FEAT_RCCT && p_scb->chnl ==
+ BTA_AV_CHNL_AUDIO) */
+ alarm_cancel(p_scb->avrc_ct_timer);
+ }
}
+
+ APPL_TRACE_EVENT(
+ "bta_av_del_rc handle: %d status=0x%x, rc_acp_handle:%d, idx:%d",
+ p_rcb->handle, p_rcb->status, bta_av_cb.rc_acp_handle,
+ bta_av_cb.rc_acp_idx);
+ rc_handle = p_rcb->handle;
+ if (!(p_rcb->status & BTA_AV_RC_CONN_MASK) ||
+ ((p_rcb->status & BTA_AV_RC_ROLE_MASK) == BTA_AV_RC_ROLE_INT)) {
+ p_rcb->status = 0;
+ p_rcb->handle = BTA_AV_RC_HANDLE_NONE;
+ p_rcb->shdl = 0;
+ p_rcb->lidx = 0;
+ }
+ /* else ACP && connected. do not clear the handle yet */
+ AVRC_Close(rc_handle);
+ if (rc_handle == bta_av_cb.rc_acp_handle)
+ bta_av_cb.rc_acp_handle = BTA_AV_RC_HANDLE_NONE;
+ APPL_TRACE_EVENT(
+ "end del_rc handle: %d status=0x%x, rc_acp_handle:%d, lidx:%d",
+ p_rcb->handle, p_rcb->status, bta_av_cb.rc_acp_handle, p_rcb->lidx);
+ }
}
/*******************************************************************************
@@ -156,15 +152,13 @@
* Returns void
*
******************************************************************************/
-static void bta_av_close_all_rc(tBTA_AV_CB *p_cb)
-{
- int i;
+static void bta_av_close_all_rc(tBTA_AV_CB* p_cb) {
+ int i;
- for(i=0; i<BTA_AV_NUM_RCB; i++)
- {
- if ((p_cb->disabling == true) || (bta_av_cb.rcb[i].shdl != 0))
- bta_av_del_rc(&bta_av_cb.rcb[i]);
- }
+ for (i = 0; i < BTA_AV_NUM_RCB; i++) {
+ if ((p_cb->disabling == true) || (bta_av_cb.rcb[i].shdl != 0))
+ bta_av_del_rc(&bta_av_cb.rcb[i]);
+ }
}
/*******************************************************************************
@@ -176,13 +170,11 @@
* Returns void
*
******************************************************************************/
-static void bta_av_del_sdp_rec(uint32_t *p_sdp_handle)
-{
- if (*p_sdp_handle != 0)
- {
- SDP_DeleteRecord(*p_sdp_handle);
- *p_sdp_handle = 0;
- }
+static void bta_av_del_sdp_rec(uint32_t* p_sdp_handle) {
+ if (*p_sdp_handle != 0) {
+ SDP_DeleteRecord(*p_sdp_handle);
+ *p_sdp_handle = 0;
+ }
}
/*******************************************************************************
@@ -194,13 +186,12 @@
* Returns void
*
******************************************************************************/
-static void bta_av_avrc_sdp_cback(UNUSED_ATTR uint16_t status)
-{
- BT_HDR *p_msg = (BT_HDR *)osi_malloc(sizeof(BT_HDR));
+static void bta_av_avrc_sdp_cback(UNUSED_ATTR uint16_t status) {
+ BT_HDR* p_msg = (BT_HDR*)osi_malloc(sizeof(BT_HDR));
- p_msg->event = BTA_AV_SDP_AVRC_DISC_EVT;
+ p_msg->event = BTA_AV_SDP_AVRC_DISC_EVT;
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
}
/*******************************************************************************
@@ -213,40 +204,32 @@
*
******************************************************************************/
static void bta_av_rc_ctrl_cback(uint8_t handle, uint8_t event,
- UNUSED_ATTR uint16_t result, BD_ADDR peer_addr)
-{
- uint16_t msg_event = 0;
+ UNUSED_ATTR uint16_t result,
+ BD_ADDR peer_addr) {
+ uint16_t msg_event = 0;
- APPL_TRACE_EVENT("%s handle: %d event=0x%x", __func__, handle, event);
- if (event == AVRC_OPEN_IND_EVT)
- {
- /* save handle of opened connection
- bta_av_cb.rc_handle = handle;*/
+ APPL_TRACE_EVENT("%s handle: %d event=0x%x", __func__, handle, event);
+ if (event == AVRC_OPEN_IND_EVT) {
+ /* save handle of opened connection
+ bta_av_cb.rc_handle = handle;*/
- msg_event = BTA_AV_AVRC_OPEN_EVT;
- }
- else if (event == AVRC_CLOSE_IND_EVT)
- {
- msg_event = BTA_AV_AVRC_CLOSE_EVT;
- }
- else if (event == AVRC_BROWSE_OPEN_IND_EVT)
- {
- msg_event = BTA_AV_AVRC_BROWSE_OPEN_EVT;
- }
- else if (event == AVRC_BROWSE_CLOSE_IND_EVT)
- {
- msg_event = BTA_AV_AVRC_BROWSE_CLOSE_EVT;
- }
+ msg_event = BTA_AV_AVRC_OPEN_EVT;
+ } else if (event == AVRC_CLOSE_IND_EVT) {
+ msg_event = BTA_AV_AVRC_CLOSE_EVT;
+ } else if (event == AVRC_BROWSE_OPEN_IND_EVT) {
+ msg_event = BTA_AV_AVRC_BROWSE_OPEN_EVT;
+ } else if (event == AVRC_BROWSE_CLOSE_IND_EVT) {
+ msg_event = BTA_AV_AVRC_BROWSE_CLOSE_EVT;
+ }
- if (msg_event) {
- tBTA_AV_RC_CONN_CHG *p_msg =
- (tBTA_AV_RC_CONN_CHG *)osi_malloc(sizeof(tBTA_AV_RC_CONN_CHG));
- p_msg->hdr.event = msg_event;
- p_msg->handle = handle;
- if (peer_addr)
- bdcpy(p_msg->peer_addr, peer_addr);
- bta_sys_sendmsg(p_msg);
- }
+ if (msg_event) {
+ tBTA_AV_RC_CONN_CHG* p_msg =
+ (tBTA_AV_RC_CONN_CHG*)osi_malloc(sizeof(tBTA_AV_RC_CONN_CHG));
+ p_msg->hdr.event = msg_event;
+ p_msg->handle = handle;
+ if (peer_addr) bdcpy(p_msg->peer_addr, peer_addr);
+ bta_sys_sendmsg(p_msg);
+ }
}
/*******************************************************************************
@@ -258,55 +241,56 @@
* Returns void
*
******************************************************************************/
-static void bta_av_rc_msg_cback(uint8_t handle, uint8_t label, uint8_t opcode, tAVRC_MSG *p_msg)
-{
- uint8_t *p_data_src = NULL;
- uint16_t data_len = 0;
+static void bta_av_rc_msg_cback(uint8_t handle, uint8_t label, uint8_t opcode,
+ tAVRC_MSG* p_msg) {
+ uint8_t* p_data_src = NULL;
+ uint16_t data_len = 0;
- APPL_TRACE_DEBUG("%s handle: %u opcode=0x%x", __func__, handle, opcode);
+ APPL_TRACE_DEBUG("%s handle: %u opcode=0x%x", __func__, handle, opcode);
- /* Copy avrc packet into BTA message buffer (for sending to BTA state machine) */
+ /* Copy avrc packet into BTA message buffer (for sending to BTA state machine)
+ */
- /* Get size of payload data (for vendor and passthrough messages only; for browsing
- * messages, use zero-copy) */
- if (opcode == AVRC_OP_VENDOR && p_msg->vendor.p_vendor_data != NULL) {
- p_data_src = p_msg->vendor.p_vendor_data;
- data_len = (uint16_t) p_msg->vendor.vendor_len;
- } else if (opcode == AVRC_OP_PASS_THRU && p_msg->pass.p_pass_data != NULL) {
- p_data_src = p_msg->pass.p_pass_data;
- data_len = (uint16_t) p_msg->pass.pass_len;
- }
+ /* Get size of payload data (for vendor and passthrough messages only; for
+ * browsing
+ * messages, use zero-copy) */
+ if (opcode == AVRC_OP_VENDOR && p_msg->vendor.p_vendor_data != NULL) {
+ p_data_src = p_msg->vendor.p_vendor_data;
+ data_len = (uint16_t)p_msg->vendor.vendor_len;
+ } else if (opcode == AVRC_OP_PASS_THRU && p_msg->pass.p_pass_data != NULL) {
+ p_data_src = p_msg->pass.p_pass_data;
+ data_len = (uint16_t)p_msg->pass.pass_len;
+ }
- /* Create a copy of the message */
- tBTA_AV_RC_MSG *p_buf =
- (tBTA_AV_RC_MSG *)osi_malloc(sizeof(tBTA_AV_RC_MSG) + data_len);
+ /* Create a copy of the message */
+ tBTA_AV_RC_MSG* p_buf =
+ (tBTA_AV_RC_MSG*)osi_malloc(sizeof(tBTA_AV_RC_MSG) + data_len);
- p_buf->hdr.event = BTA_AV_AVRC_MSG_EVT;
- p_buf->handle = handle;
- p_buf->label = label;
- p_buf->opcode = opcode;
- memcpy(&p_buf->msg, p_msg, sizeof(tAVRC_MSG));
- /* Copy the data payload, and set the pointer to it */
- if (p_data_src != NULL) {
- uint8_t *p_data_dst = (uint8_t *)(p_buf + 1);
- memcpy(p_data_dst, p_data_src, data_len);
+ p_buf->hdr.event = BTA_AV_AVRC_MSG_EVT;
+ p_buf->handle = handle;
+ p_buf->label = label;
+ p_buf->opcode = opcode;
+ memcpy(&p_buf->msg, p_msg, sizeof(tAVRC_MSG));
+ /* Copy the data payload, and set the pointer to it */
+ if (p_data_src != NULL) {
+ uint8_t* p_data_dst = (uint8_t*)(p_buf + 1);
+ memcpy(p_data_dst, p_data_src, data_len);
- /* Update bta message buffer to point to payload data */
- /* (Note AVRC_OP_BROWSING uses zero-copy: p_buf->msg.browse.p_browse_data
- * already points to original avrc buffer) */
- if (opcode == AVRC_OP_VENDOR)
- p_buf->msg.vendor.p_vendor_data = p_data_dst;
- else if (opcode == AVRC_OP_PASS_THRU)
- p_buf->msg.pass.p_pass_data = p_data_dst;
- }
+ /* Update bta message buffer to point to payload data */
+ /* (Note AVRC_OP_BROWSING uses zero-copy: p_buf->msg.browse.p_browse_data
+ * already points to original avrc buffer) */
+ if (opcode == AVRC_OP_VENDOR)
+ p_buf->msg.vendor.p_vendor_data = p_data_dst;
+ else if (opcode == AVRC_OP_PASS_THRU)
+ p_buf->msg.pass.p_pass_data = p_data_dst;
+ }
- if (opcode == AVRC_OP_BROWSE) {
- /* set p_pkt to NULL, so avrc would not free the buffer */
- p_msg->browse.p_browse_pkt = NULL;
- }
+ if (opcode == AVRC_OP_BROWSE) {
+ /* set p_pkt to NULL, so avrc would not free the buffer */
+ p_msg->browse.p_browse_pkt = NULL;
+ }
- bta_sys_sendmsg(p_buf);
-
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -318,65 +302,62 @@
* Returns the created rc handle
*
******************************************************************************/
-uint8_t bta_av_rc_create(tBTA_AV_CB *p_cb, uint8_t role, uint8_t shdl, uint8_t lidx)
-{
- tAVRC_CONN_CB ccb;
- BD_ADDR_PTR bda = (BD_ADDR_PTR)bd_addr_any;
- uint8_t status = BTA_AV_RC_ROLE_ACP;
- tBTA_AV_SCB *p_scb = p_cb->p_scb[shdl - 1];
- int i;
- uint8_t rc_handle;
- tBTA_AV_RCB *p_rcb;
+uint8_t bta_av_rc_create(tBTA_AV_CB* p_cb, uint8_t role, uint8_t shdl,
+ uint8_t lidx) {
+ tAVRC_CONN_CB ccb;
+ BD_ADDR_PTR bda = (BD_ADDR_PTR)bd_addr_any;
+ uint8_t status = BTA_AV_RC_ROLE_ACP;
+ tBTA_AV_SCB* p_scb = p_cb->p_scb[shdl - 1];
+ int i;
+ uint8_t rc_handle;
+ tBTA_AV_RCB* p_rcb;
- if (role == AVCT_INT)
- {
- bda = p_scb->peer_addr;
- status = BTA_AV_RC_ROLE_INT;
+ if (role == AVCT_INT) {
+ bda = p_scb->peer_addr;
+ status = BTA_AV_RC_ROLE_INT;
+ } else {
+ if ((p_rcb = bta_av_get_rcb_by_shdl(shdl)) != NULL) {
+ APPL_TRACE_ERROR("bta_av_rc_create ACP handle exist for shdl:%d", shdl);
+ return p_rcb->handle;
}
- else
- {
- if ((p_rcb = bta_av_get_rcb_by_shdl(shdl)) != NULL )
- {
- APPL_TRACE_ERROR("bta_av_rc_create ACP handle exist for shdl:%d", shdl);
- return p_rcb->handle;
- }
- }
+ }
- ccb.p_ctrl_cback = bta_av_rc_ctrl_cback;
- ccb.p_msg_cback = bta_av_rc_msg_cback;
- ccb.company_id = p_bta_av_cfg->company_id;
- ccb.conn = role;
- /* note: BTA_AV_FEAT_RCTG = AVRC_CT_TARGET, BTA_AV_FEAT_RCCT = AVRC_CT_CONTROL */
- ccb.control = p_cb->features & (BTA_AV_FEAT_RCTG | BTA_AV_FEAT_RCCT | BTA_AV_FEAT_METADATA |
- AVRC_CT_PASSIVE);
+ ccb.p_ctrl_cback = bta_av_rc_ctrl_cback;
+ ccb.p_msg_cback = bta_av_rc_msg_cback;
+ ccb.company_id = p_bta_av_cfg->company_id;
+ ccb.conn = role;
+ /* note: BTA_AV_FEAT_RCTG = AVRC_CT_TARGET, BTA_AV_FEAT_RCCT = AVRC_CT_CONTROL
+ */
+ ccb.control = p_cb->features & (BTA_AV_FEAT_RCTG | BTA_AV_FEAT_RCCT |
+ BTA_AV_FEAT_METADATA | AVRC_CT_PASSIVE);
- if (AVRC_Open(&rc_handle, &ccb, bda) != AVRC_SUCCESS)
- return BTA_AV_RC_HANDLE_NONE;
+ if (AVRC_Open(&rc_handle, &ccb, bda) != AVRC_SUCCESS)
+ return BTA_AV_RC_HANDLE_NONE;
- i = rc_handle;
- p_rcb = &p_cb->rcb[i];
+ i = rc_handle;
+ p_rcb = &p_cb->rcb[i];
- if (p_rcb->handle != BTA_AV_RC_HANDLE_NONE)
- {
- APPL_TRACE_ERROR("bta_av_rc_create found duplicated handle:%d", rc_handle);
- }
+ if (p_rcb->handle != BTA_AV_RC_HANDLE_NONE) {
+ APPL_TRACE_ERROR("bta_av_rc_create found duplicated handle:%d", rc_handle);
+ }
- p_rcb->handle = rc_handle;
- p_rcb->status = status;
- p_rcb->shdl = shdl;
- p_rcb->lidx = lidx;
- p_rcb->peer_features = 0;
- if (lidx == (BTA_AV_NUM_LINKS + 1))
- {
- /* this LIDX is reserved for the AVRCP ACP connection */
- p_cb->rc_acp_handle = p_rcb->handle;
- p_cb->rc_acp_idx = (i + 1);
- APPL_TRACE_DEBUG("rc_acp_handle:%d idx:%d", p_cb->rc_acp_handle, p_cb->rc_acp_idx);
- }
- APPL_TRACE_DEBUG("create %d, role: %d, shdl:%d, rc_handle:%d, lidx:%d, status:0x%x",
- i, role, shdl, p_rcb->handle, lidx, p_rcb->status);
+ p_rcb->handle = rc_handle;
+ p_rcb->status = status;
+ p_rcb->shdl = shdl;
+ p_rcb->lidx = lidx;
+ p_rcb->peer_features = 0;
+ if (lidx == (BTA_AV_NUM_LINKS + 1)) {
+ /* this LIDX is reserved for the AVRCP ACP connection */
+ p_cb->rc_acp_handle = p_rcb->handle;
+ p_cb->rc_acp_idx = (i + 1);
+ APPL_TRACE_DEBUG("rc_acp_handle:%d idx:%d", p_cb->rc_acp_handle,
+ p_cb->rc_acp_idx);
+ }
+ APPL_TRACE_DEBUG(
+ "create %d, role: %d, shdl:%d, rc_handle:%d, lidx:%d, status:0x%x", i,
+ role, shdl, p_rcb->handle, lidx, p_rcb->status);
- return rc_handle;
+ return rc_handle;
}
/*******************************************************************************
@@ -388,36 +369,30 @@
* Returns BTA_AV_RSP_ACCEPT or BTA_AV_RSP_NOT_IMPL.
*
******************************************************************************/
-static tBTA_AV_CODE bta_av_group_navi_supported(uint8_t len, uint8_t *p_data, bool is_inquiry)
-{
- tBTA_AV_CODE ret=BTA_AV_RSP_NOT_IMPL;
- uint8_t *p_ptr = p_data;
- uint16_t u16;
- uint32_t u32;
+static tBTA_AV_CODE bta_av_group_navi_supported(uint8_t len, uint8_t* p_data,
+ bool is_inquiry) {
+ tBTA_AV_CODE ret = BTA_AV_RSP_NOT_IMPL;
+ uint8_t* p_ptr = p_data;
+ uint16_t u16;
+ uint32_t u32;
- if (p_bta_av_cfg->avrc_group && len == BTA_GROUP_NAVI_MSG_OP_DATA_LEN)
- {
- BTA_AV_BE_STREAM_TO_CO_ID(u32, p_ptr);
- BE_STREAM_TO_UINT16(u16, p_ptr);
+ if (p_bta_av_cfg->avrc_group && len == BTA_GROUP_NAVI_MSG_OP_DATA_LEN) {
+ BTA_AV_BE_STREAM_TO_CO_ID(u32, p_ptr);
+ BE_STREAM_TO_UINT16(u16, p_ptr);
- if (u32 == AVRC_CO_METADATA)
- {
- if (is_inquiry)
- {
- if (u16 <= AVRC_PDU_PREV_GROUP)
- ret = BTA_AV_RSP_IMPL_STBL;
- }
- else
- {
- if (u16 <= AVRC_PDU_PREV_GROUP)
- ret = BTA_AV_RSP_ACCEPT;
- else
- ret = BTA_AV_RSP_REJ;
- }
- }
+ if (u32 == AVRC_CO_METADATA) {
+ if (is_inquiry) {
+ if (u16 <= AVRC_PDU_PREV_GROUP) ret = BTA_AV_RSP_IMPL_STBL;
+ } else {
+ if (u16 <= AVRC_PDU_PREV_GROUP)
+ ret = BTA_AV_RSP_ACCEPT;
+ else
+ ret = BTA_AV_RSP_REJ;
+ }
}
+ }
- return ret;
+ return ret;
}
/*******************************************************************************
@@ -429,36 +404,26 @@
* Returns BTA_AV_RSP_ACCEPT of supported, BTA_AV_RSP_NOT_IMPL if not.
*
******************************************************************************/
-static tBTA_AV_CODE bta_av_op_supported(tBTA_AV_RC rc_id, bool is_inquiry)
-{
- tBTA_AV_CODE ret_code = BTA_AV_RSP_NOT_IMPL;
+static tBTA_AV_CODE bta_av_op_supported(tBTA_AV_RC rc_id, bool is_inquiry) {
+ tBTA_AV_CODE ret_code = BTA_AV_RSP_NOT_IMPL;
- if (p_bta_av_rc_id)
- {
- if (is_inquiry)
- {
- if (p_bta_av_rc_id[rc_id >> 4] & (1 << (rc_id & 0x0F)))
- {
- ret_code = BTA_AV_RSP_IMPL_STBL;
- }
+ if (p_bta_av_rc_id) {
+ if (is_inquiry) {
+ if (p_bta_av_rc_id[rc_id >> 4] & (1 << (rc_id & 0x0F))) {
+ ret_code = BTA_AV_RSP_IMPL_STBL;
+ }
+ } else {
+ if (p_bta_av_rc_id[rc_id >> 4] & (1 << (rc_id & 0x0F))) {
+ ret_code = BTA_AV_RSP_ACCEPT;
+ } else if ((p_bta_av_cfg->rc_pass_rsp == BTA_AV_RSP_INTERIM) &&
+ p_bta_av_rc_id_ac) {
+ if (p_bta_av_rc_id_ac[rc_id >> 4] & (1 << (rc_id & 0x0F))) {
+ ret_code = BTA_AV_RSP_INTERIM;
}
- else
- {
- if (p_bta_av_rc_id[rc_id >> 4] & (1 << (rc_id & 0x0F)))
- {
- ret_code = BTA_AV_RSP_ACCEPT;
- }
- else if ((p_bta_av_cfg->rc_pass_rsp == BTA_AV_RSP_INTERIM) && p_bta_av_rc_id_ac)
- {
- if (p_bta_av_rc_id_ac[rc_id >> 4] & (1 << (rc_id & 0x0F)))
- {
- ret_code = BTA_AV_RSP_INTERIM;
- }
- }
- }
-
+ }
}
- return ret_code;
+ }
+ return ret_code;
}
/*******************************************************************************
@@ -470,28 +435,24 @@
* Returns NULL, if not found.
*
******************************************************************************/
-tBTA_AV_LCB * bta_av_find_lcb(BD_ADDR addr, uint8_t op)
-{
- tBTA_AV_CB *p_cb = &bta_av_cb;
- int xx;
- uint8_t mask;
- tBTA_AV_LCB *p_lcb = NULL;
+tBTA_AV_LCB* bta_av_find_lcb(BD_ADDR addr, uint8_t op) {
+ tBTA_AV_CB* p_cb = &bta_av_cb;
+ int xx;
+ uint8_t mask;
+ tBTA_AV_LCB* p_lcb = NULL;
- for(xx=0; xx<BTA_AV_NUM_LINKS; xx++)
- {
- mask = 1 << xx; /* the used mask for this lcb */
- if ((mask & p_cb->conn_lcb) && 0 ==( bdcmp(p_cb->lcb[xx].addr, addr)))
- {
- p_lcb = &p_cb->lcb[xx];
- if (op == BTA_AV_LCB_FREE)
- {
- p_cb->conn_lcb &= ~mask; /* clear the connect mask */
- APPL_TRACE_DEBUG("conn_lcb: 0x%x", p_cb->conn_lcb);
- }
- break;
- }
+ for (xx = 0; xx < BTA_AV_NUM_LINKS; xx++) {
+ mask = 1 << xx; /* the used mask for this lcb */
+ if ((mask & p_cb->conn_lcb) && 0 == (bdcmp(p_cb->lcb[xx].addr, addr))) {
+ p_lcb = &p_cb->lcb[xx];
+ if (op == BTA_AV_LCB_FREE) {
+ p_cb->conn_lcb &= ~mask; /* clear the connect mask */
+ APPL_TRACE_DEBUG("conn_lcb: 0x%x", p_cb->conn_lcb);
+ }
+ break;
}
- return p_lcb;
+ }
+ return p_lcb;
}
/*******************************************************************************
@@ -503,117 +464,111 @@
* Returns void
*
******************************************************************************/
-void bta_av_rc_opened(tBTA_AV_CB *p_cb, tBTA_AV_DATA *p_data)
-{
- tBTA_AV_RC_OPEN rc_open;
- tBTA_AV_SCB *p_scb;
- int i;
- uint8_t shdl = 0;
- tBTA_AV_LCB *p_lcb;
- tBTA_AV_RCB *p_rcb;
- uint8_t tmp;
- uint8_t disc = 0;
+void bta_av_rc_opened(tBTA_AV_CB* p_cb, tBTA_AV_DATA* p_data) {
+ tBTA_AV_RC_OPEN rc_open;
+ tBTA_AV_SCB* p_scb;
+ int i;
+ uint8_t shdl = 0;
+ tBTA_AV_LCB* p_lcb;
+ tBTA_AV_RCB* p_rcb;
+ uint8_t tmp;
+ uint8_t disc = 0;
- /* find the SCB & stop the timer */
- for(i=0; i<BTA_AV_NUM_STRS; i++)
- {
- p_scb = p_cb->p_scb[i];
- if (p_scb && bdcmp(p_scb->peer_addr, p_data->rc_conn_chg.peer_addr) == 0)
- {
- p_scb->rc_handle = p_data->rc_conn_chg.handle;
- APPL_TRACE_DEBUG("bta_av_rc_opened shdl:%d, srch %d", i + 1, p_scb->rc_handle);
- shdl = i+1;
- LOG_INFO(LOG_TAG, "%s allow incoming AVRCP connections:%d", __func__, p_scb->use_rc);
- alarm_cancel(p_scb->avrc_ct_timer);
- disc = p_scb->hndl;
- break;
- }
+ /* find the SCB & stop the timer */
+ for (i = 0; i < BTA_AV_NUM_STRS; i++) {
+ p_scb = p_cb->p_scb[i];
+ if (p_scb && bdcmp(p_scb->peer_addr, p_data->rc_conn_chg.peer_addr) == 0) {
+ p_scb->rc_handle = p_data->rc_conn_chg.handle;
+ APPL_TRACE_DEBUG("bta_av_rc_opened shdl:%d, srch %d", i + 1,
+ p_scb->rc_handle);
+ shdl = i + 1;
+ LOG_INFO(LOG_TAG, "%s allow incoming AVRCP connections:%d", __func__,
+ p_scb->use_rc);
+ alarm_cancel(p_scb->avrc_ct_timer);
+ disc = p_scb->hndl;
+ break;
}
+ }
- i = p_data->rc_conn_chg.handle;
- if (p_cb->rcb[i].handle == BTA_AV_RC_HANDLE_NONE)
- {
- APPL_TRACE_ERROR("not a valid handle:%d any more", i);
- return;
+ i = p_data->rc_conn_chg.handle;
+ if (p_cb->rcb[i].handle == BTA_AV_RC_HANDLE_NONE) {
+ APPL_TRACE_ERROR("not a valid handle:%d any more", i);
+ return;
+ }
+
+ APPL_TRACE_DEBUG("%s local features %d peer features %d", __func__,
+ p_cb->features, p_cb->rcb[i].peer_features);
+
+ /* listen to browsing channel when the connection is open,
+ * if peer initiated AVRCP connection and local device supports browsing
+ * channel */
+ AVRC_OpenBrowse(p_data->rc_conn_chg.handle, AVCT_ACP);
+
+ if (p_cb->rcb[i].lidx == (BTA_AV_NUM_LINKS + 1) && shdl != 0) {
+ /* rc is opened on the RC only ACP channel, but is for a specific
+ * SCB -> need to switch RCBs */
+ p_rcb = bta_av_get_rcb_by_shdl(shdl);
+ if (p_rcb) {
+ p_rcb->shdl = p_cb->rcb[i].shdl;
+ tmp = p_rcb->lidx;
+ p_rcb->lidx = p_cb->rcb[i].lidx;
+ p_cb->rcb[i].lidx = tmp;
+ p_cb->rc_acp_handle = p_rcb->handle;
+ p_cb->rc_acp_idx = (p_rcb - p_cb->rcb) + 1;
+ APPL_TRACE_DEBUG("switching RCB rc_acp_handle:%d idx:%d",
+ p_cb->rc_acp_handle, p_cb->rc_acp_idx);
}
+ }
- APPL_TRACE_DEBUG("%s local features %d peer features %d",
- __func__, p_cb->features, p_cb->rcb[i].peer_features);
+ p_cb->rcb[i].shdl = shdl;
+ rc_open.rc_handle = i;
+ APPL_TRACE_ERROR("bta_av_rc_opened rcb[%d] shdl:%d lidx:%d/%d", i, shdl,
+ p_cb->rcb[i].lidx, p_cb->lcb[BTA_AV_NUM_LINKS].lidx);
+ p_cb->rcb[i].status |= BTA_AV_RC_CONN_MASK;
- /* listen to browsing channel when the connection is open,
- * if peer initiated AVRCP connection and local device supports browsing channel */
- AVRC_OpenBrowse (p_data->rc_conn_chg.handle, AVCT_ACP);
+ if (!shdl && 0 == p_cb->lcb[BTA_AV_NUM_LINKS].lidx) {
+ /* no associated SCB -> connected to an RC only device
+ * update the index to the extra LCB */
+ p_lcb = &p_cb->lcb[BTA_AV_NUM_LINKS];
+ bdcpy(p_lcb->addr, p_data->rc_conn_chg.peer_addr);
+ APPL_TRACE_DEBUG("rc_only bd_addr:%02x-%02x-%02x-%02x-%02x-%02x",
+ p_lcb->addr[0], p_lcb->addr[1], p_lcb->addr[2],
+ p_lcb->addr[3], p_lcb->addr[4], p_lcb->addr[5]);
+ p_lcb->lidx = BTA_AV_NUM_LINKS + 1;
+ p_cb->rcb[i].lidx = p_lcb->lidx;
+ p_lcb->conn_msk = 1;
+ APPL_TRACE_ERROR("rcb[%d].lidx=%d, lcb.conn_msk=x%x", i, p_cb->rcb[i].lidx,
+ p_lcb->conn_msk);
+ disc = p_data->rc_conn_chg.handle | BTA_AV_CHNL_MSK;
+ }
- if (p_cb->rcb[i].lidx == (BTA_AV_NUM_LINKS + 1) && shdl != 0)
- {
- /* rc is opened on the RC only ACP channel, but is for a specific
- * SCB -> need to switch RCBs */
- p_rcb = bta_av_get_rcb_by_shdl(shdl);
- if (p_rcb)
- {
- p_rcb->shdl = p_cb->rcb[i].shdl;
- tmp = p_rcb->lidx;
- p_rcb->lidx = p_cb->rcb[i].lidx;
- p_cb->rcb[i].lidx = tmp;
- p_cb->rc_acp_handle = p_rcb->handle;
- p_cb->rc_acp_idx = (p_rcb - p_cb->rcb) + 1;
- APPL_TRACE_DEBUG("switching RCB rc_acp_handle:%d idx:%d",
- p_cb->rc_acp_handle, p_cb->rc_acp_idx);
- }
- }
+ bdcpy(rc_open.peer_addr, p_data->rc_conn_chg.peer_addr);
+ rc_open.peer_features = p_cb->rcb[i].peer_features;
+ rc_open.status = BTA_AV_SUCCESS;
+ APPL_TRACE_DEBUG("%s local features:x%x peer_features:x%x", __func__,
+ p_cb->features, rc_open.peer_features);
+ if (rc_open.peer_features == 0) {
+ /* we have not done SDP on peer RC capabilities.
+ * peer must have initiated the RC connection */
+ if (p_cb->features & BTA_AV_FEAT_RCCT)
+ rc_open.peer_features |= BTA_AV_FEAT_RCTG;
+ if (p_cb->features & BTA_AV_FEAT_RCTG)
+ rc_open.peer_features |= BTA_AV_FEAT_RCCT;
- p_cb->rcb[i].shdl = shdl;
- rc_open.rc_handle = i;
- APPL_TRACE_ERROR("bta_av_rc_opened rcb[%d] shdl:%d lidx:%d/%d",
- i, shdl, p_cb->rcb[i].lidx, p_cb->lcb[BTA_AV_NUM_LINKS].lidx);
- p_cb->rcb[i].status |= BTA_AV_RC_CONN_MASK;
+ bta_av_rc_disc(disc);
+ }
+ (*p_cb->p_cback)(BTA_AV_RC_OPEN_EVT, (tBTA_AV*)&rc_open);
- if (!shdl && 0 == p_cb->lcb[BTA_AV_NUM_LINKS].lidx)
- {
- /* no associated SCB -> connected to an RC only device
- * update the index to the extra LCB */
- p_lcb = &p_cb->lcb[BTA_AV_NUM_LINKS];
- bdcpy(p_lcb->addr, p_data->rc_conn_chg.peer_addr);
- APPL_TRACE_DEBUG("rc_only bd_addr:%02x-%02x-%02x-%02x-%02x-%02x",
- p_lcb->addr[0], p_lcb->addr[1],
- p_lcb->addr[2], p_lcb->addr[3],
- p_lcb->addr[4], p_lcb->addr[5]);
- p_lcb->lidx = BTA_AV_NUM_LINKS + 1;
- p_cb->rcb[i].lidx = p_lcb->lidx;
- p_lcb->conn_msk = 1;
- APPL_TRACE_ERROR("rcb[%d].lidx=%d, lcb.conn_msk=x%x",
- i, p_cb->rcb[i].lidx, p_lcb->conn_msk);
- disc = p_data->rc_conn_chg.handle|BTA_AV_CHNL_MSK;
- }
-
- bdcpy(rc_open.peer_addr, p_data->rc_conn_chg.peer_addr);
- rc_open.peer_features = p_cb->rcb[i].peer_features;
- rc_open.status = BTA_AV_SUCCESS;
- APPL_TRACE_DEBUG("%s local features:x%x peer_features:x%x", __func__, p_cb->features,
- rc_open.peer_features);
- if (rc_open.peer_features == 0)
- {
- /* we have not done SDP on peer RC capabilities.
- * peer must have initiated the RC connection */
- if (p_cb->features & BTA_AV_FEAT_RCCT)
- rc_open.peer_features |= BTA_AV_FEAT_RCTG;
- if (p_cb->features & BTA_AV_FEAT_RCTG)
- rc_open.peer_features |= BTA_AV_FEAT_RCCT;
-
- bta_av_rc_disc(disc);
- }
- (*p_cb->p_cback)(BTA_AV_RC_OPEN_EVT, (tBTA_AV *) &rc_open);
-
- /* if local initiated AVRCP connection and both peer and locals device support
- * browsing channel, open the browsing channel now
- * TODO (sanketa): Some TG would not broadcast browse feature hence check inter-op. */
- if ((p_cb->features & BTA_AV_FEAT_BROWSE) &&
- (rc_open.peer_features & BTA_AV_FEAT_BROWSE) &&
- ((p_cb->rcb[i].status & BTA_AV_RC_ROLE_MASK) == BTA_AV_RC_ROLE_INT))
- {
- APPL_TRACE_DEBUG("%s opening AVRC Browse channel", __func__);
- AVRC_OpenBrowse (p_data->rc_conn_chg.handle, AVCT_INT);
- }
+ /* if local initiated AVRCP connection and both peer and locals device support
+ * browsing channel, open the browsing channel now
+ * TODO (sanketa): Some TG would not broadcast browse feature hence check
+ * inter-op. */
+ if ((p_cb->features & BTA_AV_FEAT_BROWSE) &&
+ (rc_open.peer_features & BTA_AV_FEAT_BROWSE) &&
+ ((p_cb->rcb[i].status & BTA_AV_RC_ROLE_MASK) == BTA_AV_RC_ROLE_INT)) {
+ APPL_TRACE_DEBUG("%s opening AVRC Browse channel", __func__);
+ AVRC_OpenBrowse(p_data->rc_conn_chg.handle, AVCT_INT);
+ }
}
/*******************************************************************************
@@ -625,21 +580,17 @@
* Returns void
*
******************************************************************************/
-void bta_av_rc_remote_cmd(tBTA_AV_CB *p_cb, tBTA_AV_DATA *p_data)
-{
- tBTA_AV_RCB *p_rcb;
- if (p_cb->features & BTA_AV_FEAT_RCCT)
- {
- if (p_data->hdr.layer_specific < BTA_AV_NUM_RCB)
- {
- p_rcb = &p_cb->rcb[p_data->hdr.layer_specific];
- if (p_rcb->status & BTA_AV_RC_CONN_MASK)
- {
- AVRC_PassCmd(p_rcb->handle, p_data->api_remote_cmd.label,
+void bta_av_rc_remote_cmd(tBTA_AV_CB* p_cb, tBTA_AV_DATA* p_data) {
+ tBTA_AV_RCB* p_rcb;
+ if (p_cb->features & BTA_AV_FEAT_RCCT) {
+ if (p_data->hdr.layer_specific < BTA_AV_NUM_RCB) {
+ p_rcb = &p_cb->rcb[p_data->hdr.layer_specific];
+ if (p_rcb->status & BTA_AV_RC_CONN_MASK) {
+ AVRC_PassCmd(p_rcb->handle, p_data->api_remote_cmd.label,
&p_data->api_remote_cmd.msg);
- }
- }
+ }
}
+ }
}
/*******************************************************************************
@@ -651,18 +602,16 @@
* Returns void
*
******************************************************************************/
-void bta_av_rc_vendor_cmd(tBTA_AV_CB *p_cb, tBTA_AV_DATA *p_data)
-{
- tBTA_AV_RCB *p_rcb;
- if ( (p_cb->features & (BTA_AV_FEAT_RCCT | BTA_AV_FEAT_VENDOR)) ==
- (BTA_AV_FEAT_RCCT | BTA_AV_FEAT_VENDOR))
- {
- if (p_data->hdr.layer_specific < BTA_AV_NUM_RCB)
- {
- p_rcb = &p_cb->rcb[p_data->hdr.layer_specific];
- AVRC_VendorCmd(p_rcb->handle, p_data->api_vendor.label, &p_data->api_vendor.msg);
- }
+void bta_av_rc_vendor_cmd(tBTA_AV_CB* p_cb, tBTA_AV_DATA* p_data) {
+ tBTA_AV_RCB* p_rcb;
+ if ((p_cb->features & (BTA_AV_FEAT_RCCT | BTA_AV_FEAT_VENDOR)) ==
+ (BTA_AV_FEAT_RCCT | BTA_AV_FEAT_VENDOR)) {
+ if (p_data->hdr.layer_specific < BTA_AV_NUM_RCB) {
+ p_rcb = &p_cb->rcb[p_data->hdr.layer_specific];
+ AVRC_VendorCmd(p_rcb->handle, p_data->api_vendor.label,
+ &p_data->api_vendor.msg);
}
+ }
}
/*******************************************************************************
@@ -674,18 +623,16 @@
* Returns void
*
******************************************************************************/
-void bta_av_rc_vendor_rsp(tBTA_AV_CB *p_cb, tBTA_AV_DATA *p_data)
-{
- tBTA_AV_RCB *p_rcb;
- if ( (p_cb->features & (BTA_AV_FEAT_RCTG | BTA_AV_FEAT_VENDOR)) ==
- (BTA_AV_FEAT_RCTG | BTA_AV_FEAT_VENDOR))
- {
- if (p_data->hdr.layer_specific < BTA_AV_NUM_RCB)
- {
- p_rcb = &p_cb->rcb[p_data->hdr.layer_specific];
- AVRC_VendorRsp(p_rcb->handle, p_data->api_vendor.label, &p_data->api_vendor.msg);
- }
+void bta_av_rc_vendor_rsp(tBTA_AV_CB* p_cb, tBTA_AV_DATA* p_data) {
+ tBTA_AV_RCB* p_rcb;
+ if ((p_cb->features & (BTA_AV_FEAT_RCTG | BTA_AV_FEAT_VENDOR)) ==
+ (BTA_AV_FEAT_RCTG | BTA_AV_FEAT_VENDOR)) {
+ if (p_data->hdr.layer_specific < BTA_AV_NUM_RCB) {
+ p_rcb = &p_cb->rcb[p_data->hdr.layer_specific];
+ AVRC_VendorRsp(p_rcb->handle, p_data->api_vendor.label,
+ &p_data->api_vendor.msg);
}
+ }
}
/*******************************************************************************
@@ -697,28 +644,24 @@
* Returns void
*
******************************************************************************/
-void bta_av_rc_meta_rsp(tBTA_AV_CB *p_cb, tBTA_AV_DATA *p_data)
-{
- tBTA_AV_RCB *p_rcb;
- bool do_free = true;
+void bta_av_rc_meta_rsp(tBTA_AV_CB* p_cb, tBTA_AV_DATA* p_data) {
+ tBTA_AV_RCB* p_rcb;
+ bool do_free = true;
- if ((p_cb->features & BTA_AV_FEAT_METADATA) && (p_data->hdr.layer_specific < BTA_AV_NUM_RCB))
- {
- if ((p_data->api_meta_rsp.is_rsp && (p_cb->features & BTA_AV_FEAT_RCTG)) ||
- (!p_data->api_meta_rsp.is_rsp && (p_cb->features & BTA_AV_FEAT_RCCT)) )
- {
- p_rcb = &p_cb->rcb[p_data->hdr.layer_specific];
- if (p_rcb->handle != BTA_AV_RC_HANDLE_NONE) {
- AVRC_MsgReq(p_rcb->handle, p_data->api_meta_rsp.label,
- p_data->api_meta_rsp.rsp_code,
- p_data->api_meta_rsp.p_pkt);
- do_free = false;
- }
- }
+ if ((p_cb->features & BTA_AV_FEAT_METADATA) &&
+ (p_data->hdr.layer_specific < BTA_AV_NUM_RCB)) {
+ if ((p_data->api_meta_rsp.is_rsp && (p_cb->features & BTA_AV_FEAT_RCTG)) ||
+ (!p_data->api_meta_rsp.is_rsp && (p_cb->features & BTA_AV_FEAT_RCCT))) {
+ p_rcb = &p_cb->rcb[p_data->hdr.layer_specific];
+ if (p_rcb->handle != BTA_AV_RC_HANDLE_NONE) {
+ AVRC_MsgReq(p_rcb->handle, p_data->api_meta_rsp.label,
+ p_data->api_meta_rsp.rsp_code, p_data->api_meta_rsp.p_pkt);
+ do_free = false;
+ }
}
+ }
- if (do_free)
- osi_free_and_reset((void **)&p_data->api_meta_rsp.p_pkt);
+ if (do_free) osi_free_and_reset((void**)&p_data->api_meta_rsp.p_pkt);
}
/*******************************************************************************
@@ -730,9 +673,8 @@
* Returns void
*
******************************************************************************/
-void bta_av_rc_free_rsp (UNUSED_ATTR tBTA_AV_CB *p_cb, tBTA_AV_DATA *p_data)
-{
- osi_free_and_reset((void **)&p_data->api_meta_rsp.p_pkt);
+void bta_av_rc_free_rsp(UNUSED_ATTR tBTA_AV_CB* p_cb, tBTA_AV_DATA* p_data) {
+ osi_free_and_reset((void**)&p_data->api_meta_rsp.p_pkt);
}
/*******************************************************************************
@@ -744,12 +686,11 @@
* Returns void
*
******************************************************************************/
-void bta_av_rc_free_browse_msg (UNUSED_ATTR tBTA_AV_CB *p_cb, tBTA_AV_DATA *p_data)
-{
- if (p_data->rc_msg.opcode == AVRC_OP_BROWSE)
- {
- osi_free_and_reset((void **)&p_data->rc_msg.msg.browse.p_browse_pkt);
- }
+void bta_av_rc_free_browse_msg(UNUSED_ATTR tBTA_AV_CB* p_cb,
+ tBTA_AV_DATA* p_data) {
+ if (p_data->rc_msg.opcode == AVRC_OP_BROWSE) {
+ osi_free_and_reset((void**)&p_data->rc_msg.msg.browse.p_browse_pkt);
+ }
}
/*******************************************************************************
@@ -761,36 +702,29 @@
* Returns BTA_AV_STS_NO_RSP, if no error
*
******************************************************************************/
-static tAVRC_STS bta_av_chk_notif_evt_id(tAVRC_MSG_VENDOR *p_vendor)
-{
- tAVRC_STS status = BTA_AV_STS_NO_RSP;
- uint8_t xx;
- uint16_t u16;
- uint8_t *p = p_vendor->p_vendor_data + 2;
+static tAVRC_STS bta_av_chk_notif_evt_id(tAVRC_MSG_VENDOR* p_vendor) {
+ tAVRC_STS status = BTA_AV_STS_NO_RSP;
+ uint8_t xx;
+ uint16_t u16;
+ uint8_t* p = p_vendor->p_vendor_data + 2;
- BE_STREAM_TO_UINT16 (u16, p);
- /* double check the fixed length */
- if ((u16 != 5) || (p_vendor->vendor_len != 9))
- {
- status = AVRC_STS_INTERNAL_ERR;
+ BE_STREAM_TO_UINT16(u16, p);
+ /* double check the fixed length */
+ if ((u16 != 5) || (p_vendor->vendor_len != 9)) {
+ status = AVRC_STS_INTERNAL_ERR;
+ } else {
+ /* make sure the player_id is valid */
+ for (xx = 0; xx < p_bta_av_cfg->num_evt_ids; xx++) {
+ if (*p == p_bta_av_cfg->p_meta_evt_ids[xx]) {
+ break;
+ }
}
- else
- {
- /* make sure the player_id is valid */
- for (xx=0; xx<p_bta_av_cfg->num_evt_ids; xx++)
- {
- if (*p == p_bta_av_cfg->p_meta_evt_ids[xx])
- {
- break;
- }
- }
- if (xx == p_bta_av_cfg->num_evt_ids)
- {
- status = AVRC_STS_BAD_PARAM;
- }
+ if (xx == p_bta_av_cfg->num_evt_ids) {
+ status = AVRC_STS_BAD_PARAM;
}
+ }
- return status;
+ return status;
}
/*******************************************************************************
@@ -802,102 +736,87 @@
* Returns true to respond immediately
*
******************************************************************************/
-tBTA_AV_EVT bta_av_proc_meta_cmd(tAVRC_RESPONSE *p_rc_rsp, tBTA_AV_RC_MSG *p_msg, uint8_t *p_ctype)
-{
- tBTA_AV_EVT evt = BTA_AV_META_MSG_EVT;
- uint8_t u8, pdu, *p;
- uint16_t u16;
- tAVRC_MSG_VENDOR *p_vendor = &p_msg->msg.vendor;
+tBTA_AV_EVT bta_av_proc_meta_cmd(tAVRC_RESPONSE* p_rc_rsp,
+ tBTA_AV_RC_MSG* p_msg, uint8_t* p_ctype) {
+ tBTA_AV_EVT evt = BTA_AV_META_MSG_EVT;
+ uint8_t u8, pdu, *p;
+ uint16_t u16;
+ tAVRC_MSG_VENDOR* p_vendor = &p_msg->msg.vendor;
#if (AVRC_METADATA_INCLUDED == TRUE)
- pdu = *(p_vendor->p_vendor_data);
- p_rc_rsp->pdu = pdu;
- *p_ctype = AVRC_RSP_REJ;
+ pdu = *(p_vendor->p_vendor_data);
+ p_rc_rsp->pdu = pdu;
+ *p_ctype = AVRC_RSP_REJ;
- /* Check to ansure a valid minimum meta data length */
- if ((AVRC_MIN_META_CMD_LEN + p_vendor->vendor_len) > AVRC_META_CMD_BUF_SIZE)
- {
- /* reject it */
- p_rc_rsp->rsp.status = AVRC_STS_BAD_PARAM;
- APPL_TRACE_ERROR("%s Invalid meta-command length: %d", __func__, p_vendor->vendor_len);
- return 0;
- }
+ /* Check to ansure a valid minimum meta data length */
+ if ((AVRC_MIN_META_CMD_LEN + p_vendor->vendor_len) > AVRC_META_CMD_BUF_SIZE) {
+ /* reject it */
+ p_rc_rsp->rsp.status = AVRC_STS_BAD_PARAM;
+ APPL_TRACE_ERROR("%s Invalid meta-command length: %d", __func__,
+ p_vendor->vendor_len);
+ return 0;
+ }
- /* Metadata messages only use PANEL sub-unit type */
- if (p_vendor->hdr.subunit_type != AVRC_SUB_PANEL)
- {
- APPL_TRACE_DEBUG("SUBUNIT must be PANEL");
- /* reject it */
- evt=0;
- p_vendor->hdr.ctype = BTA_AV_RSP_NOT_IMPL;
- p_vendor->vendor_len = 0;
- p_rc_rsp->rsp.status = AVRC_STS_BAD_PARAM;
- }
- else if (!AVRC_IsValidAvcType(pdu, p_vendor->hdr.ctype) )
- {
- APPL_TRACE_DEBUG("Invalid pdu/ctype: 0x%x, %d", pdu, p_vendor->hdr.ctype);
- /* reject invalid message without reporting to app */
- evt = 0;
- p_rc_rsp->rsp.status = AVRC_STS_BAD_CMD;
- }
- else
- {
- switch (pdu)
- {
- case AVRC_PDU_GET_CAPABILITIES:
- /* process GetCapabilities command without reporting the event to app */
- evt = 0;
- u8 = *(p_vendor->p_vendor_data + 4);
- p = p_vendor->p_vendor_data + 2;
- p_rc_rsp->get_caps.capability_id = u8;
- BE_STREAM_TO_UINT16 (u16, p);
- if ((u16 != 1) || (p_vendor->vendor_len != 5))
- {
- p_rc_rsp->get_caps.status = AVRC_STS_INTERNAL_ERR;
- }
- else
- {
- p_rc_rsp->get_caps.status = AVRC_STS_NO_ERROR;
- if (u8 == AVRC_CAP_COMPANY_ID)
- {
- *p_ctype = AVRC_RSP_IMPL_STBL;
- p_rc_rsp->get_caps.count = p_bta_av_cfg->num_co_ids;
- memcpy(p_rc_rsp->get_caps.param.company_id, p_bta_av_cfg->p_meta_co_ids,
- (p_bta_av_cfg->num_co_ids << 2));
- }
- else if (u8 == AVRC_CAP_EVENTS_SUPPORTED)
- {
- *p_ctype = AVRC_RSP_IMPL_STBL;
- p_rc_rsp->get_caps.count = p_bta_av_cfg->num_evt_ids;
- memcpy(p_rc_rsp->get_caps.param.event_id, p_bta_av_cfg->p_meta_evt_ids,
- p_bta_av_cfg->num_evt_ids);
- }
- else
- {
- APPL_TRACE_DEBUG("Invalid capability ID: 0x%x", u8);
- /* reject - unknown capability ID */
- p_rc_rsp->get_caps.status = AVRC_STS_BAD_PARAM;
- }
- }
- break;
-
- case AVRC_PDU_REGISTER_NOTIFICATION:
- /* make sure the event_id is implemented */
- p_rc_rsp->rsp.status = bta_av_chk_notif_evt_id (p_vendor);
- if (p_rc_rsp->rsp.status != BTA_AV_STS_NO_RSP)
- evt = 0;
- break;
-
- }
- }
-#else
- APPL_TRACE_DEBUG("AVRCP 1.3 Metadata not supporteed. Reject command.");
+ /* Metadata messages only use PANEL sub-unit type */
+ if (p_vendor->hdr.subunit_type != AVRC_SUB_PANEL) {
+ APPL_TRACE_DEBUG("SUBUNIT must be PANEL");
+ /* reject it */
+ evt = 0;
+ p_vendor->hdr.ctype = BTA_AV_RSP_NOT_IMPL;
+ p_vendor->vendor_len = 0;
+ p_rc_rsp->rsp.status = AVRC_STS_BAD_PARAM;
+ } else if (!AVRC_IsValidAvcType(pdu, p_vendor->hdr.ctype)) {
+ APPL_TRACE_DEBUG("Invalid pdu/ctype: 0x%x, %d", pdu, p_vendor->hdr.ctype);
/* reject invalid message without reporting to app */
evt = 0;
p_rc_rsp->rsp.status = AVRC_STS_BAD_CMD;
+ } else {
+ switch (pdu) {
+ case AVRC_PDU_GET_CAPABILITIES:
+ /* process GetCapabilities command without reporting the event to app */
+ evt = 0;
+ u8 = *(p_vendor->p_vendor_data + 4);
+ p = p_vendor->p_vendor_data + 2;
+ p_rc_rsp->get_caps.capability_id = u8;
+ BE_STREAM_TO_UINT16(u16, p);
+ if ((u16 != 1) || (p_vendor->vendor_len != 5)) {
+ p_rc_rsp->get_caps.status = AVRC_STS_INTERNAL_ERR;
+ } else {
+ p_rc_rsp->get_caps.status = AVRC_STS_NO_ERROR;
+ if (u8 == AVRC_CAP_COMPANY_ID) {
+ *p_ctype = AVRC_RSP_IMPL_STBL;
+ p_rc_rsp->get_caps.count = p_bta_av_cfg->num_co_ids;
+ memcpy(p_rc_rsp->get_caps.param.company_id,
+ p_bta_av_cfg->p_meta_co_ids,
+ (p_bta_av_cfg->num_co_ids << 2));
+ } else if (u8 == AVRC_CAP_EVENTS_SUPPORTED) {
+ *p_ctype = AVRC_RSP_IMPL_STBL;
+ p_rc_rsp->get_caps.count = p_bta_av_cfg->num_evt_ids;
+ memcpy(p_rc_rsp->get_caps.param.event_id,
+ p_bta_av_cfg->p_meta_evt_ids, p_bta_av_cfg->num_evt_ids);
+ } else {
+ APPL_TRACE_DEBUG("Invalid capability ID: 0x%x", u8);
+ /* reject - unknown capability ID */
+ p_rc_rsp->get_caps.status = AVRC_STS_BAD_PARAM;
+ }
+ }
+ break;
+
+ case AVRC_PDU_REGISTER_NOTIFICATION:
+ /* make sure the event_id is implemented */
+ p_rc_rsp->rsp.status = bta_av_chk_notif_evt_id(p_vendor);
+ if (p_rc_rsp->rsp.status != BTA_AV_STS_NO_RSP) evt = 0;
+ break;
+ }
+ }
+#else
+ APPL_TRACE_DEBUG("AVRCP 1.3 Metadata not supporteed. Reject command.");
+ /* reject invalid message without reporting to app */
+ evt = 0;
+ p_rc_rsp->rsp.status = AVRC_STS_BAD_CMD;
#endif
- return evt;
+ return evt;
}
/*******************************************************************************
@@ -909,205 +828,182 @@
* Returns void
*
******************************************************************************/
-void bta_av_rc_msg(tBTA_AV_CB *p_cb, tBTA_AV_DATA *p_data)
-{
- tBTA_AV_EVT evt = 0;
- tBTA_AV av;
- BT_HDR *p_pkt = NULL;
- tAVRC_MSG_VENDOR *p_vendor = &p_data->rc_msg.msg.vendor;
- bool is_inquiry =
- ((p_data->rc_msg.msg.hdr.ctype == AVRC_CMD_SPEC_INQ) ||
- p_data->rc_msg.msg.hdr.ctype == AVRC_CMD_GEN_INQ);
+void bta_av_rc_msg(tBTA_AV_CB* p_cb, tBTA_AV_DATA* p_data) {
+ tBTA_AV_EVT evt = 0;
+ tBTA_AV av;
+ BT_HDR* p_pkt = NULL;
+ tAVRC_MSG_VENDOR* p_vendor = &p_data->rc_msg.msg.vendor;
+ bool is_inquiry = ((p_data->rc_msg.msg.hdr.ctype == AVRC_CMD_SPEC_INQ) ||
+ p_data->rc_msg.msg.hdr.ctype == AVRC_CMD_GEN_INQ);
#if (AVRC_METADATA_INCLUDED == TRUE)
- uint8_t ctype = 0;
- tAVRC_RESPONSE rc_rsp;
+ uint8_t ctype = 0;
+ tAVRC_RESPONSE rc_rsp;
- rc_rsp.rsp.status = BTA_AV_STS_NO_RSP;
+ rc_rsp.rsp.status = BTA_AV_STS_NO_RSP;
#endif
- if (NULL == p_data)
- {
- APPL_TRACE_ERROR("Message from peer with no data in %s", __func__);
- return;
- }
+ if (NULL == p_data) {
+ APPL_TRACE_ERROR("Message from peer with no data in %s", __func__);
+ return;
+ }
- APPL_TRACE_DEBUG("%s: opcode=%x, ctype=%x", __func__, p_data->rc_msg.opcode,
- p_data->rc_msg.msg.hdr.ctype);
+ APPL_TRACE_DEBUG("%s: opcode=%x, ctype=%x", __func__, p_data->rc_msg.opcode,
+ p_data->rc_msg.msg.hdr.ctype);
- if (p_data->rc_msg.opcode == AVRC_OP_PASS_THRU)
- {
- /* if this is a pass thru command */
- if ((p_data->rc_msg.msg.hdr.ctype == AVRC_CMD_CTRL) ||
- (p_data->rc_msg.msg.hdr.ctype == AVRC_CMD_SPEC_INQ) ||
- (p_data->rc_msg.msg.hdr.ctype == AVRC_CMD_GEN_INQ)
- )
- {
- /* check if operation is supported */
- char avrcp_ct_support[PROPERTY_VALUE_MAX];
- osi_property_get("bluetooth.pts.avrcp_ct.support", avrcp_ct_support, "false");
- if (p_data->rc_msg.msg.pass.op_id == AVRC_ID_VENDOR)
- {
- p_data->rc_msg.msg.hdr.ctype = BTA_AV_RSP_NOT_IMPL;
+ if (p_data->rc_msg.opcode == AVRC_OP_PASS_THRU) {
+ /* if this is a pass thru command */
+ if ((p_data->rc_msg.msg.hdr.ctype == AVRC_CMD_CTRL) ||
+ (p_data->rc_msg.msg.hdr.ctype == AVRC_CMD_SPEC_INQ) ||
+ (p_data->rc_msg.msg.hdr.ctype == AVRC_CMD_GEN_INQ)) {
+ /* check if operation is supported */
+ char avrcp_ct_support[PROPERTY_VALUE_MAX];
+ osi_property_get("bluetooth.pts.avrcp_ct.support", avrcp_ct_support,
+ "false");
+ if (p_data->rc_msg.msg.pass.op_id == AVRC_ID_VENDOR) {
+ p_data->rc_msg.msg.hdr.ctype = BTA_AV_RSP_NOT_IMPL;
#if (AVRC_METADATA_INCLUDED == TRUE)
- if (p_cb->features & BTA_AV_FEAT_METADATA)
- p_data->rc_msg.msg.hdr.ctype =
- bta_av_group_navi_supported(p_data->rc_msg.msg.pass.pass_len,
- p_data->rc_msg.msg.pass.p_pass_data, is_inquiry);
+ if (p_cb->features & BTA_AV_FEAT_METADATA)
+ p_data->rc_msg.msg.hdr.ctype = bta_av_group_navi_supported(
+ p_data->rc_msg.msg.pass.pass_len,
+ p_data->rc_msg.msg.pass.p_pass_data, is_inquiry);
#endif
- }
+ }
#if (AVRC_CTRL_INCLUDED == TRUE)
- else if (((p_data->rc_msg.msg.pass.op_id == AVRC_ID_VOL_UP)||
- (p_data->rc_msg.msg.pass.op_id == AVRC_ID_VOL_DOWN)) &&
- !strcmp(avrcp_ct_support, "true"))
- {
- p_data->rc_msg.msg.hdr.ctype = BTA_AV_RSP_ACCEPT;
- }
+ else if (((p_data->rc_msg.msg.pass.op_id == AVRC_ID_VOL_UP) ||
+ (p_data->rc_msg.msg.pass.op_id == AVRC_ID_VOL_DOWN)) &&
+ !strcmp(avrcp_ct_support, "true")) {
+ p_data->rc_msg.msg.hdr.ctype = BTA_AV_RSP_ACCEPT;
+ }
#endif
- else
- {
- p_data->rc_msg.msg.hdr.ctype =
- bta_av_op_supported(p_data->rc_msg.msg.pass.op_id, is_inquiry);
- }
+ else {
+ p_data->rc_msg.msg.hdr.ctype =
+ bta_av_op_supported(p_data->rc_msg.msg.pass.op_id, is_inquiry);
+ }
- APPL_TRACE_DEBUG("ctype %d",p_data->rc_msg.msg.hdr.ctype)
+ APPL_TRACE_DEBUG("ctype %d", p_data->rc_msg.msg.hdr.ctype)
- /* send response */
- if (p_data->rc_msg.msg.hdr.ctype != BTA_AV_RSP_INTERIM)
- AVRC_PassRsp(p_data->rc_msg.handle, p_data->rc_msg.label, &p_data->rc_msg.msg.pass);
+ /* send response */
+ if (p_data->rc_msg.msg.hdr.ctype != BTA_AV_RSP_INTERIM)
+ AVRC_PassRsp(p_data->rc_msg.handle, p_data->rc_msg.label,
+ &p_data->rc_msg.msg.pass);
- /* set up for callback if supported */
- if (p_data->rc_msg.msg.hdr.ctype == BTA_AV_RSP_ACCEPT || p_data->rc_msg.msg.hdr.ctype == BTA_AV_RSP_INTERIM)
- {
- evt = BTA_AV_REMOTE_CMD_EVT;
- av.remote_cmd.rc_id = p_data->rc_msg.msg.pass.op_id;
- av.remote_cmd.key_state = p_data->rc_msg.msg.pass.state;
- av.remote_cmd.p_data = p_data->rc_msg.msg.pass.p_pass_data;
- av.remote_cmd.len = p_data->rc_msg.msg.pass.pass_len;
- memcpy(&av.remote_cmd.hdr, &p_data->rc_msg.msg.hdr, sizeof (tAVRC_HDR));
- av.remote_cmd.label = p_data->rc_msg.label;
- }
- }
- /* else if this is a pass thru response */
- /* id response type is not impl, we have to release label */
- else if (p_data->rc_msg.msg.hdr.ctype >= AVRC_RSP_NOT_IMPL)
- {
- /* set up for callback */
- evt = BTA_AV_REMOTE_RSP_EVT;
- av.remote_rsp.rc_id = p_data->rc_msg.msg.pass.op_id;
- av.remote_rsp.key_state = p_data->rc_msg.msg.pass.state;
- av.remote_rsp.rsp_code = p_data->rc_msg.msg.hdr.ctype;
- av.remote_rsp.label = p_data->rc_msg.label;
-
- /* If this response is for vendor unique command */
- if ((p_data->rc_msg.msg.pass.op_id == AVRC_ID_VENDOR) &&
- (p_data->rc_msg.msg.pass.pass_len > 0))
- {
- av.remote_rsp.p_data =
- (uint8_t *)osi_malloc(p_data->rc_msg.msg.pass.pass_len);
- APPL_TRACE_DEBUG("Vendor Unique data len = %d",
- p_data->rc_msg.msg.pass.pass_len);
- memcpy(av.remote_rsp.p_data,p_data->rc_msg.msg.pass.p_pass_data,
- p_data->rc_msg.msg.pass.pass_len);
- }
- }
- /* must be a bad ctype -> reject*/
- else
- {
- p_data->rc_msg.msg.hdr.ctype = BTA_AV_RSP_REJ;
- AVRC_PassRsp(p_data->rc_msg.handle, p_data->rc_msg.label, &p_data->rc_msg.msg.pass);
- }
+ /* set up for callback if supported */
+ if (p_data->rc_msg.msg.hdr.ctype == BTA_AV_RSP_ACCEPT ||
+ p_data->rc_msg.msg.hdr.ctype == BTA_AV_RSP_INTERIM) {
+ evt = BTA_AV_REMOTE_CMD_EVT;
+ av.remote_cmd.rc_id = p_data->rc_msg.msg.pass.op_id;
+ av.remote_cmd.key_state = p_data->rc_msg.msg.pass.state;
+ av.remote_cmd.p_data = p_data->rc_msg.msg.pass.p_pass_data;
+ av.remote_cmd.len = p_data->rc_msg.msg.pass.pass_len;
+ memcpy(&av.remote_cmd.hdr, &p_data->rc_msg.msg.hdr, sizeof(tAVRC_HDR));
+ av.remote_cmd.label = p_data->rc_msg.label;
+ }
}
- /* else if this is a vendor specific command or response */
- else if (p_data->rc_msg.opcode == AVRC_OP_VENDOR)
- {
- /* set up for callback */
- av.vendor_cmd.code = p_data->rc_msg.msg.hdr.ctype;
- av.vendor_cmd.company_id = p_vendor->company_id;
- av.vendor_cmd.label = p_data->rc_msg.label;
- av.vendor_cmd.p_data = p_vendor->p_vendor_data;
- av.vendor_cmd.len = p_vendor->vendor_len;
+ /* else if this is a pass thru response */
+ /* id response type is not impl, we have to release label */
+ else if (p_data->rc_msg.msg.hdr.ctype >= AVRC_RSP_NOT_IMPL) {
+ /* set up for callback */
+ evt = BTA_AV_REMOTE_RSP_EVT;
+ av.remote_rsp.rc_id = p_data->rc_msg.msg.pass.op_id;
+ av.remote_rsp.key_state = p_data->rc_msg.msg.pass.state;
+ av.remote_rsp.rsp_code = p_data->rc_msg.msg.hdr.ctype;
+ av.remote_rsp.label = p_data->rc_msg.label;
- /* if configured to support vendor specific and it's a command */
- if ((p_cb->features & BTA_AV_FEAT_VENDOR) &&
- p_data->rc_msg.msg.hdr.ctype <= AVRC_CMD_GEN_INQ)
- {
-#if (AVRC_METADATA_INCLUDED == TRUE)
- if ((p_cb->features & BTA_AV_FEAT_METADATA) &&
- (p_vendor->company_id == AVRC_CO_METADATA))
- {
- av.meta_msg.p_msg = &p_data->rc_msg.msg;
- rc_rsp.rsp.status = BTA_AV_STS_NO_RSP;
- evt = bta_av_proc_meta_cmd (&rc_rsp, &p_data->rc_msg, &ctype);
- }
- else
-#endif
- evt = BTA_AV_VENDOR_CMD_EVT;
- }
- /* else if configured to support vendor specific and it's a response */
- else if ((p_cb->features & BTA_AV_FEAT_VENDOR) &&
- p_data->rc_msg.msg.hdr.ctype >= AVRC_RSP_NOT_IMPL)
- {
-#if (AVRC_METADATA_INCLUDED == TRUE)
- if ((p_cb->features & BTA_AV_FEAT_METADATA) &&
- (p_vendor->company_id == AVRC_CO_METADATA))
- {
- av.meta_msg.p_msg = &p_data->rc_msg.msg;
- evt = BTA_AV_META_MSG_EVT;
- }
- else
-#endif
- evt = BTA_AV_VENDOR_RSP_EVT;
-
- }
- /* else if not configured to support vendor specific and it's a command */
- else if (!(p_cb->features & BTA_AV_FEAT_VENDOR) &&
- p_data->rc_msg.msg.hdr.ctype <= AVRC_CMD_GEN_INQ)
- {
- if (p_data->rc_msg.msg.vendor.p_vendor_data[0] == AVRC_PDU_INVALID)
- {
- /* reject it */
- p_data->rc_msg.msg.hdr.ctype = BTA_AV_RSP_REJ;
- p_data->rc_msg.msg.vendor.p_vendor_data[4] = AVRC_STS_BAD_CMD;
- }
- else
- p_data->rc_msg.msg.hdr.ctype = BTA_AV_RSP_NOT_IMPL;
- AVRC_VendorRsp(p_data->rc_msg.handle, p_data->rc_msg.label, &p_data->rc_msg.msg.vendor);
- }
+ /* If this response is for vendor unique command */
+ if ((p_data->rc_msg.msg.pass.op_id == AVRC_ID_VENDOR) &&
+ (p_data->rc_msg.msg.pass.pass_len > 0)) {
+ av.remote_rsp.p_data =
+ (uint8_t*)osi_malloc(p_data->rc_msg.msg.pass.pass_len);
+ APPL_TRACE_DEBUG("Vendor Unique data len = %d",
+ p_data->rc_msg.msg.pass.pass_len);
+ memcpy(av.remote_rsp.p_data, p_data->rc_msg.msg.pass.p_pass_data,
+ p_data->rc_msg.msg.pass.pass_len);
+ }
}
- else if (p_data->rc_msg.opcode == AVRC_OP_BROWSE)
- {
- /* set up for callback */
- av.meta_msg.rc_handle = p_data->rc_msg.handle;
- av.meta_msg.company_id = p_vendor->company_id;
- av.meta_msg.code = p_data->rc_msg.msg.hdr.ctype;
- av.meta_msg.label = p_data->rc_msg.label;
+ /* must be a bad ctype -> reject*/
+ else {
+ p_data->rc_msg.msg.hdr.ctype = BTA_AV_RSP_REJ;
+ AVRC_PassRsp(p_data->rc_msg.handle, p_data->rc_msg.label,
+ &p_data->rc_msg.msg.pass);
+ }
+ }
+ /* else if this is a vendor specific command or response */
+ else if (p_data->rc_msg.opcode == AVRC_OP_VENDOR) {
+ /* set up for callback */
+ av.vendor_cmd.code = p_data->rc_msg.msg.hdr.ctype;
+ av.vendor_cmd.company_id = p_vendor->company_id;
+ av.vendor_cmd.label = p_data->rc_msg.label;
+ av.vendor_cmd.p_data = p_vendor->p_vendor_data;
+ av.vendor_cmd.len = p_vendor->vendor_len;
+
+ /* if configured to support vendor specific and it's a command */
+ if ((p_cb->features & BTA_AV_FEAT_VENDOR) &&
+ p_data->rc_msg.msg.hdr.ctype <= AVRC_CMD_GEN_INQ) {
+#if (AVRC_METADATA_INCLUDED == TRUE)
+ if ((p_cb->features & BTA_AV_FEAT_METADATA) &&
+ (p_vendor->company_id == AVRC_CO_METADATA)) {
av.meta_msg.p_msg = &p_data->rc_msg.msg;
- av.meta_msg.p_data = p_data->rc_msg.msg.browse.p_browse_data;
- av.meta_msg.len = p_data->rc_msg.msg.browse.browse_len;
- evt = BTA_AV_META_MSG_EVT;
+ rc_rsp.rsp.status = BTA_AV_STS_NO_RSP;
+ evt = bta_av_proc_meta_cmd(&rc_rsp, &p_data->rc_msg, &ctype);
+ } else
+#endif
+ evt = BTA_AV_VENDOR_CMD_EVT;
}
+ /* else if configured to support vendor specific and it's a response */
+ else if ((p_cb->features & BTA_AV_FEAT_VENDOR) &&
+ p_data->rc_msg.msg.hdr.ctype >= AVRC_RSP_NOT_IMPL) {
+#if (AVRC_METADATA_INCLUDED == TRUE)
+ if ((p_cb->features & BTA_AV_FEAT_METADATA) &&
+ (p_vendor->company_id == AVRC_CO_METADATA)) {
+ av.meta_msg.p_msg = &p_data->rc_msg.msg;
+ evt = BTA_AV_META_MSG_EVT;
+ } else
+#endif
+ evt = BTA_AV_VENDOR_RSP_EVT;
+
+ }
+ /* else if not configured to support vendor specific and it's a command */
+ else if (!(p_cb->features & BTA_AV_FEAT_VENDOR) &&
+ p_data->rc_msg.msg.hdr.ctype <= AVRC_CMD_GEN_INQ) {
+ if (p_data->rc_msg.msg.vendor.p_vendor_data[0] == AVRC_PDU_INVALID) {
+ /* reject it */
+ p_data->rc_msg.msg.hdr.ctype = BTA_AV_RSP_REJ;
+ p_data->rc_msg.msg.vendor.p_vendor_data[4] = AVRC_STS_BAD_CMD;
+ } else
+ p_data->rc_msg.msg.hdr.ctype = BTA_AV_RSP_NOT_IMPL;
+ AVRC_VendorRsp(p_data->rc_msg.handle, p_data->rc_msg.label,
+ &p_data->rc_msg.msg.vendor);
+ }
+ } else if (p_data->rc_msg.opcode == AVRC_OP_BROWSE) {
+ /* set up for callback */
+ av.meta_msg.rc_handle = p_data->rc_msg.handle;
+ av.meta_msg.company_id = p_vendor->company_id;
+ av.meta_msg.code = p_data->rc_msg.msg.hdr.ctype;
+ av.meta_msg.label = p_data->rc_msg.label;
+ av.meta_msg.p_msg = &p_data->rc_msg.msg;
+ av.meta_msg.p_data = p_data->rc_msg.msg.browse.p_browse_data;
+ av.meta_msg.len = p_data->rc_msg.msg.browse.browse_len;
+ evt = BTA_AV_META_MSG_EVT;
+ }
#if (AVRC_METADATA_INCLUDED == TRUE)
- if (evt == 0 && rc_rsp.rsp.status != BTA_AV_STS_NO_RSP)
- {
- if (!p_pkt)
- {
- rc_rsp.rsp.opcode = p_data->rc_msg.opcode;
- AVRC_BldResponse (0, &rc_rsp, &p_pkt);
- }
- if (p_pkt)
- AVRC_MsgReq (p_data->rc_msg.handle, p_data->rc_msg.label, ctype, p_pkt);
+ if (evt == 0 && rc_rsp.rsp.status != BTA_AV_STS_NO_RSP) {
+ if (!p_pkt) {
+ rc_rsp.rsp.opcode = p_data->rc_msg.opcode;
+ AVRC_BldResponse(0, &rc_rsp, &p_pkt);
}
+ if (p_pkt)
+ AVRC_MsgReq(p_data->rc_msg.handle, p_data->rc_msg.label, ctype, p_pkt);
+ }
#endif
- /* call callback */
- if (evt != 0)
- {
- av.remote_cmd.rc_handle = p_data->rc_msg.handle;
- (*p_cb->p_cback)(evt, &av);
- /* If browsing message, then free the browse message buffer */
- bta_av_rc_free_browse_msg(p_cb, p_data);
- }
+ /* call callback */
+ if (evt != 0) {
+ av.remote_cmd.rc_handle = p_data->rc_msg.handle;
+ (*p_cb->p_cback)(evt, &av);
+ /* If browsing message, then free the browse message buffer */
+ bta_av_rc_free_browse_msg(p_cb, p_data);
+ }
}
/*******************************************************************************
@@ -1119,35 +1015,30 @@
* Returns void
*
******************************************************************************/
-void bta_av_rc_close (tBTA_AV_CB *p_cb, tBTA_AV_DATA *p_data)
-{
- uint16_t handle = p_data->hdr.layer_specific;
- tBTA_AV_SCB *p_scb;
- tBTA_AV_RCB *p_rcb;
+void bta_av_rc_close(tBTA_AV_CB* p_cb, tBTA_AV_DATA* p_data) {
+ uint16_t handle = p_data->hdr.layer_specific;
+ tBTA_AV_SCB* p_scb;
+ tBTA_AV_RCB* p_rcb;
- if (handle < BTA_AV_NUM_RCB)
- {
- p_rcb = &p_cb->rcb[handle];
+ if (handle < BTA_AV_NUM_RCB) {
+ p_rcb = &p_cb->rcb[handle];
- APPL_TRACE_DEBUG("%s handle: %d, status=0x%x", __func__,
- p_rcb->handle, p_rcb->status);
- if (p_rcb->handle != BTA_AV_RC_HANDLE_NONE)
- {
- if (p_rcb->shdl)
- {
- p_scb = bta_av_cb.p_scb[p_rcb->shdl - 1];
- if (p_scb)
- {
- /* just in case the RC timer is active
- if (bta_av_cb.features & BTA_AV_FEAT_RCCT &&
- p_scb->chnl == BTA_AV_CHNL_AUDIO) */
- alarm_cancel(p_scb->avrc_ct_timer);
- }
- }
-
- AVRC_Close(p_rcb->handle);
+ APPL_TRACE_DEBUG("%s handle: %d, status=0x%x", __func__, p_rcb->handle,
+ p_rcb->status);
+ if (p_rcb->handle != BTA_AV_RC_HANDLE_NONE) {
+ if (p_rcb->shdl) {
+ p_scb = bta_av_cb.p_scb[p_rcb->shdl - 1];
+ if (p_scb) {
+ /* just in case the RC timer is active
+ if (bta_av_cb.features & BTA_AV_FEAT_RCCT &&
+ p_scb->chnl == BTA_AV_CHNL_AUDIO) */
+ alarm_cancel(p_scb->avrc_ct_timer);
}
+ }
+
+ AVRC_Close(p_rcb->handle);
}
+ }
}
/*******************************************************************************
@@ -1159,9 +1050,8 @@
* Returns void
*
******************************************************************************/
-void bta_av_rc_browse_close (tBTA_AV_CB *p_cb, tBTA_AV_DATA *p_data)
-{
- APPL_TRACE_WARNING("%s empty placeholder does nothing!", __func__);
+void bta_av_rc_browse_close(tBTA_AV_CB* p_cb, tBTA_AV_DATA* p_data) {
+ APPL_TRACE_WARNING("%s empty placeholder does nothing!", __func__);
}
/*******************************************************************************
@@ -1171,20 +1061,17 @@
* Returns The index to p_scb[]
*
******************************************************************************/
-static uint8_t bta_av_get_shdl(tBTA_AV_SCB *p_scb)
-{
- int i;
- uint8_t shdl = 0;
- /* find the SCB & stop the timer */
- for(i=0; i<BTA_AV_NUM_STRS; i++)
- {
- if (p_scb == bta_av_cb.p_scb[i])
- {
- shdl = i+1;
- break;
- }
+static uint8_t bta_av_get_shdl(tBTA_AV_SCB* p_scb) {
+ int i;
+ uint8_t shdl = 0;
+ /* find the SCB & stop the timer */
+ for (i = 0; i < BTA_AV_NUM_STRS; i++) {
+ if (p_scb == bta_av_cb.p_scb[i]) {
+ shdl = i + 1;
+ break;
}
- return shdl;
+ }
+ return shdl;
}
/*******************************************************************************
@@ -1196,69 +1083,56 @@
* Returns void
*
******************************************************************************/
-void bta_av_stream_chg(tBTA_AV_SCB *p_scb, bool started)
-{
- uint8_t started_msk;
- int i;
- uint8_t *p_streams;
- bool no_streams = false;
- tBTA_AV_SCB *p_scbi;
+void bta_av_stream_chg(tBTA_AV_SCB* p_scb, bool started) {
+ uint8_t started_msk;
+ int i;
+ uint8_t* p_streams;
+ bool no_streams = false;
+ tBTA_AV_SCB* p_scbi;
- started_msk = BTA_AV_HNDL_TO_MSK(p_scb->hdi);
- APPL_TRACE_DEBUG ("bta_av_stream_chg started:%d started_msk:x%x chnl:x%x", started,
- started_msk, p_scb->chnl);
- if (BTA_AV_CHNL_AUDIO == p_scb->chnl)
- p_streams = &bta_av_cb.audio_streams;
- else
- p_streams = &bta_av_cb.video_streams;
+ started_msk = BTA_AV_HNDL_TO_MSK(p_scb->hdi);
+ APPL_TRACE_DEBUG("bta_av_stream_chg started:%d started_msk:x%x chnl:x%x",
+ started, started_msk, p_scb->chnl);
+ if (BTA_AV_CHNL_AUDIO == p_scb->chnl)
+ p_streams = &bta_av_cb.audio_streams;
+ else
+ p_streams = &bta_av_cb.video_streams;
- if (started)
- {
- /* Let L2CAP know this channel is processed with high priority */
- L2CA_SetAclPriority(p_scb->peer_addr, L2CAP_PRIORITY_HIGH);
- (*p_streams) |= started_msk;
- }
- else
- {
- (*p_streams) &= ~started_msk;
+ if (started) {
+ /* Let L2CAP know this channel is processed with high priority */
+ L2CA_SetAclPriority(p_scb->peer_addr, L2CAP_PRIORITY_HIGH);
+ (*p_streams) |= started_msk;
+ } else {
+ (*p_streams) &= ~started_msk;
+ }
+
+ if (!started) {
+ i = 0;
+ if (BTA_AV_CHNL_AUDIO == p_scb->chnl) {
+ if (bta_av_cb.video_streams == 0) no_streams = true;
+ } else {
+ no_streams = true;
+ if (bta_av_cb.audio_streams) {
+ for (; i < BTA_AV_NUM_STRS; i++) {
+ p_scbi = bta_av_cb.p_scb[i];
+ /* scb is used and started */
+ if (p_scbi && (bta_av_cb.audio_streams & BTA_AV_HNDL_TO_MSK(i)) &&
+ bdcmp(p_scbi->peer_addr, p_scb->peer_addr) == 0) {
+ no_streams = false;
+ break;
+ }
+ }
+ }
}
- if (!started)
- {
- i=0;
- if (BTA_AV_CHNL_AUDIO == p_scb->chnl)
- {
- if (bta_av_cb.video_streams == 0)
- no_streams = true;
- }
- else
- {
- no_streams = true;
- if ( bta_av_cb.audio_streams )
- {
- for (; i<BTA_AV_NUM_STRS; i++)
- {
- p_scbi = bta_av_cb.p_scb[i];
- /* scb is used and started */
- if ( p_scbi && (bta_av_cb.audio_streams & BTA_AV_HNDL_TO_MSK(i))
- && bdcmp(p_scbi->peer_addr, p_scb->peer_addr) == 0)
- {
- no_streams = false;
- break;
- }
- }
-
- }
- }
-
- APPL_TRACE_DEBUG ("no_streams:%d i:%d, audio_streams:x%x, video_streams:x%x", no_streams, i,
- bta_av_cb.audio_streams, bta_av_cb.video_streams);
- if (no_streams)
- {
- /* Let L2CAP know this channel is processed with low priority */
- L2CA_SetAclPriority(p_scb->peer_addr, L2CAP_PRIORITY_NORMAL);
- }
+ APPL_TRACE_DEBUG("no_streams:%d i:%d, audio_streams:x%x, video_streams:x%x",
+ no_streams, i, bta_av_cb.audio_streams,
+ bta_av_cb.video_streams);
+ if (no_streams) {
+ /* Let L2CAP know this channel is processed with low priority */
+ L2CA_SetAclPriority(p_scb->peer_addr, L2CAP_PRIORITY_NORMAL);
}
+ }
}
/*******************************************************************************
@@ -1271,204 +1145,190 @@
* Returns void
*
******************************************************************************/
-void bta_av_conn_chg(tBTA_AV_DATA *p_data)
-{
- tBTA_AV_CB *p_cb = &bta_av_cb;
- tBTA_AV_SCB *p_scb = NULL;
- tBTA_AV_SCB *p_scbi;
- uint8_t mask;
- uint8_t conn_msk;
- uint8_t old_msk;
- int i;
- int index = (p_data->hdr.layer_specific & BTA_AV_HNDL_MSK) - 1;
- tBTA_AV_LCB *p_lcb;
- tBTA_AV_LCB *p_lcb_rc;
- tBTA_AV_RCB *p_rcb, *p_rcb2;
- bool chk_restore = false;
+void bta_av_conn_chg(tBTA_AV_DATA* p_data) {
+ tBTA_AV_CB* p_cb = &bta_av_cb;
+ tBTA_AV_SCB* p_scb = NULL;
+ tBTA_AV_SCB* p_scbi;
+ uint8_t mask;
+ uint8_t conn_msk;
+ uint8_t old_msk;
+ int i;
+ int index = (p_data->hdr.layer_specific & BTA_AV_HNDL_MSK) - 1;
+ tBTA_AV_LCB* p_lcb;
+ tBTA_AV_LCB* p_lcb_rc;
+ tBTA_AV_RCB *p_rcb, *p_rcb2;
+ bool chk_restore = false;
- /* Validate array index*/
- if (index < BTA_AV_NUM_STRS)
- {
- p_scb = p_cb->p_scb[index];
+ /* Validate array index*/
+ if (index < BTA_AV_NUM_STRS) {
+ p_scb = p_cb->p_scb[index];
+ }
+ mask = BTA_AV_HNDL_TO_MSK(index);
+ p_lcb = bta_av_find_lcb(p_data->conn_chg.peer_addr, BTA_AV_LCB_FIND);
+ conn_msk = 1 << (index + 1);
+ if (p_data->conn_chg.is_up) {
+ /* set the conned mask for this channel */
+ if (p_scb) {
+ if (p_lcb) {
+ p_lcb->conn_msk |= conn_msk;
+ for (i = 0; i < BTA_AV_NUM_RCB; i++) {
+ if (bta_av_cb.rcb[i].lidx == p_lcb->lidx) {
+ bta_av_cb.rcb[i].shdl = index + 1;
+ APPL_TRACE_DEBUG(
+ "conn_chg up[%d]: %d, status=0x%x, shdl:%d, lidx:%d", i,
+ bta_av_cb.rcb[i].handle, bta_av_cb.rcb[i].status,
+ bta_av_cb.rcb[i].shdl, bta_av_cb.rcb[i].lidx);
+ break;
+ }
+ }
+ }
+ if (p_scb->chnl == BTA_AV_CHNL_AUDIO) {
+ old_msk = p_cb->conn_audio;
+ p_cb->conn_audio |= mask;
+ } else {
+ old_msk = p_cb->conn_video;
+ p_cb->conn_video |= mask;
+ }
+
+ if ((old_msk & mask) == 0) {
+ /* increase the audio open count, if not set yet */
+ bta_av_cb.audio_open_cnt++;
+ }
+
+ APPL_TRACE_DEBUG("rc_acp_handle:%d rc_acp_idx:%d", p_cb->rc_acp_handle,
+ p_cb->rc_acp_idx);
+ /* check if the AVRCP ACP channel is already connected */
+ if (p_lcb && p_cb->rc_acp_handle != BTA_AV_RC_HANDLE_NONE &&
+ p_cb->rc_acp_idx) {
+ p_lcb_rc = &p_cb->lcb[BTA_AV_NUM_LINKS];
+ APPL_TRACE_DEBUG(
+ "rc_acp is connected && conn_chg on same addr "
+ "p_lcb_rc->conn_msk:x%x",
+ p_lcb_rc->conn_msk);
+ /* check if the RC is connected to the scb addr */
+ APPL_TRACE_DEBUG("p_lcb_rc->addr: %02x:%02x:%02x:%02x:%02x:%02x",
+ p_lcb_rc->addr[0], p_lcb_rc->addr[1],
+ p_lcb_rc->addr[2], p_lcb_rc->addr[3],
+ p_lcb_rc->addr[4], p_lcb_rc->addr[5]);
+ APPL_TRACE_DEBUG(
+ "conn_chg.peer_addr: %02x:%02x:%02x:%02x:%02x:%02x",
+ p_data->conn_chg.peer_addr[0], p_data->conn_chg.peer_addr[1],
+ p_data->conn_chg.peer_addr[2], p_data->conn_chg.peer_addr[3],
+ p_data->conn_chg.peer_addr[4], p_data->conn_chg.peer_addr[5]);
+ if (p_lcb_rc->conn_msk &&
+ bdcmp(p_lcb_rc->addr, p_data->conn_chg.peer_addr) == 0) {
+ /* AVRCP is already connected.
+ * need to update the association betwen SCB and RCB */
+ p_lcb_rc->conn_msk = 0; /* indicate RC ONLY is not connected */
+ p_lcb_rc->lidx = 0;
+ p_scb->rc_handle = p_cb->rc_acp_handle;
+ p_rcb = &p_cb->rcb[p_cb->rc_acp_idx - 1];
+ p_rcb->shdl = bta_av_get_shdl(p_scb);
+ APPL_TRACE_DEBUG("update rc_acp shdl:%d/%d srch:%d", index + 1,
+ p_rcb->shdl, p_scb->rc_handle);
+
+ p_rcb2 = bta_av_get_rcb_by_shdl(p_rcb->shdl);
+ if (p_rcb2) {
+ /* found the RCB that was created to associated with this SCB */
+ p_cb->rc_acp_handle = p_rcb2->handle;
+ p_cb->rc_acp_idx = (p_rcb2 - p_cb->rcb) + 1;
+ APPL_TRACE_DEBUG("new rc_acp_handle:%d, idx:%d",
+ p_cb->rc_acp_handle, p_cb->rc_acp_idx);
+ p_rcb2->lidx = (BTA_AV_NUM_LINKS + 1);
+ APPL_TRACE_DEBUG("rc2 handle:%d lidx:%d/%d", p_rcb2->handle,
+ p_rcb2->lidx, p_cb->lcb[p_rcb2->lidx - 1].lidx);
+ }
+ p_rcb->lidx = p_lcb->lidx;
+ APPL_TRACE_DEBUG("rc handle:%d lidx:%d/%d", p_rcb->handle,
+ p_rcb->lidx, p_cb->lcb[p_rcb->lidx - 1].lidx);
+ }
+ }
}
- mask = BTA_AV_HNDL_TO_MSK(index);
- p_lcb = bta_av_find_lcb(p_data->conn_chg.peer_addr, BTA_AV_LCB_FIND);
- conn_msk = 1 << (index + 1);
- if (p_data->conn_chg.is_up)
- {
- /* set the conned mask for this channel */
- if (p_scb)
- {
- if (p_lcb)
- {
- p_lcb->conn_msk |= conn_msk;
- for (i=0; i<BTA_AV_NUM_RCB; i++)
- {
- if (bta_av_cb.rcb[i].lidx == p_lcb->lidx)
- {
- bta_av_cb.rcb[i].shdl = index + 1;
- APPL_TRACE_DEBUG("conn_chg up[%d]: %d, status=0x%x, shdl:%d, lidx:%d", i,
- bta_av_cb.rcb[i].handle, bta_av_cb.rcb[i].status,
- bta_av_cb.rcb[i].shdl, bta_av_cb.rcb[i].lidx);
- break;
- }
- }
- }
- if (p_scb->chnl == BTA_AV_CHNL_AUDIO)
- {
- old_msk = p_cb->conn_audio;
- p_cb->conn_audio |= mask;
- }
- else
- {
- old_msk = p_cb->conn_video;
- p_cb->conn_video |= mask;
- }
-
- if ((old_msk & mask) == 0)
- {
- /* increase the audio open count, if not set yet */
- bta_av_cb.audio_open_cnt++;
- }
-
- APPL_TRACE_DEBUG("rc_acp_handle:%d rc_acp_idx:%d", p_cb->rc_acp_handle, p_cb->rc_acp_idx);
- /* check if the AVRCP ACP channel is already connected */
- if (p_lcb && p_cb->rc_acp_handle != BTA_AV_RC_HANDLE_NONE && p_cb->rc_acp_idx)
- {
- p_lcb_rc = &p_cb->lcb[BTA_AV_NUM_LINKS];
- APPL_TRACE_DEBUG("rc_acp is connected && conn_chg on same addr p_lcb_rc->conn_msk:x%x",
- p_lcb_rc->conn_msk);
- /* check if the RC is connected to the scb addr */
- APPL_TRACE_DEBUG ("p_lcb_rc->addr: %02x:%02x:%02x:%02x:%02x:%02x",
- p_lcb_rc->addr[0], p_lcb_rc->addr[1], p_lcb_rc->addr[2], p_lcb_rc->addr[3],
- p_lcb_rc->addr[4], p_lcb_rc->addr[5]);
- APPL_TRACE_DEBUG ("conn_chg.peer_addr: %02x:%02x:%02x:%02x:%02x:%02x",
- p_data->conn_chg.peer_addr[0], p_data->conn_chg.peer_addr[1],
- p_data->conn_chg.peer_addr[2],
- p_data->conn_chg.peer_addr[3], p_data->conn_chg.peer_addr[4],
- p_data->conn_chg.peer_addr[5]);
- if (p_lcb_rc->conn_msk && bdcmp(p_lcb_rc->addr, p_data->conn_chg.peer_addr) == 0)
- {
- /* AVRCP is already connected.
- * need to update the association betwen SCB and RCB */
- p_lcb_rc->conn_msk = 0; /* indicate RC ONLY is not connected */
- p_lcb_rc->lidx = 0;
- p_scb->rc_handle = p_cb->rc_acp_handle;
- p_rcb = &p_cb->rcb[p_cb->rc_acp_idx - 1];
- p_rcb->shdl = bta_av_get_shdl(p_scb);
- APPL_TRACE_DEBUG("update rc_acp shdl:%d/%d srch:%d", index + 1, p_rcb->shdl,
- p_scb->rc_handle );
-
- p_rcb2 = bta_av_get_rcb_by_shdl(p_rcb->shdl);
- if (p_rcb2)
- {
- /* found the RCB that was created to associated with this SCB */
- p_cb->rc_acp_handle = p_rcb2->handle;
- p_cb->rc_acp_idx = (p_rcb2 - p_cb->rcb) + 1;
- APPL_TRACE_DEBUG("new rc_acp_handle:%d, idx:%d", p_cb->rc_acp_handle,
- p_cb->rc_acp_idx);
- p_rcb2->lidx = (BTA_AV_NUM_LINKS + 1);
- APPL_TRACE_DEBUG("rc2 handle:%d lidx:%d/%d",p_rcb2->handle, p_rcb2->lidx,
- p_cb->lcb[p_rcb2->lidx-1].lidx);
- }
- p_rcb->lidx = p_lcb->lidx;
- APPL_TRACE_DEBUG("rc handle:%d lidx:%d/%d",p_rcb->handle, p_rcb->lidx,
- p_cb->lcb[p_rcb->lidx-1].lidx);
- }
- }
- }
- }
- else
- {
- if ((p_cb->conn_audio & mask) && bta_av_cb.audio_open_cnt)
- {
- /* this channel is still marked as open. decrease the count */
- bta_av_cb.audio_open_cnt--;
- }
-
- /* clear the conned mask for this channel */
- p_cb->conn_audio &= ~mask;
- p_cb->conn_video &= ~mask;
- if (p_scb)
- {
- /* the stream is closed.
- * clear the peer address, so it would not mess up the AVRCP for the next round of operation */
- bdcpy(p_scb->peer_addr, bd_addr_null);
- if (p_scb->chnl == BTA_AV_CHNL_AUDIO)
- {
- if (p_lcb)
- {
- p_lcb->conn_msk &= ~conn_msk;
- }
- /* audio channel is down. make sure the INT channel is down */
- /* just in case the RC timer is active
- if (p_cb->features & BTA_AV_FEAT_RCCT) */
- {
- alarm_cancel(p_scb->avrc_ct_timer);
- }
- /* one audio channel goes down. check if we need to restore high priority */
- chk_restore = true;
- }
- }
-
- APPL_TRACE_DEBUG("bta_av_conn_chg shdl:%d", index + 1);
- for (i=0; i<BTA_AV_NUM_RCB; i++)
- {
- APPL_TRACE_DEBUG("conn_chg dn[%d]: %d, status=0x%x, shdl:%d, lidx:%d", i,
- bta_av_cb.rcb[i].handle, bta_av_cb.rcb[i].status,
- bta_av_cb.rcb[i].shdl, bta_av_cb.rcb[i].lidx);
- if (bta_av_cb.rcb[i].shdl == index + 1)
- {
- bta_av_del_rc(&bta_av_cb.rcb[i]);
- /* since the connection is already down and info was removed, clean reference */
- bta_av_cb.rcb[i].shdl = 0;
- break;
- }
- }
-
- if (p_cb->conn_audio == 0 && p_cb->conn_video == 0)
- {
- /* if both channels are not connected,
- * close all RC channels */
- bta_av_close_all_rc(p_cb);
- }
-
- /* if the AVRCP is no longer listening, create the listening channel */
- if (bta_av_cb.rc_acp_handle == BTA_AV_RC_HANDLE_NONE && bta_av_cb.features & BTA_AV_FEAT_RCTG)
- bta_av_rc_create(&bta_av_cb, AVCT_ACP, 0, BTA_AV_NUM_LINKS + 1);
+ } else {
+ if ((p_cb->conn_audio & mask) && bta_av_cb.audio_open_cnt) {
+ /* this channel is still marked as open. decrease the count */
+ bta_av_cb.audio_open_cnt--;
}
- APPL_TRACE_DEBUG("bta_av_conn_chg audio:%x video:%x up:%d conn_msk:0x%x chk_restore:%d audio_open_cnt:%d",
- p_cb->conn_audio, p_cb->conn_video, p_data->conn_chg.is_up, conn_msk, chk_restore, p_cb->audio_open_cnt);
-
- if (chk_restore)
- {
- if (p_cb->audio_open_cnt == 1)
- {
- /* one audio channel goes down and there's one audio channel remains open.
- * restore the switch role in default link policy */
- bta_sys_set_default_policy(BTA_ID_AV, HCI_ENABLE_MASTER_SLAVE_SWITCH);
- /* allow role switch, if this is the last connection */
- bta_av_restore_switch();
+ /* clear the conned mask for this channel */
+ p_cb->conn_audio &= ~mask;
+ p_cb->conn_video &= ~mask;
+ if (p_scb) {
+ /* the stream is closed.
+ * clear the peer address, so it would not mess up the AVRCP for the next
+ * round of operation */
+ bdcpy(p_scb->peer_addr, bd_addr_null);
+ if (p_scb->chnl == BTA_AV_CHNL_AUDIO) {
+ if (p_lcb) {
+ p_lcb->conn_msk &= ~conn_msk;
}
- if (p_cb->audio_open_cnt)
- {
- /* adjust flush timeout settings to longer period */
- for (i=0; i<BTA_AV_NUM_STRS; i++)
- {
- p_scbi = bta_av_cb.p_scb[i];
- if (p_scbi && p_scbi->chnl == BTA_AV_CHNL_AUDIO && p_scbi->co_started)
- {
- /* may need to update the flush timeout of this already started stream */
- if (p_scbi->co_started != bta_av_cb.audio_open_cnt)
- {
- p_scbi->co_started = bta_av_cb.audio_open_cnt;
- L2CA_SetFlushTimeout(p_scbi->peer_addr, p_bta_av_cfg->p_audio_flush_to[p_scbi->co_started - 1] );
- }
- }
- }
- }
+ /* audio channel is down. make sure the INT channel is down */
+ /* just in case the RC timer is active
+ if (p_cb->features & BTA_AV_FEAT_RCCT) */
+ { alarm_cancel(p_scb->avrc_ct_timer); }
+ /* one audio channel goes down. check if we need to restore high
+ * priority */
+ chk_restore = true;
+ }
}
+
+ APPL_TRACE_DEBUG("bta_av_conn_chg shdl:%d", index + 1);
+ for (i = 0; i < BTA_AV_NUM_RCB; i++) {
+ APPL_TRACE_DEBUG("conn_chg dn[%d]: %d, status=0x%x, shdl:%d, lidx:%d", i,
+ bta_av_cb.rcb[i].handle, bta_av_cb.rcb[i].status,
+ bta_av_cb.rcb[i].shdl, bta_av_cb.rcb[i].lidx);
+ if (bta_av_cb.rcb[i].shdl == index + 1) {
+ bta_av_del_rc(&bta_av_cb.rcb[i]);
+ /* since the connection is already down and info was removed, clean
+ * reference */
+ bta_av_cb.rcb[i].shdl = 0;
+ break;
+ }
+ }
+
+ if (p_cb->conn_audio == 0 && p_cb->conn_video == 0) {
+ /* if both channels are not connected,
+ * close all RC channels */
+ bta_av_close_all_rc(p_cb);
+ }
+
+ /* if the AVRCP is no longer listening, create the listening channel */
+ if (bta_av_cb.rc_acp_handle == BTA_AV_RC_HANDLE_NONE &&
+ bta_av_cb.features & BTA_AV_FEAT_RCTG)
+ bta_av_rc_create(&bta_av_cb, AVCT_ACP, 0, BTA_AV_NUM_LINKS + 1);
+ }
+
+ APPL_TRACE_DEBUG(
+ "bta_av_conn_chg audio:%x video:%x up:%d conn_msk:0x%x chk_restore:%d "
+ "audio_open_cnt:%d",
+ p_cb->conn_audio, p_cb->conn_video, p_data->conn_chg.is_up, conn_msk,
+ chk_restore, p_cb->audio_open_cnt);
+
+ if (chk_restore) {
+ if (p_cb->audio_open_cnt == 1) {
+ /* one audio channel goes down and there's one audio channel remains open.
+ * restore the switch role in default link policy */
+ bta_sys_set_default_policy(BTA_ID_AV, HCI_ENABLE_MASTER_SLAVE_SWITCH);
+ /* allow role switch, if this is the last connection */
+ bta_av_restore_switch();
+ }
+ if (p_cb->audio_open_cnt) {
+ /* adjust flush timeout settings to longer period */
+ for (i = 0; i < BTA_AV_NUM_STRS; i++) {
+ p_scbi = bta_av_cb.p_scb[i];
+ if (p_scbi && p_scbi->chnl == BTA_AV_CHNL_AUDIO && p_scbi->co_started) {
+ /* may need to update the flush timeout of this already started stream
+ */
+ if (p_scbi->co_started != bta_av_cb.audio_open_cnt) {
+ p_scbi->co_started = bta_av_cb.audio_open_cnt;
+ L2CA_SetFlushTimeout(
+ p_scbi->peer_addr,
+ p_bta_av_cfg->p_audio_flush_to[p_scbi->co_started - 1]);
+ }
+ }
+ }
+ }
+ }
}
/*******************************************************************************
@@ -1480,33 +1340,29 @@
* Returns void
*
******************************************************************************/
-void bta_av_disable(tBTA_AV_CB *p_cb,
- UNUSED_ATTR tBTA_AV_DATA *p_data)
-{
- BT_HDR hdr;
- uint16_t xx;
+void bta_av_disable(tBTA_AV_CB* p_cb, UNUSED_ATTR tBTA_AV_DATA* p_data) {
+ BT_HDR hdr;
+ uint16_t xx;
- p_cb->disabling = true;
+ p_cb->disabling = true;
- bta_av_close_all_rc(p_cb);
+ bta_av_close_all_rc(p_cb);
- osi_free_and_reset((void **)&p_cb->p_disc_db);
+ osi_free_and_reset((void**)&p_cb->p_disc_db);
- /* disable audio/video - de-register all channels,
- * expect BTA_AV_DEREG_COMP_EVT when deregister is complete */
- for(xx=0; xx<BTA_AV_NUM_STRS; xx++)
- {
- if (p_cb->p_scb[xx] != NULL)
- {
- hdr.layer_specific = xx + 1;
- bta_av_api_deregister((tBTA_AV_DATA *)&hdr);
- }
+ /* disable audio/video - de-register all channels,
+ * expect BTA_AV_DEREG_COMP_EVT when deregister is complete */
+ for (xx = 0; xx < BTA_AV_NUM_STRS; xx++) {
+ if (p_cb->p_scb[xx] != NULL) {
+ hdr.layer_specific = xx + 1;
+ bta_av_api_deregister((tBTA_AV_DATA*)&hdr);
}
+ }
- alarm_free(p_cb->link_signalling_timer);
- p_cb->link_signalling_timer = NULL;
- alarm_free(p_cb->accept_signalling_timer);
- p_cb->accept_signalling_timer = NULL;
+ alarm_free(p_cb->link_signalling_timer);
+ p_cb->link_signalling_timer = NULL;
+ alarm_free(p_cb->accept_signalling_timer);
+ p_cb->accept_signalling_timer = NULL;
}
/*******************************************************************************
@@ -1518,10 +1374,9 @@
* Returns void
*
******************************************************************************/
-void bta_av_api_disconnect(tBTA_AV_DATA *p_data)
-{
- AVDT_DisconnectReq(p_data->api_discnt.bd_addr, bta_av_conn_cback);
- alarm_cancel(bta_av_cb.link_signalling_timer);
+void bta_av_api_disconnect(tBTA_AV_DATA* p_data) {
+ AVDT_DisconnectReq(p_data->api_discnt.bd_addr, bta_av_conn_cback);
+ alarm_cancel(bta_av_cb.link_signalling_timer);
}
/*******************************************************************************
@@ -1533,128 +1388,122 @@
* Returns void
*
******************************************************************************/
-void bta_av_sig_chg(tBTA_AV_DATA *p_data)
-{
- uint16_t event = p_data->str_msg.hdr.layer_specific;
- tBTA_AV_CB *p_cb = &bta_av_cb;
- uint32_t xx;
- uint8_t mask;
- tBTA_AV_LCB *p_lcb = NULL;
+void bta_av_sig_chg(tBTA_AV_DATA* p_data) {
+ uint16_t event = p_data->str_msg.hdr.layer_specific;
+ tBTA_AV_CB* p_cb = &bta_av_cb;
+ uint32_t xx;
+ uint8_t mask;
+ tBTA_AV_LCB* p_lcb = NULL;
- APPL_TRACE_DEBUG("bta_av_sig_chg event: %d", event);
- if (event == AVDT_CONNECT_IND_EVT)
- {
- p_lcb = bta_av_find_lcb(p_data->str_msg.bd_addr, BTA_AV_LCB_FIND);
- if (!p_lcb)
- {
- /* if the address does not have an LCB yet, alloc one */
- for(xx=0; xx<BTA_AV_NUM_LINKS; xx++)
- {
- mask = 1 << xx;
- APPL_TRACE_DEBUG("conn_lcb: 0x%x", p_cb->conn_lcb);
- tBTA_AV_SCB *p_scb = p_cb->p_scb[xx];
- if (p_scb != NULL)
- {
- uint8_t avdt_tsep_type = p_scb->sep_info[p_scb->sep_info_idx].tsep;
- /* If the device is a A2DP source, disconnect the AVDT connection */
- if ((avdt_tsep_type == AVDT_TSEP_SRC) && (p_data->hdr.offset == AVDT_ACP))
- {
- LOG_INFO(LOG_TAG, "%s disconnecting invalid A2DP source to A2DP source connection.", __func__);
- AVDT_DisconnectReq(p_data->str_msg.bd_addr, NULL);
- return;
- }
- }
- /* look for a p_lcb with its p_scb registered */
- if ((!(mask & p_cb->conn_lcb)) && (p_cb->p_scb[xx] != NULL))
- {
- p_lcb = &p_cb->lcb[xx];
- p_lcb->lidx = xx + 1;
- bdcpy(p_lcb->addr, p_data->str_msg.bd_addr);
- p_lcb->conn_msk = 0; /* clear the connect mask */
- /* start listening when the signal channel is open */
- if (p_cb->features & BTA_AV_FEAT_RCTG)
- {
- bta_av_rc_create(p_cb, AVCT_ACP, 0, p_lcb->lidx);
- }
- /* this entry is not used yet. */
- p_cb->conn_lcb |= mask; /* mark it as used */
- APPL_TRACE_DEBUG("start sig timer %d", p_data->hdr.offset);
- if (p_data->hdr.offset == AVDT_ACP)
- {
- APPL_TRACE_DEBUG("Incoming L2CAP acquired, set state as incoming", NULL);
- bdcpy(p_cb->p_scb[xx]->peer_addr, p_data->str_msg.bd_addr);
- p_cb->p_scb[xx]->use_rc = true; /* allowing RC for incoming connection */
- bta_av_ssm_execute(p_cb->p_scb[xx], BTA_AV_ACP_CONNECT_EVT, p_data);
-
- /* The Pending Event should be sent as soon as the L2CAP signalling channel
- * is set up, which is NOW. Earlier this was done only after
- * BTA_AV_SIGNALLING_TIMEOUT_MS.
- * The following function shall send the event and start the recurring timer
- */
- bta_av_signalling_timer(NULL);
-
- APPL_TRACE_DEBUG("%s: Re-start timer for AVDTP service", __func__);
- bta_sys_conn_open(BTA_ID_AV, p_cb->p_scb[xx]->app_id,
- p_cb->p_scb[xx]->peer_addr);
- /* Possible collision : need to avoid outgoing processing while the timer is running */
- p_cb->p_scb[xx]->coll_mask = BTA_AV_COLL_INC_TMR;
- alarm_set_on_queue(p_cb->accept_signalling_timer,
- BTA_AV_ACCEPT_SIGNALLING_TIMEOUT_MS,
- bta_av_accept_signalling_timer_cback,
- UINT_TO_PTR(xx),
- btu_bta_alarm_queue);
- }
- break;
- }
- }
-
- /* check if we found something */
- if (xx == BTA_AV_NUM_LINKS)
- {
- /* We do not have scb for this avdt connection. */
- /* Silently close the connection. */
- APPL_TRACE_ERROR("av scb not available for avdt connection");
- AVDT_DisconnectReq (p_data->str_msg.bd_addr, NULL);
- return;
- }
+ APPL_TRACE_DEBUG("bta_av_sig_chg event: %d", event);
+ if (event == AVDT_CONNECT_IND_EVT) {
+ p_lcb = bta_av_find_lcb(p_data->str_msg.bd_addr, BTA_AV_LCB_FIND);
+ if (!p_lcb) {
+ /* if the address does not have an LCB yet, alloc one */
+ for (xx = 0; xx < BTA_AV_NUM_LINKS; xx++) {
+ mask = 1 << xx;
+ APPL_TRACE_DEBUG("conn_lcb: 0x%x", p_cb->conn_lcb);
+ tBTA_AV_SCB* p_scb = p_cb->p_scb[xx];
+ if (p_scb != NULL) {
+ uint8_t avdt_tsep_type = p_scb->sep_info[p_scb->sep_info_idx].tsep;
+ /* If the device is a A2DP source, disconnect the AVDT connection */
+ if ((avdt_tsep_type == AVDT_TSEP_SRC) &&
+ (p_data->hdr.offset == AVDT_ACP)) {
+ LOG_INFO(LOG_TAG,
+ "%s disconnecting invalid A2DP source to A2DP source "
+ "connection.",
+ __func__);
+ AVDT_DisconnectReq(p_data->str_msg.bd_addr, NULL);
+ return;
+ }
}
+ /* look for a p_lcb with its p_scb registered */
+ if ((!(mask & p_cb->conn_lcb)) && (p_cb->p_scb[xx] != NULL)) {
+ p_lcb = &p_cb->lcb[xx];
+ p_lcb->lidx = xx + 1;
+ bdcpy(p_lcb->addr, p_data->str_msg.bd_addr);
+ p_lcb->conn_msk = 0; /* clear the connect mask */
+ /* start listening when the signal channel is open */
+ if (p_cb->features & BTA_AV_FEAT_RCTG) {
+ bta_av_rc_create(p_cb, AVCT_ACP, 0, p_lcb->lidx);
+ }
+ /* this entry is not used yet. */
+ p_cb->conn_lcb |= mask; /* mark it as used */
+ APPL_TRACE_DEBUG("start sig timer %d", p_data->hdr.offset);
+ if (p_data->hdr.offset == AVDT_ACP) {
+ APPL_TRACE_DEBUG("Incoming L2CAP acquired, set state as incoming",
+ NULL);
+ bdcpy(p_cb->p_scb[xx]->peer_addr, p_data->str_msg.bd_addr);
+ p_cb->p_scb[xx]->use_rc =
+ true; /* allowing RC for incoming connection */
+ bta_av_ssm_execute(p_cb->p_scb[xx], BTA_AV_ACP_CONNECT_EVT, p_data);
+
+ /* The Pending Event should be sent as soon as the L2CAP signalling
+ * channel
+ * is set up, which is NOW. Earlier this was done only after
+ * BTA_AV_SIGNALLING_TIMEOUT_MS.
+ * The following function shall send the event and start the
+ * recurring timer
+ */
+ bta_av_signalling_timer(NULL);
+
+ APPL_TRACE_DEBUG("%s: Re-start timer for AVDTP service", __func__);
+ bta_sys_conn_open(BTA_ID_AV, p_cb->p_scb[xx]->app_id,
+ p_cb->p_scb[xx]->peer_addr);
+ /* Possible collision : need to avoid outgoing processing while the
+ * timer is running */
+ p_cb->p_scb[xx]->coll_mask = BTA_AV_COLL_INC_TMR;
+ alarm_set_on_queue(p_cb->accept_signalling_timer,
+ BTA_AV_ACCEPT_SIGNALLING_TIMEOUT_MS,
+ bta_av_accept_signalling_timer_cback,
+ UINT_TO_PTR(xx), btu_bta_alarm_queue);
+ }
+ break;
+ }
+ }
+
+ /* check if we found something */
+ if (xx == BTA_AV_NUM_LINKS) {
+ /* We do not have scb for this avdt connection. */
+ /* Silently close the connection. */
+ APPL_TRACE_ERROR("av scb not available for avdt connection");
+ AVDT_DisconnectReq(p_data->str_msg.bd_addr, NULL);
+ return;
+ }
}
+ }
#if (BTA_AR_INCLUDED == TRUE)
- else if (event == BTA_AR_AVDT_CONN_EVT)
- {
- alarm_cancel(bta_av_cb.link_signalling_timer);
- }
+ else if (event == BTA_AR_AVDT_CONN_EVT) {
+ alarm_cancel(bta_av_cb.link_signalling_timer);
+ }
#endif
- else
- {
- /* disconnected. */
- APPL_TRACE_DEBUG("%s: bta_av_cb.conn_lcb is %d", __func__, bta_av_cb.conn_lcb);
+ else {
+ /* disconnected. */
+ APPL_TRACE_DEBUG("%s: bta_av_cb.conn_lcb is %d", __func__,
+ bta_av_cb.conn_lcb);
- p_lcb = bta_av_find_lcb(p_data->str_msg.bd_addr, BTA_AV_LCB_FREE);
- if (p_lcb && (p_lcb->conn_msk || bta_av_cb.conn_lcb))
- {
- APPL_TRACE_DEBUG("conn_msk: 0x%x", p_lcb->conn_msk);
- /* clean up ssm */
- for(xx=0; xx < BTA_AV_NUM_STRS; xx++)
- {
-
- if ((p_cb->p_scb[xx]) &&
- (bdcmp(p_cb->p_scb[xx]->peer_addr, p_data->str_msg.bd_addr) == 0))
- {
- APPL_TRACE_DEBUG("%s: Closing timer for AVDTP service", __func__);
- bta_sys_conn_close(BTA_ID_AV, p_cb->p_scb[xx]->app_id,p_cb->p_scb[xx]->peer_addr);
- }
- mask = 1 << (xx + 1);
- if (((mask & p_lcb->conn_msk) || bta_av_cb.conn_lcb) && (p_cb->p_scb[xx]) &&
- (bdcmp(p_cb->p_scb[xx]->peer_addr, p_data->str_msg.bd_addr) == 0))
- {
- APPL_TRACE_DEBUG("%s: Sending AVDT_DISCONNECT_EVT", __func__);
- bta_av_ssm_execute(p_cb->p_scb[xx], BTA_AV_AVDT_DISCONNECT_EVT, NULL);
- }
- }
+ p_lcb = bta_av_find_lcb(p_data->str_msg.bd_addr, BTA_AV_LCB_FREE);
+ if (p_lcb && (p_lcb->conn_msk || bta_av_cb.conn_lcb)) {
+ APPL_TRACE_DEBUG("conn_msk: 0x%x", p_lcb->conn_msk);
+ /* clean up ssm */
+ for (xx = 0; xx < BTA_AV_NUM_STRS; xx++) {
+ if ((p_cb->p_scb[xx]) &&
+ (bdcmp(p_cb->p_scb[xx]->peer_addr, p_data->str_msg.bd_addr) == 0)) {
+ APPL_TRACE_DEBUG("%s: Closing timer for AVDTP service", __func__);
+ bta_sys_conn_close(BTA_ID_AV, p_cb->p_scb[xx]->app_id,
+ p_cb->p_scb[xx]->peer_addr);
}
+ mask = 1 << (xx + 1);
+ if (((mask & p_lcb->conn_msk) || bta_av_cb.conn_lcb) &&
+ (p_cb->p_scb[xx]) &&
+ (bdcmp(p_cb->p_scb[xx]->peer_addr, p_data->str_msg.bd_addr) == 0)) {
+ APPL_TRACE_DEBUG("%s: Sending AVDT_DISCONNECT_EVT", __func__);
+ bta_av_ssm_execute(p_cb->p_scb[xx], BTA_AV_AVDT_DISCONNECT_EVT, NULL);
+ }
+ }
}
- APPL_TRACE_DEBUG("%s: sig_chg conn_lcb: 0x%x", __func__, p_cb->conn_lcb);
+ }
+ APPL_TRACE_DEBUG("%s: sig_chg conn_lcb: 0x%x", __func__, p_cb->conn_lcb);
}
/*******************************************************************************
@@ -1669,31 +1518,28 @@
* Returns void
*
******************************************************************************/
-void bta_av_signalling_timer(UNUSED_ATTR tBTA_AV_DATA *p_data)
-{
- tBTA_AV_CB *p_cb = &bta_av_cb;
- int xx;
- uint8_t mask;
- tBTA_AV_LCB *p_lcb = NULL;
- tBTA_AV_PEND pend;
+void bta_av_signalling_timer(UNUSED_ATTR tBTA_AV_DATA* p_data) {
+ tBTA_AV_CB* p_cb = &bta_av_cb;
+ int xx;
+ uint8_t mask;
+ tBTA_AV_LCB* p_lcb = NULL;
+ tBTA_AV_PEND pend;
- APPL_TRACE_DEBUG("%s", __func__);
- for(xx=0; xx<BTA_AV_NUM_LINKS; xx++)
- {
- mask = 1 << xx;
- if (mask & p_cb->conn_lcb)
- {
- /* this entry is used. check if it is connected */
- p_lcb = &p_cb->lcb[xx];
- if (!p_lcb->conn_msk) {
- bta_sys_start_timer(p_cb->link_signalling_timer,
- BTA_AV_SIGNALLING_TIMEOUT_MS,
- BTA_AV_SIGNALLING_TIMER_EVT, 0);
- bdcpy(pend.bd_addr, p_lcb->addr);
- (*p_cb->p_cback)(BTA_AV_PENDING_EVT, (tBTA_AV *) &pend);
- }
- }
+ APPL_TRACE_DEBUG("%s", __func__);
+ for (xx = 0; xx < BTA_AV_NUM_LINKS; xx++) {
+ mask = 1 << xx;
+ if (mask & p_cb->conn_lcb) {
+ /* this entry is used. check if it is connected */
+ p_lcb = &p_cb->lcb[xx];
+ if (!p_lcb->conn_msk) {
+ bta_sys_start_timer(p_cb->link_signalling_timer,
+ BTA_AV_SIGNALLING_TIMEOUT_MS,
+ BTA_AV_SIGNALLING_TIMER_EVT, 0);
+ bdcpy(pend.bd_addr, p_lcb->addr);
+ (*p_cb->p_cback)(BTA_AV_PENDING_EVT, (tBTA_AV*)&pend);
+ }
}
+ }
}
/*******************************************************************************
@@ -1706,209 +1552,193 @@
* Returns void
*
******************************************************************************/
-static void bta_av_accept_signalling_timer_cback(void *data)
-{
- uint32_t inx = PTR_TO_UINT(data);
- tBTA_AV_CB *p_cb = &bta_av_cb;
- tBTA_AV_SCB *p_scb = NULL;
- if (inx < BTA_AV_NUM_STRS)
- {
- p_scb = p_cb->p_scb[inx];
- }
- if (p_scb)
- {
- APPL_TRACE_DEBUG("%s coll_mask = 0x%02X", __func__, p_scb->coll_mask);
+static void bta_av_accept_signalling_timer_cback(void* data) {
+ uint32_t inx = PTR_TO_UINT(data);
+ tBTA_AV_CB* p_cb = &bta_av_cb;
+ tBTA_AV_SCB* p_scb = NULL;
+ if (inx < BTA_AV_NUM_STRS) {
+ p_scb = p_cb->p_scb[inx];
+ }
+ if (p_scb) {
+ APPL_TRACE_DEBUG("%s coll_mask = 0x%02X", __func__, p_scb->coll_mask);
- if (p_scb->coll_mask & BTA_AV_COLL_INC_TMR)
- {
- p_scb->coll_mask &= ~BTA_AV_COLL_INC_TMR;
+ if (p_scb->coll_mask & BTA_AV_COLL_INC_TMR) {
+ p_scb->coll_mask &= ~BTA_AV_COLL_INC_TMR;
- if (bta_av_is_scb_opening(p_scb))
- {
- APPL_TRACE_DEBUG("%s: stream state opening: SDP started = %d",
- __func__, p_scb->sdp_discovery_started);
- if (p_scb->sdp_discovery_started)
- {
- /* We are still doing SDP. Run the timer again. */
- p_scb->coll_mask |= BTA_AV_COLL_INC_TMR;
+ if (bta_av_is_scb_opening(p_scb)) {
+ APPL_TRACE_DEBUG("%s: stream state opening: SDP started = %d", __func__,
+ p_scb->sdp_discovery_started);
+ if (p_scb->sdp_discovery_started) {
+ /* We are still doing SDP. Run the timer again. */
+ p_scb->coll_mask |= BTA_AV_COLL_INC_TMR;
- alarm_set_on_queue(p_cb->accept_signalling_timer,
- BTA_AV_ACCEPT_SIGNALLING_TIMEOUT_MS,
- bta_av_accept_signalling_timer_cback,
- UINT_TO_PTR(inx),
- btu_bta_alarm_queue);
- }
- else
- {
- /* SNK did not start signalling, resume signalling process. */
- bta_av_discover_req (p_scb, NULL);
- }
- }
- else if (bta_av_is_scb_incoming(p_scb))
- {
- /* Stay in incoming state if SNK does not start signalling */
-
- APPL_TRACE_DEBUG("%s: stream state incoming", __func__);
- /* API open was called right after SNK opened L2C connection. */
- if (p_scb->coll_mask & BTA_AV_COLL_API_CALLED)
- {
- p_scb->coll_mask &= ~BTA_AV_COLL_API_CALLED;
-
- /* BTA_AV_API_OPEN_EVT */
- tBTA_AV_API_OPEN *p_buf =
- (tBTA_AV_API_OPEN *)osi_malloc(sizeof(tBTA_AV_API_OPEN));
- memcpy(p_buf, &(p_scb->open_api), sizeof(tBTA_AV_API_OPEN));
- bta_sys_sendmsg(p_buf);
- }
- }
+ alarm_set_on_queue(p_cb->accept_signalling_timer,
+ BTA_AV_ACCEPT_SIGNALLING_TIMEOUT_MS,
+ bta_av_accept_signalling_timer_cback,
+ UINT_TO_PTR(inx), btu_bta_alarm_queue);
+ } else {
+ /* SNK did not start signalling, resume signalling process. */
+ bta_av_discover_req(p_scb, NULL);
}
+ } else if (bta_av_is_scb_incoming(p_scb)) {
+ /* Stay in incoming state if SNK does not start signalling */
+
+ APPL_TRACE_DEBUG("%s: stream state incoming", __func__);
+ /* API open was called right after SNK opened L2C connection. */
+ if (p_scb->coll_mask & BTA_AV_COLL_API_CALLED) {
+ p_scb->coll_mask &= ~BTA_AV_COLL_API_CALLED;
+
+ /* BTA_AV_API_OPEN_EVT */
+ tBTA_AV_API_OPEN* p_buf =
+ (tBTA_AV_API_OPEN*)osi_malloc(sizeof(tBTA_AV_API_OPEN));
+ memcpy(p_buf, &(p_scb->open_api), sizeof(tBTA_AV_API_OPEN));
+ bta_sys_sendmsg(p_buf);
+ }
+ }
}
+ }
}
/*******************************************************************************
*
* Function bta_av_check_peer_features
*
- * Description check supported features on the peer device from the SDP record
+ * Description check supported features on the peer device from the SDP
+ *record
* and return the feature mask
*
* Returns tBTA_AV_FEAT peer device feature mask
*
******************************************************************************/
-tBTA_AV_FEAT bta_av_check_peer_features (uint16_t service_uuid)
-{
- tBTA_AV_FEAT peer_features = 0;
- tBTA_AV_CB *p_cb = &bta_av_cb;
- tSDP_DISC_REC *p_rec = NULL;
- tSDP_DISC_ATTR *p_attr;
- uint16_t peer_rc_version=0;
- uint16_t categories = 0;
+tBTA_AV_FEAT bta_av_check_peer_features(uint16_t service_uuid) {
+ tBTA_AV_FEAT peer_features = 0;
+ tBTA_AV_CB* p_cb = &bta_av_cb;
+ tSDP_DISC_REC* p_rec = NULL;
+ tSDP_DISC_ATTR* p_attr;
+ uint16_t peer_rc_version = 0;
+ uint16_t categories = 0;
- APPL_TRACE_DEBUG("bta_av_check_peer_features service_uuid:x%x", service_uuid);
- /* loop through all records we found */
- while (true)
- {
- /* get next record; if none found, we're done */
- if ((p_rec = SDP_FindServiceInDb(p_cb->p_disc_db, service_uuid, p_rec)) == NULL)
- {
- break;
- }
-
- if (( SDP_FindAttributeInRec(p_rec, ATTR_ID_SERVICE_CLASS_ID_LIST)) != NULL)
- {
- /* find peer features */
- if (SDP_FindServiceInDb(p_cb->p_disc_db, UUID_SERVCLASS_AV_REMOTE_CONTROL, NULL))
- {
- peer_features |= BTA_AV_FEAT_RCCT;
- }
- if (SDP_FindServiceInDb(p_cb->p_disc_db, UUID_SERVCLASS_AV_REM_CTRL_TARGET, NULL))
- {
- peer_features |= BTA_AV_FEAT_RCTG;
- }
- }
-
- if (( SDP_FindAttributeInRec(p_rec, ATTR_ID_BT_PROFILE_DESC_LIST)) != NULL)
- {
- /* get profile version (if failure, version parameter is not updated) */
- SDP_FindProfileVersionInRec(p_rec, UUID_SERVCLASS_AV_REMOTE_CONTROL,
- &peer_rc_version);
- APPL_TRACE_DEBUG("peer_rc_version 0x%x", peer_rc_version);
-
- if (peer_rc_version >= AVRC_REV_1_3)
- peer_features |= (BTA_AV_FEAT_VENDOR | BTA_AV_FEAT_METADATA);
-
- if (peer_rc_version >= AVRC_REV_1_4)
- {
- peer_features |= (BTA_AV_FEAT_ADV_CTRL);
- /* get supported categories */
- if ((p_attr = SDP_FindAttributeInRec(p_rec,
- ATTR_ID_SUPPORTED_FEATURES)) != NULL)
- {
- categories = p_attr->attr_value.v.u16;
- if (categories & AVRC_SUPF_CT_BROWSE)
- peer_features |= (BTA_AV_FEAT_BROWSE);
- }
- }
- }
+ APPL_TRACE_DEBUG("bta_av_check_peer_features service_uuid:x%x", service_uuid);
+ /* loop through all records we found */
+ while (true) {
+ /* get next record; if none found, we're done */
+ if ((p_rec = SDP_FindServiceInDb(p_cb->p_disc_db, service_uuid, p_rec)) ==
+ NULL) {
+ break;
}
- APPL_TRACE_DEBUG("peer_features:x%x", peer_features);
- return peer_features;
+
+ if ((SDP_FindAttributeInRec(p_rec, ATTR_ID_SERVICE_CLASS_ID_LIST)) !=
+ NULL) {
+ /* find peer features */
+ if (SDP_FindServiceInDb(p_cb->p_disc_db, UUID_SERVCLASS_AV_REMOTE_CONTROL,
+ NULL)) {
+ peer_features |= BTA_AV_FEAT_RCCT;
+ }
+ if (SDP_FindServiceInDb(p_cb->p_disc_db,
+ UUID_SERVCLASS_AV_REM_CTRL_TARGET, NULL)) {
+ peer_features |= BTA_AV_FEAT_RCTG;
+ }
+ }
+
+ if ((SDP_FindAttributeInRec(p_rec, ATTR_ID_BT_PROFILE_DESC_LIST)) != NULL) {
+ /* get profile version (if failure, version parameter is not updated) */
+ SDP_FindProfileVersionInRec(p_rec, UUID_SERVCLASS_AV_REMOTE_CONTROL,
+ &peer_rc_version);
+ APPL_TRACE_DEBUG("peer_rc_version 0x%x", peer_rc_version);
+
+ if (peer_rc_version >= AVRC_REV_1_3)
+ peer_features |= (BTA_AV_FEAT_VENDOR | BTA_AV_FEAT_METADATA);
+
+ if (peer_rc_version >= AVRC_REV_1_4) {
+ peer_features |= (BTA_AV_FEAT_ADV_CTRL);
+ /* get supported categories */
+ if ((p_attr = SDP_FindAttributeInRec(
+ p_rec, ATTR_ID_SUPPORTED_FEATURES)) != NULL) {
+ categories = p_attr->attr_value.v.u16;
+ if (categories & AVRC_SUPF_CT_BROWSE)
+ peer_features |= (BTA_AV_FEAT_BROWSE);
+ }
+ }
+ }
+ }
+ APPL_TRACE_DEBUG("peer_features:x%x", peer_features);
+ return peer_features;
}
/*******************************************************************************
*
* Function bta_avk_check_peer_features
*
- * Description check supported features on the peer device from the SDP record
+ * Description check supported features on the peer device from the SDP
+ *record
* and return the feature mask
*
* Returns tBTA_AV_FEAT peer device feature mask
*
******************************************************************************/
-tBTA_AV_FEAT bta_avk_check_peer_features (uint16_t service_uuid)
-{
- tBTA_AV_FEAT peer_features = 0;
- tBTA_AV_CB *p_cb = &bta_av_cb;
+tBTA_AV_FEAT bta_avk_check_peer_features(uint16_t service_uuid) {
+ tBTA_AV_FEAT peer_features = 0;
+ tBTA_AV_CB* p_cb = &bta_av_cb;
- APPL_TRACE_DEBUG("%s service_uuid:x%x", __func__, service_uuid);
+ APPL_TRACE_DEBUG("%s service_uuid:x%x", __func__, service_uuid);
- /* loop through all records we found */
- tSDP_DISC_REC *p_rec = SDP_FindServiceInDb(p_cb->p_disc_db, service_uuid, NULL);
- while (p_rec)
- {
- APPL_TRACE_DEBUG("%s found Service record for x%x", __func__, service_uuid);
+ /* loop through all records we found */
+ tSDP_DISC_REC* p_rec =
+ SDP_FindServiceInDb(p_cb->p_disc_db, service_uuid, NULL);
+ while (p_rec) {
+ APPL_TRACE_DEBUG("%s found Service record for x%x", __func__, service_uuid);
- if (( SDP_FindAttributeInRec(p_rec, ATTR_ID_SERVICE_CLASS_ID_LIST)) != NULL)
- {
- /* find peer features */
- if (SDP_FindServiceInDb(p_cb->p_disc_db, UUID_SERVCLASS_AV_REMOTE_CONTROL, NULL))
- {
- peer_features |= BTA_AV_FEAT_RCCT;
- }
- if (SDP_FindServiceInDb(p_cb->p_disc_db, UUID_SERVCLASS_AV_REM_CTRL_TARGET, NULL))
- {
- peer_features |= BTA_AV_FEAT_RCTG;
- }
- }
-
- if (( SDP_FindAttributeInRec(p_rec, ATTR_ID_BT_PROFILE_DESC_LIST)) != NULL)
- {
- /* get profile version (if failure, version parameter is not updated) */
- uint16_t peer_rc_version = 0;
- bool val = SDP_FindProfileVersionInRec(
- p_rec, UUID_SERVCLASS_AV_REMOTE_CONTROL, &peer_rc_version);
- APPL_TRACE_DEBUG("%s peer_rc_version for TG 0x%x, profile_found %d",
- __func__, peer_rc_version, val);
-
- if (peer_rc_version >= AVRC_REV_1_3)
- peer_features |= (BTA_AV_FEAT_VENDOR | BTA_AV_FEAT_METADATA);
-
- /*
- * Though Absolute Volume came after in 1.4 and above, but there are few devices
- * in market which supports absolute Volume and they are still 1.3
- * TO avoid IOT issuses with those devices, we check for 1.3 as minimum version
- */
- if (peer_rc_version >= AVRC_REV_1_3)
- {
- /* get supported features */
- tSDP_DISC_ATTR *p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_SUPPORTED_FEATURES);
- if (p_attr != NULL)
- {
- uint16_t categories = p_attr->attr_value.v.u16;
- if (categories & AVRC_SUPF_CT_CAT2)
- peer_features |= (BTA_AV_FEAT_ADV_CTRL);
- if (categories & AVRC_SUPF_CT_APP_SETTINGS)
- peer_features |= (BTA_AV_FEAT_APP_SETTING);
- if (categories & AVRC_SUPF_CT_BROWSE)
- peer_features |= (BTA_AV_FEAT_BROWSE);
- }
- }
- }
- /* get next record; if none found, we're done */
- p_rec = SDP_FindServiceInDb(p_cb->p_disc_db, service_uuid, p_rec);
+ if ((SDP_FindAttributeInRec(p_rec, ATTR_ID_SERVICE_CLASS_ID_LIST)) !=
+ NULL) {
+ /* find peer features */
+ if (SDP_FindServiceInDb(p_cb->p_disc_db, UUID_SERVCLASS_AV_REMOTE_CONTROL,
+ NULL)) {
+ peer_features |= BTA_AV_FEAT_RCCT;
+ }
+ if (SDP_FindServiceInDb(p_cb->p_disc_db,
+ UUID_SERVCLASS_AV_REM_CTRL_TARGET, NULL)) {
+ peer_features |= BTA_AV_FEAT_RCTG;
+ }
}
- APPL_TRACE_DEBUG("%s peer_features:x%x", __func__, peer_features);
- return peer_features;
+
+ if ((SDP_FindAttributeInRec(p_rec, ATTR_ID_BT_PROFILE_DESC_LIST)) != NULL) {
+ /* get profile version (if failure, version parameter is not updated) */
+ uint16_t peer_rc_version = 0;
+ bool val = SDP_FindProfileVersionInRec(
+ p_rec, UUID_SERVCLASS_AV_REMOTE_CONTROL, &peer_rc_version);
+ APPL_TRACE_DEBUG("%s peer_rc_version for TG 0x%x, profile_found %d",
+ __func__, peer_rc_version, val);
+
+ if (peer_rc_version >= AVRC_REV_1_3)
+ peer_features |= (BTA_AV_FEAT_VENDOR | BTA_AV_FEAT_METADATA);
+
+ /*
+ * Though Absolute Volume came after in 1.4 and above, but there are few
+ * devices
+ * in market which supports absolute Volume and they are still 1.3
+ * TO avoid IOT issuses with those devices, we check for 1.3 as minimum
+ * version
+ */
+ if (peer_rc_version >= AVRC_REV_1_3) {
+ /* get supported features */
+ tSDP_DISC_ATTR* p_attr =
+ SDP_FindAttributeInRec(p_rec, ATTR_ID_SUPPORTED_FEATURES);
+ if (p_attr != NULL) {
+ uint16_t categories = p_attr->attr_value.v.u16;
+ if (categories & AVRC_SUPF_CT_CAT2)
+ peer_features |= (BTA_AV_FEAT_ADV_CTRL);
+ if (categories & AVRC_SUPF_CT_APP_SETTINGS)
+ peer_features |= (BTA_AV_FEAT_APP_SETTING);
+ if (categories & AVRC_SUPF_CT_BROWSE)
+ peer_features |= (BTA_AV_FEAT_BROWSE);
+ }
+ }
+ }
+ /* get next record; if none found, we're done */
+ p_rec = SDP_FindServiceInDb(p_cb->p_disc_db, service_uuid, p_rec);
+ }
+ APPL_TRACE_DEBUG("%s peer_features:x%x", __func__, peer_features);
+ return peer_features;
}
/*******************************************************************************
@@ -1921,122 +1751,109 @@
* Returns void
*
******************************************************************************/
-void bta_av_rc_disc_done(UNUSED_ATTR tBTA_AV_DATA *p_data)
-{
- tBTA_AV_CB *p_cb = &bta_av_cb;
- tBTA_AV_SCB *p_scb = NULL;
- tBTA_AV_LCB *p_lcb;
- tBTA_AV_RC_OPEN rc_open;
- tBTA_AV_RC_FEAT rc_feat;
- uint8_t rc_handle;
- tBTA_AV_FEAT peer_features = 0; /* peer features mask */
+void bta_av_rc_disc_done(UNUSED_ATTR tBTA_AV_DATA* p_data) {
+ tBTA_AV_CB* p_cb = &bta_av_cb;
+ tBTA_AV_SCB* p_scb = NULL;
+ tBTA_AV_LCB* p_lcb;
+ tBTA_AV_RC_OPEN rc_open;
+ tBTA_AV_RC_FEAT rc_feat;
+ uint8_t rc_handle;
+ tBTA_AV_FEAT peer_features = 0; /* peer features mask */
- APPL_TRACE_DEBUG("%s bta_av_rc_disc_done disc:x%x", __func__, p_cb->disc);
- if (!p_cb->disc)
- {
- return;
- }
+ APPL_TRACE_DEBUG("%s bta_av_rc_disc_done disc:x%x", __func__, p_cb->disc);
+ if (!p_cb->disc) {
+ return;
+ }
- if ((p_cb->disc & BTA_AV_CHNL_MSK) == BTA_AV_CHNL_MSK)
- {
- /* this is the rc handle/index to tBTA_AV_RCB */
- rc_handle = p_cb->disc & (~BTA_AV_CHNL_MSK);
+ if ((p_cb->disc & BTA_AV_CHNL_MSK) == BTA_AV_CHNL_MSK) {
+ /* this is the rc handle/index to tBTA_AV_RCB */
+ rc_handle = p_cb->disc & (~BTA_AV_CHNL_MSK);
+ } else {
+ /* Validate array index*/
+ if (((p_cb->disc & BTA_AV_HNDL_MSK) - 1) < BTA_AV_NUM_STRS) {
+ p_scb = p_cb->p_scb[(p_cb->disc & BTA_AV_HNDL_MSK) - 1];
}
- else
- {
- /* Validate array index*/
- if (((p_cb->disc & BTA_AV_HNDL_MSK) - 1) < BTA_AV_NUM_STRS)
- {
- p_scb = p_cb->p_scb[(p_cb->disc & BTA_AV_HNDL_MSK) - 1];
- }
- if (p_scb)
- {
- rc_handle = p_scb->rc_handle;
- }
- else
- {
- p_cb->disc = 0;
- return;
- }
+ if (p_scb) {
+ rc_handle = p_scb->rc_handle;
+ } else {
+ p_cb->disc = 0;
+ return;
}
+ }
- APPL_TRACE_DEBUG("%s rc_handle %d", __func__, rc_handle);
+ APPL_TRACE_DEBUG("%s rc_handle %d", __func__, rc_handle);
#if (BTA_AV_SINK_INCLUDED == TRUE)
- if (p_cb->sdp_a2dp_snk_handle)
- {
- /* This is Sink + CT + TG(Abs Vol) */
- peer_features = bta_avk_check_peer_features(UUID_SERVCLASS_AV_REM_CTRL_TARGET);
- APPL_TRACE_DEBUG("%s populating rem ctrl target features %d", __func__, peer_features);
- if (BTA_AV_FEAT_ADV_CTRL & bta_avk_check_peer_features(UUID_SERVCLASS_AV_REMOTE_CONTROL))
- peer_features |= (BTA_AV_FEAT_ADV_CTRL|BTA_AV_FEAT_RCCT);
- }
- else
+ if (p_cb->sdp_a2dp_snk_handle) {
+ /* This is Sink + CT + TG(Abs Vol) */
+ peer_features =
+ bta_avk_check_peer_features(UUID_SERVCLASS_AV_REM_CTRL_TARGET);
+ APPL_TRACE_DEBUG("%s populating rem ctrl target features %d", __func__,
+ peer_features);
+ if (BTA_AV_FEAT_ADV_CTRL &
+ bta_avk_check_peer_features(UUID_SERVCLASS_AV_REMOTE_CONTROL))
+ peer_features |= (BTA_AV_FEAT_ADV_CTRL | BTA_AV_FEAT_RCCT);
+ } else
#endif
- if (p_cb->sdp_a2dp_handle)
- {
- /* check peer version and whether support CT and TG role */
- peer_features = bta_av_check_peer_features(UUID_SERVCLASS_AV_REMOTE_CONTROL);
- if ((p_cb->features & BTA_AV_FEAT_ADV_CTRL) &&
- ((peer_features & BTA_AV_FEAT_ADV_CTRL) == 0))
- {
- /* if we support advance control and peer does not, check their support on TG role
- * some implementation uses 1.3 on CT ans 1.4 on TG */
- peer_features |= bta_av_check_peer_features(UUID_SERVCLASS_AV_REM_CTRL_TARGET);
- }
+ if (p_cb->sdp_a2dp_handle) {
+ /* check peer version and whether support CT and TG role */
+ peer_features =
+ bta_av_check_peer_features(UUID_SERVCLASS_AV_REMOTE_CONTROL);
+ if ((p_cb->features & BTA_AV_FEAT_ADV_CTRL) &&
+ ((peer_features & BTA_AV_FEAT_ADV_CTRL) == 0)) {
+ /* if we support advance control and peer does not, check their support on
+ * TG role
+ * some implementation uses 1.3 on CT ans 1.4 on TG */
+ peer_features |=
+ bta_av_check_peer_features(UUID_SERVCLASS_AV_REM_CTRL_TARGET);
}
+ }
- p_cb->disc = 0;
- osi_free_and_reset((void **)&p_cb->p_disc_db);
+ p_cb->disc = 0;
+ osi_free_and_reset((void**)&p_cb->p_disc_db);
- APPL_TRACE_DEBUG("peer_features 0x%x, features 0x%x", peer_features, p_cb->features);
+ APPL_TRACE_DEBUG("peer_features 0x%x, features 0x%x", peer_features,
+ p_cb->features);
- /* if we have no rc connection */
- if (rc_handle == BTA_AV_RC_HANDLE_NONE)
- {
- if (p_scb)
- {
- /* if peer remote control service matches ours and USE_RC is true */
- if ((((p_cb->features & BTA_AV_FEAT_RCCT) && (peer_features & BTA_AV_FEAT_RCTG)) ||
- ((p_cb->features & BTA_AV_FEAT_RCTG) && (peer_features & BTA_AV_FEAT_RCCT))) )
- {
- p_lcb = bta_av_find_lcb(p_scb->peer_addr, BTA_AV_LCB_FIND);
- if (p_lcb)
- {
- rc_handle = bta_av_rc_create(p_cb, AVCT_INT, (uint8_t)(p_scb->hdi + 1), p_lcb->lidx);
- p_cb->rcb[rc_handle].peer_features = peer_features;
- } else {
- APPL_TRACE_ERROR("can not find LCB!!");
- }
- }
- else if (p_scb->use_rc)
- {
- /* can not find AVRC on peer device. report failure */
- p_scb->use_rc = false;
- bdcpy(rc_open.peer_addr, p_scb->peer_addr);
- rc_open.peer_features = 0;
- rc_open.status = BTA_AV_FAIL_SDP;
- (*p_cb->p_cback)(BTA_AV_RC_OPEN_EVT, (tBTA_AV *) &rc_open);
- }
+ /* if we have no rc connection */
+ if (rc_handle == BTA_AV_RC_HANDLE_NONE) {
+ if (p_scb) {
+ /* if peer remote control service matches ours and USE_RC is true */
+ if ((((p_cb->features & BTA_AV_FEAT_RCCT) &&
+ (peer_features & BTA_AV_FEAT_RCTG)) ||
+ ((p_cb->features & BTA_AV_FEAT_RCTG) &&
+ (peer_features & BTA_AV_FEAT_RCCT)))) {
+ p_lcb = bta_av_find_lcb(p_scb->peer_addr, BTA_AV_LCB_FIND);
+ if (p_lcb) {
+ rc_handle = bta_av_rc_create(p_cb, AVCT_INT,
+ (uint8_t)(p_scb->hdi + 1), p_lcb->lidx);
+ p_cb->rcb[rc_handle].peer_features = peer_features;
+ } else {
+ APPL_TRACE_ERROR("can not find LCB!!");
}
+ } else if (p_scb->use_rc) {
+ /* can not find AVRC on peer device. report failure */
+ p_scb->use_rc = false;
+ bdcpy(rc_open.peer_addr, p_scb->peer_addr);
+ rc_open.peer_features = 0;
+ rc_open.status = BTA_AV_FAIL_SDP;
+ (*p_cb->p_cback)(BTA_AV_RC_OPEN_EVT, (tBTA_AV*)&rc_open);
+ }
}
- else
- {
- p_cb->rcb[rc_handle].peer_features = peer_features;
- rc_feat.rc_handle = rc_handle;
- rc_feat.peer_features = peer_features;
- if (p_scb == NULL)
- {
- /*
- * In case scb is not created by the time we are done with SDP
- * we still need to send RC feature event. So we need to get BD
- * from Message
- */
- bdcpy(rc_feat.peer_addr, p_cb->lcb[p_cb->rcb[rc_handle].lidx].addr);
- }
- else
- bdcpy(rc_feat.peer_addr, p_scb->peer_addr);
- (*p_cb->p_cback)(BTA_AV_RC_FEAT_EVT, (tBTA_AV *) &rc_feat);
- }
+ } else {
+ p_cb->rcb[rc_handle].peer_features = peer_features;
+ rc_feat.rc_handle = rc_handle;
+ rc_feat.peer_features = peer_features;
+ if (p_scb == NULL) {
+ /*
+ * In case scb is not created by the time we are done with SDP
+ * we still need to send RC feature event. So we need to get BD
+ * from Message
+ */
+ bdcpy(rc_feat.peer_addr, p_cb->lcb[p_cb->rcb[rc_handle].lidx].addr);
+ } else
+ bdcpy(rc_feat.peer_addr, p_scb->peer_addr);
+ (*p_cb->p_cback)(BTA_AV_RC_FEAT_EVT, (tBTA_AV*)&rc_feat);
+ }
}
/*******************************************************************************
@@ -2048,94 +1865,82 @@
* Returns void
*
******************************************************************************/
-void bta_av_rc_closed(tBTA_AV_DATA *p_data)
-{
- tBTA_AV_CB *p_cb = &bta_av_cb;
- tBTA_AV_RC_CLOSE rc_close;
- tBTA_AV_RC_CONN_CHG *p_msg = (tBTA_AV_RC_CONN_CHG *)p_data;
- tBTA_AV_RCB *p_rcb;
- tBTA_AV_SCB *p_scb;
- int i;
- bool conn = false;
- tBTA_AV_LCB *p_lcb;
+void bta_av_rc_closed(tBTA_AV_DATA* p_data) {
+ tBTA_AV_CB* p_cb = &bta_av_cb;
+ tBTA_AV_RC_CLOSE rc_close;
+ tBTA_AV_RC_CONN_CHG* p_msg = (tBTA_AV_RC_CONN_CHG*)p_data;
+ tBTA_AV_RCB* p_rcb;
+ tBTA_AV_SCB* p_scb;
+ int i;
+ bool conn = false;
+ tBTA_AV_LCB* p_lcb;
- rc_close.rc_handle = BTA_AV_RC_HANDLE_NONE;
- p_scb = NULL;
- APPL_TRACE_DEBUG("bta_av_rc_closed rc_handle:%d", p_msg->handle);
- for(i=0; i<BTA_AV_NUM_RCB; i++)
- {
- p_rcb = &p_cb->rcb[i];
- APPL_TRACE_DEBUG("bta_av_rc_closed rcb[%d] rc_handle:%d, status=0x%x", i, p_rcb->handle, p_rcb->status);
- if (p_rcb->handle == p_msg->handle)
- {
- rc_close.rc_handle = i;
- p_rcb->status &= ~BTA_AV_RC_CONN_MASK;
- p_rcb->peer_features = 0;
- APPL_TRACE_DEBUG(" shdl:%d, lidx:%d", p_rcb->shdl, p_rcb->lidx);
- if (p_rcb->shdl)
- {
- if ((p_rcb->shdl - 1) < BTA_AV_NUM_STRS)
- {
- p_scb = bta_av_cb.p_scb[p_rcb->shdl - 1];
- }
- if (p_scb)
- {
- bdcpy(rc_close.peer_addr, p_scb->peer_addr);
- if (p_scb->rc_handle == p_rcb->handle)
- p_scb->rc_handle = BTA_AV_RC_HANDLE_NONE;
- APPL_TRACE_DEBUG("shdl:%d, srch:%d", p_rcb->shdl, p_scb->rc_handle);
- }
- p_rcb->shdl = 0;
- }
- else if (p_rcb->lidx == (BTA_AV_NUM_LINKS + 1))
- {
- /* if the RCB uses the extra LCB, use the addr for event and clean it */
- p_lcb = &p_cb->lcb[BTA_AV_NUM_LINKS];
- bdcpy(rc_close.peer_addr, p_msg->peer_addr);
- APPL_TRACE_DEBUG("rc_only closed bd_addr:%02x-%02x-%02x-%02x-%02x-%02x",
- p_msg->peer_addr[0], p_msg->peer_addr[1],
- p_msg->peer_addr[2], p_msg->peer_addr[3],
- p_msg->peer_addr[4], p_msg->peer_addr[5]);
- p_lcb->conn_msk = 0;
- p_lcb->lidx = 0;
- }
- p_rcb->lidx = 0;
-
- if ((p_rcb->status & BTA_AV_RC_ROLE_MASK) == BTA_AV_RC_ROLE_INT)
- {
- /* AVCT CCB is deallocated */
- p_rcb->handle = BTA_AV_RC_HANDLE_NONE;
- p_rcb->status = 0;
- }
- else
- {
- /* AVCT CCB is still there. dealloc */
- bta_av_del_rc(p_rcb);
-
- /* if the AVRCP is no longer listening, create the listening channel */
- if (bta_av_cb.rc_acp_handle == BTA_AV_RC_HANDLE_NONE && bta_av_cb.features & BTA_AV_FEAT_RCTG)
- bta_av_rc_create(&bta_av_cb, AVCT_ACP, 0, BTA_AV_NUM_LINKS + 1);
- }
+ rc_close.rc_handle = BTA_AV_RC_HANDLE_NONE;
+ p_scb = NULL;
+ APPL_TRACE_DEBUG("bta_av_rc_closed rc_handle:%d", p_msg->handle);
+ for (i = 0; i < BTA_AV_NUM_RCB; i++) {
+ p_rcb = &p_cb->rcb[i];
+ APPL_TRACE_DEBUG("bta_av_rc_closed rcb[%d] rc_handle:%d, status=0x%x", i,
+ p_rcb->handle, p_rcb->status);
+ if (p_rcb->handle == p_msg->handle) {
+ rc_close.rc_handle = i;
+ p_rcb->status &= ~BTA_AV_RC_CONN_MASK;
+ p_rcb->peer_features = 0;
+ APPL_TRACE_DEBUG(" shdl:%d, lidx:%d", p_rcb->shdl, p_rcb->lidx);
+ if (p_rcb->shdl) {
+ if ((p_rcb->shdl - 1) < BTA_AV_NUM_STRS) {
+ p_scb = bta_av_cb.p_scb[p_rcb->shdl - 1];
}
- else if ((p_rcb->handle != BTA_AV_RC_HANDLE_NONE) && (p_rcb->status & BTA_AV_RC_CONN_MASK))
- {
- /* at least one channel is still connected */
- conn = true;
+ if (p_scb) {
+ bdcpy(rc_close.peer_addr, p_scb->peer_addr);
+ if (p_scb->rc_handle == p_rcb->handle)
+ p_scb->rc_handle = BTA_AV_RC_HANDLE_NONE;
+ APPL_TRACE_DEBUG("shdl:%d, srch:%d", p_rcb->shdl, p_scb->rc_handle);
}
- }
-
- if (!conn)
- {
- /* no AVRC channels are connected, go back to INIT state */
- bta_av_sm_execute(p_cb, BTA_AV_AVRC_NONE_EVT, NULL);
- }
-
- if (rc_close.rc_handle == BTA_AV_RC_HANDLE_NONE)
- {
- rc_close.rc_handle = p_msg->handle;
+ p_rcb->shdl = 0;
+ } else if (p_rcb->lidx == (BTA_AV_NUM_LINKS + 1)) {
+ /* if the RCB uses the extra LCB, use the addr for event and clean it */
+ p_lcb = &p_cb->lcb[BTA_AV_NUM_LINKS];
bdcpy(rc_close.peer_addr, p_msg->peer_addr);
+ APPL_TRACE_DEBUG("rc_only closed bd_addr:%02x-%02x-%02x-%02x-%02x-%02x",
+ p_msg->peer_addr[0], p_msg->peer_addr[1],
+ p_msg->peer_addr[2], p_msg->peer_addr[3],
+ p_msg->peer_addr[4], p_msg->peer_addr[5]);
+ p_lcb->conn_msk = 0;
+ p_lcb->lidx = 0;
+ }
+ p_rcb->lidx = 0;
+
+ if ((p_rcb->status & BTA_AV_RC_ROLE_MASK) == BTA_AV_RC_ROLE_INT) {
+ /* AVCT CCB is deallocated */
+ p_rcb->handle = BTA_AV_RC_HANDLE_NONE;
+ p_rcb->status = 0;
+ } else {
+ /* AVCT CCB is still there. dealloc */
+ bta_av_del_rc(p_rcb);
+
+ /* if the AVRCP is no longer listening, create the listening channel */
+ if (bta_av_cb.rc_acp_handle == BTA_AV_RC_HANDLE_NONE &&
+ bta_av_cb.features & BTA_AV_FEAT_RCTG)
+ bta_av_rc_create(&bta_av_cb, AVCT_ACP, 0, BTA_AV_NUM_LINKS + 1);
+ }
+ } else if ((p_rcb->handle != BTA_AV_RC_HANDLE_NONE) &&
+ (p_rcb->status & BTA_AV_RC_CONN_MASK)) {
+ /* at least one channel is still connected */
+ conn = true;
}
- (*p_cb->p_cback)(BTA_AV_RC_CLOSE_EVT, (tBTA_AV *) &rc_close);
+ }
+
+ if (!conn) {
+ /* no AVRC channels are connected, go back to INIT state */
+ bta_av_sm_execute(p_cb, BTA_AV_AVRC_NONE_EVT, NULL);
+ }
+
+ if (rc_close.rc_handle == BTA_AV_RC_HANDLE_NONE) {
+ rc_close.rc_handle = p_msg->handle;
+ bdcpy(rc_close.peer_addr, p_msg->peer_addr);
+ }
+ (*p_cb->p_cback)(BTA_AV_RC_CLOSE_EVT, (tBTA_AV*)&rc_close);
}
/*******************************************************************************
@@ -2147,23 +1952,22 @@
* Returns void
*
******************************************************************************/
-void bta_av_rc_browse_opened(tBTA_AV_DATA *p_data)
-{
- tBTA_AV_CB *p_cb = &bta_av_cb;
- tBTA_AV_RC_CONN_CHG *p_msg = (tBTA_AV_RC_CONN_CHG *)p_data;
- tBTA_AV_RC_BROWSE_OPEN rc_browse_open;
+void bta_av_rc_browse_opened(tBTA_AV_DATA* p_data) {
+ tBTA_AV_CB* p_cb = &bta_av_cb;
+ tBTA_AV_RC_CONN_CHG* p_msg = (tBTA_AV_RC_CONN_CHG*)p_data;
+ tBTA_AV_RC_BROWSE_OPEN rc_browse_open;
- APPL_TRACE_DEBUG("bta_av_rc_browse_opened bd_addr:%02x-%02x-%02x-%02x-%02x-%02x",
- p_msg->peer_addr[0], p_msg->peer_addr[1],
- p_msg->peer_addr[2], p_msg->peer_addr[3],
- p_msg->peer_addr[4], p_msg->peer_addr[5]);
- APPL_TRACE_DEBUG("bta_av_rc_browse_opened rc_handle:%d", p_msg->handle);
+ APPL_TRACE_DEBUG(
+ "bta_av_rc_browse_opened bd_addr:%02x-%02x-%02x-%02x-%02x-%02x",
+ p_msg->peer_addr[0], p_msg->peer_addr[1], p_msg->peer_addr[2],
+ p_msg->peer_addr[3], p_msg->peer_addr[4], p_msg->peer_addr[5]);
+ APPL_TRACE_DEBUG("bta_av_rc_browse_opened rc_handle:%d", p_msg->handle);
- rc_browse_open.status = BTA_AV_SUCCESS;
- rc_browse_open.rc_handle = p_msg->handle;
- bdcpy(rc_browse_open.peer_addr, p_msg->peer_addr);
+ rc_browse_open.status = BTA_AV_SUCCESS;
+ rc_browse_open.rc_handle = p_msg->handle;
+ bdcpy(rc_browse_open.peer_addr, p_msg->peer_addr);
- (*p_cb->p_cback)(BTA_AV_RC_BROWSE_OPEN_EVT, (tBTA_AV *)&rc_browse_open);
+ (*p_cb->p_cback)(BTA_AV_RC_BROWSE_OPEN_EVT, (tBTA_AV*)&rc_browse_open);
}
/*******************************************************************************
@@ -2175,22 +1979,21 @@
* Returns void
*
******************************************************************************/
-void bta_av_rc_browse_closed(tBTA_AV_DATA *p_data)
-{
- tBTA_AV_CB *p_cb = &bta_av_cb;
- tBTA_AV_RC_CONN_CHG *p_msg = (tBTA_AV_RC_CONN_CHG *)p_data;
- tBTA_AV_RC_BROWSE_CLOSE rc_browse_close;
+void bta_av_rc_browse_closed(tBTA_AV_DATA* p_data) {
+ tBTA_AV_CB* p_cb = &bta_av_cb;
+ tBTA_AV_RC_CONN_CHG* p_msg = (tBTA_AV_RC_CONN_CHG*)p_data;
+ tBTA_AV_RC_BROWSE_CLOSE rc_browse_close;
- APPL_TRACE_DEBUG("bta_av_rc_browse_closed bd_addr:%02x-%02x-%02x-%02x-%02x-%02x",
- p_msg->peer_addr[0], p_msg->peer_addr[1],
- p_msg->peer_addr[2], p_msg->peer_addr[3],
- p_msg->peer_addr[4], p_msg->peer_addr[5]);
- APPL_TRACE_DEBUG("bta_av_rc_browse_closed rc_handle:%d", p_msg->handle);
+ APPL_TRACE_DEBUG(
+ "bta_av_rc_browse_closed bd_addr:%02x-%02x-%02x-%02x-%02x-%02x",
+ p_msg->peer_addr[0], p_msg->peer_addr[1], p_msg->peer_addr[2],
+ p_msg->peer_addr[3], p_msg->peer_addr[4], p_msg->peer_addr[5]);
+ APPL_TRACE_DEBUG("bta_av_rc_browse_closed rc_handle:%d", p_msg->handle);
- rc_browse_close.rc_handle = p_msg->handle;
- bdcpy(rc_browse_close.peer_addr, p_msg->peer_addr);
+ rc_browse_close.rc_handle = p_msg->handle;
+ bdcpy(rc_browse_close.peer_addr, p_msg->peer_addr);
- (*p_cb->p_cback)(BTA_AV_RC_BROWSE_CLOSE_EVT, (tBTA_AV *)&rc_browse_close);
+ (*p_cb->p_cback)(BTA_AV_RC_BROWSE_CLOSE_EVT, (tBTA_AV*)&rc_browse_close);
}
/*******************************************************************************
@@ -2202,62 +2005,54 @@
* Returns void
*
******************************************************************************/
-void bta_av_rc_disc(uint8_t disc)
-{
- tBTA_AV_CB *p_cb = &bta_av_cb;
- tAVRC_SDP_DB_PARAMS db_params;
- uint16_t attr_list[] = {ATTR_ID_SERVICE_CLASS_ID_LIST,
- ATTR_ID_BT_PROFILE_DESC_LIST,
- ATTR_ID_SUPPORTED_FEATURES};
- uint8_t hdi;
- tBTA_AV_SCB *p_scb;
- uint8_t *p_addr = NULL;
- uint8_t rc_handle;
+void bta_av_rc_disc(uint8_t disc) {
+ tBTA_AV_CB* p_cb = &bta_av_cb;
+ tAVRC_SDP_DB_PARAMS db_params;
+ uint16_t attr_list[] = {ATTR_ID_SERVICE_CLASS_ID_LIST,
+ ATTR_ID_BT_PROFILE_DESC_LIST,
+ ATTR_ID_SUPPORTED_FEATURES};
+ uint8_t hdi;
+ tBTA_AV_SCB* p_scb;
+ uint8_t* p_addr = NULL;
+ uint8_t rc_handle;
- APPL_TRACE_DEBUG("bta_av_rc_disc 0x%x, %d", disc, bta_av_cb.disc);
- if ((bta_av_cb.disc != 0) || (disc == 0))
- return;
+ APPL_TRACE_DEBUG("bta_av_rc_disc 0x%x, %d", disc, bta_av_cb.disc);
+ if ((bta_av_cb.disc != 0) || (disc == 0)) return;
- if ((disc & BTA_AV_CHNL_MSK) == BTA_AV_CHNL_MSK)
- {
- /* this is the rc handle/index to tBTA_AV_RCB */
- rc_handle = disc & (~BTA_AV_CHNL_MSK);
- if (p_cb->rcb[rc_handle].lidx)
- {
- p_addr = p_cb->lcb[p_cb->rcb[rc_handle].lidx-1].addr;
- }
+ if ((disc & BTA_AV_CHNL_MSK) == BTA_AV_CHNL_MSK) {
+ /* this is the rc handle/index to tBTA_AV_RCB */
+ rc_handle = disc & (~BTA_AV_CHNL_MSK);
+ if (p_cb->rcb[rc_handle].lidx) {
+ p_addr = p_cb->lcb[p_cb->rcb[rc_handle].lidx - 1].addr;
}
- else
- {
- hdi = (disc & BTA_AV_HNDL_MSK) - 1;
- p_scb = p_cb->p_scb[hdi];
+ } else {
+ hdi = (disc & BTA_AV_HNDL_MSK) - 1;
+ p_scb = p_cb->p_scb[hdi];
- if (p_scb)
- {
- APPL_TRACE_DEBUG("rc_handle %d", p_scb->rc_handle);
- p_addr = p_scb->peer_addr;
- }
+ if (p_scb) {
+ APPL_TRACE_DEBUG("rc_handle %d", p_scb->rc_handle);
+ p_addr = p_scb->peer_addr;
}
+ }
- if (p_addr)
- {
- /* allocate discovery database */
- if (p_cb->p_disc_db == NULL)
- p_cb->p_disc_db = (tSDP_DISCOVERY_DB *)osi_malloc(BTA_AV_DISC_BUF_SIZE);
+ if (p_addr) {
+ /* allocate discovery database */
+ if (p_cb->p_disc_db == NULL)
+ p_cb->p_disc_db = (tSDP_DISCOVERY_DB*)osi_malloc(BTA_AV_DISC_BUF_SIZE);
- /* set up parameters */
- db_params.db_len = BTA_AV_DISC_BUF_SIZE;
- db_params.num_attr = 3;
- db_params.p_db = p_cb->p_disc_db;
- db_params.p_attrs = attr_list;
+ /* set up parameters */
+ db_params.db_len = BTA_AV_DISC_BUF_SIZE;
+ db_params.num_attr = 3;
+ db_params.p_db = p_cb->p_disc_db;
+ db_params.p_attrs = attr_list;
- /* searching for UUID_SERVCLASS_AV_REMOTE_CONTROL gets both TG and CT */
- if (AVRC_FindService(UUID_SERVCLASS_AV_REMOTE_CONTROL, p_addr,
- &db_params, bta_av_avrc_sdp_cback) == AVRC_SUCCESS) {
- p_cb->disc = disc;
- APPL_TRACE_DEBUG("disc %d", p_cb->disc);
- }
+ /* searching for UUID_SERVCLASS_AV_REMOTE_CONTROL gets both TG and CT */
+ if (AVRC_FindService(UUID_SERVCLASS_AV_REMOTE_CONTROL, p_addr, &db_params,
+ bta_av_avrc_sdp_cback) == AVRC_SUCCESS) {
+ p_cb->disc = disc;
+ APPL_TRACE_DEBUG("disc %d", p_cb->disc);
}
+ }
}
/*******************************************************************************
@@ -2269,100 +2064,89 @@
* Returns void
*
******************************************************************************/
-void bta_av_dereg_comp(tBTA_AV_DATA *p_data)
-{
- tBTA_AV_CB *p_cb = &bta_av_cb;
- tBTA_AV_SCB *p_scb;
- tBTA_UTL_COD cod;
- uint8_t mask;
- BT_HDR *p_buf;
+void bta_av_dereg_comp(tBTA_AV_DATA* p_data) {
+ tBTA_AV_CB* p_cb = &bta_av_cb;
+ tBTA_AV_SCB* p_scb;
+ tBTA_UTL_COD cod;
+ uint8_t mask;
+ BT_HDR* p_buf;
- /* find the stream control block */
- p_scb = bta_av_hndl_to_scb(p_data->hdr.layer_specific);
+ /* find the stream control block */
+ p_scb = bta_av_hndl_to_scb(p_data->hdr.layer_specific);
- if (p_scb)
- {
- APPL_TRACE_DEBUG("deregistered %d(h%d)", p_scb->chnl, p_scb->hndl);
- mask = BTA_AV_HNDL_TO_MSK(p_scb->hdi);
- if (p_scb->chnl == BTA_AV_CHNL_AUDIO)
- {
- p_cb->reg_audio &= ~mask;
- if ((p_cb->conn_audio & mask) && bta_av_cb.audio_open_cnt)
- {
- /* this channel is still marked as open. decrease the count */
- bta_av_cb.audio_open_cnt--;
- }
- p_cb->conn_audio &= ~mask;
+ if (p_scb) {
+ APPL_TRACE_DEBUG("deregistered %d(h%d)", p_scb->chnl, p_scb->hndl);
+ mask = BTA_AV_HNDL_TO_MSK(p_scb->hdi);
+ if (p_scb->chnl == BTA_AV_CHNL_AUDIO) {
+ p_cb->reg_audio &= ~mask;
+ if ((p_cb->conn_audio & mask) && bta_av_cb.audio_open_cnt) {
+ /* this channel is still marked as open. decrease the count */
+ bta_av_cb.audio_open_cnt--;
+ }
+ p_cb->conn_audio &= ~mask;
- if (p_scb->q_tag == BTA_AV_Q_TAG_STREAM && p_scb->a2dp_list) {
- /* make sure no buffers are in a2dp_list */
- while (!list_is_empty(p_scb->a2dp_list)) {
- p_buf = (BT_HDR*)list_front(p_scb->a2dp_list);
- list_remove(p_scb->a2dp_list, p_buf);
- osi_free(p_buf);
- }
- }
+ if (p_scb->q_tag == BTA_AV_Q_TAG_STREAM && p_scb->a2dp_list) {
+ /* make sure no buffers are in a2dp_list */
+ while (!list_is_empty(p_scb->a2dp_list)) {
+ p_buf = (BT_HDR*)list_front(p_scb->a2dp_list);
+ list_remove(p_scb->a2dp_list, p_buf);
+ osi_free(p_buf);
+ }
+ }
- /* remove the A2DP SDP record, if no more audio stream is left */
- if (!p_cb->reg_audio)
- {
+ /* remove the A2DP SDP record, if no more audio stream is left */
+ if (!p_cb->reg_audio) {
#if (BTA_AR_INCLUDED == TRUE)
- bta_ar_dereg_avrc (UUID_SERVCLASS_AV_REMOTE_CONTROL, BTA_ID_AV);
+ bta_ar_dereg_avrc(UUID_SERVCLASS_AV_REMOTE_CONTROL, BTA_ID_AV);
#endif
- if (p_cb->sdp_a2dp_handle)
- {
- bta_av_del_sdp_rec(&p_cb->sdp_a2dp_handle);
- p_cb->sdp_a2dp_handle = 0;
- bta_sys_remove_uuid(UUID_SERVCLASS_AUDIO_SOURCE);
- }
+ if (p_cb->sdp_a2dp_handle) {
+ bta_av_del_sdp_rec(&p_cb->sdp_a2dp_handle);
+ p_cb->sdp_a2dp_handle = 0;
+ bta_sys_remove_uuid(UUID_SERVCLASS_AUDIO_SOURCE);
+ }
#if (BTA_AV_SINK_INCLUDED == TRUE)
- if (p_cb->sdp_a2dp_snk_handle)
- {
- bta_av_del_sdp_rec(&p_cb->sdp_a2dp_snk_handle);
- p_cb->sdp_a2dp_snk_handle = 0;
- bta_sys_remove_uuid(UUID_SERVCLASS_AUDIO_SINK);
- }
+ if (p_cb->sdp_a2dp_snk_handle) {
+ bta_av_del_sdp_rec(&p_cb->sdp_a2dp_snk_handle);
+ p_cb->sdp_a2dp_snk_handle = 0;
+ bta_sys_remove_uuid(UUID_SERVCLASS_AUDIO_SINK);
+ }
#endif
- }
- }
- else
- {
- p_cb->reg_video &= ~mask;
- /* make sure that this channel is not connected */
- p_cb->conn_video &= ~mask;
- /* remove the VDP SDP record, (only one video stream at most) */
- bta_av_del_sdp_rec(&p_cb->sdp_vdp_handle);
- bta_sys_remove_uuid(UUID_SERVCLASS_VIDEO_SOURCE);
- }
-
- /* make sure that the timer is not active */
- alarm_cancel(p_scb->avrc_ct_timer);
- osi_free_and_reset((void **)&p_cb->p_scb[p_scb->hdi]);
+ }
+ } else {
+ p_cb->reg_video &= ~mask;
+ /* make sure that this channel is not connected */
+ p_cb->conn_video &= ~mask;
+ /* remove the VDP SDP record, (only one video stream at most) */
+ bta_av_del_sdp_rec(&p_cb->sdp_vdp_handle);
+ bta_sys_remove_uuid(UUID_SERVCLASS_VIDEO_SOURCE);
}
- APPL_TRACE_DEBUG("audio 0x%x, video: 0x%x, disable:%d",
- p_cb->reg_audio, p_cb->reg_video, p_cb->disabling);
- /* if no stream control block is active */
- if ((p_cb->reg_audio + p_cb->reg_video) == 0)
- {
+ /* make sure that the timer is not active */
+ alarm_cancel(p_scb->avrc_ct_timer);
+ osi_free_and_reset((void**)&p_cb->p_scb[p_scb->hdi]);
+ }
+
+ APPL_TRACE_DEBUG("audio 0x%x, video: 0x%x, disable:%d", p_cb->reg_audio,
+ p_cb->reg_video, p_cb->disabling);
+ /* if no stream control block is active */
+ if ((p_cb->reg_audio + p_cb->reg_video) == 0) {
#if (BTA_AR_INCLUDED == TRUE)
- /* deregister from AVDT */
- bta_ar_dereg_avdt(BTA_ID_AV);
+ /* deregister from AVDT */
+ bta_ar_dereg_avdt(BTA_ID_AV);
- /* deregister from AVCT */
- bta_ar_dereg_avrc (UUID_SERVCLASS_AV_REM_CTRL_TARGET, BTA_ID_AV);
- bta_ar_dereg_avct(BTA_ID_AV);
+ /* deregister from AVCT */
+ bta_ar_dereg_avrc(UUID_SERVCLASS_AV_REM_CTRL_TARGET, BTA_ID_AV);
+ bta_ar_dereg_avct(BTA_ID_AV);
#endif
- if (p_cb->disabling)
- {
- p_cb->disabling = false;
- bta_av_cb.features = 0;
- }
-
- /* Clear the Capturing service class bit */
- cod.service = BTM_COD_SERVICE_CAPTURING;
- utl_set_device_class(&cod, BTA_UTL_CLR_COD_SERVICE_CLASS);
+ if (p_cb->disabling) {
+ p_cb->disabling = false;
+ bta_av_cb.features = 0;
}
+
+ /* Clear the Capturing service class bit */
+ cod.service = BTM_COD_SERVICE_CAPTURING;
+ utl_set_device_class(&cod, BTA_UTL_CLR_COD_SERVICE_CLASS);
+ }
}
diff --git a/bta/av/bta_av_api.cc b/bta/av/bta_av_api.cc
index 9ea3232..782debe 100644
--- a/bta/av/bta_av_api.cc
+++ b/bta/av/bta_av_api.cc
@@ -28,12 +28,12 @@
#include "bt_target.h"
+#include <string.h>
+#include "bt_common.h"
#include "bta_api.h"
-#include "bta_sys.h"
#include "bta_av_api.h"
#include "bta_av_int.h"
-#include "bt_common.h"
-#include <string.h>
+#include "bta_sys.h"
#include "osi/include/allocator.h"
@@ -41,11 +41,7 @@
* Constants
****************************************************************************/
-static const tBTA_SYS_REG bta_av_reg =
-{
- bta_av_hdl_event,
- BTA_AvDisable
-};
+static const tBTA_SYS_REG bta_av_reg = {bta_av_hdl_event, BTA_AvDisable};
/*******************************************************************************
*
@@ -60,20 +56,20 @@
* Returns void
*
******************************************************************************/
-void BTA_AvEnable(tBTA_SEC sec_mask, tBTA_AV_FEAT features, tBTA_AV_CBACK *p_cback)
-{
- tBTA_AV_API_ENABLE *p_buf =
- (tBTA_AV_API_ENABLE *)osi_malloc(sizeof(tBTA_AV_API_ENABLE));
+void BTA_AvEnable(tBTA_SEC sec_mask, tBTA_AV_FEAT features,
+ tBTA_AV_CBACK* p_cback) {
+ tBTA_AV_API_ENABLE* p_buf =
+ (tBTA_AV_API_ENABLE*)osi_malloc(sizeof(tBTA_AV_API_ENABLE));
- /* register with BTA system manager */
- bta_sys_register(BTA_ID_AV, &bta_av_reg);
+ /* register with BTA system manager */
+ bta_sys_register(BTA_ID_AV, &bta_av_reg);
- p_buf->hdr.event = BTA_AV_API_ENABLE_EVT;
- p_buf->p_cback = p_cback;
- p_buf->features = features;
- p_buf->sec_mask = sec_mask;
+ p_buf->hdr.event = BTA_AV_API_ENABLE_EVT;
+ p_buf->p_cback = p_cback;
+ p_buf->features = features;
+ p_buf->sec_mask = sec_mask;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -85,14 +81,13 @@
* Returns void
*
******************************************************************************/
-void BTA_AvDisable(void)
-{
- BT_HDR *p_buf = (BT_HDR *)osi_malloc(sizeof(BT_HDR));
+void BTA_AvDisable(void) {
+ BT_HDR* p_buf = (BT_HDR*)osi_malloc(sizeof(BT_HDR));
- bta_sys_deregister(BTA_ID_AV);
- p_buf->event = BTA_AV_API_DISABLE_EVT;
+ bta_sys_deregister(BTA_ID_AV);
+ p_buf->event = BTA_AV_API_DISABLE_EVT;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -108,24 +103,23 @@
* Returns void
*
******************************************************************************/
-void BTA_AvRegister(tBTA_AV_CHNL chnl, const char *p_service_name,
- uint8_t app_id, tBTA_AV_SINK_DATA_CBACK *p_sink_data_cback,
- uint16_t service_uuid)
-{
- tBTA_AV_API_REG *p_buf =
- (tBTA_AV_API_REG *)osi_malloc(sizeof(tBTA_AV_API_REG));
+void BTA_AvRegister(tBTA_AV_CHNL chnl, const char* p_service_name,
+ uint8_t app_id, tBTA_AV_SINK_DATA_CBACK* p_sink_data_cback,
+ uint16_t service_uuid) {
+ tBTA_AV_API_REG* p_buf =
+ (tBTA_AV_API_REG*)osi_malloc(sizeof(tBTA_AV_API_REG));
- p_buf->hdr.layer_specific = chnl;
- p_buf->hdr.event = BTA_AV_API_REGISTER_EVT;
- if (p_service_name)
- strlcpy(p_buf->p_service_name, p_service_name, BTA_SERVICE_NAME_LEN);
- else
- p_buf->p_service_name[0] = 0;
- p_buf->app_id = app_id;
- p_buf->p_app_sink_data_cback = p_sink_data_cback;
- p_buf->service_uuid = service_uuid;
+ p_buf->hdr.layer_specific = chnl;
+ p_buf->hdr.event = BTA_AV_API_REGISTER_EVT;
+ if (p_service_name)
+ strlcpy(p_buf->p_service_name, p_service_name, BTA_SERVICE_NAME_LEN);
+ else
+ p_buf->p_service_name[0] = 0;
+ p_buf->app_id = app_id;
+ p_buf->p_app_sink_data_cback = p_sink_data_cback;
+ p_buf->service_uuid = service_uuid;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -137,14 +131,13 @@
* Returns void
*
******************************************************************************/
-void BTA_AvDeregister(tBTA_AV_HNDL hndl)
-{
- BT_HDR *p_buf = (BT_HDR *)osi_malloc(sizeof(BT_HDR));
+void BTA_AvDeregister(tBTA_AV_HNDL hndl) {
+ BT_HDR* p_buf = (BT_HDR*)osi_malloc(sizeof(BT_HDR));
- p_buf->layer_specific = hndl;
- p_buf->event = BTA_AV_API_DEREGISTER_EVT;
+ p_buf->layer_specific = hndl;
+ p_buf->event = BTA_AV_API_DEREGISTER_EVT;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -158,21 +151,20 @@
* Returns void
*
******************************************************************************/
-void BTA_AvOpen(BD_ADDR bd_addr, tBTA_AV_HNDL handle, bool use_rc, tBTA_SEC sec_mask,
- uint16_t uuid)
-{
- tBTA_AV_API_OPEN *p_buf =
- (tBTA_AV_API_OPEN *)osi_malloc(sizeof(tBTA_AV_API_OPEN));
+void BTA_AvOpen(BD_ADDR bd_addr, tBTA_AV_HNDL handle, bool use_rc,
+ tBTA_SEC sec_mask, uint16_t uuid) {
+ tBTA_AV_API_OPEN* p_buf =
+ (tBTA_AV_API_OPEN*)osi_malloc(sizeof(tBTA_AV_API_OPEN));
- p_buf->hdr.event = BTA_AV_API_OPEN_EVT;
- p_buf->hdr.layer_specific = handle;
- bdcpy(p_buf->bd_addr, bd_addr);
- p_buf->use_rc = use_rc;
- p_buf->sec_mask = sec_mask;
- p_buf->switch_res = BTA_AV_RS_NONE;
- p_buf->uuid = uuid;
+ p_buf->hdr.event = BTA_AV_API_OPEN_EVT;
+ p_buf->hdr.layer_specific = handle;
+ bdcpy(p_buf->bd_addr, bd_addr);
+ p_buf->use_rc = use_rc;
+ p_buf->sec_mask = sec_mask;
+ p_buf->switch_res = BTA_AV_RS_NONE;
+ p_buf->uuid = uuid;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -184,14 +176,13 @@
* Returns void
*
******************************************************************************/
-void BTA_AvClose(tBTA_AV_HNDL handle)
-{
- BT_HDR *p_buf = (BT_HDR *)osi_malloc(sizeof(BT_HDR));
+void BTA_AvClose(tBTA_AV_HNDL handle) {
+ BT_HDR* p_buf = (BT_HDR*)osi_malloc(sizeof(BT_HDR));
- p_buf->event = BTA_AV_API_CLOSE_EVT;
- p_buf->layer_specific = handle;
+ p_buf->event = BTA_AV_API_CLOSE_EVT;
+ p_buf->layer_specific = handle;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -203,15 +194,14 @@
* Returns void
*
******************************************************************************/
-void BTA_AvDisconnect(BD_ADDR bd_addr)
-{
- tBTA_AV_API_DISCNT *p_buf =
- (tBTA_AV_API_DISCNT *)osi_malloc(sizeof(tBTA_AV_API_DISCNT));
+void BTA_AvDisconnect(BD_ADDR bd_addr) {
+ tBTA_AV_API_DISCNT* p_buf =
+ (tBTA_AV_API_DISCNT*)osi_malloc(sizeof(tBTA_AV_API_DISCNT));
- p_buf->hdr.event = BTA_AV_API_DISCONNECT_EVT;
- bdcpy(p_buf->bd_addr, bd_addr);
+ p_buf->hdr.event = BTA_AV_API_DISCONNECT_EVT;
+ bdcpy(p_buf->bd_addr, bd_addr);
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -223,13 +213,12 @@
* Returns void
*
******************************************************************************/
-void BTA_AvStart(void)
-{
- BT_HDR *p_buf = (BT_HDR *) osi_malloc(sizeof(BT_HDR));
+void BTA_AvStart(void) {
+ BT_HDR* p_buf = (BT_HDR*)osi_malloc(sizeof(BT_HDR));
- p_buf->event = BTA_AV_API_START_EVT;
+ p_buf->event = BTA_AV_API_START_EVT;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -241,14 +230,13 @@
* Returns void
*
******************************************************************************/
-void BTA_AvOffloadStart(tBTA_AV_HNDL hndl)
-{
- BT_HDR *p_buf = (BT_HDR *)osi_malloc(sizeof(BT_HDR));
+void BTA_AvOffloadStart(tBTA_AV_HNDL hndl) {
+ BT_HDR* p_buf = (BT_HDR*)osi_malloc(sizeof(BT_HDR));
- p_buf->event = BTA_AV_API_OFFLOAD_START_EVT;
- p_buf->layer_specific = hndl;
+ p_buf->event = BTA_AV_API_OFFLOAD_START_EVT;
+ p_buf->layer_specific = hndl;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -260,16 +248,15 @@
* Returns void
*
******************************************************************************/
-void BTA_AvOffloadStartRsp(tBTA_AV_HNDL hndl, tBTA_AV_STATUS status)
-{
- tBTA_AV_API_STATUS_RSP *p_buf =
- (tBTA_AV_API_STATUS_RSP *)osi_malloc(sizeof(tBTA_AV_API_STATUS_RSP));
+void BTA_AvOffloadStartRsp(tBTA_AV_HNDL hndl, tBTA_AV_STATUS status) {
+ tBTA_AV_API_STATUS_RSP* p_buf =
+ (tBTA_AV_API_STATUS_RSP*)osi_malloc(sizeof(tBTA_AV_API_STATUS_RSP));
- p_buf->hdr.event = BTA_AV_API_OFFLOAD_START_RSP_EVT;
- p_buf->hdr.layer_specific = hndl;
- p_buf->status = status;
+ p_buf->hdr.event = BTA_AV_API_OFFLOAD_START_RSP_EVT;
+ p_buf->hdr.layer_specific = hndl;
+ p_buf->status = status;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -283,16 +270,15 @@
* Returns void
*
******************************************************************************/
-void BTA_AvStop(bool suspend)
-{
- tBTA_AV_API_STOP *p_buf =
- (tBTA_AV_API_STOP *)osi_malloc(sizeof(tBTA_AV_API_STOP));
+void BTA_AvStop(bool suspend) {
+ tBTA_AV_API_STOP* p_buf =
+ (tBTA_AV_API_STOP*)osi_malloc(sizeof(tBTA_AV_API_STOP));
- p_buf->hdr.event = BTA_AV_API_STOP_EVT;
- p_buf->flush = true;
- p_buf->suspend = suspend;
+ p_buf->hdr.event = BTA_AV_API_STOP_EVT;
+ p_buf->flush = true;
+ p_buf->suspend = suspend;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -300,7 +286,8 @@
* Function BTA_AvReconfig
*
* Description Reconfigure the audio/video stream.
- * If suspend is true, this function tries the suspend/reconfigure
+ * If suspend is true, this function tries the
+ *suspend/reconfigure
* procedure first.
* If suspend is false or when suspend/reconfigure fails,
* this function closes and re-opens the AVDT connection.
@@ -309,22 +296,21 @@
*
******************************************************************************/
void BTA_AvReconfig(tBTA_AV_HNDL hndl, bool suspend, uint8_t sep_info_idx,
- uint8_t *p_codec_info, uint8_t num_protect,
- const uint8_t *p_protect_info)
-{
- tBTA_AV_API_RCFG *p_buf =
- (tBTA_AV_API_RCFG *)osi_malloc(sizeof(tBTA_AV_API_RCFG) + num_protect);
+ uint8_t* p_codec_info, uint8_t num_protect,
+ const uint8_t* p_protect_info) {
+ tBTA_AV_API_RCFG* p_buf =
+ (tBTA_AV_API_RCFG*)osi_malloc(sizeof(tBTA_AV_API_RCFG) + num_protect);
- p_buf->hdr.layer_specific = hndl;
- p_buf->hdr.event = BTA_AV_API_RECONFIG_EVT;
- p_buf->num_protect = num_protect;
- p_buf->suspend = suspend;
- p_buf->sep_info_idx = sep_info_idx;
- p_buf->p_protect_info = (uint8_t *)(p_buf + 1);
- memcpy(p_buf->codec_info, p_codec_info, AVDT_CODEC_SIZE);
- memcpy(p_buf->p_protect_info, p_protect_info, num_protect);
+ p_buf->hdr.layer_specific = hndl;
+ p_buf->hdr.event = BTA_AV_API_RECONFIG_EVT;
+ p_buf->num_protect = num_protect;
+ p_buf->suspend = suspend;
+ p_buf->sep_info_idx = sep_info_idx;
+ p_buf->p_protect_info = (uint8_t*)(p_buf + 1);
+ memcpy(p_buf->codec_info, p_codec_info, AVDT_CODEC_SIZE);
+ memcpy(p_buf->p_protect_info, p_protect_info, num_protect);
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -337,22 +323,21 @@
* Returns void
*
******************************************************************************/
-void BTA_AvProtectReq(tBTA_AV_HNDL hndl, uint8_t *p_data, uint16_t len)
-{
- tBTA_AV_API_PROTECT_REQ *p_buf =
- (tBTA_AV_API_PROTECT_REQ *)osi_malloc(sizeof(tBTA_AV_API_PROTECT_REQ) + len);
+void BTA_AvProtectReq(tBTA_AV_HNDL hndl, uint8_t* p_data, uint16_t len) {
+ tBTA_AV_API_PROTECT_REQ* p_buf = (tBTA_AV_API_PROTECT_REQ*)osi_malloc(
+ sizeof(tBTA_AV_API_PROTECT_REQ) + len);
- p_buf->hdr.layer_specific = hndl;
- p_buf->hdr.event = BTA_AV_API_PROTECT_REQ_EVT;
- p_buf->len = len;
- if (p_data == NULL) {
- p_buf->p_data = NULL;
- } else {
- p_buf->p_data = (uint8_t *) (p_buf + 1);
- memcpy(p_buf->p_data, p_data, len);
- }
+ p_buf->hdr.layer_specific = hndl;
+ p_buf->hdr.event = BTA_AV_API_PROTECT_REQ_EVT;
+ p_buf->len = len;
+ if (p_data == NULL) {
+ p_buf->p_data = NULL;
+ } else {
+ p_buf->p_data = (uint8_t*)(p_buf + 1);
+ memcpy(p_buf->p_data, p_data, len);
+ }
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -367,23 +352,23 @@
* Returns void
*
******************************************************************************/
-void BTA_AvProtectRsp(tBTA_AV_HNDL hndl, uint8_t error_code, uint8_t *p_data, uint16_t len)
-{
- tBTA_AV_API_PROTECT_RSP *p_buf =
- (tBTA_AV_API_PROTECT_RSP *)osi_malloc(sizeof(tBTA_AV_API_PROTECT_RSP) + len);
+void BTA_AvProtectRsp(tBTA_AV_HNDL hndl, uint8_t error_code, uint8_t* p_data,
+ uint16_t len) {
+ tBTA_AV_API_PROTECT_RSP* p_buf = (tBTA_AV_API_PROTECT_RSP*)osi_malloc(
+ sizeof(tBTA_AV_API_PROTECT_RSP) + len);
- p_buf->hdr.layer_specific = hndl;
- p_buf->hdr.event = BTA_AV_API_PROTECT_RSP_EVT;
- p_buf->len = len;
- p_buf->error_code= error_code;
- if (p_data == NULL) {
- p_buf->p_data = NULL;
- } else {
- p_buf->p_data = (uint8_t *) (p_buf + 1);
- memcpy(p_buf->p_data, p_data, len);
- }
+ p_buf->hdr.layer_specific = hndl;
+ p_buf->hdr.event = BTA_AV_API_PROTECT_RSP_EVT;
+ p_buf->len = len;
+ p_buf->error_code = error_code;
+ if (p_data == NULL) {
+ p_buf->p_data = NULL;
+ } else {
+ p_buf->p_data = (uint8_t*)(p_buf + 1);
+ memcpy(p_buf->p_data, p_data, len);
+ }
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -396,20 +381,20 @@
* Returns void
*
******************************************************************************/
-void BTA_AvRemoteCmd(uint8_t rc_handle, uint8_t label, tBTA_AV_RC rc_id, tBTA_AV_STATE key_state)
-{
- tBTA_AV_API_REMOTE_CMD *p_buf =
- (tBTA_AV_API_REMOTE_CMD *)osi_malloc(sizeof(tBTA_AV_API_REMOTE_CMD));
+void BTA_AvRemoteCmd(uint8_t rc_handle, uint8_t label, tBTA_AV_RC rc_id,
+ tBTA_AV_STATE key_state) {
+ tBTA_AV_API_REMOTE_CMD* p_buf =
+ (tBTA_AV_API_REMOTE_CMD*)osi_malloc(sizeof(tBTA_AV_API_REMOTE_CMD));
- p_buf->hdr.event = BTA_AV_API_REMOTE_CMD_EVT;
- p_buf->hdr.layer_specific = rc_handle;
- p_buf->msg.op_id = rc_id;
- p_buf->msg.state = key_state;
- p_buf->msg.p_pass_data = NULL;
- p_buf->msg.pass_len = 0;
- p_buf->label = label;
+ p_buf->hdr.event = BTA_AV_API_REMOTE_CMD_EVT;
+ p_buf->hdr.layer_specific = rc_handle;
+ p_buf->msg.op_id = rc_id;
+ p_buf->msg.state = key_state;
+ p_buf->msg.p_pass_data = NULL;
+ p_buf->msg.pass_len = 0;
+ p_buf->label = label;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -425,25 +410,23 @@
******************************************************************************/
void BTA_AvRemoteVendorUniqueCmd(uint8_t rc_handle, uint8_t label,
tBTA_AV_STATE key_state, uint8_t* p_msg,
- uint8_t buf_len)
-{
- tBTA_AV_API_REMOTE_CMD *p_buf =
- (tBTA_AV_API_REMOTE_CMD *)osi_malloc(sizeof(tBTA_AV_API_REMOTE_CMD) +
- buf_len);
+ uint8_t buf_len) {
+ tBTA_AV_API_REMOTE_CMD* p_buf = (tBTA_AV_API_REMOTE_CMD*)osi_malloc(
+ sizeof(tBTA_AV_API_REMOTE_CMD) + buf_len);
- p_buf->label = label;
- p_buf->hdr.event = BTA_AV_API_REMOTE_CMD_EVT;
- p_buf->hdr.layer_specific = rc_handle;
- p_buf->msg.op_id = AVRC_ID_VENDOR;
- p_buf->msg.state = key_state;
- p_buf->msg.pass_len = buf_len;
- if (p_msg == NULL) {
- p_buf->msg.p_pass_data = NULL;
- } else {
- p_buf->msg.p_pass_data = (uint8_t *)(p_buf + 1);
- memcpy(p_buf->msg.p_pass_data, p_msg, buf_len);
- }
- bta_sys_sendmsg(p_buf);
+ p_buf->label = label;
+ p_buf->hdr.event = BTA_AV_API_REMOTE_CMD_EVT;
+ p_buf->hdr.layer_specific = rc_handle;
+ p_buf->msg.op_id = AVRC_ID_VENDOR;
+ p_buf->msg.state = key_state;
+ p_buf->msg.pass_len = buf_len;
+ if (p_msg == NULL) {
+ p_buf->msg.p_pass_data = NULL;
+ } else {
+ p_buf->msg.p_pass_data = (uint8_t*)(p_buf + 1);
+ memcpy(p_buf->msg.p_pass_data, p_msg, buf_len);
+ }
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -457,27 +440,27 @@
* Returns void
*
******************************************************************************/
-void BTA_AvVendorCmd(uint8_t rc_handle, uint8_t label, tBTA_AV_CODE cmd_code, uint8_t *p_data, uint16_t len)
-{
- tBTA_AV_API_VENDOR *p_buf =
- (tBTA_AV_API_VENDOR *)osi_malloc(sizeof(tBTA_AV_API_VENDOR) + len);
+void BTA_AvVendorCmd(uint8_t rc_handle, uint8_t label, tBTA_AV_CODE cmd_code,
+ uint8_t* p_data, uint16_t len) {
+ tBTA_AV_API_VENDOR* p_buf =
+ (tBTA_AV_API_VENDOR*)osi_malloc(sizeof(tBTA_AV_API_VENDOR) + len);
- p_buf->hdr.event = BTA_AV_API_VENDOR_CMD_EVT;
- p_buf->hdr.layer_specific = rc_handle;
- p_buf->msg.hdr.ctype = cmd_code;
- p_buf->msg.hdr.subunit_type = AVRC_SUB_PANEL;
- p_buf->msg.hdr.subunit_id = 0;
- p_buf->msg.company_id = p_bta_av_cfg->company_id;
- p_buf->label = label;
- p_buf->msg.vendor_len = len;
- if (p_data == NULL) {
- p_buf->msg.p_vendor_data = NULL;
- } else {
- p_buf->msg.p_vendor_data = (uint8_t *) (p_buf + 1);
- memcpy(p_buf->msg.p_vendor_data, p_data, len);
- }
+ p_buf->hdr.event = BTA_AV_API_VENDOR_CMD_EVT;
+ p_buf->hdr.layer_specific = rc_handle;
+ p_buf->msg.hdr.ctype = cmd_code;
+ p_buf->msg.hdr.subunit_type = AVRC_SUB_PANEL;
+ p_buf->msg.hdr.subunit_id = 0;
+ p_buf->msg.company_id = p_bta_av_cfg->company_id;
+ p_buf->label = label;
+ p_buf->msg.vendor_len = len;
+ if (p_data == NULL) {
+ p_buf->msg.p_vendor_data = NULL;
+ } else {
+ p_buf->msg.p_vendor_data = (uint8_t*)(p_buf + 1);
+ memcpy(p_buf->msg.p_vendor_data, p_data, len);
+ }
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -492,30 +475,30 @@
* Returns void
*
******************************************************************************/
-void BTA_AvVendorRsp(uint8_t rc_handle, uint8_t label, tBTA_AV_CODE rsp_code, uint8_t *p_data, uint16_t len, uint32_t company_id)
-{
- tBTA_AV_API_VENDOR *p_buf =
- (tBTA_AV_API_VENDOR *)osi_malloc(sizeof(tBTA_AV_API_VENDOR) + len);
+void BTA_AvVendorRsp(uint8_t rc_handle, uint8_t label, tBTA_AV_CODE rsp_code,
+ uint8_t* p_data, uint16_t len, uint32_t company_id) {
+ tBTA_AV_API_VENDOR* p_buf =
+ (tBTA_AV_API_VENDOR*)osi_malloc(sizeof(tBTA_AV_API_VENDOR) + len);
- p_buf->hdr.event = BTA_AV_API_VENDOR_RSP_EVT;
- p_buf->hdr.layer_specific = rc_handle;
- p_buf->msg.hdr.ctype = rsp_code;
- p_buf->msg.hdr.subunit_type = AVRC_SUB_PANEL;
- p_buf->msg.hdr.subunit_id = 0;
- if (company_id)
- p_buf->msg.company_id = company_id;
- else
- p_buf->msg.company_id = p_bta_av_cfg->company_id;
- p_buf->label = label;
- p_buf->msg.vendor_len = len;
- if (p_data == NULL) {
- p_buf->msg.p_vendor_data = NULL;
- } else {
- p_buf->msg.p_vendor_data = (uint8_t *) (p_buf + 1);
- memcpy(p_buf->msg.p_vendor_data, p_data, len);
- }
+ p_buf->hdr.event = BTA_AV_API_VENDOR_RSP_EVT;
+ p_buf->hdr.layer_specific = rc_handle;
+ p_buf->msg.hdr.ctype = rsp_code;
+ p_buf->msg.hdr.subunit_type = AVRC_SUB_PANEL;
+ p_buf->msg.hdr.subunit_id = 0;
+ if (company_id)
+ p_buf->msg.company_id = company_id;
+ else
+ p_buf->msg.company_id = p_bta_av_cfg->company_id;
+ p_buf->label = label;
+ p_buf->msg.vendor_len = len;
+ if (p_data == NULL) {
+ p_buf->msg.p_vendor_data = NULL;
+ } else {
+ p_buf->msg.p_vendor_data = (uint8_t*)(p_buf + 1);
+ memcpy(p_buf->msg.p_vendor_data, p_data, len);
+ }
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -528,15 +511,14 @@
* Returns void
*
******************************************************************************/
-void BTA_AvOpenRc(tBTA_AV_HNDL handle)
-{
- tBTA_AV_API_OPEN_RC *p_buf =
- (tBTA_AV_API_OPEN_RC *)osi_malloc(sizeof(tBTA_AV_API_OPEN_RC));
+void BTA_AvOpenRc(tBTA_AV_HNDL handle) {
+ tBTA_AV_API_OPEN_RC* p_buf =
+ (tBTA_AV_API_OPEN_RC*)osi_malloc(sizeof(tBTA_AV_API_OPEN_RC));
- p_buf->hdr.event = BTA_AV_API_RC_OPEN_EVT;
- p_buf->hdr.layer_specific = handle;
+ p_buf->hdr.event = BTA_AV_API_RC_OPEN_EVT;
+ p_buf->hdr.layer_specific = handle;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -548,22 +530,22 @@
* Returns void
*
******************************************************************************/
-void BTA_AvCloseRc(uint8_t rc_handle)
-{
- tBTA_AV_API_CLOSE_RC *p_buf =
- (tBTA_AV_API_CLOSE_RC *)osi_malloc(sizeof(tBTA_AV_API_CLOSE_RC));
+void BTA_AvCloseRc(uint8_t rc_handle) {
+ tBTA_AV_API_CLOSE_RC* p_buf =
+ (tBTA_AV_API_CLOSE_RC*)osi_malloc(sizeof(tBTA_AV_API_CLOSE_RC));
- p_buf->hdr.event = BTA_AV_API_RC_CLOSE_EVT;
- p_buf->hdr.layer_specific = rc_handle;
+ p_buf->hdr.event = BTA_AV_API_RC_CLOSE_EVT;
+ p_buf->hdr.layer_specific = rc_handle;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
*
* Function BTA_AvMetaRsp
*
- * Description Send a Metadata/Advanced Control response. The message contained
+ * Description Send a Metadata/Advanced Control response. The message
+ *contained
* in p_pkt can be composed with AVRC utility functions.
* This function can only be used if AV is enabled with feature
* BTA_AV_FEAT_METADATA.
@@ -572,46 +554,48 @@
*
******************************************************************************/
void BTA_AvMetaRsp(uint8_t rc_handle, uint8_t label, tBTA_AV_CODE rsp_code,
- BT_HDR *p_pkt)
-{
- tBTA_AV_API_META_RSP *p_buf =
- (tBTA_AV_API_META_RSP *)osi_malloc(sizeof(tBTA_AV_API_META_RSP));
+ BT_HDR* p_pkt) {
+ tBTA_AV_API_META_RSP* p_buf =
+ (tBTA_AV_API_META_RSP*)osi_malloc(sizeof(tBTA_AV_API_META_RSP));
- p_buf->hdr.event = BTA_AV_API_META_RSP_EVT;
- p_buf->hdr.layer_specific = rc_handle;
- p_buf->rsp_code = rsp_code;
- p_buf->p_pkt = p_pkt;
- p_buf->is_rsp = true;
- p_buf->label = label;
+ p_buf->hdr.event = BTA_AV_API_META_RSP_EVT;
+ p_buf->hdr.layer_specific = rc_handle;
+ p_buf->rsp_code = rsp_code;
+ p_buf->p_pkt = p_pkt;
+ p_buf->is_rsp = true;
+ p_buf->label = label;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
*
* Function BTA_AvMetaCmd
*
- * Description Send a Metadata/Advanced Control command. The message contained
+ * Description Send a Metadata/Advanced Control command. The message
+*contained
* in p_pkt can be composed with AVRC utility functions.
* This function can only be used if AV is enabled with feature
* BTA_AV_FEAT_METADATA.
- * This message is sent only when the peer supports the TG role.
-*8 The only command makes sense right now is the absolute volume command.
+ * This message is sent only when the peer supports the TG
+*role.
+*8 The only command makes sense right now is the absolute
+*volume command.
*
* Returns void
*
******************************************************************************/
-void BTA_AvMetaCmd(uint8_t rc_handle, uint8_t label, tBTA_AV_CMD cmd_code, BT_HDR *p_pkt)
-{
- tBTA_AV_API_META_RSP *p_buf =
- (tBTA_AV_API_META_RSP *)osi_malloc(sizeof(tBTA_AV_API_META_RSP));
+void BTA_AvMetaCmd(uint8_t rc_handle, uint8_t label, tBTA_AV_CMD cmd_code,
+ BT_HDR* p_pkt) {
+ tBTA_AV_API_META_RSP* p_buf =
+ (tBTA_AV_API_META_RSP*)osi_malloc(sizeof(tBTA_AV_API_META_RSP));
- p_buf->hdr.event = BTA_AV_API_META_RSP_EVT;
- p_buf->hdr.layer_specific = rc_handle;
- p_buf->p_pkt = p_pkt;
- p_buf->rsp_code = cmd_code;
- p_buf->is_rsp = false;
- p_buf->label = label;
+ p_buf->hdr.event = BTA_AV_API_META_RSP_EVT;
+ p_buf->hdr.layer_specific = rc_handle;
+ p_buf->p_pkt = p_pkt;
+ p_buf->rsp_code = cmd_code;
+ p_buf->is_rsp = false;
+ p_buf->label = label;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
diff --git a/bta/av/bta_av_cfg.cc b/bta/av/bta_av_cfg.cc
index ddb0f49..5a3aabe 100644
--- a/bta/av/bta_av_cfg.cc
+++ b/bta/av/bta_av_cfg.cc
@@ -25,38 +25,35 @@
#include <stddef.h>
-#include "bt_target.h"
#include "bt_common.h"
+#include "bt_target.h"
#include "bta_api.h"
#include "bta_av_int.h"
#ifndef BTA_AV_RC_COMP_ID
-#define BTA_AV_RC_COMP_ID AVRC_CO_GOOGLE
+#define BTA_AV_RC_COMP_ID AVRC_CO_GOOGLE
#endif
#ifndef BTA_AV_RC_PASS_RSP_CODE
-#define BTA_AV_RC_PASS_RSP_CODE BTA_AV_RSP_NOT_IMPL
+#define BTA_AV_RC_PASS_RSP_CODE BTA_AV_RSP_NOT_IMPL
#endif
-const uint32_t bta_av_meta_caps_co_ids[] = {
- AVRC_CO_METADATA,
- AVRC_CO_BROADCOM
-};
+const uint32_t bta_av_meta_caps_co_ids[] = {AVRC_CO_METADATA, AVRC_CO_BROADCOM};
/* AVRCP supported categories */
#if (AVRC_CTRL_INCLUDED == TRUE)
-#define BTA_AV_RC_SUPF_CT (AVRC_SUPF_CT_CAT2)
-#define BTA_AVK_RC_SUPF_CT (AVRC_SUPF_CT_CAT1|AVRC_SUPF_CT_BROWSE)
-#define BTA_AVK_RC_SUPF_TG (AVRC_SUPF_TG_CAT2)
+#define BTA_AV_RC_SUPF_CT (AVRC_SUPF_CT_CAT2)
+#define BTA_AVK_RC_SUPF_CT (AVRC_SUPF_CT_CAT1 | AVRC_SUPF_CT_BROWSE)
+#define BTA_AVK_RC_SUPF_TG (AVRC_SUPF_TG_CAT2)
#endif
/* AVRCP Controller and Targer default name */
#ifndef BTA_AV_RC_CT_NAME
-#define BTA_AV_RC_CT_NAME "AVRC Controller"
+#define BTA_AV_RC_CT_NAME "AVRC Controller"
#endif
#ifndef BTA_AV_RC_TG_NAME
-#define BTA_AV_RC_TG_NAME "AVRC Target"
+#define BTA_AV_RC_TG_NAME "AVRC Target"
#endif
/* Added to modify
@@ -67,130 +64,139 @@
*/
/* Flushing partial avdtp packets can cause some headsets to disconnect the link
if receiving partial a2dp frames */
-const uint16_t bta_av_audio_flush_to[] = {
- 0, /* 1 stream */
- 0, /* 2 streams */
- 0, /* 3 streams */
- 0, /* 4 streams */
- 0 /* 5 streams */
+const uint16_t bta_av_audio_flush_to[] = {
+ 0, /* 1 stream */
+ 0, /* 2 streams */
+ 0, /* 3 streams */
+ 0, /* 4 streams */
+ 0 /* 5 streams */
}; /* AVDTP audio transport channel flush timeout */
/* Note: Android doesnt support AVRC_SUPF_TG_GROUP_NAVI */
-/* Note: if AVRC_SUPF_TG_GROUP_NAVI is set, bta_av_cfg.avrc_group should be true */
+/* Note: if AVRC_SUPF_TG_GROUP_NAVI is set, bta_av_cfg.avrc_group should be true
+ */
#ifndef BTA_AV_RC_SUPF_TG
#if (AVRC_METADATA_INCLUDED == TRUE)
-#define BTA_AV_RC_SUPF_TG (AVRC_SUPF_TG_CAT1 | AVRC_SUPF_TG_MULTI_PLAYER | \
- AVRC_SUPF_TG_BROWSE) /* TODO: | AVRC_SUPF_TG_APP_SETTINGS) */
+#define BTA_AV_RC_SUPF_TG \
+ (AVRC_SUPF_TG_CAT1 | AVRC_SUPF_TG_MULTI_PLAYER | \
+ AVRC_SUPF_TG_BROWSE) /* TODO: | AVRC_SUPF_TG_APP_SETTINGS) */
#else
#define BTA_AV_RC_SUPF_TG (AVRC_SUPF_TG_CAT1)
#endif
#endif
/*
- * If the number of event IDs is changed in this array, BTA_AV_ NUM_RC_EVT_IDS also needs to be changed.
+ * If the number of event IDs is changed in this array, BTA_AV_ NUM_RC_EVT_IDS
+ * also needs to be changed.
*/
-const uint8_t bta_av_meta_caps_evt_ids[] = {
- AVRC_EVT_PLAY_STATUS_CHANGE,
- AVRC_EVT_TRACK_CHANGE,
- AVRC_EVT_PLAY_POS_CHANGED,
- AVRC_EVT_AVAL_PLAYERS_CHANGE,
- AVRC_EVT_ADDR_PLAYER_CHANGE,
- AVRC_EVT_UIDS_CHANGE,
+const uint8_t bta_av_meta_caps_evt_ids[] = {
+ AVRC_EVT_PLAY_STATUS_CHANGE, AVRC_EVT_TRACK_CHANGE,
+ AVRC_EVT_PLAY_POS_CHANGED, AVRC_EVT_AVAL_PLAYERS_CHANGE,
+ AVRC_EVT_ADDR_PLAYER_CHANGE, AVRC_EVT_UIDS_CHANGE,
AVRC_EVT_NOW_PLAYING_CHANGE,
/* TODO: Add support for these events
AVRC_EVT_APP_SETTING_CHANGE,
*/
};
#ifndef BTA_AV_NUM_RC_EVT_IDS
-#define BTA_AV_NUM_RC_EVT_IDS (sizeof(bta_av_meta_caps_evt_ids) / sizeof(bta_av_meta_caps_evt_ids[0]))
+#define BTA_AV_NUM_RC_EVT_IDS \
+ (sizeof(bta_av_meta_caps_evt_ids) / sizeof(bta_av_meta_caps_evt_ids[0]))
#endif /* BTA_AV_NUM_RC_EVT_IDS */
-const uint8_t bta_avk_meta_caps_evt_ids[] = {
+const uint8_t bta_avk_meta_caps_evt_ids[] = {
#if (AVRC_ADV_CTRL_INCLUDED == TRUE)
AVRC_EVT_VOLUME_CHANGE,
#endif
};
#ifndef BTA_AVK_NUM_RC_EVT_IDS
-#define BTA_AVK_NUM_RC_EVT_IDS (sizeof(bta_avk_meta_caps_evt_ids) / sizeof(bta_avk_meta_caps_evt_ids[0]))
+#define BTA_AVK_NUM_RC_EVT_IDS \
+ (sizeof(bta_avk_meta_caps_evt_ids) / sizeof(bta_avk_meta_caps_evt_ids[0]))
#endif /* BTA_AVK_NUM_RC_EVT_IDS */
-
/* the MTU for the AVRCP browsing channel */
#ifndef BTA_AV_MAX_RC_BR_MTU
-#define BTA_AV_MAX_RC_BR_MTU 1008
+#define BTA_AV_MAX_RC_BR_MTU 1008
#endif
/* This configuration to be used when we are Src + TG + CT( only for abs vol) */
-const tBTA_AV_CFG bta_av_cfg =
-{
- BTA_AV_RC_COMP_ID, /* AVRCP Company ID */
+const tBTA_AV_CFG bta_av_cfg = {
+ BTA_AV_RC_COMP_ID, /* AVRCP Company ID */
#if (AVRC_METADATA_INCLUDED == TRUE)
- 512, /* AVRCP MTU at L2CAP for control channel */
- BTA_AV_MAX_RC_BR_MTU, /* AVRCP MTU at L2CAP for browsing channel */
+ 512, /* AVRCP MTU at L2CAP for control channel */
+ BTA_AV_MAX_RC_BR_MTU, /* AVRCP MTU at L2CAP for browsing channel */
#else
- 48, /* AVRCP MTU at L2CAP for control channel */
- BTA_AV_MAX_RC_BR_MTU, /* AVRCP MTU at L2CAP for browsing channel */
+ 48, /* AVRCP MTU at L2CAP for control channel */
+ BTA_AV_MAX_RC_BR_MTU, /* AVRCP MTU at L2CAP for browsing channel */
#endif
- BTA_AV_RC_SUPF_CT, /* AVRCP controller categories */
- BTA_AV_RC_SUPF_TG, /* AVRCP target categories */
- 672, /* AVDTP signaling channel MTU at L2CAP */
- BTA_AV_MAX_A2DP_MTU, /* AVDTP audio transport channel MTU at L2CAP */
- bta_av_audio_flush_to, /* AVDTP audio transport channel flush timeout */
- 6, /* AVDTP audio channel max data queue size */
- BTA_AV_MAX_VDP_MTU, /* AVDTP video transport channel MTU at L2CAP */
- 600, /* AVDTP video transport channel flush timeout */
- false, /* true, to accept AVRC 1.3 group nevigation command */
- 2, /* company id count in p_meta_co_ids */
- BTA_AV_NUM_RC_EVT_IDS, /* event id count in p_meta_evt_ids */
- BTA_AV_RC_PASS_RSP_CODE,/* the default response code for pass through commands */
- bta_av_meta_caps_co_ids,/* the metadata Get Capabilities response for company id */
- bta_av_meta_caps_evt_ids,/* the the metadata Get Capabilities response for event id */
- NULL, /* the action function table for VDP stream */
- NULL, /* action function to register VDP */
- BTA_AV_RC_CT_NAME, /* Default AVRCP controller name */
- BTA_AV_RC_TG_NAME /* Default AVRCP target name */
+ BTA_AV_RC_SUPF_CT, /* AVRCP controller categories */
+ BTA_AV_RC_SUPF_TG, /* AVRCP target categories */
+ 672, /* AVDTP signaling channel MTU at L2CAP */
+ BTA_AV_MAX_A2DP_MTU, /* AVDTP audio transport channel MTU at L2CAP
+ */
+ bta_av_audio_flush_to, /* AVDTP audio transport channel flush
+ timeout */
+ 6, /* AVDTP audio channel max data queue size */
+ BTA_AV_MAX_VDP_MTU, /* AVDTP video transport channel MTU at L2CAP */
+ 600, /* AVDTP video transport channel flush timeout */
+ false, /* true, to accept AVRC 1.3 group nevigation command */
+ 2, /* company id count in p_meta_co_ids */
+ BTA_AV_NUM_RC_EVT_IDS, /* event id count in p_meta_evt_ids */
+ BTA_AV_RC_PASS_RSP_CODE, /* the default response code for pass
+ through commands */
+ bta_av_meta_caps_co_ids, /* the metadata Get Capabilities response
+ for company id */
+ bta_av_meta_caps_evt_ids, /* the the metadata Get Capabilities
+ response for event id */
+ NULL, /* the action function table for VDP stream */
+ NULL, /* action function to register VDP */
+ BTA_AV_RC_CT_NAME, /* Default AVRCP controller name */
+ BTA_AV_RC_TG_NAME /* Default AVRCP target name */
};
-/* This configuration to be used when we are Sink + CT + TG( only for abs vol) */
-const tBTA_AV_CFG bta_avk_cfg =
-{
- AVRC_CO_METADATA, /* AVRCP Company ID */
+/* This configuration to be used when we are Sink + CT + TG( only for abs vol)
+ */
+const tBTA_AV_CFG bta_avk_cfg = {
+ AVRC_CO_METADATA, /* AVRCP Company ID */
#if (AVRC_METADATA_INCLUDED == TRUE)
- 512, /* AVRCP MTU at L2CAP for control channel */
+ 512, /* AVRCP MTU at L2CAP for control channel */
#else
- 48, /* AVRCP MTU at L2CAP for control channel */
+ 48, /* AVRCP MTU at L2CAP for control channel */
#endif
- BTA_AV_MAX_RC_BR_MTU, /* AVRCP MTU at L2CAP for browsing channel */
- BTA_AVK_RC_SUPF_CT, /* AVRCP controller categories */
- BTA_AVK_RC_SUPF_TG, /* AVRCP target categories */
- 672, /* AVDTP signaling channel MTU at L2CAP */
- BTA_AV_MAX_A2DP_MTU, /* AVDTP audio transport channel MTU at L2CAP */
- bta_av_audio_flush_to, /* AVDTP audio transport channel flush timeout */
- 6, /* AVDTP audio channel max data queue size */
- BTA_AV_MAX_VDP_MTU, /* AVDTP video transport channel MTU at L2CAP */
- 600, /* AVDTP video transport channel flush timeout */
- false, /* true, to accept AVRC 1.3 group nevigation command */
- 2, /* company id count in p_meta_co_ids */
- BTA_AVK_NUM_RC_EVT_IDS, /* event id count in p_meta_evt_ids */
- BTA_AV_RC_PASS_RSP_CODE,/* the default response code for pass through commands */
- bta_av_meta_caps_co_ids,/* the metadata Get Capabilities response for company id */
- bta_avk_meta_caps_evt_ids,/* the the metadata Get Capabilities response for event id */
- NULL, /* the action function table for VDP stream */
- NULL, /* action function to register VDP */
- {0}, /* Default AVRCP controller name */
- {0}, /* Default AVRCP target name */
+ BTA_AV_MAX_RC_BR_MTU, /* AVRCP MTU at L2CAP for browsing channel */
+ BTA_AVK_RC_SUPF_CT, /* AVRCP controller categories */
+ BTA_AVK_RC_SUPF_TG, /* AVRCP target categories */
+ 672, /* AVDTP signaling channel MTU at L2CAP */
+ BTA_AV_MAX_A2DP_MTU, /* AVDTP audio transport channel MTU at L2CAP
+ */
+ bta_av_audio_flush_to, /* AVDTP audio transport channel flush
+ timeout */
+ 6, /* AVDTP audio channel max data queue size */
+ BTA_AV_MAX_VDP_MTU, /* AVDTP video transport channel MTU at L2CAP */
+ 600, /* AVDTP video transport channel flush timeout */
+ false, /* true, to accept AVRC 1.3 group nevigation command */
+ 2, /* company id count in p_meta_co_ids */
+ BTA_AVK_NUM_RC_EVT_IDS, /* event id count in p_meta_evt_ids */
+ BTA_AV_RC_PASS_RSP_CODE, /* the default response code for pass
+ through commands */
+ bta_av_meta_caps_co_ids, /* the metadata Get Capabilities response
+ for company id */
+ bta_avk_meta_caps_evt_ids, /* the the metadata Get Capabilities
+ response for event id */
+ NULL, /* the action function table for VDP stream */
+ NULL, /* action function to register VDP */
+ {0}, /* Default AVRCP controller name */
+ {0}, /* Default AVRCP target name */
};
-tBTA_AV_CFG *p_bta_av_cfg = NULL;
+tBTA_AV_CFG* p_bta_av_cfg = NULL;
-const uint16_t bta_av_rc_id[] =
-{
+const uint16_t bta_av_rc_id[] = {
0x0000, /* bit mask: 0=SELECT, 1=UP, 2=DOWN, 3=LEFT,
4=RIGHT, 5=RIGHT_UP, 6=RIGHT_DOWN, 7=LEFT_UP,
8=LEFT_DOWN, 9=ROOT_MENU, 10=SETUP_MENU, 11=CONT_MENU,
12=FAV_MENU, 13=EXIT */
- 0, /* not used */
+ 0, /* not used */
0x0000, /* bit mask: 0=0, 1=1, 2=2, 3=3,
4=4, 5=5, 6=6, 7=7,
@@ -201,52 +207,62 @@
4=INPUT_SEL, 5=DISP_INFO, 6=HELP, 7=PAGE_UP,
8=PAGE_DOWN */
- /* btui_app provides an example of how to leave the decision of rejecting a command or not
- * based on which media player is currently addressed (this is only applicable for AVRCP 1.4 or later)
- * If the decision is per player for a particular rc_id, the related bit is clear (not set)
- * bit mask: 0=POWER, 1=VOL_UP, 2=VOL_DOWN, 3=MUTE, 4=PLAY, 5=STOP,
- 6=PAUSE, 7=RECORD, 8=REWIND, 9=FAST_FOR, 10=EJECT, 11=FORWARD,
- 12=BACKWARD */
+/* btui_app provides an example of how to leave the decision of rejecting a
+ command or not
+ * based on which media player is currently addressed (this is only applicable
+ for AVRCP 1.4 or later)
+ * If the decision is per player for a particular rc_id, the related bit is
+ clear (not set)
+ * bit mask: 0=POWER, 1=VOL_UP, 2=VOL_DOWN, 3=MUTE, 4=PLAY, 5=STOP,
+ 6=PAUSE, 7=RECORD, 8=REWIND, 9=FAST_FOR, 10=EJECT, 11=FORWARD,
+ 12=BACKWARD */
#if (BTA_AV_RC_PASS_RSP_CODE == BTA_AV_RSP_INTERIM)
0x0070, /* PLAY | STOP | PAUSE */
-#else /* BTA_AV_RC_PASS_RSP_CODE != BTA_AV_RSP_INTERIM */
+#else /* BTA_AV_RC_PASS_RSP_CODE != BTA_AV_RSP_INTERIM */
#if (BTA_AVRCP_FF_RW_SUPPORT == TRUE)
- 0x1b7E, /* PLAY | STOP | PAUSE | FF | RW | VOL_UP | VOL_DOWN | MUTE | FW | BACK */
-#else /* BTA_AVRCP_FF_RW_SUPPORT == FALSE */
+ 0x1b7E, /* PLAY | STOP | PAUSE | FF | RW | VOL_UP | VOL_DOWN | MUTE | FW |
+ BACK */
+#else /* BTA_AVRCP_FF_RW_SUPPORT == FALSE */
0x187E, /* PLAY | STOP | PAUSE | VOL_UP | VOL_DOWN | MUTE | FW | BACK */
#endif /* BTA_AVRCP_FF_RW_SUPPORT */
#endif /* BTA_AV_RC_PASS_RSP_CODE */
0x0000, /* bit mask: 0=ANGLE, 1=SUBPICT */
- 0, /* not used */
+ 0, /* not used */
- 0x0000 /* bit mask: 0=not used, 1=F1, 2=F2, 3=F3,
- 4=F4, 5=F5 */
+ 0x0000 /* bit mask: 0=not used, 1=F1, 2=F2, 3=F3,
+ 4=F4, 5=F5 */
};
#if (BTA_AV_RC_PASS_RSP_CODE == BTA_AV_RSP_INTERIM)
-const uint16_t bta_av_rc_id_ac[] =
-{
+const uint16_t bta_av_rc_id_ac[] = {
0x0000, /* bit mask: 0=SELECT, 1=UP, 2=DOWN, 3=LEFT,
- 4=RIGHT, 5=RIGHT_UP, 6=RIGHT_DOWN, 7=LEFT_UP,
- 8=LEFT_DOWN, 9=ROOT_MENU, 10=SETUP_MENU, 11=CONT_MENU,
+ 4=RIGHT, 5=RIGHT_UP, 6=RIGHT_DOWN,
+ 7=LEFT_UP,
+ 8=LEFT_DOWN, 9=ROOT_MENU, 10=SETUP_MENU,
+ 11=CONT_MENU,
12=FAV_MENU, 13=EXIT */
- 0, /* not used */
+ 0, /* not used */
0x0000, /* bit mask: 0=0, 1=1, 2=2, 3=3,
4=4, 5=5, 6=6, 7=7,
8=8, 9=9, 10=DOT, 11=ENTER,
12=CLEAR */
- 0x0000, /* bit mask: 0=CHAN_UP, 1=CHAN_DOWN, 2=PREV_CHAN, 3=SOUND_SEL,
- 4=INPUT_SEL, 5=DISP_INFO, 6=HELP, 7=PAGE_UP,
+ 0x0000, /* bit mask: 0=CHAN_UP, 1=CHAN_DOWN, 2=PREV_CHAN,
+ 3=SOUND_SEL,
+ 4=INPUT_SEL, 5=DISP_INFO, 6=HELP,
+ 7=PAGE_UP,
8=PAGE_DOWN */
- /* btui_app provides an example of how to leave the decision of rejecting a command or not
- * based on which media player is currently addressed (this is only applicable for AVRCP 1.4 or later)
- * If the decision is per player for a particular rc_id, the related bit is set */
+ /* btui_app provides an example of how to leave the decision of
+ * rejecting a command or not
+ * based on which media player is currently addressed (this is
+ * only applicable for AVRCP 1.4 or later)
+ * If the decision is per player for a particular rc_id, the
+ * related bit is set */
0x1800, /* bit mask: 0=POWER, 1=VOL_UP, 2=VOL_DOWN, 3=MUTE,
4=PLAY, 5=STOP, 6=PAUSE, 7=RECORD,
8=REWIND, 9=FAST_FOR, 10=EJECT, 11=FORWARD,
@@ -254,14 +270,14 @@
0x0000, /* bit mask: 0=ANGLE, 1=SUBPICT */
- 0, /* not used */
+ 0, /* not used */
- 0x0000 /* bit mask: 0=not used, 1=F1, 2=F2, 3=F3,
- 4=F4, 5=F5 */
+ 0x0000 /* bit mask: 0=not used, 1=F1, 2=F2, 3=F3,
+ 4=F4, 5=F5 */
};
-uint16_t *p_bta_av_rc_id_ac = (uint16_t *) bta_av_rc_id_ac;
+uint16_t* p_bta_av_rc_id_ac = (uint16_t*)bta_av_rc_id_ac;
#else
-uint16_t *p_bta_av_rc_id_ac = NULL;
+uint16_t* p_bta_av_rc_id_ac = NULL;
#endif
-uint16_t *p_bta_av_rc_id = (uint16_t *) bta_av_rc_id;
+uint16_t* p_bta_av_rc_id = (uint16_t*)bta_av_rc_id;
diff --git a/bta/av/bta_av_ci.cc b/bta/av/bta_av_ci.cc
index 895351a..a215046 100644
--- a/bta/av/bta_av_ci.cc
+++ b/bta/av/bta_av_ci.cc
@@ -23,10 +23,10 @@
*
******************************************************************************/
-#include "bta_api.h"
-#include "bta_sys.h"
-#include "bta_av_int.h"
#include "bta_av_ci.h"
+#include "bta_api.h"
+#include "bta_av_int.h"
+#include "bta_sys.h"
#include <string.h>
@@ -41,14 +41,13 @@
* Returns void
*
******************************************************************************/
-void bta_av_ci_src_data_ready(tBTA_AV_CHNL chnl)
-{
- BT_HDR *p_buf = (BT_HDR *)osi_malloc(sizeof(BT_HDR));
+void bta_av_ci_src_data_ready(tBTA_AV_CHNL chnl) {
+ BT_HDR* p_buf = (BT_HDR*)osi_malloc(sizeof(BT_HDR));
- p_buf->layer_specific = chnl;
- p_buf->event = BTA_AV_CI_SRC_DATA_READY_EVT;
+ p_buf->layer_specific = chnl;
+ p_buf->event = BTA_AV_CI_SRC_DATA_READY_EVT;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -65,26 +64,26 @@
*
******************************************************************************/
void bta_av_ci_setconfig(tBTA_AV_HNDL hndl, uint8_t err_code, uint8_t category,
- uint8_t num_seid, uint8_t *p_seid, bool recfg_needed, uint8_t avdt_handle)
-{
- tBTA_AV_CI_SETCONFIG *p_buf =
- (tBTA_AV_CI_SETCONFIG *)osi_malloc(sizeof(tBTA_AV_CI_SETCONFIG));
+ uint8_t num_seid, uint8_t* p_seid, bool recfg_needed,
+ uint8_t avdt_handle) {
+ tBTA_AV_CI_SETCONFIG* p_buf =
+ (tBTA_AV_CI_SETCONFIG*)osi_malloc(sizeof(tBTA_AV_CI_SETCONFIG));
- p_buf->hdr.layer_specific = hndl;
- p_buf->hdr.event = (err_code == A2DP_SUCCESS) ?
- BTA_AV_CI_SETCONFIG_OK_EVT : BTA_AV_CI_SETCONFIG_FAIL_EVT;
- p_buf->err_code = err_code;
- p_buf->category = category;
- p_buf->recfg_needed = recfg_needed;
- p_buf->num_seid = num_seid;
- p_buf->avdt_handle= avdt_handle;
- if (p_seid && num_seid) {
- p_buf->p_seid = (uint8_t *)(p_buf + 1);
- memcpy(p_buf->p_seid, p_seid, num_seid);
- } else {
- p_buf->p_seid = NULL;
- p_buf->num_seid = 0;
- }
+ p_buf->hdr.layer_specific = hndl;
+ p_buf->hdr.event = (err_code == A2DP_SUCCESS) ? BTA_AV_CI_SETCONFIG_OK_EVT
+ : BTA_AV_CI_SETCONFIG_FAIL_EVT;
+ p_buf->err_code = err_code;
+ p_buf->category = category;
+ p_buf->recfg_needed = recfg_needed;
+ p_buf->num_seid = num_seid;
+ p_buf->avdt_handle = avdt_handle;
+ if (p_seid && num_seid) {
+ p_buf->p_seid = (uint8_t*)(p_buf + 1);
+ memcpy(p_buf->p_seid, p_seid, num_seid);
+ } else {
+ p_buf->p_seid = NULL;
+ p_buf->num_seid = 0;
+ }
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
diff --git a/bta/av/bta_av_int.h b/bta/av/bta_av_int.h
index 96b3c00..4d4a592 100644
--- a/bta/av/bta_av_int.h
+++ b/bta/av/bta_av_int.h
@@ -24,12 +24,12 @@
#ifndef BTA_AV_INT_H
#define BTA_AV_INT_H
-#include "osi/include/list.h"
-#include "bta_sys.h"
+#include "avdt_api.h"
#include "bta_api.h"
#include "bta_av_api.h"
-#include "avdt_api.h"
#include "bta_av_co.h"
+#include "bta_sys.h"
+#include "osi/include/list.h"
#include "stack/include/a2dp_api.h"
#define BTA_AV_DEBUG TRUE
@@ -37,556 +37,532 @@
* Constants
****************************************************************************/
-enum
-{
- /* these events are handled by the AV main state machine */
- BTA_AV_API_DISABLE_EVT = BTA_SYS_EVT_START(BTA_ID_AV),
- BTA_AV_API_REMOTE_CMD_EVT,
- BTA_AV_API_VENDOR_CMD_EVT,
- BTA_AV_API_VENDOR_RSP_EVT,
- BTA_AV_API_META_RSP_EVT,
- BTA_AV_API_RC_CLOSE_EVT,
- BTA_AV_AVRC_OPEN_EVT,
- BTA_AV_AVRC_MSG_EVT,
- BTA_AV_AVRC_NONE_EVT,
+enum {
+ /* these events are handled by the AV main state machine */
+ BTA_AV_API_DISABLE_EVT = BTA_SYS_EVT_START(BTA_ID_AV),
+ BTA_AV_API_REMOTE_CMD_EVT,
+ BTA_AV_API_VENDOR_CMD_EVT,
+ BTA_AV_API_VENDOR_RSP_EVT,
+ BTA_AV_API_META_RSP_EVT,
+ BTA_AV_API_RC_CLOSE_EVT,
+ BTA_AV_AVRC_OPEN_EVT,
+ BTA_AV_AVRC_MSG_EVT,
+ BTA_AV_AVRC_NONE_EVT,
- /* these events are handled by the AV stream state machine */
- BTA_AV_API_OPEN_EVT,
- BTA_AV_API_CLOSE_EVT,
- BTA_AV_AP_START_EVT, /* the following 2 events must be in the same order as the *API_*EVT */
- BTA_AV_AP_STOP_EVT,
- BTA_AV_API_RECONFIG_EVT,
- BTA_AV_API_PROTECT_REQ_EVT,
- BTA_AV_API_PROTECT_RSP_EVT,
- BTA_AV_API_RC_OPEN_EVT,
- BTA_AV_SRC_DATA_READY_EVT,
- BTA_AV_CI_SETCONFIG_OK_EVT,
- BTA_AV_CI_SETCONFIG_FAIL_EVT,
- BTA_AV_SDP_DISC_OK_EVT,
- BTA_AV_SDP_DISC_FAIL_EVT,
- BTA_AV_STR_DISC_OK_EVT,
- BTA_AV_STR_DISC_FAIL_EVT,
- BTA_AV_STR_GETCAP_OK_EVT,
- BTA_AV_STR_GETCAP_FAIL_EVT,
- BTA_AV_STR_OPEN_OK_EVT,
- BTA_AV_STR_OPEN_FAIL_EVT,
- BTA_AV_STR_START_OK_EVT,
- BTA_AV_STR_START_FAIL_EVT,
- BTA_AV_STR_CLOSE_EVT,
- BTA_AV_STR_CONFIG_IND_EVT,
- BTA_AV_STR_SECURITY_IND_EVT,
- BTA_AV_STR_SECURITY_CFM_EVT,
- BTA_AV_STR_WRITE_CFM_EVT,
- BTA_AV_STR_SUSPEND_CFM_EVT,
- BTA_AV_STR_RECONFIG_CFM_EVT,
- BTA_AV_AVRC_TIMER_EVT,
- BTA_AV_AVDT_CONNECT_EVT,
- BTA_AV_AVDT_DISCONNECT_EVT,
- BTA_AV_ROLE_CHANGE_EVT,
- BTA_AV_AVDT_DELAY_RPT_EVT,
- BTA_AV_ACP_CONNECT_EVT,
- BTA_AV_API_OFFLOAD_START_EVT,
- BTA_AV_API_OFFLOAD_START_RSP_EVT,
+ /* these events are handled by the AV stream state machine */
+ BTA_AV_API_OPEN_EVT,
+ BTA_AV_API_CLOSE_EVT,
+ BTA_AV_AP_START_EVT, /* the following 2 events must be in the same order as
+ the *API_*EVT */
+ BTA_AV_AP_STOP_EVT,
+ BTA_AV_API_RECONFIG_EVT,
+ BTA_AV_API_PROTECT_REQ_EVT,
+ BTA_AV_API_PROTECT_RSP_EVT,
+ BTA_AV_API_RC_OPEN_EVT,
+ BTA_AV_SRC_DATA_READY_EVT,
+ BTA_AV_CI_SETCONFIG_OK_EVT,
+ BTA_AV_CI_SETCONFIG_FAIL_EVT,
+ BTA_AV_SDP_DISC_OK_EVT,
+ BTA_AV_SDP_DISC_FAIL_EVT,
+ BTA_AV_STR_DISC_OK_EVT,
+ BTA_AV_STR_DISC_FAIL_EVT,
+ BTA_AV_STR_GETCAP_OK_EVT,
+ BTA_AV_STR_GETCAP_FAIL_EVT,
+ BTA_AV_STR_OPEN_OK_EVT,
+ BTA_AV_STR_OPEN_FAIL_EVT,
+ BTA_AV_STR_START_OK_EVT,
+ BTA_AV_STR_START_FAIL_EVT,
+ BTA_AV_STR_CLOSE_EVT,
+ BTA_AV_STR_CONFIG_IND_EVT,
+ BTA_AV_STR_SECURITY_IND_EVT,
+ BTA_AV_STR_SECURITY_CFM_EVT,
+ BTA_AV_STR_WRITE_CFM_EVT,
+ BTA_AV_STR_SUSPEND_CFM_EVT,
+ BTA_AV_STR_RECONFIG_CFM_EVT,
+ BTA_AV_AVRC_TIMER_EVT,
+ BTA_AV_AVDT_CONNECT_EVT,
+ BTA_AV_AVDT_DISCONNECT_EVT,
+ BTA_AV_ROLE_CHANGE_EVT,
+ BTA_AV_AVDT_DELAY_RPT_EVT,
+ BTA_AV_ACP_CONNECT_EVT,
+ BTA_AV_API_OFFLOAD_START_EVT,
+ BTA_AV_API_OFFLOAD_START_RSP_EVT,
- /* these events are handled outside of the state machine */
- BTA_AV_API_ENABLE_EVT,
- BTA_AV_API_REGISTER_EVT,
- BTA_AV_API_DEREGISTER_EVT,
- BTA_AV_API_DISCONNECT_EVT,
- BTA_AV_CI_SRC_DATA_READY_EVT,
- BTA_AV_SIG_CHG_EVT,
- BTA_AV_SIGNALLING_TIMER_EVT,
- BTA_AV_SDP_AVRC_DISC_EVT,
- BTA_AV_AVRC_CLOSE_EVT,
- BTA_AV_AVRC_BROWSE_OPEN_EVT,
- BTA_AV_AVRC_BROWSE_CLOSE_EVT,
- BTA_AV_CONN_CHG_EVT,
- BTA_AV_DEREG_COMP_EVT,
+ /* these events are handled outside of the state machine */
+ BTA_AV_API_ENABLE_EVT,
+ BTA_AV_API_REGISTER_EVT,
+ BTA_AV_API_DEREGISTER_EVT,
+ BTA_AV_API_DISCONNECT_EVT,
+ BTA_AV_CI_SRC_DATA_READY_EVT,
+ BTA_AV_SIG_CHG_EVT,
+ BTA_AV_SIGNALLING_TIMER_EVT,
+ BTA_AV_SDP_AVRC_DISC_EVT,
+ BTA_AV_AVRC_CLOSE_EVT,
+ BTA_AV_AVRC_BROWSE_OPEN_EVT,
+ BTA_AV_AVRC_BROWSE_CLOSE_EVT,
+ BTA_AV_CONN_CHG_EVT,
+ BTA_AV_DEREG_COMP_EVT,
#if (AVDT_REPORTING == TRUE)
- BTA_AV_AVDT_RPT_CONN_EVT,
+ BTA_AV_AVDT_RPT_CONN_EVT,
#endif
- BTA_AV_API_START_EVT, /* the following 2 events must be in the same order as the *AP_*EVT */
- BTA_AV_API_STOP_EVT
+ BTA_AV_API_START_EVT, /* the following 2 events must be in the same order as
+ the *AP_*EVT */
+ BTA_AV_API_STOP_EVT
};
/* events for AV control block state machine */
-#define BTA_AV_FIRST_SM_EVT BTA_AV_API_DISABLE_EVT
-#define BTA_AV_LAST_SM_EVT BTA_AV_AVRC_NONE_EVT
+#define BTA_AV_FIRST_SM_EVT BTA_AV_API_DISABLE_EVT
+#define BTA_AV_LAST_SM_EVT BTA_AV_AVRC_NONE_EVT
/* events for AV stream control block state machine */
-#define BTA_AV_FIRST_SSM_EVT BTA_AV_API_OPEN_EVT
+#define BTA_AV_FIRST_SSM_EVT BTA_AV_API_OPEN_EVT
/* events that do not go through state machine */
-#define BTA_AV_FIRST_NSM_EVT BTA_AV_API_ENABLE_EVT
-#define BTA_AV_LAST_NSM_EVT BTA_AV_API_STOP_EVT
+#define BTA_AV_FIRST_NSM_EVT BTA_AV_API_ENABLE_EVT
+#define BTA_AV_LAST_NSM_EVT BTA_AV_API_STOP_EVT
/* API events passed to both SSMs (by bta_av_api_to_ssm) */
-#define BTA_AV_FIRST_A2S_API_EVT BTA_AV_API_START_EVT
-#define BTA_AV_FIRST_A2S_SSM_EVT BTA_AV_AP_START_EVT
+#define BTA_AV_FIRST_A2S_API_EVT BTA_AV_API_START_EVT
+#define BTA_AV_FIRST_A2S_SSM_EVT BTA_AV_AP_START_EVT
-#define BTA_AV_LAST_EVT BTA_AV_API_STOP_EVT
+#define BTA_AV_LAST_EVT BTA_AV_API_STOP_EVT
/* maximum number of SEPS in stream discovery results */
-#define BTA_AV_NUM_SEPS 32
+#define BTA_AV_NUM_SEPS 32
/* initialization value for AVRC handle */
-#define BTA_AV_RC_HANDLE_NONE 0xFF
+#define BTA_AV_RC_HANDLE_NONE 0xFF
/* size of database for service discovery */
-#define BTA_AV_DISC_BUF_SIZE 1000
+#define BTA_AV_DISC_BUF_SIZE 1000
/* maximum length of AVDTP security data */
-#define BTA_AV_SECURITY_MAX_LEN 400
+#define BTA_AV_SECURITY_MAX_LEN 400
-/* check number of buffers queued at L2CAP when this amount of buffers are queued to L2CAP */
-#define BTA_AV_QUEUE_DATA_CHK_NUM L2CAP_HIGH_PRI_MIN_XMIT_QUOTA
+/* check number of buffers queued at L2CAP when this amount of buffers are
+ * queued to L2CAP */
+#define BTA_AV_QUEUE_DATA_CHK_NUM L2CAP_HIGH_PRI_MIN_XMIT_QUOTA
/* the number of ACL links with AVDT */
-#define BTA_AV_NUM_LINKS AVDT_NUM_LINKS
+#define BTA_AV_NUM_LINKS AVDT_NUM_LINKS
-#define BTA_AV_BE_STREAM_TO_CO_ID(u32, p) {(u32) = (((uint32_t)(*((p) + 2))) + (((uint32_t)(*((p) + 1))) << 8) + (((uint32_t)(*(p))) << 16)); (p) += 3;}
-
-
+#define BTA_AV_BE_STREAM_TO_CO_ID(u32, p) \
+ { \
+ (u32) = (((uint32_t)(*((p) + 2))) + (((uint32_t)(*((p) + 1))) << 8) + \
+ (((uint32_t)(*(p))) << 16)); \
+ (p) += 3; \
+ }
/*****************************************************************************
* Data types
****************************************************************************/
/* function types for call-out functions */
-typedef bool (*tBTA_AV_CO_INIT) (tA2DP_CODEC_SEP_INDEX codec_sep_index,
- tAVDT_CFG *p_cfg);
-typedef void (*tBTA_AV_CO_DISC_RES) (tBTA_AV_HNDL hndl, uint8_t num_seps,
- uint8_t num_snk, uint8_t num_src,
- BD_ADDR addr, uint16_t uuid_local);
-typedef tA2DP_STATUS (*tBTA_AV_CO_GETCFG) (tBTA_AV_HNDL hndl,
- uint8_t *p_codec_info,
- uint8_t *p_sep_info_idx,
- uint8_t seid,
- uint8_t *p_num_protect,
- uint8_t *p_protect_info);
-typedef void (*tBTA_AV_CO_SETCFG) (tBTA_AV_HNDL hndl,
- const uint8_t *p_codec_info, uint8_t seid,
- BD_ADDR addr, uint8_t num_protect,
- uint8_t *p_protect_info,
- uint8_t t_local_sep, uint8_t avdt_handle);
-typedef void (*tBTA_AV_CO_OPEN) (tBTA_AV_HNDL hndl, uint8_t *p_codec_info,
- uint16_t mtu);
-typedef void (*tBTA_AV_CO_CLOSE) (tBTA_AV_HNDL hndl, uint16_t mtu);
-typedef void (*tBTA_AV_CO_START) (tBTA_AV_HNDL hndl, uint8_t *p_codec_info,
- bool *p_no_rtp_hdr);
-typedef void (*tBTA_AV_CO_STOP) (tBTA_AV_HNDL hndl);
-typedef void * (*tBTA_AV_CO_DATAPATH) (const uint8_t *p_codec_info,
- uint32_t *p_timestamp);
-typedef void (*tBTA_AV_CO_DELAY) (tBTA_AV_HNDL hndl, uint16_t delay);
+typedef bool (*tBTA_AV_CO_INIT)(tA2DP_CODEC_SEP_INDEX codec_sep_index,
+ tAVDT_CFG* p_cfg);
+typedef void (*tBTA_AV_CO_DISC_RES)(tBTA_AV_HNDL hndl, uint8_t num_seps,
+ uint8_t num_snk, uint8_t num_src,
+ BD_ADDR addr, uint16_t uuid_local);
+typedef tA2DP_STATUS (*tBTA_AV_CO_GETCFG)(tBTA_AV_HNDL hndl,
+ uint8_t* p_codec_info,
+ uint8_t* p_sep_info_idx, uint8_t seid,
+ uint8_t* p_num_protect,
+ uint8_t* p_protect_info);
+typedef void (*tBTA_AV_CO_SETCFG)(tBTA_AV_HNDL hndl,
+ const uint8_t* p_codec_info, uint8_t seid,
+ BD_ADDR addr, uint8_t num_protect,
+ uint8_t* p_protect_info, uint8_t t_local_sep,
+ uint8_t avdt_handle);
+typedef void (*tBTA_AV_CO_OPEN)(tBTA_AV_HNDL hndl, uint8_t* p_codec_info,
+ uint16_t mtu);
+typedef void (*tBTA_AV_CO_CLOSE)(tBTA_AV_HNDL hndl, uint16_t mtu);
+typedef void (*tBTA_AV_CO_START)(tBTA_AV_HNDL hndl, uint8_t* p_codec_info,
+ bool* p_no_rtp_hdr);
+typedef void (*tBTA_AV_CO_STOP)(tBTA_AV_HNDL hndl);
+typedef void* (*tBTA_AV_CO_DATAPATH)(const uint8_t* p_codec_info,
+ uint32_t* p_timestamp);
+typedef void (*tBTA_AV_CO_DELAY)(tBTA_AV_HNDL hndl, uint16_t delay);
/* the call-out functions for one stream */
-typedef struct
-{
- tBTA_AV_CO_INIT init;
- tBTA_AV_CO_DISC_RES disc_res;
- tBTA_AV_CO_GETCFG getcfg;
- tBTA_AV_CO_SETCFG setcfg;
- tBTA_AV_CO_OPEN open;
- tBTA_AV_CO_CLOSE close;
- tBTA_AV_CO_START start;
- tBTA_AV_CO_STOP stop;
- tBTA_AV_CO_DATAPATH data;
- tBTA_AV_CO_DELAY delay;
+typedef struct {
+ tBTA_AV_CO_INIT init;
+ tBTA_AV_CO_DISC_RES disc_res;
+ tBTA_AV_CO_GETCFG getcfg;
+ tBTA_AV_CO_SETCFG setcfg;
+ tBTA_AV_CO_OPEN open;
+ tBTA_AV_CO_CLOSE close;
+ tBTA_AV_CO_START start;
+ tBTA_AV_CO_STOP stop;
+ tBTA_AV_CO_DATAPATH data;
+ tBTA_AV_CO_DELAY delay;
} tBTA_AV_CO_FUNCTS;
/* data type for BTA_AV_API_ENABLE_EVT */
-typedef struct
-{
- BT_HDR hdr;
- tBTA_AV_CBACK *p_cback;
- tBTA_AV_FEAT features;
- tBTA_SEC sec_mask;
+typedef struct {
+ BT_HDR hdr;
+ tBTA_AV_CBACK* p_cback;
+ tBTA_AV_FEAT features;
+ tBTA_SEC sec_mask;
} tBTA_AV_API_ENABLE;
/* data type for BTA_AV_API_REGISTER_EVT */
-typedef struct
-{
- BT_HDR hdr;
- char p_service_name[BTA_SERVICE_NAME_LEN+1];
- uint8_t app_id;
- tBTA_AV_SINK_DATA_CBACK *p_app_sink_data_cback;
- uint16_t service_uuid;
+typedef struct {
+ BT_HDR hdr;
+ char p_service_name[BTA_SERVICE_NAME_LEN + 1];
+ uint8_t app_id;
+ tBTA_AV_SINK_DATA_CBACK* p_app_sink_data_cback;
+ uint16_t service_uuid;
} tBTA_AV_API_REG;
-
-enum
-{
- BTA_AV_RS_NONE, /* straight API call */
- BTA_AV_RS_OK, /* the role switch result - successful */
- BTA_AV_RS_FAIL, /* the role switch result - failed */
- BTA_AV_RS_DONE /* the role switch is done - continue */
+enum {
+ BTA_AV_RS_NONE, /* straight API call */
+ BTA_AV_RS_OK, /* the role switch result - successful */
+ BTA_AV_RS_FAIL, /* the role switch result - failed */
+ BTA_AV_RS_DONE /* the role switch is done - continue */
};
typedef uint8_t tBTA_AV_RS_RES;
/* data type for BTA_AV_API_OPEN_EVT */
-typedef struct
-{
- BT_HDR hdr;
- BD_ADDR bd_addr;
- bool use_rc;
- tBTA_SEC sec_mask;
- tBTA_AV_RS_RES switch_res;
- uint16_t uuid; /* uuid of initiator */
+typedef struct {
+ BT_HDR hdr;
+ BD_ADDR bd_addr;
+ bool use_rc;
+ tBTA_SEC sec_mask;
+ tBTA_AV_RS_RES switch_res;
+ uint16_t uuid; /* uuid of initiator */
} tBTA_AV_API_OPEN;
/* data type for BTA_AV_API_STOP_EVT */
-typedef struct
-{
- BT_HDR hdr;
- bool suspend;
- bool flush;
+typedef struct {
+ BT_HDR hdr;
+ bool suspend;
+ bool flush;
} tBTA_AV_API_STOP;
/* data type for BTA_AV_API_DISCONNECT_EVT */
-typedef struct
-{
- BT_HDR hdr;
- BD_ADDR bd_addr;
+typedef struct {
+ BT_HDR hdr;
+ BD_ADDR bd_addr;
} tBTA_AV_API_DISCNT;
/* data type for BTA_AV_API_PROTECT_REQ_EVT */
-typedef struct
-{
- BT_HDR hdr;
- uint8_t *p_data;
- uint16_t len;
+typedef struct {
+ BT_HDR hdr;
+ uint8_t* p_data;
+ uint16_t len;
} tBTA_AV_API_PROTECT_REQ;
/* data type for BTA_AV_API_PROTECT_RSP_EVT */
-typedef struct
-{
- BT_HDR hdr;
- uint8_t *p_data;
- uint16_t len;
- uint8_t error_code;
+typedef struct {
+ BT_HDR hdr;
+ uint8_t* p_data;
+ uint16_t len;
+ uint8_t error_code;
} tBTA_AV_API_PROTECT_RSP;
/* data type for BTA_AV_API_REMOTE_CMD_EVT */
-typedef struct
-{
- BT_HDR hdr;
- tAVRC_MSG_PASS msg;
- uint8_t label;
+typedef struct {
+ BT_HDR hdr;
+ tAVRC_MSG_PASS msg;
+ uint8_t label;
} tBTA_AV_API_REMOTE_CMD;
/* data type for BTA_AV_API_VENDOR_CMD_EVT and RSP */
-typedef struct
-{
- BT_HDR hdr;
- tAVRC_MSG_VENDOR msg;
- uint8_t label;
+typedef struct {
+ BT_HDR hdr;
+ tAVRC_MSG_VENDOR msg;
+ uint8_t label;
} tBTA_AV_API_VENDOR;
/* data type for BTA_AV_API_RC_OPEN_EVT */
-typedef struct
-{
- BT_HDR hdr;
-} tBTA_AV_API_OPEN_RC;
+typedef struct { BT_HDR hdr; } tBTA_AV_API_OPEN_RC;
/* data type for BTA_AV_API_RC_CLOSE_EVT */
-typedef struct
-{
- BT_HDR hdr;
-} tBTA_AV_API_CLOSE_RC;
+typedef struct { BT_HDR hdr; } tBTA_AV_API_CLOSE_RC;
/* data type for BTA_AV_API_META_RSP_EVT */
-typedef struct
-{
- BT_HDR hdr;
- bool is_rsp;
- uint8_t label;
- tBTA_AV_CODE rsp_code;
- BT_HDR *p_pkt;
+typedef struct {
+ BT_HDR hdr;
+ bool is_rsp;
+ uint8_t label;
+ tBTA_AV_CODE rsp_code;
+ BT_HDR* p_pkt;
} tBTA_AV_API_META_RSP;
-
/* data type for BTA_AV_API_RECONFIG_EVT */
-typedef struct
-{
- BT_HDR hdr;
- uint8_t codec_info[AVDT_CODEC_SIZE]; /* codec configuration */
- uint8_t *p_protect_info;
- uint8_t num_protect;
- bool suspend;
- uint8_t sep_info_idx;
+typedef struct {
+ BT_HDR hdr;
+ uint8_t codec_info[AVDT_CODEC_SIZE]; /* codec configuration */
+ uint8_t* p_protect_info;
+ uint8_t num_protect;
+ bool suspend;
+ uint8_t sep_info_idx;
} tBTA_AV_API_RCFG;
/* data type for BTA_AV_CI_SETCONFIG_OK_EVT and BTA_AV_CI_SETCONFIG_FAIL_EVT */
-typedef struct
-{
- BT_HDR hdr;
- tBTA_AV_HNDL hndl;
- uint8_t err_code;
- uint8_t category;
- uint8_t num_seid;
- uint8_t *p_seid;
- bool recfg_needed;
- uint8_t avdt_handle; /* local sep type for which this stream will be set up */
+typedef struct {
+ BT_HDR hdr;
+ tBTA_AV_HNDL hndl;
+ uint8_t err_code;
+ uint8_t category;
+ uint8_t num_seid;
+ uint8_t* p_seid;
+ bool recfg_needed;
+ uint8_t avdt_handle; /* local sep type for which this stream will be set up */
} tBTA_AV_CI_SETCONFIG;
/* data type for all stream events from AVDTP */
typedef struct {
- BT_HDR hdr;
- tAVDT_CFG cfg; /* configuration/capabilities parameters */
- tAVDT_CTRL msg; /* AVDTP callback message parameters */
- BD_ADDR bd_addr; /* bd address */
- uint8_t handle;
- uint8_t avdt_event;
- bool initiator; /* true, if local device initiates the SUSPEND */
+ BT_HDR hdr;
+ tAVDT_CFG cfg; /* configuration/capabilities parameters */
+ tAVDT_CTRL msg; /* AVDTP callback message parameters */
+ BD_ADDR bd_addr; /* bd address */
+ uint8_t handle;
+ uint8_t avdt_event;
+ bool initiator; /* true, if local device initiates the SUSPEND */
} tBTA_AV_STR_MSG;
/* data type for BTA_AV_AVRC_MSG_EVT */
-typedef struct
-{
- BT_HDR hdr;
- tAVRC_MSG msg;
- uint8_t handle;
- uint8_t label;
- uint8_t opcode;
+typedef struct {
+ BT_HDR hdr;
+ tAVRC_MSG msg;
+ uint8_t handle;
+ uint8_t label;
+ uint8_t opcode;
} tBTA_AV_RC_MSG;
/* data type for BTA_AV_AVRC_OPEN_EVT, BTA_AV_AVRC_CLOSE_EVT */
-typedef struct
-{
- BT_HDR hdr;
- BD_ADDR peer_addr;
- uint8_t handle;
+typedef struct {
+ BT_HDR hdr;
+ BD_ADDR peer_addr;
+ uint8_t handle;
} tBTA_AV_RC_CONN_CHG;
/* data type for BTA_AV_CONN_CHG_EVT */
-typedef struct
-{
- BT_HDR hdr;
- BD_ADDR peer_addr;
- bool is_up;
+typedef struct {
+ BT_HDR hdr;
+ BD_ADDR peer_addr;
+ bool is_up;
} tBTA_AV_CONN_CHG;
/* data type for BTA_AV_ROLE_CHANGE_EVT */
-typedef struct
-{
- BT_HDR hdr;
- uint8_t new_role;
- uint8_t hci_status;
+typedef struct {
+ BT_HDR hdr;
+ uint8_t new_role;
+ uint8_t hci_status;
} tBTA_AV_ROLE_RES;
/* data type for BTA_AV_SDP_DISC_OK_EVT */
-typedef struct
-{
- BT_HDR hdr;
- uint16_t avdt_version; /* AVDTP protocol version */
+typedef struct {
+ BT_HDR hdr;
+ uint16_t avdt_version; /* AVDTP protocol version */
} tBTA_AV_SDP_RES;
/* data type for BTA_AV_API_OFFLOAD_RSP_EVT */
-typedef struct
-{
- BT_HDR hdr;
- tBTA_AV_STATUS status;
+typedef struct {
+ BT_HDR hdr;
+ tBTA_AV_STATUS status;
} tBTA_AV_API_STATUS_RSP;
-
/* type for SEP control block */
-typedef struct
-{
- uint8_t av_handle; /* AVDTP handle */
- uint8_t tsep; /* SEP type of local SEP */
- uint8_t codec_info[AVDT_CODEC_SIZE]; /* Codec info */
- tBTA_AV_SINK_DATA_CBACK *p_app_sink_data_cback; /* Sink application callback for media packets */
+typedef struct {
+ uint8_t av_handle; /* AVDTP handle */
+ uint8_t tsep; /* SEP type of local SEP */
+ uint8_t codec_info[AVDT_CODEC_SIZE]; /* Codec info */
+ tBTA_AV_SINK_DATA_CBACK*
+ p_app_sink_data_cback; /* Sink application callback for media packets */
} tBTA_AV_SEP;
-
/* initiator/acceptor role for adaption */
-#define BTA_AV_ROLE_AD_INT 0x00 /* initiator */
-#define BTA_AV_ROLE_AD_ACP 0x01 /* acceptor */
+#define BTA_AV_ROLE_AD_INT 0x00 /* initiator */
+#define BTA_AV_ROLE_AD_ACP 0x01 /* acceptor */
/* initiator/acceptor signaling roles */
-#define BTA_AV_ROLE_START_ACP 0x00
-#define BTA_AV_ROLE_START_INT 0x10 /* do not change this value */
+#define BTA_AV_ROLE_START_ACP 0x00
+#define BTA_AV_ROLE_START_INT 0x10 /* do not change this value */
-#define BTA_AV_ROLE_SUSPEND 0x20 /* suspending on start */
-#define BTA_AV_ROLE_SUSPEND_OPT 0x40 /* Suspend on Start option is set */
+#define BTA_AV_ROLE_SUSPEND 0x20 /* suspending on start */
+#define BTA_AV_ROLE_SUSPEND_OPT 0x40 /* Suspend on Start option is set */
/* union of all event datatypes */
-typedef union
-{
- BT_HDR hdr;
- tBTA_AV_API_ENABLE api_enable;
- tBTA_AV_API_REG api_reg;
- tBTA_AV_API_OPEN api_open;
- tBTA_AV_API_STOP api_stop;
- tBTA_AV_API_DISCNT api_discnt;
- tBTA_AV_API_PROTECT_REQ api_protect_req;
- tBTA_AV_API_PROTECT_RSP api_protect_rsp;
- tBTA_AV_API_REMOTE_CMD api_remote_cmd;
- tBTA_AV_API_VENDOR api_vendor;
- tBTA_AV_API_RCFG api_reconfig;
- tBTA_AV_CI_SETCONFIG ci_setconfig;
- tBTA_AV_STR_MSG str_msg;
- tBTA_AV_RC_MSG rc_msg;
- tBTA_AV_RC_CONN_CHG rc_conn_chg;
- tBTA_AV_CONN_CHG conn_chg;
- tBTA_AV_ROLE_RES role_res;
- tBTA_AV_SDP_RES sdp_res;
- tBTA_AV_API_META_RSP api_meta_rsp;
- tBTA_AV_API_STATUS_RSP api_status_rsp;
+typedef union {
+ BT_HDR hdr;
+ tBTA_AV_API_ENABLE api_enable;
+ tBTA_AV_API_REG api_reg;
+ tBTA_AV_API_OPEN api_open;
+ tBTA_AV_API_STOP api_stop;
+ tBTA_AV_API_DISCNT api_discnt;
+ tBTA_AV_API_PROTECT_REQ api_protect_req;
+ tBTA_AV_API_PROTECT_RSP api_protect_rsp;
+ tBTA_AV_API_REMOTE_CMD api_remote_cmd;
+ tBTA_AV_API_VENDOR api_vendor;
+ tBTA_AV_API_RCFG api_reconfig;
+ tBTA_AV_CI_SETCONFIG ci_setconfig;
+ tBTA_AV_STR_MSG str_msg;
+ tBTA_AV_RC_MSG rc_msg;
+ tBTA_AV_RC_CONN_CHG rc_conn_chg;
+ tBTA_AV_CONN_CHG conn_chg;
+ tBTA_AV_ROLE_RES role_res;
+ tBTA_AV_SDP_RES sdp_res;
+ tBTA_AV_API_META_RSP api_meta_rsp;
+ tBTA_AV_API_STATUS_RSP api_status_rsp;
} tBTA_AV_DATA;
-typedef union
-{
- tBTA_AV_API_OPEN open; /* used only before open and role switch
- is needed on another AV channel */
+typedef union {
+ tBTA_AV_API_OPEN open; /* used only before open and role switch
+ is needed on another AV channel */
} tBTA_AV_Q_INFO;
-#define BTA_AV_Q_TAG_OPEN 0x01 /* after API_OPEN, before STR_OPENED */
-#define BTA_AV_Q_TAG_START 0x02 /* before start sending media packets */
-#define BTA_AV_Q_TAG_STREAM 0x03 /* during streaming */
+#define BTA_AV_Q_TAG_OPEN 0x01 /* after API_OPEN, before STR_OPENED */
+#define BTA_AV_Q_TAG_START 0x02 /* before start sending media packets */
+#define BTA_AV_Q_TAG_STREAM 0x03 /* during streaming */
-#define BTA_AV_WAIT_ACP_CAPS_ON 0x01 /* retriving the peer capabilities */
-#define BTA_AV_WAIT_ACP_CAPS_STARTED 0x02 /* started while retriving peer capabilities */
-#define BTA_AV_WAIT_ROLE_SW_RES_OPEN 0x04 /* waiting for role switch result after API_OPEN, before STR_OPENED */
-#define BTA_AV_WAIT_ROLE_SW_RES_START 0x08 /* waiting for role switch result before streaming */
-#define BTA_AV_WAIT_ROLE_SW_STARTED 0x10 /* started while waiting for role switch result */
-#define BTA_AV_WAIT_ROLE_SW_RETRY 0x20 /* set when retry on timeout */
-#define BTA_AV_WAIT_CHECK_RC 0x40 /* set when the timer is used by role switch */
-#define BTA_AV_WAIT_ROLE_SW_FAILED 0x80 /* role switch failed */
+#define BTA_AV_WAIT_ACP_CAPS_ON 0x01 /* retriving the peer capabilities */
+#define BTA_AV_WAIT_ACP_CAPS_STARTED \
+ 0x02 /* started while retriving peer capabilities */
+#define BTA_AV_WAIT_ROLE_SW_RES_OPEN \
+ 0x04 /* waiting for role switch result after API_OPEN, before STR_OPENED */
+#define BTA_AV_WAIT_ROLE_SW_RES_START \
+ 0x08 /* waiting for role switch result before streaming */
+#define BTA_AV_WAIT_ROLE_SW_STARTED \
+ 0x10 /* started while waiting for role switch result */
+#define BTA_AV_WAIT_ROLE_SW_RETRY 0x20 /* set when retry on timeout */
+#define BTA_AV_WAIT_CHECK_RC \
+ 0x40 /* set when the timer is used by role switch */
+#define BTA_AV_WAIT_ROLE_SW_FAILED 0x80 /* role switch failed */
-#define BTA_AV_WAIT_ROLE_SW_BITS (BTA_AV_WAIT_ROLE_SW_RES_OPEN|BTA_AV_WAIT_ROLE_SW_RES_START|BTA_AV_WAIT_ROLE_SW_STARTED|BTA_AV_WAIT_ROLE_SW_RETRY)
+#define BTA_AV_WAIT_ROLE_SW_BITS \
+ (BTA_AV_WAIT_ROLE_SW_RES_OPEN | BTA_AV_WAIT_ROLE_SW_RES_START | \
+ BTA_AV_WAIT_ROLE_SW_STARTED | BTA_AV_WAIT_ROLE_SW_RETRY)
/* Bitmap for collision, coll_mask */
-#define BTA_AV_COLL_INC_TMR 0x01 /* Timer is running for incoming L2C connection */
-#define BTA_AV_COLL_API_CALLED 0x02 /* API open was called while incoming timer is running */
+#define BTA_AV_COLL_INC_TMR \
+ 0x01 /* Timer is running for incoming L2C connection */
+#define BTA_AV_COLL_API_CALLED \
+ 0x02 /* API open was called while incoming timer is running */
/* type for AV stream control block */
-typedef struct
-{
- const tBTA_AV_ACT *p_act_tbl; /* the action table for stream state machine */
- const tBTA_AV_CO_FUNCTS *p_cos; /* the associated callout functions */
- bool sdp_discovery_started; /* variable to determine whether SDP is started */
- tBTA_AV_SEP seps[A2DP_CODEC_SEP_INDEX_MAX];
- tAVDT_CFG *p_cap; /* buffer used for get capabilities */
- list_t *a2dp_list; /* used for audio channels only */
- tBTA_AV_Q_INFO q_info;
- tAVDT_SEP_INFO sep_info[BTA_AV_NUM_SEPS]; /* stream discovery results */
- tAVDT_CFG cfg; /* local SEP configuration */
- alarm_t *avrc_ct_timer; /* delay timer for AVRC CT */
- BD_ADDR peer_addr; /* peer BD address */
- uint16_t l2c_cid; /* L2CAP channel ID */
- uint16_t stream_mtu; /* MTU of stream */
- uint16_t avdt_version; /* the avdt version of peer device */
- tBTA_SEC sec_mask; /* security mask */
- uint8_t media_type; /* Media type: AVDT_MEDIA_TYPE_* */
- bool cong; /* true if AVDTP congested */
- tBTA_AV_STATUS open_status; /* open failure status */
- tBTA_AV_CHNL chnl; /* the channel: audio/video */
- tBTA_AV_HNDL hndl; /* the handle: ((hdi + 1)|chnl) */
- uint16_t cur_psc_mask; /* Protocol service capabilities mask for current connection */
- uint8_t avdt_handle; /* AVDTP handle */
- uint8_t hdi; /* the index to SCB[] */
- uint8_t num_seps; /* number of seps returned by stream discovery */
- uint8_t num_disc_snks; /* number of discovered snks */
- uint8_t num_disc_srcs; /* number of discovered srcs */
- uint8_t sep_info_idx; /* current index into sep_info */
- uint8_t sep_idx; /* current index into local seps[] */
- uint8_t rcfg_idx; /* reconfig requested index into sep_info */
- uint8_t state; /* state machine state */
- uint8_t avdt_label; /* AVDTP label */
- uint8_t app_id; /* application id */
- uint8_t num_recfg; /* number of reconfigure sent */
- uint8_t role;
- uint8_t l2c_bufs; /* the number of buffers queued to L2CAP */
- uint8_t rc_handle; /* connected AVRCP handle */
- bool use_rc; /* true if AVRCP is allowed */
- bool started; /* true if stream started */
- uint8_t co_started; /* non-zero, if stream started from call-out perspective */
- bool recfg_sup; /* true if the first attempt to reconfigure the stream was successfull, else False if command fails */
- bool suspend_sup; /* true if Suspend stream is supported, else false if suspend command fails */
- bool deregistring; /* true if deregistering */
- bool sco_suspend; /* true if SUSPEND is issued automatically for SCO */
- uint8_t coll_mask; /* Mask to check incoming and outgoing collision */
- tBTA_AV_API_OPEN open_api; /* Saved OPEN api message */
- uint8_t wait; /* set 0x1, when getting Caps as ACP, set 0x2, when started */
- uint8_t q_tag; /* identify the associated q_info union member */
- bool no_rtp_hdr; /* true if add no RTP header*/
- uint16_t uuid_int; /*intended UUID of Initiator to connect to */
- bool offload_start_pending;
- bool skip_sdp; /* Decides if sdp to be done prior to profile connection */
+typedef struct {
+ const tBTA_AV_ACT* p_act_tbl; /* the action table for stream state machine */
+ const tBTA_AV_CO_FUNCTS* p_cos; /* the associated callout functions */
+ bool sdp_discovery_started; /* variable to determine whether SDP is started */
+ tBTA_AV_SEP seps[A2DP_CODEC_SEP_INDEX_MAX];
+ tAVDT_CFG* p_cap; /* buffer used for get capabilities */
+ list_t* a2dp_list; /* used for audio channels only */
+ tBTA_AV_Q_INFO q_info;
+ tAVDT_SEP_INFO sep_info[BTA_AV_NUM_SEPS]; /* stream discovery results */
+ tAVDT_CFG cfg; /* local SEP configuration */
+ alarm_t* avrc_ct_timer; /* delay timer for AVRC CT */
+ BD_ADDR peer_addr; /* peer BD address */
+ uint16_t l2c_cid; /* L2CAP channel ID */
+ uint16_t stream_mtu; /* MTU of stream */
+ uint16_t avdt_version; /* the avdt version of peer device */
+ tBTA_SEC sec_mask; /* security mask */
+ uint8_t media_type; /* Media type: AVDT_MEDIA_TYPE_* */
+ bool cong; /* true if AVDTP congested */
+ tBTA_AV_STATUS open_status; /* open failure status */
+ tBTA_AV_CHNL chnl; /* the channel: audio/video */
+ tBTA_AV_HNDL hndl; /* the handle: ((hdi + 1)|chnl) */
+ uint16_t cur_psc_mask; /* Protocol service capabilities mask for current
+ connection */
+ uint8_t avdt_handle; /* AVDTP handle */
+ uint8_t hdi; /* the index to SCB[] */
+ uint8_t num_seps; /* number of seps returned by stream discovery */
+ uint8_t num_disc_snks; /* number of discovered snks */
+ uint8_t num_disc_srcs; /* number of discovered srcs */
+ uint8_t sep_info_idx; /* current index into sep_info */
+ uint8_t sep_idx; /* current index into local seps[] */
+ uint8_t rcfg_idx; /* reconfig requested index into sep_info */
+ uint8_t state; /* state machine state */
+ uint8_t avdt_label; /* AVDTP label */
+ uint8_t app_id; /* application id */
+ uint8_t num_recfg; /* number of reconfigure sent */
+ uint8_t role;
+ uint8_t l2c_bufs; /* the number of buffers queued to L2CAP */
+ uint8_t rc_handle; /* connected AVRCP handle */
+ bool use_rc; /* true if AVRCP is allowed */
+ bool started; /* true if stream started */
+ uint8_t
+ co_started; /* non-zero, if stream started from call-out perspective */
+ bool recfg_sup; /* true if the first attempt to reconfigure the stream was
+ successfull, else False if command fails */
+ bool suspend_sup; /* true if Suspend stream is supported, else false if
+ suspend command fails */
+ bool deregistring; /* true if deregistering */
+ bool sco_suspend; /* true if SUSPEND is issued automatically for SCO */
+ uint8_t coll_mask; /* Mask to check incoming and outgoing collision */
+ tBTA_AV_API_OPEN open_api; /* Saved OPEN api message */
+ uint8_t wait; /* set 0x1, when getting Caps as ACP, set 0x2, when started */
+ uint8_t q_tag; /* identify the associated q_info union member */
+ bool no_rtp_hdr; /* true if add no RTP header*/
+ uint16_t uuid_int; /*intended UUID of Initiator to connect to */
+ bool offload_start_pending;
+ bool skip_sdp; /* Decides if sdp to be done prior to profile connection */
} tBTA_AV_SCB;
-#define BTA_AV_RC_ROLE_MASK 0x10
-#define BTA_AV_RC_ROLE_INT 0x00
-#define BTA_AV_RC_ROLE_ACP 0x10
+#define BTA_AV_RC_ROLE_MASK 0x10
+#define BTA_AV_RC_ROLE_INT 0x00
+#define BTA_AV_RC_ROLE_ACP 0x10
-#define BTA_AV_RC_CONN_MASK 0x20
+#define BTA_AV_RC_CONN_MASK 0x20
/* type for AV RCP control block */
/* index to this control block is the rc handle */
-typedef struct
-{
- uint8_t status;
- uint8_t handle;
- uint8_t shdl; /* stream handle (hdi + 1) */
- uint8_t lidx; /* (index+1) to LCB */
- tBTA_AV_FEAT peer_features; /* peer features mask */
+typedef struct {
+ uint8_t status;
+ uint8_t handle;
+ uint8_t shdl; /* stream handle (hdi + 1) */
+ uint8_t lidx; /* (index+1) to LCB */
+ tBTA_AV_FEAT peer_features; /* peer features mask */
} tBTA_AV_RCB;
-#define BTA_AV_NUM_RCB (BTA_AV_NUM_STRS + 2)
+#define BTA_AV_NUM_RCB (BTA_AV_NUM_STRS + 2)
-enum
-{
- BTA_AV_LCB_FREE,
- BTA_AV_LCB_FIND
-};
+enum { BTA_AV_LCB_FREE, BTA_AV_LCB_FIND };
/* type for AV ACL Link control block */
-typedef struct
-{
- BD_ADDR addr; /* peer BD address */
- uint8_t conn_msk; /* handle mask of connected stream handle */
- uint8_t lidx; /* index + 1 */
+typedef struct {
+ BD_ADDR addr; /* peer BD address */
+ uint8_t conn_msk; /* handle mask of connected stream handle */
+ uint8_t lidx; /* index + 1 */
} tBTA_AV_LCB;
/* type for stream state machine action functions */
-typedef void (*tBTA_AV_SACT)(tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data);
-
+typedef void (*tBTA_AV_SACT)(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data);
/* type for AV control block */
-typedef struct
-{
- tBTA_AV_SCB *p_scb[BTA_AV_NUM_STRS]; /* stream control block */
- tSDP_DISCOVERY_DB *p_disc_db; /* pointer to discovery database */
- tBTA_AV_CBACK *p_cback; /* application callback function */
- tBTA_AV_RCB rcb[BTA_AV_NUM_RCB]; /* RCB control block */
- tBTA_AV_LCB lcb[BTA_AV_NUM_LINKS+1]; /* link control block */
- alarm_t *link_signalling_timer;
- alarm_t *accept_signalling_timer; /* timer to monitor signalling when accepting */
- uint32_t sdp_a2dp_handle; /* SDP record handle for audio src */
- uint32_t sdp_a2dp_snk_handle; /* SDP record handle for audio snk */
- uint32_t sdp_vdp_handle; /* SDP record handle for video src */
- tBTA_AV_FEAT features; /* features mask */
- tBTA_SEC sec_mask; /* security mask */
- tBTA_AV_HNDL handle; /* the handle for SDP activity */
- bool disabling; /* true if api disabled called */
- uint8_t disc; /* (hdi+1) or (rc_handle|BTA_AV_CHNL_MSK) if p_disc_db is in use */
- uint8_t state; /* state machine state */
- uint8_t conn_rc; /* handle mask of connected RCP channels */
- uint8_t conn_audio; /* handle mask of connected audio channels */
- uint8_t conn_video; /* handle mask of connected video channels */
- uint8_t conn_lcb; /* index mask of used LCBs */
- uint8_t audio_open_cnt; /* number of connected audio channels */
- uint8_t reg_audio; /* handle mask of registered audio channels */
- uint8_t reg_video; /* handle mask of registered video channels */
- uint8_t rc_acp_handle;
- uint8_t rc_acp_idx; /* (index + 1) to RCB */
- uint8_t rs_idx; /* (index + 1) to SCB for the one waiting for RS on open */
- bool sco_occupied; /* true if SCO is being used or call is in progress */
- uint8_t audio_streams; /* handle mask of streaming audio channels */
- uint8_t video_streams; /* handle mask of streaming video channels */
+typedef struct {
+ tBTA_AV_SCB* p_scb[BTA_AV_NUM_STRS]; /* stream control block */
+ tSDP_DISCOVERY_DB* p_disc_db; /* pointer to discovery database */
+ tBTA_AV_CBACK* p_cback; /* application callback function */
+ tBTA_AV_RCB rcb[BTA_AV_NUM_RCB]; /* RCB control block */
+ tBTA_AV_LCB lcb[BTA_AV_NUM_LINKS + 1]; /* link control block */
+ alarm_t* link_signalling_timer;
+ alarm_t*
+ accept_signalling_timer; /* timer to monitor signalling when accepting */
+ uint32_t sdp_a2dp_handle; /* SDP record handle for audio src */
+ uint32_t sdp_a2dp_snk_handle; /* SDP record handle for audio snk */
+ uint32_t sdp_vdp_handle; /* SDP record handle for video src */
+ tBTA_AV_FEAT features; /* features mask */
+ tBTA_SEC sec_mask; /* security mask */
+ tBTA_AV_HNDL handle; /* the handle for SDP activity */
+ bool disabling; /* true if api disabled called */
+ uint8_t
+ disc; /* (hdi+1) or (rc_handle|BTA_AV_CHNL_MSK) if p_disc_db is in use */
+ uint8_t state; /* state machine state */
+ uint8_t conn_rc; /* handle mask of connected RCP channels */
+ uint8_t conn_audio; /* handle mask of connected audio channels */
+ uint8_t conn_video; /* handle mask of connected video channels */
+ uint8_t conn_lcb; /* index mask of used LCBs */
+ uint8_t audio_open_cnt; /* number of connected audio channels */
+ uint8_t reg_audio; /* handle mask of registered audio channels */
+ uint8_t reg_video; /* handle mask of registered video channels */
+ uint8_t rc_acp_handle;
+ uint8_t rc_acp_idx; /* (index + 1) to RCB */
+ uint8_t rs_idx; /* (index + 1) to SCB for the one waiting for RS on open */
+ bool sco_occupied; /* true if SCO is being used or call is in progress */
+ uint8_t audio_streams; /* handle mask of streaming audio channels */
+ uint8_t video_streams; /* handle mask of streaming video channels */
} tBTA_AV_CB;
-
-
/*****************************************************************************
* Global data
****************************************************************************/
@@ -595,130 +571,133 @@
extern tBTA_AV_CB bta_av_cb;
/* config struct */
-extern tBTA_AV_CFG *p_bta_av_cfg;
+extern tBTA_AV_CFG* p_bta_av_cfg;
extern const tBTA_AV_CFG bta_avk_cfg;
extern const tBTA_AV_CFG bta_av_cfg;
/* rc id config struct */
-extern uint16_t *p_bta_av_rc_id;
-extern uint16_t *p_bta_av_rc_id_ac;
+extern uint16_t* p_bta_av_rc_id;
+extern uint16_t* p_bta_av_rc_id_ac;
extern const tBTA_AV_SACT bta_av_a2dp_action[];
extern const tBTA_AV_CO_FUNCTS bta_av_a2dp_cos;
-extern tAVDT_CTRL_CBACK * const bta_av_dt_cback[];
-extern void bta_av_sink_data_cback(uint8_t handle, BT_HDR *p_pkt,
+extern tAVDT_CTRL_CBACK* const bta_av_dt_cback[];
+extern void bta_av_sink_data_cback(uint8_t handle, BT_HDR* p_pkt,
uint32_t time_stamp, uint8_t m_pt);
/*****************************************************************************
* Function prototypes
****************************************************************************/
/* utility functions */
-extern tBTA_AV_SCB *bta_av_hndl_to_scb(uint16_t handle);
-extern bool bta_av_chk_start(tBTA_AV_SCB *p_scb);
-extern void bta_av_restore_switch (void);
-extern uint16_t bta_av_chk_mtu(tBTA_AV_SCB *p_scb, uint16_t mtu);
-extern void bta_av_conn_cback(uint8_t handle, BD_ADDR bd_addr, uint8_t event, tAVDT_CTRL *p_data);
-extern uint8_t bta_av_rc_create(tBTA_AV_CB *p_cb, uint8_t role, uint8_t shdl, uint8_t lidx);
-extern void bta_av_stream_chg(tBTA_AV_SCB *p_scb, bool started);
-extern bool bta_av_is_scb_opening (tBTA_AV_SCB *p_scb);
-extern bool bta_av_is_scb_incoming (tBTA_AV_SCB *p_scb);
-extern void bta_av_set_scb_sst_init (tBTA_AV_SCB *p_scb);
-extern bool bta_av_is_scb_init (tBTA_AV_SCB *p_scb);
-extern void bta_av_set_scb_sst_incoming (tBTA_AV_SCB *p_scb);
-extern tBTA_AV_LCB * bta_av_find_lcb(BD_ADDR addr, uint8_t op);
-
+extern tBTA_AV_SCB* bta_av_hndl_to_scb(uint16_t handle);
+extern bool bta_av_chk_start(tBTA_AV_SCB* p_scb);
+extern void bta_av_restore_switch(void);
+extern uint16_t bta_av_chk_mtu(tBTA_AV_SCB* p_scb, uint16_t mtu);
+extern void bta_av_conn_cback(uint8_t handle, BD_ADDR bd_addr, uint8_t event,
+ tAVDT_CTRL* p_data);
+extern uint8_t bta_av_rc_create(tBTA_AV_CB* p_cb, uint8_t role, uint8_t shdl,
+ uint8_t lidx);
+extern void bta_av_stream_chg(tBTA_AV_SCB* p_scb, bool started);
+extern bool bta_av_is_scb_opening(tBTA_AV_SCB* p_scb);
+extern bool bta_av_is_scb_incoming(tBTA_AV_SCB* p_scb);
+extern void bta_av_set_scb_sst_init(tBTA_AV_SCB* p_scb);
+extern bool bta_av_is_scb_init(tBTA_AV_SCB* p_scb);
+extern void bta_av_set_scb_sst_incoming(tBTA_AV_SCB* p_scb);
+extern tBTA_AV_LCB* bta_av_find_lcb(BD_ADDR addr, uint8_t op);
/* main functions */
-extern void bta_av_api_deregister(tBTA_AV_DATA *p_data);
-extern void bta_av_dup_audio_buf(tBTA_AV_SCB *p_scb, BT_HDR *p_buf);
-extern void bta_av_sm_execute(tBTA_AV_CB *p_cb, uint16_t event, tBTA_AV_DATA *p_data);
-extern void bta_av_ssm_execute(tBTA_AV_SCB *p_scb, uint16_t event, tBTA_AV_DATA *p_data);
-extern bool bta_av_hdl_event(BT_HDR *p_msg);
+extern void bta_av_api_deregister(tBTA_AV_DATA* p_data);
+extern void bta_av_dup_audio_buf(tBTA_AV_SCB* p_scb, BT_HDR* p_buf);
+extern void bta_av_sm_execute(tBTA_AV_CB* p_cb, uint16_t event,
+ tBTA_AV_DATA* p_data);
+extern void bta_av_ssm_execute(tBTA_AV_SCB* p_scb, uint16_t event,
+ tBTA_AV_DATA* p_data);
+extern bool bta_av_hdl_event(BT_HDR* p_msg);
#if (BTA_AV_DEBUG == TRUE)
-extern const char *bta_av_evt_code(uint16_t evt_code);
+extern const char* bta_av_evt_code(uint16_t evt_code);
#endif
-extern bool bta_av_switch_if_needed(tBTA_AV_SCB *p_scb);
-extern bool bta_av_link_role_ok(tBTA_AV_SCB *p_scb, uint8_t bits);
-extern bool bta_av_is_rcfg_sst(tBTA_AV_SCB *p_scb);
+extern bool bta_av_switch_if_needed(tBTA_AV_SCB* p_scb);
+extern bool bta_av_link_role_ok(tBTA_AV_SCB* p_scb, uint8_t bits);
+extern bool bta_av_is_rcfg_sst(tBTA_AV_SCB* p_scb);
/* nsm action functions */
-extern void bta_av_api_disconnect(tBTA_AV_DATA *p_data);
-extern void bta_av_sig_chg(tBTA_AV_DATA *p_data);
-extern void bta_av_signalling_timer(tBTA_AV_DATA *p_data);
-extern void bta_av_rc_disc_done(tBTA_AV_DATA *p_data);
-extern void bta_av_rc_closed(tBTA_AV_DATA *p_data);
-extern void bta_av_rc_browse_opened(tBTA_AV_DATA *p_data);
-extern void bta_av_rc_browse_closed(tBTA_AV_DATA *p_data);
+extern void bta_av_api_disconnect(tBTA_AV_DATA* p_data);
+extern void bta_av_sig_chg(tBTA_AV_DATA* p_data);
+extern void bta_av_signalling_timer(tBTA_AV_DATA* p_data);
+extern void bta_av_rc_disc_done(tBTA_AV_DATA* p_data);
+extern void bta_av_rc_closed(tBTA_AV_DATA* p_data);
+extern void bta_av_rc_browse_opened(tBTA_AV_DATA* p_data);
+extern void bta_av_rc_browse_closed(tBTA_AV_DATA* p_data);
extern void bta_av_rc_disc(uint8_t disc);
-extern void bta_av_conn_chg(tBTA_AV_DATA *p_data);
-extern void bta_av_dereg_comp(tBTA_AV_DATA *p_data);
+extern void bta_av_conn_chg(tBTA_AV_DATA* p_data);
+extern void bta_av_dereg_comp(tBTA_AV_DATA* p_data);
/* sm action functions */
-extern void bta_av_disable (tBTA_AV_CB *p_cb, tBTA_AV_DATA *p_data);
-extern void bta_av_rc_opened (tBTA_AV_CB *p_cb, tBTA_AV_DATA *p_data);
-extern void bta_av_rc_remote_cmd (tBTA_AV_CB *p_cb, tBTA_AV_DATA *p_data);
-extern void bta_av_rc_vendor_cmd (tBTA_AV_CB *p_cb, tBTA_AV_DATA *p_data);
-extern void bta_av_rc_vendor_rsp (tBTA_AV_CB *p_cb, tBTA_AV_DATA *p_data);
-extern void bta_av_rc_msg (tBTA_AV_CB *p_cb, tBTA_AV_DATA *p_data);
-extern void bta_av_rc_close (tBTA_AV_CB *p_cb, tBTA_AV_DATA *p_data);
-extern void bta_av_rc_meta_rsp (tBTA_AV_CB *p_cb, tBTA_AV_DATA *p_data);
-extern void bta_av_rc_free_rsp (tBTA_AV_CB *p_cb, tBTA_AV_DATA *p_data);
-extern void bta_av_rc_free_browse_msg (tBTA_AV_CB *p_cb, tBTA_AV_DATA *p_data);
+extern void bta_av_disable(tBTA_AV_CB* p_cb, tBTA_AV_DATA* p_data);
+extern void bta_av_rc_opened(tBTA_AV_CB* p_cb, tBTA_AV_DATA* p_data);
+extern void bta_av_rc_remote_cmd(tBTA_AV_CB* p_cb, tBTA_AV_DATA* p_data);
+extern void bta_av_rc_vendor_cmd(tBTA_AV_CB* p_cb, tBTA_AV_DATA* p_data);
+extern void bta_av_rc_vendor_rsp(tBTA_AV_CB* p_cb, tBTA_AV_DATA* p_data);
+extern void bta_av_rc_msg(tBTA_AV_CB* p_cb, tBTA_AV_DATA* p_data);
+extern void bta_av_rc_close(tBTA_AV_CB* p_cb, tBTA_AV_DATA* p_data);
+extern void bta_av_rc_meta_rsp(tBTA_AV_CB* p_cb, tBTA_AV_DATA* p_data);
+extern void bta_av_rc_free_rsp(tBTA_AV_CB* p_cb, tBTA_AV_DATA* p_data);
+extern void bta_av_rc_free_browse_msg(tBTA_AV_CB* p_cb, tBTA_AV_DATA* p_data);
-extern tBTA_AV_RCB * bta_av_get_rcb_by_shdl(uint8_t shdl);
-extern void bta_av_del_rc(tBTA_AV_RCB *p_rcb);
+extern tBTA_AV_RCB* bta_av_get_rcb_by_shdl(uint8_t shdl);
+extern void bta_av_del_rc(tBTA_AV_RCB* p_rcb);
/* ssm action functions */
-extern void bta_av_do_disc_a2dp(tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data);
-extern void bta_av_cleanup (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data);
-extern void bta_av_free_sdb (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data);
-extern void bta_av_config_ind (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data);
-extern void bta_av_disconnect_req (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data);
-extern void bta_av_security_req (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data);
-extern void bta_av_security_rsp (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data);
-extern void bta_av_setconfig_rsp (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data);
-extern void bta_av_str_opened (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data);
-extern void bta_av_security_ind (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data);
-extern void bta_av_security_cfm (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data);
-extern void bta_av_do_close (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data);
-extern void bta_av_connect_req (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data);
-extern void bta_av_sdp_failed (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data);
-extern void bta_av_disc_results (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data);
-extern void bta_av_disc_res_as_acp (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data);
-extern void bta_av_open_failed (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data);
-extern void bta_av_getcap_results (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data);
-extern void bta_av_setconfig_rej (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data);
-extern void bta_av_discover_req (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data);
-extern void bta_av_conn_failed (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data);
-extern void bta_av_do_start (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data);
-extern void bta_av_str_stopped (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data);
-extern void bta_av_reconfig (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data);
-extern void bta_av_data_path (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data);
-extern void bta_av_start_ok (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data);
-extern void bta_av_start_failed (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data);
-extern void bta_av_str_closed (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data);
-extern void bta_av_clr_cong (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data);
-extern void bta_av_suspend_cfm (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data);
-extern void bta_av_rcfg_str_ok (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data);
-extern void bta_av_rcfg_failed (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data);
-extern void bta_av_rcfg_connect (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data);
-extern void bta_av_rcfg_discntd (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data);
-extern void bta_av_suspend_cont (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data);
-extern void bta_av_rcfg_cfm (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data);
-extern void bta_av_rcfg_open (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data);
-extern void bta_av_security_rej (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data);
-extern void bta_av_open_rc (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data);
-extern void bta_av_chk_2nd_start (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data);
-extern void bta_av_save_caps (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data);
-extern void bta_av_rej_conn (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data);
-extern void bta_av_rej_conn (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data);
-extern void bta_av_set_use_rc (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data);
-extern void bta_av_cco_close (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data);
-extern void bta_av_switch_role (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data);
-extern void bta_av_role_res (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data);
-extern void bta_av_delay_co (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data);
-extern void bta_av_open_at_inc (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data);
-extern void bta_av_offload_req (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data);
-extern void bta_av_offload_rsp (tBTA_AV_SCB *p_scb, tBTA_AV_DATA *p_data);
+extern void bta_av_do_disc_a2dp(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data);
+extern void bta_av_cleanup(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data);
+extern void bta_av_free_sdb(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data);
+extern void bta_av_config_ind(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data);
+extern void bta_av_disconnect_req(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data);
+extern void bta_av_security_req(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data);
+extern void bta_av_security_rsp(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data);
+extern void bta_av_setconfig_rsp(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data);
+extern void bta_av_str_opened(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data);
+extern void bta_av_security_ind(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data);
+extern void bta_av_security_cfm(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data);
+extern void bta_av_do_close(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data);
+extern void bta_av_connect_req(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data);
+extern void bta_av_sdp_failed(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data);
+extern void bta_av_disc_results(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data);
+extern void bta_av_disc_res_as_acp(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data);
+extern void bta_av_open_failed(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data);
+extern void bta_av_getcap_results(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data);
+extern void bta_av_setconfig_rej(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data);
+extern void bta_av_discover_req(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data);
+extern void bta_av_conn_failed(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data);
+extern void bta_av_do_start(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data);
+extern void bta_av_str_stopped(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data);
+extern void bta_av_reconfig(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data);
+extern void bta_av_data_path(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data);
+extern void bta_av_start_ok(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data);
+extern void bta_av_start_failed(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data);
+extern void bta_av_str_closed(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data);
+extern void bta_av_clr_cong(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data);
+extern void bta_av_suspend_cfm(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data);
+extern void bta_av_rcfg_str_ok(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data);
+extern void bta_av_rcfg_failed(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data);
+extern void bta_av_rcfg_connect(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data);
+extern void bta_av_rcfg_discntd(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data);
+extern void bta_av_suspend_cont(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data);
+extern void bta_av_rcfg_cfm(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data);
+extern void bta_av_rcfg_open(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data);
+extern void bta_av_security_rej(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data);
+extern void bta_av_open_rc(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data);
+extern void bta_av_chk_2nd_start(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data);
+extern void bta_av_save_caps(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data);
+extern void bta_av_rej_conn(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data);
+extern void bta_av_rej_conn(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data);
+extern void bta_av_set_use_rc(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data);
+extern void bta_av_cco_close(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data);
+extern void bta_av_switch_role(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data);
+extern void bta_av_role_res(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data);
+extern void bta_av_delay_co(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data);
+extern void bta_av_open_at_inc(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data);
+extern void bta_av_offload_req(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data);
+extern void bta_av_offload_rsp(tBTA_AV_SCB* p_scb, tBTA_AV_DATA* p_data);
#endif /* BTA_AV_INT_H */
diff --git a/bta/av/bta_av_main.cc b/bta/av/bta_av_main.cc
index 017511e..5d9745a 100644
--- a/bta/av/bta_av_main.cc
+++ b/bta/av/bta_av_main.cc
@@ -47,54 +47,48 @@
****************************************************************************/
#ifndef BTA_AV_RET_TOUT
-#define BTA_AV_RET_TOUT 4
+#define BTA_AV_RET_TOUT 4
#endif
#ifndef BTA_AV_SIG_TOUT
-#define BTA_AV_SIG_TOUT 4
+#define BTA_AV_SIG_TOUT 4
#endif
#ifndef BTA_AV_IDLE_TOUT
-#define BTA_AV_IDLE_TOUT 10
+#define BTA_AV_IDLE_TOUT 10
#endif
/* the delay time in milliseconds to retry role switch */
#ifndef BTA_AV_RS_TIME_VAL
-#define BTA_AV_RS_TIME_VAL 1000
+#define BTA_AV_RS_TIME_VAL 1000
#endif
/* state machine states */
-enum
-{
- BTA_AV_INIT_ST,
- BTA_AV_OPEN_ST
-};
+enum { BTA_AV_INIT_ST, BTA_AV_OPEN_ST };
/* state machine action enumeration list */
-enum
-{
- BTA_AV_DISABLE,
- BTA_AV_RC_OPENED,
- BTA_AV_RC_REMOTE_CMD,
- BTA_AV_RC_VENDOR_CMD,
- BTA_AV_RC_VENDOR_RSP,
- BTA_AV_RC_FREE_RSP,
- BTA_AV_RC_FREE_BROWSE_MSG,
- BTA_AV_RC_META_RSP,
- BTA_AV_RC_MSG,
- BTA_AV_RC_CLOSE,
- BTA_AV_RC_BROWSE_CLOSE,
- BTA_AV_NUM_ACTIONS
+enum {
+ BTA_AV_DISABLE,
+ BTA_AV_RC_OPENED,
+ BTA_AV_RC_REMOTE_CMD,
+ BTA_AV_RC_VENDOR_CMD,
+ BTA_AV_RC_VENDOR_RSP,
+ BTA_AV_RC_FREE_RSP,
+ BTA_AV_RC_FREE_BROWSE_MSG,
+ BTA_AV_RC_META_RSP,
+ BTA_AV_RC_MSG,
+ BTA_AV_RC_CLOSE,
+ BTA_AV_RC_BROWSE_CLOSE,
+ BTA_AV_NUM_ACTIONS
};
-#define BTA_AV_IGNORE BTA_AV_NUM_ACTIONS
+#define BTA_AV_IGNORE BTA_AV_NUM_ACTIONS
/* type for action functions */
-typedef void (*tBTA_AV_ACTION)(tBTA_AV_CB *p_cb, tBTA_AV_DATA *p_data);
+typedef void (*tBTA_AV_ACTION)(tBTA_AV_CB* p_cb, tBTA_AV_DATA* p_data);
/* action functions */
-const tBTA_AV_ACTION bta_av_action[] =
-{
+const tBTA_AV_ACTION bta_av_action[] = {
bta_av_disable,
bta_av_rc_opened,
bta_av_rc_remote_cmd,
@@ -108,85 +102,78 @@
};
/* state table information */
-#define BTA_AV_ACTION_COL 0 /* position of actions */
-#define BTA_AV_NEXT_STATE 1 /* position of next state */
-#define BTA_AV_NUM_COLS 2 /* number of columns in state tables */
+#define BTA_AV_ACTION_COL 0 /* position of actions */
+#define BTA_AV_NEXT_STATE 1 /* position of next state */
+#define BTA_AV_NUM_COLS 2 /* number of columns in state tables */
/* state table for init state */
-static const uint8_t bta_av_st_init[][BTA_AV_NUM_COLS] =
-{
-/* Event Action 1 Next state */
-/* API_DISABLE_EVT */ {BTA_AV_DISABLE, BTA_AV_INIT_ST },
-/* API_REMOTE_CMD_EVT */ {BTA_AV_IGNORE, BTA_AV_INIT_ST },
-/* API_VENDOR_CMD_EVT */ {BTA_AV_IGNORE, BTA_AV_INIT_ST },
-/* API_VENDOR_RSP_EVT */ {BTA_AV_IGNORE, BTA_AV_INIT_ST },
-/* API_META_RSP_EVT */ {BTA_AV_RC_FREE_RSP, BTA_AV_INIT_ST },
-/* API_RC_CLOSE_EVT */ {BTA_AV_IGNORE, BTA_AV_INIT_ST },
-/* AVRC_OPEN_EVT */ {BTA_AV_RC_OPENED, BTA_AV_OPEN_ST },
-/* AVRC_MSG_EVT */ {BTA_AV_RC_FREE_BROWSE_MSG, BTA_AV_INIT_ST },
-/* AVRC_NONE_EVT */ {BTA_AV_IGNORE, BTA_AV_INIT_ST },
+static const uint8_t bta_av_st_init[][BTA_AV_NUM_COLS] = {
+ /* Event Action 1 Next state */
+ /* API_DISABLE_EVT */ {BTA_AV_DISABLE, BTA_AV_INIT_ST},
+ /* API_REMOTE_CMD_EVT */ {BTA_AV_IGNORE, BTA_AV_INIT_ST},
+ /* API_VENDOR_CMD_EVT */ {BTA_AV_IGNORE, BTA_AV_INIT_ST},
+ /* API_VENDOR_RSP_EVT */ {BTA_AV_IGNORE, BTA_AV_INIT_ST},
+ /* API_META_RSP_EVT */ {BTA_AV_RC_FREE_RSP, BTA_AV_INIT_ST},
+ /* API_RC_CLOSE_EVT */ {BTA_AV_IGNORE, BTA_AV_INIT_ST},
+ /* AVRC_OPEN_EVT */ {BTA_AV_RC_OPENED, BTA_AV_OPEN_ST},
+ /* AVRC_MSG_EVT */ {BTA_AV_RC_FREE_BROWSE_MSG, BTA_AV_INIT_ST},
+ /* AVRC_NONE_EVT */ {BTA_AV_IGNORE, BTA_AV_INIT_ST},
};
/* state table for open state */
-static const uint8_t bta_av_st_open[][BTA_AV_NUM_COLS] =
-{
-/* Event Action 1 Next state */
-/* API_DISABLE_EVT */ {BTA_AV_DISABLE, BTA_AV_INIT_ST },
-/* API_REMOTE_CMD_EVT */ {BTA_AV_RC_REMOTE_CMD, BTA_AV_OPEN_ST },
-/* API_VENDOR_CMD_EVT */ {BTA_AV_RC_VENDOR_CMD, BTA_AV_OPEN_ST },
-/* API_VENDOR_RSP_EVT */ {BTA_AV_RC_VENDOR_RSP, BTA_AV_OPEN_ST },
-/* API_META_RSP_EVT */ {BTA_AV_RC_META_RSP, BTA_AV_OPEN_ST },
-/* API_RC_CLOSE_EVT */ {BTA_AV_RC_CLOSE, BTA_AV_OPEN_ST },
-/* AVRC_OPEN_EVT */ {BTA_AV_RC_OPENED, BTA_AV_OPEN_ST },
-/* AVRC_MSG_EVT */ {BTA_AV_RC_MSG, BTA_AV_OPEN_ST },
-/* AVRC_NONE_EVT */ {BTA_AV_IGNORE, BTA_AV_INIT_ST },
+static const uint8_t bta_av_st_open[][BTA_AV_NUM_COLS] = {
+ /* Event Action 1 Next state */
+ /* API_DISABLE_EVT */ {BTA_AV_DISABLE, BTA_AV_INIT_ST},
+ /* API_REMOTE_CMD_EVT */ {BTA_AV_RC_REMOTE_CMD, BTA_AV_OPEN_ST},
+ /* API_VENDOR_CMD_EVT */ {BTA_AV_RC_VENDOR_CMD, BTA_AV_OPEN_ST},
+ /* API_VENDOR_RSP_EVT */ {BTA_AV_RC_VENDOR_RSP, BTA_AV_OPEN_ST},
+ /* API_META_RSP_EVT */ {BTA_AV_RC_META_RSP, BTA_AV_OPEN_ST},
+ /* API_RC_CLOSE_EVT */ {BTA_AV_RC_CLOSE, BTA_AV_OPEN_ST},
+ /* AVRC_OPEN_EVT */ {BTA_AV_RC_OPENED, BTA_AV_OPEN_ST},
+ /* AVRC_MSG_EVT */ {BTA_AV_RC_MSG, BTA_AV_OPEN_ST},
+ /* AVRC_NONE_EVT */ {BTA_AV_IGNORE, BTA_AV_INIT_ST},
};
/* type for state table */
typedef const uint8_t (*tBTA_AV_ST_TBL)[BTA_AV_NUM_COLS];
/* state table */
-static const tBTA_AV_ST_TBL bta_av_st_tbl[] =
-{
- bta_av_st_init,
- bta_av_st_open
-};
+static const tBTA_AV_ST_TBL bta_av_st_tbl[] = {bta_av_st_init, bta_av_st_open};
-typedef void (*tBTA_AV_NSM_ACT)(tBTA_AV_DATA *p_data);
-static void bta_av_api_enable(tBTA_AV_DATA *p_data);
-static void bta_av_api_register(tBTA_AV_DATA *p_data);
-static void bta_av_ci_data(tBTA_AV_DATA *p_data);
+typedef void (*tBTA_AV_NSM_ACT)(tBTA_AV_DATA* p_data);
+static void bta_av_api_enable(tBTA_AV_DATA* p_data);
+static void bta_av_api_register(tBTA_AV_DATA* p_data);
+static void bta_av_ci_data(tBTA_AV_DATA* p_data);
#if (AVDT_REPORTING == TRUE)
-static void bta_av_rpc_conn(tBTA_AV_DATA *p_data);
+static void bta_av_rpc_conn(tBTA_AV_DATA* p_data);
#endif
-static void bta_av_api_to_ssm(tBTA_AV_DATA *p_data);
+static void bta_av_api_to_ssm(tBTA_AV_DATA* p_data);
static void bta_av_sco_chg_cback(tBTA_SYS_CONN_STATUS status, uint8_t id,
uint8_t app_id, BD_ADDR peer_addr);
-static void bta_av_sys_rs_cback (tBTA_SYS_CONN_STATUS status,uint8_t id,
- uint8_t app_id, BD_ADDR peer_addr);
+static void bta_av_sys_rs_cback(tBTA_SYS_CONN_STATUS status, uint8_t id,
+ uint8_t app_id, BD_ADDR peer_addr);
/* action functions */
-const tBTA_AV_NSM_ACT bta_av_nsm_act[] =
-{
- bta_av_api_enable, /* BTA_AV_API_ENABLE_EVT */
- bta_av_api_register, /* BTA_AV_API_REGISTER_EVT */
- bta_av_api_deregister, /* BTA_AV_API_DEREGISTER_EVT */
- bta_av_api_disconnect, /* BTA_AV_API_DISCONNECT_EVT */
- bta_av_ci_data, /* BTA_AV_CI_SRC_DATA_READY_EVT */
- bta_av_sig_chg, /* BTA_AV_SIG_CHG_EVT */
+const tBTA_AV_NSM_ACT bta_av_nsm_act[] = {
+ bta_av_api_enable, /* BTA_AV_API_ENABLE_EVT */
+ bta_av_api_register, /* BTA_AV_API_REGISTER_EVT */
+ bta_av_api_deregister, /* BTA_AV_API_DEREGISTER_EVT */
+ bta_av_api_disconnect, /* BTA_AV_API_DISCONNECT_EVT */
+ bta_av_ci_data, /* BTA_AV_CI_SRC_DATA_READY_EVT */
+ bta_av_sig_chg, /* BTA_AV_SIG_CHG_EVT */
bta_av_signalling_timer, /* BTA_AV_SIGNALLING_TIMER_EVT */
- bta_av_rc_disc_done, /* BTA_AV_SDP_AVRC_DISC_EVT */
- bta_av_rc_closed, /* BTA_AV_AVRC_CLOSE_EVT */
- bta_av_rc_browse_opened,/* BTA_AV_AVRC_BROWSE_OPEN_EVT */
- bta_av_rc_browse_closed,/* BTA_AV_AVRC_BROWSE_CLOSE_EVT */
- bta_av_conn_chg, /* BTA_AV_CONN_CHG_EVT */
- bta_av_dereg_comp, /* BTA_AV_DEREG_COMP_EVT */
+ bta_av_rc_disc_done, /* BTA_AV_SDP_AVRC_DISC_EVT */
+ bta_av_rc_closed, /* BTA_AV_AVRC_CLOSE_EVT */
+ bta_av_rc_browse_opened, /* BTA_AV_AVRC_BROWSE_OPEN_EVT */
+ bta_av_rc_browse_closed, /* BTA_AV_AVRC_BROWSE_CLOSE_EVT */
+ bta_av_conn_chg, /* BTA_AV_CONN_CHG_EVT */
+ bta_av_dereg_comp, /* BTA_AV_DEREG_COMP_EVT */
#if (AVDT_REPORTING == TRUE)
- bta_av_rpc_conn, /* BTA_AV_AVDT_RPT_CONN_EVT */
+ bta_av_rpc_conn, /* BTA_AV_AVDT_RPT_CONN_EVT */
#endif
- bta_av_api_to_ssm, /* BTA_AV_API_START_EVT */
- bta_av_api_to_ssm, /* BTA_AV_API_STOP_EVT */
+ bta_av_api_to_ssm, /* BTA_AV_API_START_EVT */
+ bta_av_api_to_ssm, /* BTA_AV_API_STOP_EVT */
};
/*****************************************************************************
@@ -194,10 +181,10 @@
****************************************************************************/
/* AV control block */
-tBTA_AV_CB bta_av_cb;
+tBTA_AV_CB bta_av_cb;
#if (BTA_AV_DEBUG == TRUE)
-static const char *bta_av_st_code(uint8_t state);
+static const char* bta_av_st_code(uint8_t state);
#endif
/*******************************************************************************
@@ -210,40 +197,38 @@
* Returns void
*
******************************************************************************/
-static void bta_av_api_enable(tBTA_AV_DATA *p_data)
-{
- /* initialize control block */
- memset(&bta_av_cb, 0, sizeof(tBTA_AV_CB));
+static void bta_av_api_enable(tBTA_AV_DATA* p_data) {
+ /* initialize control block */
+ memset(&bta_av_cb, 0, sizeof(tBTA_AV_CB));
- for (int i = 0; i < BTA_AV_NUM_RCB; i++)
- bta_av_cb.rcb[i].handle = BTA_AV_RC_HANDLE_NONE;
+ for (int i = 0; i < BTA_AV_NUM_RCB; i++)
+ bta_av_cb.rcb[i].handle = BTA_AV_RC_HANDLE_NONE;
- bta_av_cb.rc_acp_handle = BTA_AV_RC_HANDLE_NONE;
+ bta_av_cb.rc_acp_handle = BTA_AV_RC_HANDLE_NONE;
- /*
- * TODO: The "disable" event handling is missing - there we need
- * to alarm_free() the alarms below.
- */
- bta_av_cb.link_signalling_timer = alarm_new("bta_av.link_signalling_timer");
- bta_av_cb.accept_signalling_timer =
- alarm_new("bta_av.accept_signalling_timer");
+ /*
+ * TODO: The "disable" event handling is missing - there we need
+ * to alarm_free() the alarms below.
+ */
+ bta_av_cb.link_signalling_timer = alarm_new("bta_av.link_signalling_timer");
+ bta_av_cb.accept_signalling_timer =
+ alarm_new("bta_av.accept_signalling_timer");
- /* store parameters */
- bta_av_cb.p_cback = p_data->api_enable.p_cback;
- bta_av_cb.features = p_data->api_enable.features;
- bta_av_cb.sec_mask = p_data->api_enable.sec_mask;
+ /* store parameters */
+ bta_av_cb.p_cback = p_data->api_enable.p_cback;
+ bta_av_cb.features = p_data->api_enable.features;
+ bta_av_cb.sec_mask = p_data->api_enable.sec_mask;
- tBTA_AV_ENABLE enable;
- enable.features = bta_av_cb.features;
+ tBTA_AV_ENABLE enable;
+ enable.features = bta_av_cb.features;
- /* Register for SCO change event */
- if (!(bta_av_cb.features & BTA_AV_FEAT_NO_SCO_SSPD))
- {
- bta_sys_sco_register(bta_av_sco_chg_cback);
- }
+ /* Register for SCO change event */
+ if (!(bta_av_cb.features & BTA_AV_FEAT_NO_SCO_SSPD)) {
+ bta_sys_sco_register(bta_av_sco_chg_cback);
+ }
- /* call callback with enable event */
- (*bta_av_cb.p_cback)(BTA_AV_ENABLE_EVT, (tBTA_AV *)&enable);
+ /* call callback with enable event */
+ (*bta_av_cb.p_cback)(BTA_AV_ENABLE_EVT, (tBTA_AV*)&enable);
}
/*******************************************************************************
@@ -255,23 +240,19 @@
* Returns void
*
******************************************************************************/
-static tBTA_AV_SCB * bta_av_addr_to_scb(BD_ADDR bd_addr)
-{
- tBTA_AV_SCB * p_scb = NULL;
- int xx;
+static tBTA_AV_SCB* bta_av_addr_to_scb(BD_ADDR bd_addr) {
+ tBTA_AV_SCB* p_scb = NULL;
+ int xx;
- for(xx=0; xx<BTA_AV_NUM_STRS; xx++)
- {
- if(bta_av_cb.p_scb[xx])
- {
- if(!bdcmp(bd_addr, bta_av_cb.p_scb[xx]->peer_addr))
- {
- p_scb = bta_av_cb.p_scb[xx];
- break;
- }
- }
+ for (xx = 0; xx < BTA_AV_NUM_STRS; xx++) {
+ if (bta_av_cb.p_scb[xx]) {
+ if (!bdcmp(bd_addr, bta_av_cb.p_scb[xx]->peer_addr)) {
+ p_scb = bta_av_cb.p_scb[xx];
+ break;
+ }
}
- return p_scb;
+ }
+ return p_scb;
}
/*******************************************************************************
@@ -283,17 +264,15 @@
* Returns void
*
******************************************************************************/
-tBTA_AV_SCB * bta_av_hndl_to_scb(uint16_t handle)
-{
- tBTA_AV_HNDL hndl = (tBTA_AV_HNDL)handle;
- tBTA_AV_SCB * p_scb = NULL;
- uint8_t idx = (hndl & BTA_AV_HNDL_MSK);
+tBTA_AV_SCB* bta_av_hndl_to_scb(uint16_t handle) {
+ tBTA_AV_HNDL hndl = (tBTA_AV_HNDL)handle;
+ tBTA_AV_SCB* p_scb = NULL;
+ uint8_t idx = (hndl & BTA_AV_HNDL_MSK);
- if(idx && (idx <= BTA_AV_NUM_STRS) )
- {
- p_scb = bta_av_cb.p_scb[idx-1];
- }
- return p_scb;
+ if (idx && (idx <= BTA_AV_NUM_STRS)) {
+ p_scb = bta_av_cb.p_scb[idx - 1];
+ }
+ return p_scb;
}
/*******************************************************************************
@@ -307,99 +286,84 @@
* Returns void
*
******************************************************************************/
-static tBTA_AV_SCB * bta_av_alloc_scb(tBTA_AV_CHNL chnl)
-{
- tBTA_AV_SCB *p_ret = NULL;
- int xx;
- tBTA_AV_STATUS sts = BTA_AV_SUCCESS;
+static tBTA_AV_SCB* bta_av_alloc_scb(tBTA_AV_CHNL chnl) {
+ tBTA_AV_SCB* p_ret = NULL;
+ int xx;
+ tBTA_AV_STATUS sts = BTA_AV_SUCCESS;
- if(chnl == BTA_AV_CHNL_VIDEO)
- {
- if(p_bta_av_cfg->p_act_tbl == NULL || p_bta_av_cfg->p_reg == NULL)
- {
- APPL_TRACE_ERROR("Video streaming not supported");
- sts = BTA_AV_FAIL;
- }
- else
- {
- /* allow only one Video channel */
- if(bta_av_cb.reg_video)
- {
- APPL_TRACE_ERROR("Already registered");
- sts = BTA_AV_FAIL;
- }
- }
- }
- else if(chnl != BTA_AV_CHNL_AUDIO)
- {
- APPL_TRACE_ERROR("bad channel: %d", chnl);
+ if (chnl == BTA_AV_CHNL_VIDEO) {
+ if (p_bta_av_cfg->p_act_tbl == NULL || p_bta_av_cfg->p_reg == NULL) {
+ APPL_TRACE_ERROR("Video streaming not supported");
+ sts = BTA_AV_FAIL;
+ } else {
+ /* allow only one Video channel */
+ if (bta_av_cb.reg_video) {
+ APPL_TRACE_ERROR("Already registered");
sts = BTA_AV_FAIL;
+ }
}
+ } else if (chnl != BTA_AV_CHNL_AUDIO) {
+ APPL_TRACE_ERROR("bad channel: %d", chnl);
+ sts = BTA_AV_FAIL;
+ }
- if(sts == BTA_AV_SUCCESS)
- {
- for(xx=0; xx<BTA_AV_NUM_STRS; xx++)
- {
- if(bta_av_cb.p_scb[xx] == NULL)
- {
- /* found an empty spot */
- p_ret = (tBTA_AV_SCB *)osi_calloc(sizeof(tBTA_AV_SCB));
- p_ret->rc_handle = BTA_AV_RC_HANDLE_NONE;
- p_ret->chnl = chnl;
- p_ret->hndl = (tBTA_AV_HNDL)((xx + 1) | chnl);
- p_ret->hdi = xx;
- p_ret->a2dp_list = list_new(NULL);
- p_ret->avrc_ct_timer = alarm_new("bta_av.avrc_ct_timer");
- bta_av_cb.p_scb[xx] = p_ret;
- break;
- }
- }
+ if (sts == BTA_AV_SUCCESS) {
+ for (xx = 0; xx < BTA_AV_NUM_STRS; xx++) {
+ if (bta_av_cb.p_scb[xx] == NULL) {
+ /* found an empty spot */
+ p_ret = (tBTA_AV_SCB*)osi_calloc(sizeof(tBTA_AV_SCB));
+ p_ret->rc_handle = BTA_AV_RC_HANDLE_NONE;
+ p_ret->chnl = chnl;
+ p_ret->hndl = (tBTA_AV_HNDL)((xx + 1) | chnl);
+ p_ret->hdi = xx;
+ p_ret->a2dp_list = list_new(NULL);
+ p_ret->avrc_ct_timer = alarm_new("bta_av.avrc_ct_timer");
+ bta_av_cb.p_scb[xx] = p_ret;
+ break;
+ }
}
- return p_ret;
+ }
+ return p_ret;
}
/*******************************************************************************
******************************************************************************/
void bta_av_conn_cback(UNUSED_ATTR uint8_t handle, BD_ADDR bd_addr,
- uint8_t event, tAVDT_CTRL *p_data)
-{
- uint16_t evt = 0;
- tBTA_AV_SCB *p_scb = NULL;
+ uint8_t event, tAVDT_CTRL* p_data) {
+ uint16_t evt = 0;
+ tBTA_AV_SCB* p_scb = NULL;
#if (BTA_AR_INCLUDED == TRUE)
- if (event == BTA_AR_AVDT_CONN_EVT ||
- event == AVDT_CONNECT_IND_EVT || event == AVDT_DISCONNECT_IND_EVT)
+ if (event == BTA_AR_AVDT_CONN_EVT || event == AVDT_CONNECT_IND_EVT ||
+ event == AVDT_DISCONNECT_IND_EVT)
#else
- if (event == AVDT_CONNECT_IND_EVT || event == AVDT_DISCONNECT_IND_EVT)
+ if (event == AVDT_CONNECT_IND_EVT || event == AVDT_DISCONNECT_IND_EVT)
#endif
- {
- evt = BTA_AV_SIG_CHG_EVT;
- if(AVDT_DISCONNECT_IND_EVT == event)
- p_scb = bta_av_addr_to_scb(bd_addr);
+ {
+ evt = BTA_AV_SIG_CHG_EVT;
+ if (AVDT_DISCONNECT_IND_EVT == event) p_scb = bta_av_addr_to_scb(bd_addr);
#if (BTA_AV_DEBUG == TRUE)
- else if (AVDT_CONNECT_IND_EVT == event)
- {
- APPL_TRACE_DEBUG("CONN_IND is ACP:%d", p_data->hdr.err_param);
- }
+ else if (AVDT_CONNECT_IND_EVT == event) {
+ APPL_TRACE_DEBUG("CONN_IND is ACP:%d", p_data->hdr.err_param);
+ }
#endif
- tBTA_AV_STR_MSG *p_msg =
- (tBTA_AV_STR_MSG *)osi_malloc(sizeof(tBTA_AV_STR_MSG));
- p_msg->hdr.event = evt;
- p_msg->hdr.layer_specific = event;
- p_msg->hdr.offset = p_data->hdr.err_param;
- bdcpy(p_msg->bd_addr, bd_addr);
+ tBTA_AV_STR_MSG* p_msg =
+ (tBTA_AV_STR_MSG*)osi_malloc(sizeof(tBTA_AV_STR_MSG));
+ p_msg->hdr.event = evt;
+ p_msg->hdr.layer_specific = event;
+ p_msg->hdr.offset = p_data->hdr.err_param;
+ bdcpy(p_msg->bd_addr, bd_addr);
#if (BTA_AV_DEBUG == TRUE)
- if(p_scb) {
- APPL_TRACE_DEBUG("scb hndl x%x, role x%x", p_scb->hndl, p_scb->role);
- }
-#endif
- APPL_TRACE_DEBUG("conn_cback bd_addr:%02x-%02x-%02x-%02x-%02x-%02x",
- bd_addr[0], bd_addr[1],
- bd_addr[2], bd_addr[3],
- bd_addr[4], bd_addr[5]);
- bta_sys_sendmsg(p_msg);
+ if (p_scb) {
+ APPL_TRACE_DEBUG("scb hndl x%x, role x%x", p_scb->hndl, p_scb->role);
}
+#endif
+ APPL_TRACE_DEBUG("conn_cback bd_addr:%02x-%02x-%02x-%02x-%02x-%02x",
+ bd_addr[0], bd_addr[1], bd_addr[2], bd_addr[3], bd_addr[4],
+ bd_addr[5]);
+ bta_sys_sendmsg(p_msg);
+ }
}
#if (AVDT_REPORTING == TRUE)
@@ -412,11 +376,11 @@
* Returns void
*
******************************************************************************/
-static void bta_av_a2dp_report_cback(UNUSED_ATTR uint8_t handle, UNUSED_ATTR AVDT_REPORT_TYPE type,
- UNUSED_ATTR tAVDT_REPORT_DATA *p_data)
-{
- /* Do not need to handle report data for now.
- * This empty function is here for conformance reasons. */
+static void bta_av_a2dp_report_cback(UNUSED_ATTR uint8_t handle,
+ UNUSED_ATTR AVDT_REPORT_TYPE type,
+ UNUSED_ATTR tAVDT_REPORT_DATA* p_data) {
+ /* Do not need to handle report data for now.
+ * This empty function is here for conformance reasons. */
}
#endif
@@ -431,281 +395,255 @@
* Returns void
*
******************************************************************************/
-static void bta_av_api_register(tBTA_AV_DATA *p_data)
-{
- tBTA_AV_REGISTER registr;
- tBTA_AV_SCB *p_scb; /* stream control block */
- tAVDT_REG reg;
- tAVDT_CS cs;
- char *p_service_name;
- tBTA_UTL_COD cod;
+static void bta_av_api_register(tBTA_AV_DATA* p_data) {
+ tBTA_AV_REGISTER registr;
+ tBTA_AV_SCB* p_scb; /* stream control block */
+ tAVDT_REG reg;
+ tAVDT_CS cs;
+ char* p_service_name;
+ tBTA_UTL_COD cod;
- memset(&cs,0,sizeof(tAVDT_CS));
+ memset(&cs, 0, sizeof(tAVDT_CS));
- registr.status = BTA_AV_FAIL_RESOURCES;
- registr.app_id = p_data->api_reg.app_id;
- registr.chnl = (tBTA_AV_CHNL)p_data->hdr.layer_specific;
+ registr.status = BTA_AV_FAIL_RESOURCES;
+ registr.app_id = p_data->api_reg.app_id;
+ registr.chnl = (tBTA_AV_CHNL)p_data->hdr.layer_specific;
- uint16_t profile_initialized = p_data->api_reg.service_uuid;
- if (profile_initialized == UUID_SERVCLASS_AUDIO_SINK)
- {
- p_bta_av_cfg = (tBTA_AV_CFG *) &bta_avk_cfg;
- }
- else if (profile_initialized == UUID_SERVCLASS_AUDIO_SOURCE)
- {
- p_bta_av_cfg = (tBTA_AV_CFG *) &bta_av_cfg;
+ uint16_t profile_initialized = p_data->api_reg.service_uuid;
+ if (profile_initialized == UUID_SERVCLASS_AUDIO_SINK) {
+ p_bta_av_cfg = (tBTA_AV_CFG*)&bta_avk_cfg;
+ } else if (profile_initialized == UUID_SERVCLASS_AUDIO_SOURCE) {
+ p_bta_av_cfg = (tBTA_AV_CFG*)&bta_av_cfg;
+ }
+
+ APPL_TRACE_DEBUG("%s: profile: 0x%x", __func__, profile_initialized);
+ if (p_bta_av_cfg == NULL) {
+ APPL_TRACE_ERROR("AV configuration is null!");
+ return;
+ }
+
+ do {
+ p_scb = bta_av_alloc_scb(registr.chnl);
+ if (p_scb == NULL) {
+ APPL_TRACE_ERROR("failed to alloc SCB");
+ break;
}
- APPL_TRACE_DEBUG("%s: profile: 0x%x", __func__, profile_initialized);
- if (p_bta_av_cfg == NULL)
- {
- APPL_TRACE_ERROR("AV configuration is null!");
- return;
- }
+ registr.hndl = p_scb->hndl;
+ p_scb->app_id = registr.app_id;
- do
- {
- p_scb = bta_av_alloc_scb(registr.chnl);
- if (p_scb == NULL)
- {
- APPL_TRACE_ERROR("failed to alloc SCB");
- break;
- }
+ /* initialize the stream control block */
+ registr.status = BTA_AV_SUCCESS;
- registr.hndl = p_scb->hndl;
- p_scb->app_id = registr.app_id;
-
- /* initialize the stream control block */
- registr.status = BTA_AV_SUCCESS;
-
- if ((bta_av_cb.reg_audio + bta_av_cb.reg_video) == 0)
- {
- /* the first channel registered. register to AVDTP */
- reg.ctrl_mtu = p_bta_av_cfg->sig_mtu;
- reg.ret_tout = BTA_AV_RET_TOUT;
- reg.sig_tout = BTA_AV_SIG_TOUT;
- reg.idle_tout = BTA_AV_IDLE_TOUT;
- reg.sec_mask = bta_av_cb.sec_mask;
+ if ((bta_av_cb.reg_audio + bta_av_cb.reg_video) == 0) {
+ /* the first channel registered. register to AVDTP */
+ reg.ctrl_mtu = p_bta_av_cfg->sig_mtu;
+ reg.ret_tout = BTA_AV_RET_TOUT;
+ reg.sig_tout = BTA_AV_SIG_TOUT;
+ reg.idle_tout = BTA_AV_IDLE_TOUT;
+ reg.sec_mask = bta_av_cb.sec_mask;
#if (BTA_AR_INCLUDED == TRUE)
- bta_ar_reg_avdt(®, bta_av_conn_cback, BTA_ID_AV);
+ bta_ar_reg_avdt(®, bta_av_conn_cback, BTA_ID_AV);
#endif
- bta_sys_role_chg_register(&bta_av_sys_rs_cback);
+ bta_sys_role_chg_register(&bta_av_sys_rs_cback);
- /* create remote control TG service if required */
- if (bta_av_cb.features & (BTA_AV_FEAT_RCTG))
- {
- /* register with no authorization; let AVDTP use authorization instead */
+ /* create remote control TG service if required */
+ if (bta_av_cb.features & (BTA_AV_FEAT_RCTG)) {
+/* register with no authorization; let AVDTP use authorization instead */
#if (BTA_AR_INCLUDED == TRUE)
#if (BTA_AV_WITH_AVCTP_AUTHORIZATION == TRUE)
- bta_ar_reg_avct(p_bta_av_cfg->avrc_mtu, p_bta_av_cfg->avrc_br_mtu,
- bta_av_cb.sec_mask, BTA_ID_AV);
+ bta_ar_reg_avct(p_bta_av_cfg->avrc_mtu, p_bta_av_cfg->avrc_br_mtu,
+ bta_av_cb.sec_mask, BTA_ID_AV);
#else
- bta_ar_reg_avct(p_bta_av_cfg->avrc_mtu, p_bta_av_cfg->avrc_br_mtu,
- (uint8_t)(bta_av_cb.sec_mask & (~BTA_SEC_AUTHORIZE)), BTA_ID_AV);
+ bta_ar_reg_avct(p_bta_av_cfg->avrc_mtu, p_bta_av_cfg->avrc_br_mtu,
+ (uint8_t)(bta_av_cb.sec_mask & (~BTA_SEC_AUTHORIZE)),
+ BTA_ID_AV);
#endif
- /* Both Audio Source and Audio Sink support AVRCP 1.6 for the
- * major roles (i.e. Audio Source -> TG 1.6 and vice versa). For
- * Audio Sink role we support additional TG 1.3 to support
- * absolute volume. Here we only do TG registration.
- */
- uint16_t profile_version = AVRC_REV_1_0;
- if (profile_initialized == UUID_SERVCLASS_AUDIO_SOURCE)
- {
- profile_version = AVRC_REV_1_6;
- }
- else if (profile_initialized == UUID_SERVCLASS_AUDIO_SINK)
- {
- // Initialize AVRCP1.4 to provide Absolute Volume control.
- profile_version = AVRC_REV_1_4;
- }
- bta_ar_reg_avrc(UUID_SERVCLASS_AV_REM_CTRL_TARGET, "AV Remote Control Target",
- NULL, p_bta_av_cfg->avrc_tg_cat, BTA_ID_AV,
- (bta_av_cb.features & BTA_AV_FEAT_BROWSE), profile_version);
+ /* Both Audio Source and Audio Sink support AVRCP 1.6 for the
+ * major roles (i.e. Audio Source -> TG 1.6 and vice versa). For
+ * Audio Sink role we support additional TG 1.3 to support
+ * absolute volume. Here we only do TG registration.
+ */
+ uint16_t profile_version = AVRC_REV_1_0;
+ if (profile_initialized == UUID_SERVCLASS_AUDIO_SOURCE) {
+ profile_version = AVRC_REV_1_6;
+ } else if (profile_initialized == UUID_SERVCLASS_AUDIO_SINK) {
+ // Initialize AVRCP1.4 to provide Absolute Volume control.
+ profile_version = AVRC_REV_1_4;
+ }
+ bta_ar_reg_avrc(
+ UUID_SERVCLASS_AV_REM_CTRL_TARGET, "AV Remote Control Target", NULL,
+ p_bta_av_cfg->avrc_tg_cat, BTA_ID_AV,
+ (bta_av_cb.features & BTA_AV_FEAT_BROWSE), profile_version);
#endif
- }
+ }
- /* Set the Capturing service class bit */
- if (profile_initialized == UUID_SERVCLASS_AUDIO_SOURCE)
- cod.service = BTM_COD_SERVICE_CAPTURING;
- else if (profile_initialized == UUID_SERVCLASS_AUDIO_SINK)
- cod.service = BTM_COD_SERVICE_RENDERING;
- utl_set_device_class(&cod, BTA_UTL_SET_COD_SERVICE_CLASS);
- } /* if 1st channel */
+ /* Set the Capturing service class bit */
+ if (profile_initialized == UUID_SERVCLASS_AUDIO_SOURCE)
+ cod.service = BTM_COD_SERVICE_CAPTURING;
+ else if (profile_initialized == UUID_SERVCLASS_AUDIO_SINK)
+ cod.service = BTM_COD_SERVICE_RENDERING;
+ utl_set_device_class(&cod, BTA_UTL_SET_COD_SERVICE_CLASS);
+ } /* if 1st channel */
- /* get stream configuration and create stream */
- cs.cfg.num_codec = 1;
- cs.nsc_mask = AVDT_NSC_RECONFIG |
- ((bta_av_cb.features & BTA_AV_FEAT_PROTECT) ? 0 : AVDT_NSC_SECURITY);
- APPL_TRACE_DEBUG("nsc_mask: 0x%x", cs.nsc_mask);
+ /* get stream configuration and create stream */
+ cs.cfg.num_codec = 1;
+ cs.nsc_mask =
+ AVDT_NSC_RECONFIG |
+ ((bta_av_cb.features & BTA_AV_FEAT_PROTECT) ? 0 : AVDT_NSC_SECURITY);
+ APPL_TRACE_DEBUG("nsc_mask: 0x%x", cs.nsc_mask);
- if (p_data->api_reg.p_service_name[0] == 0)
- {
- p_service_name = NULL;
- }
- else
- {
- p_service_name = p_data->api_reg.p_service_name;
- }
+ if (p_data->api_reg.p_service_name[0] == 0) {
+ p_service_name = NULL;
+ } else {
+ p_service_name = p_data->api_reg.p_service_name;
+ }
- p_scb->suspend_sup = true;
- p_scb->recfg_sup = true;
- p_scb->skip_sdp = false;
+ p_scb->suspend_sup = true;
+ p_scb->recfg_sup = true;
+ p_scb->skip_sdp = false;
- cs.p_ctrl_cback = bta_av_dt_cback[p_scb->hdi];
- if(registr.chnl == BTA_AV_CHNL_AUDIO)
- {
- /* set up the audio stream control block */
- p_scb->p_act_tbl = (const tBTA_AV_ACT *)bta_av_a2dp_action;
- p_scb->p_cos = &bta_av_a2dp_cos;
- p_scb->media_type= AVDT_MEDIA_TYPE_AUDIO;
- cs.cfg.psc_mask = AVDT_PSC_TRANS;
- cs.media_type = AVDT_MEDIA_TYPE_AUDIO;
- cs.mtu = p_bta_av_cfg->audio_mtu;
- cs.flush_to = L2CAP_DEFAULT_FLUSH_TO;
- tA2DP_CODEC_SEP_INDEX codec_sep_index_min =
- A2DP_CODEC_SEP_INDEX_SOURCE_MIN;
- tA2DP_CODEC_SEP_INDEX codec_sep_index_max =
- A2DP_CODEC_SEP_INDEX_SOURCE_MAX;
+ cs.p_ctrl_cback = bta_av_dt_cback[p_scb->hdi];
+ if (registr.chnl == BTA_AV_CHNL_AUDIO) {
+ /* set up the audio stream control block */
+ p_scb->p_act_tbl = (const tBTA_AV_ACT*)bta_av_a2dp_action;
+ p_scb->p_cos = &bta_av_a2dp_cos;
+ p_scb->media_type = AVDT_MEDIA_TYPE_AUDIO;
+ cs.cfg.psc_mask = AVDT_PSC_TRANS;
+ cs.media_type = AVDT_MEDIA_TYPE_AUDIO;
+ cs.mtu = p_bta_av_cfg->audio_mtu;
+ cs.flush_to = L2CAP_DEFAULT_FLUSH_TO;
+ tA2DP_CODEC_SEP_INDEX codec_sep_index_min =
+ A2DP_CODEC_SEP_INDEX_SOURCE_MIN;
+ tA2DP_CODEC_SEP_INDEX codec_sep_index_max =
+ A2DP_CODEC_SEP_INDEX_SOURCE_MAX;
#if (AVDT_REPORTING == TRUE)
- if(bta_av_cb.features & BTA_AV_FEAT_REPORT)
- {
- cs.cfg.psc_mask |= AVDT_PSC_REPORT;
- cs.p_report_cback = bta_av_a2dp_report_cback;
- }
+ if (bta_av_cb.features & BTA_AV_FEAT_REPORT) {
+ cs.cfg.psc_mask |= AVDT_PSC_REPORT;
+ cs.p_report_cback = bta_av_a2dp_report_cback;
+ }
#endif
- if(bta_av_cb.features & BTA_AV_FEAT_DELAY_RPT)
- cs.cfg.psc_mask |= AVDT_PSC_DELAY_RPT;
+ if (bta_av_cb.features & BTA_AV_FEAT_DELAY_RPT)
+ cs.cfg.psc_mask |= AVDT_PSC_DELAY_RPT;
- if (profile_initialized == UUID_SERVCLASS_AUDIO_SOURCE)
- {
- cs.tsep = AVDT_TSEP_SRC;
- codec_sep_index_min = A2DP_CODEC_SEP_INDEX_SOURCE_MIN;
- codec_sep_index_max = A2DP_CODEC_SEP_INDEX_SOURCE_MAX;
- }
- else if (profile_initialized == UUID_SERVCLASS_AUDIO_SINK)
- {
- cs.tsep = AVDT_TSEP_SNK;
- cs.p_sink_data_cback = bta_av_sink_data_cback;
- codec_sep_index_min = A2DP_CODEC_SEP_INDEX_SINK_MIN;
- codec_sep_index_max = A2DP_CODEC_SEP_INDEX_SINK_MAX;
- }
+ if (profile_initialized == UUID_SERVCLASS_AUDIO_SOURCE) {
+ cs.tsep = AVDT_TSEP_SRC;
+ codec_sep_index_min = A2DP_CODEC_SEP_INDEX_SOURCE_MIN;
+ codec_sep_index_max = A2DP_CODEC_SEP_INDEX_SOURCE_MAX;
+ } else if (profile_initialized == UUID_SERVCLASS_AUDIO_SINK) {
+ cs.tsep = AVDT_TSEP_SNK;
+ cs.p_sink_data_cback = bta_av_sink_data_cback;
+ codec_sep_index_min = A2DP_CODEC_SEP_INDEX_SINK_MIN;
+ codec_sep_index_max = A2DP_CODEC_SEP_INDEX_SINK_MAX;
+ }
- /* Initialize handles to zero */
- for (int xx = 0; xx < A2DP_CODEC_SEP_INDEX_MAX; xx++)
- {
- p_scb->seps[xx].av_handle = 0;
- }
+ /* Initialize handles to zero */
+ for (int xx = 0; xx < A2DP_CODEC_SEP_INDEX_MAX; xx++) {
+ p_scb->seps[xx].av_handle = 0;
+ }
- /* keep the configuration in the stream control block */
- memcpy(&p_scb->cfg, &cs.cfg, sizeof(tAVDT_CFG));
- for (int i = 0; i < A2DP_CODEC_SEP_INDEX_MAX; i++) {
- tA2DP_CODEC_SEP_INDEX codec_sep_index =
- static_cast<tA2DP_CODEC_SEP_INDEX>(i);
- if (!(*bta_av_a2dp_cos.init)(codec_sep_index, &cs.cfg)) {
- continue;
- }
- if (AVDT_CreateStream(&p_scb->seps[codec_sep_index].av_handle,
- &cs) != AVDT_SUCCESS) {
- continue;
- }
- /* Save a copy of the codec */
- memcpy(p_scb->seps[codec_sep_index].codec_info,
- cs.cfg.codec_info, AVDT_CODEC_SIZE);
- p_scb->seps[codec_sep_index].tsep = cs.tsep;
- if (cs.tsep == AVDT_TSEP_SNK) {
- p_scb->seps[codec_sep_index].p_app_sink_data_cback =
- p_data->api_reg.p_app_sink_data_cback;
- } else {
- /* In case of A2DP SOURCE we don't need a callback to
- * handle media packets.
- */
- p_scb->seps[codec_sep_index].p_app_sink_data_cback = NULL;
- }
- }
+ /* keep the configuration in the stream control block */
+ memcpy(&p_scb->cfg, &cs.cfg, sizeof(tAVDT_CFG));
+ for (int i = 0; i < A2DP_CODEC_SEP_INDEX_MAX; i++) {
+ tA2DP_CODEC_SEP_INDEX codec_sep_index =
+ static_cast<tA2DP_CODEC_SEP_INDEX>(i);
+ if (!(*bta_av_a2dp_cos.init)(codec_sep_index, &cs.cfg)) {
+ continue;
+ }
+ if (AVDT_CreateStream(&p_scb->seps[codec_sep_index].av_handle, &cs) !=
+ AVDT_SUCCESS) {
+ continue;
+ }
+ /* Save a copy of the codec */
+ memcpy(p_scb->seps[codec_sep_index].codec_info, cs.cfg.codec_info,
+ AVDT_CODEC_SIZE);
+ p_scb->seps[codec_sep_index].tsep = cs.tsep;
+ if (cs.tsep == AVDT_TSEP_SNK) {
+ p_scb->seps[codec_sep_index].p_app_sink_data_cback =
+ p_data->api_reg.p_app_sink_data_cback;
+ } else {
+ /* In case of A2DP SOURCE we don't need a callback to
+ * handle media packets.
+ */
+ p_scb->seps[codec_sep_index].p_app_sink_data_cback = NULL;
+ }
+ }
- if(!bta_av_cb.reg_audio)
- {
- bta_av_cb.sdp_a2dp_handle = 0;
- bta_av_cb.sdp_a2dp_snk_handle = 0;
- if (profile_initialized == UUID_SERVCLASS_AUDIO_SOURCE)
- {
- /* create the SDP records on the 1st audio channel */
- bta_av_cb.sdp_a2dp_handle = SDP_CreateRecord();
- A2DP_AddRecord(UUID_SERVCLASS_AUDIO_SOURCE, p_service_name,
- NULL, A2DP_SUPF_PLAYER,
- bta_av_cb.sdp_a2dp_handle);
- bta_sys_add_uuid(UUID_SERVCLASS_AUDIO_SOURCE);
- }
- else if (profile_initialized == UUID_SERVCLASS_AUDIO_SINK)
- {
+ if (!bta_av_cb.reg_audio) {
+ bta_av_cb.sdp_a2dp_handle = 0;
+ bta_av_cb.sdp_a2dp_snk_handle = 0;
+ if (profile_initialized == UUID_SERVCLASS_AUDIO_SOURCE) {
+ /* create the SDP records on the 1st audio channel */
+ bta_av_cb.sdp_a2dp_handle = SDP_CreateRecord();
+ A2DP_AddRecord(UUID_SERVCLASS_AUDIO_SOURCE, p_service_name, NULL,
+ A2DP_SUPF_PLAYER, bta_av_cb.sdp_a2dp_handle);
+ bta_sys_add_uuid(UUID_SERVCLASS_AUDIO_SOURCE);
+ } else if (profile_initialized == UUID_SERVCLASS_AUDIO_SINK) {
#if (BTA_AV_SINK_INCLUDED == TRUE)
- bta_av_cb.sdp_a2dp_snk_handle = SDP_CreateRecord();
- A2DP_AddRecord(UUID_SERVCLASS_AUDIO_SINK, p_service_name,
- NULL, A2DP_SUPF_PLAYER,
- bta_av_cb.sdp_a2dp_snk_handle);
- bta_sys_add_uuid(UUID_SERVCLASS_AUDIO_SINK);
+ bta_av_cb.sdp_a2dp_snk_handle = SDP_CreateRecord();
+ A2DP_AddRecord(UUID_SERVCLASS_AUDIO_SINK, p_service_name, NULL,
+ A2DP_SUPF_PLAYER, bta_av_cb.sdp_a2dp_snk_handle);
+ bta_sys_add_uuid(UUID_SERVCLASS_AUDIO_SINK);
#endif
- }
- /* start listening when A2DP is registered */
- if (bta_av_cb.features & BTA_AV_FEAT_RCTG)
- bta_av_rc_create(&bta_av_cb, AVCT_ACP, 0, BTA_AV_NUM_LINKS + 1);
+ }
+ /* start listening when A2DP is registered */
+ if (bta_av_cb.features & BTA_AV_FEAT_RCTG)
+ bta_av_rc_create(&bta_av_cb, AVCT_ACP, 0, BTA_AV_NUM_LINKS + 1);
- /* if the AV and AVK are both supported, it cannot support the CT role */
- if (bta_av_cb.features & (BTA_AV_FEAT_RCCT))
- {
- /* if TG is not supported, we need to register to AVCT now */
- if ((bta_av_cb.features & (BTA_AV_FEAT_RCTG)) == 0)
- {
+ /* if the AV and AVK are both supported, it cannot support the CT role
+ */
+ if (bta_av_cb.features & (BTA_AV_FEAT_RCCT)) {
+ /* if TG is not supported, we need to register to AVCT now */
+ if ((bta_av_cb.features & (BTA_AV_FEAT_RCTG)) == 0) {
#if (BTA_AR_INCLUDED == TRUE)
#if (BTA_AV_WITH_AVCTP_AUTHORIZATION == TRUE)
- bta_ar_reg_avct(p_bta_av_cfg->avrc_mtu, p_bta_av_cfg->avrc_br_mtu,
- bta_av_cb.sec_mask, BTA_ID_AV);
+ bta_ar_reg_avct(p_bta_av_cfg->avrc_mtu, p_bta_av_cfg->avrc_br_mtu,
+ bta_av_cb.sec_mask, BTA_ID_AV);
#else
- bta_ar_reg_avct(p_bta_av_cfg->avrc_mtu, p_bta_av_cfg->avrc_br_mtu,
- (uint8_t)(bta_av_cb.sec_mask & (~BTA_SEC_AUTHORIZE)), BTA_ID_AV);
+ bta_ar_reg_avct(
+ p_bta_av_cfg->avrc_mtu, p_bta_av_cfg->avrc_br_mtu,
+ (uint8_t)(bta_av_cb.sec_mask & (~BTA_SEC_AUTHORIZE)),
+ BTA_ID_AV);
#endif
#endif
- bta_av_rc_create(&bta_av_cb, AVCT_ACP, 0, BTA_AV_NUM_LINKS + 1);
- }
+ bta_av_rc_create(&bta_av_cb, AVCT_ACP, 0, BTA_AV_NUM_LINKS + 1);
+ }
#if (BTA_AR_INCLUDED == TRUE)
- /* create an SDP record as AVRC CT. We create 1.3 for SOURCE
- * because we rely on feature bits being scanned by external
- * devices more than the profile version itself.
- *
- * We create 1.4 for SINK since we support browsing.
- */
- if (profile_initialized == UUID_SERVCLASS_AUDIO_SOURCE)
- {
- bta_ar_reg_avrc(UUID_SERVCLASS_AV_REMOTE_CONTROL, NULL, NULL,
- p_bta_av_cfg->avrc_ct_cat, BTA_ID_AV,
- (bta_av_cb.features & BTA_AV_FEAT_BROWSE), AVRC_REV_1_3);
- }
- else if (profile_initialized == UUID_SERVCLASS_AUDIO_SINK)
- {
- bta_ar_reg_avrc(UUID_SERVCLASS_AV_REMOTE_CONTROL, NULL, NULL,
- p_bta_av_cfg->avrc_ct_cat, BTA_ID_AV,
- (bta_av_cb.features & BTA_AV_FEAT_BROWSE), AVRC_REV_1_6);
- }
+ /* create an SDP record as AVRC CT. We create 1.3 for SOURCE
+ * because we rely on feature bits being scanned by external
+ * devices more than the profile version itself.
+ *
+ * We create 1.4 for SINK since we support browsing.
+ */
+ if (profile_initialized == UUID_SERVCLASS_AUDIO_SOURCE) {
+ bta_ar_reg_avrc(UUID_SERVCLASS_AV_REMOTE_CONTROL, NULL, NULL,
+ p_bta_av_cfg->avrc_ct_cat, BTA_ID_AV,
+ (bta_av_cb.features & BTA_AV_FEAT_BROWSE),
+ AVRC_REV_1_3);
+ } else if (profile_initialized == UUID_SERVCLASS_AUDIO_SINK) {
+ bta_ar_reg_avrc(UUID_SERVCLASS_AV_REMOTE_CONTROL, NULL, NULL,
+ p_bta_av_cfg->avrc_ct_cat, BTA_ID_AV,
+ (bta_av_cb.features & BTA_AV_FEAT_BROWSE),
+ AVRC_REV_1_6);
+ }
#endif
- }
- }
- bta_av_cb.reg_audio |= BTA_AV_HNDL_TO_MSK(p_scb->hdi);
- APPL_TRACE_DEBUG("reg_audio: 0x%x",bta_av_cb.reg_audio);
}
- else
- {
- bta_av_cb.reg_video = BTA_AV_HNDL_TO_MSK(p_scb->hdi);
- bta_av_cb.sdp_vdp_handle = SDP_CreateRecord();
- /* register the video channel */
- /* no need to verify the function pointer here. it's verified prior */
- (*p_bta_av_cfg->p_reg)(&cs, p_service_name, p_scb);
- }
- } while (0);
+ }
+ bta_av_cb.reg_audio |= BTA_AV_HNDL_TO_MSK(p_scb->hdi);
+ APPL_TRACE_DEBUG("reg_audio: 0x%x", bta_av_cb.reg_audio);
+ } else {
+ bta_av_cb.reg_video = BTA_AV_HNDL_TO_MSK(p_scb->hdi);
+ bta_av_cb.sdp_vdp_handle = SDP_CreateRecord();
+ /* register the video channel */
+ /* no need to verify the function pointer here. it's verified prior */
+ (*p_bta_av_cfg->p_reg)(&cs, p_service_name, p_scb);
+ }
+ } while (0);
- /* call callback with register event */
- (*bta_av_cb.p_cback)(BTA_AV_REGISTER_EVT, (tBTA_AV *)®istr);
+ /* call callback with register event */
+ (*bta_av_cb.p_cback)(BTA_AV_REGISTER_EVT, (tBTA_AV*)®istr);
}
/*******************************************************************************
@@ -718,46 +656,40 @@
* Returns void
*
******************************************************************************/
-void bta_av_api_deregister(tBTA_AV_DATA *p_data)
-{
- tBTA_AV_SCB *p_scb = bta_av_hndl_to_scb(p_data->hdr.layer_specific);
+void bta_av_api_deregister(tBTA_AV_DATA* p_data) {
+ tBTA_AV_SCB* p_scb = bta_av_hndl_to_scb(p_data->hdr.layer_specific);
- if(p_scb)
- {
- p_scb->deregistring = true;
- bta_av_ssm_execute(p_scb, BTA_AV_API_CLOSE_EVT, p_data);
- }
- else
- {
- bta_av_dereg_comp(p_data);
- }
+ if (p_scb) {
+ p_scb->deregistring = true;
+ bta_av_ssm_execute(p_scb, BTA_AV_API_CLOSE_EVT, p_data);
+ } else {
+ bta_av_dereg_comp(p_data);
+ }
}
/*******************************************************************************
*
* Function bta_av_ci_data
*
- * Description forward the BTA_AV_CI_SRC_DATA_READY_EVT to stream state machine
+ * Description forward the BTA_AV_CI_SRC_DATA_READY_EVT to stream state
+ *machine
*
*
* Returns void
*
******************************************************************************/
-static void bta_av_ci_data(tBTA_AV_DATA *p_data)
-{
- tBTA_AV_SCB *p_scb;
- int i;
- uint8_t chnl = (uint8_t)p_data->hdr.layer_specific;
+static void bta_av_ci_data(tBTA_AV_DATA* p_data) {
+ tBTA_AV_SCB* p_scb;
+ int i;
+ uint8_t chnl = (uint8_t)p_data->hdr.layer_specific;
- for( i=0; i < BTA_AV_NUM_STRS; i++ )
- {
- p_scb = bta_av_cb.p_scb[i];
+ for (i = 0; i < BTA_AV_NUM_STRS; i++) {
+ p_scb = bta_av_cb.p_scb[i];
- if(p_scb && p_scb->chnl == chnl)
- {
- bta_av_ssm_execute(p_scb, BTA_AV_SRC_DATA_READY_EVT, p_data);
- }
+ if (p_scb && p_scb->chnl == chnl) {
+ bta_av_ssm_execute(p_scb, BTA_AV_SRC_DATA_READY_EVT, p_data);
}
+ }
}
/*******************************************************************************
@@ -770,9 +702,7 @@
*
******************************************************************************/
#if (AVDT_REPORTING == TRUE)
-static void bta_av_rpc_conn(UNUSED_ATTR tBTA_AV_DATA *p_data)
-{
-}
+static void bta_av_rpc_conn(UNUSED_ATTR tBTA_AV_DATA* p_data) {}
#endif
/*******************************************************************************
@@ -785,15 +715,14 @@
* Returns void
*
******************************************************************************/
-static void bta_av_api_to_ssm(tBTA_AV_DATA *p_data)
-{
- int xx;
- uint16_t event = p_data->hdr.event - BTA_AV_FIRST_A2S_API_EVT + BTA_AV_FIRST_A2S_SSM_EVT;
+static void bta_av_api_to_ssm(tBTA_AV_DATA* p_data) {
+ int xx;
+ uint16_t event =
+ p_data->hdr.event - BTA_AV_FIRST_A2S_API_EVT + BTA_AV_FIRST_A2S_SSM_EVT;
- for(xx=0; xx<BTA_AV_NUM_STRS; xx++)
- {
- bta_av_ssm_execute(bta_av_cb.p_scb[xx], event, p_data);
- }
+ for (xx = 0; xx < BTA_AV_NUM_STRS; xx++) {
+ bta_av_ssm_execute(bta_av_cb.p_scb[xx], event, p_data);
+ }
}
/*******************************************************************************
@@ -806,37 +735,38 @@
* Returns true, if need api_start
*
******************************************************************************/
-bool bta_av_chk_start(tBTA_AV_SCB *p_scb)
-{
- bool start = false;
- tBTA_AV_SCB *p_scbi;
- int i;
+bool bta_av_chk_start(tBTA_AV_SCB* p_scb) {
+ bool start = false;
+ tBTA_AV_SCB* p_scbi;
+ int i;
- if(p_scb->chnl == BTA_AV_CHNL_AUDIO)
+ if (p_scb->chnl == BTA_AV_CHNL_AUDIO) {
+ if ((bta_av_cb.audio_open_cnt >= 2) &&
+ ((0 ==
+ (p_scb->role & BTA_AV_ROLE_AD_ACP)) || /* Outgoing connection or */
+ (bta_av_cb.features &
+ BTA_AV_FEAT_ACP_START))) /* auto-starting option */
{
- if ((bta_av_cb.audio_open_cnt >= 2) &&
- ((0 == (p_scb->role & BTA_AV_ROLE_AD_ACP)) || /* Outgoing connection or */
- (bta_av_cb.features & BTA_AV_FEAT_ACP_START))) /* auto-starting option */
- {
- /* more than one audio channel is connected */
- /* if this is the 2nd stream as ACP, give INT a chance to issue the START command */
- for(i=0; i<BTA_AV_NUM_STRS; i++)
- {
- p_scbi = bta_av_cb.p_scb[i];
- if(p_scbi && p_scbi->chnl == BTA_AV_CHNL_AUDIO && p_scbi->co_started)
- {
- start = true;
- /* may need to update the flush timeout of this already started stream */
- if(p_scbi->co_started != bta_av_cb.audio_open_cnt)
- {
- p_scbi->co_started = bta_av_cb.audio_open_cnt;
- L2CA_SetFlushTimeout(p_scbi->peer_addr, p_bta_av_cfg->p_audio_flush_to[p_scbi->co_started - 1] );
- }
- }
- }
+ /* more than one audio channel is connected */
+ /* if this is the 2nd stream as ACP, give INT a chance to issue the START
+ * command */
+ for (i = 0; i < BTA_AV_NUM_STRS; i++) {
+ p_scbi = bta_av_cb.p_scb[i];
+ if (p_scbi && p_scbi->chnl == BTA_AV_CHNL_AUDIO && p_scbi->co_started) {
+ start = true;
+ /* may need to update the flush timeout of this already started stream
+ */
+ if (p_scbi->co_started != bta_av_cb.audio_open_cnt) {
+ p_scbi->co_started = bta_av_cb.audio_open_cnt;
+ L2CA_SetFlushTimeout(
+ p_scbi->peer_addr,
+ p_bta_av_cfg->p_audio_flush_to[p_scbi->co_started - 1]);
+ }
}
+ }
}
- return start;
+ }
+ return start;
}
/*******************************************************************************
@@ -849,25 +779,22 @@
* Returns void
*
******************************************************************************/
-void bta_av_restore_switch (void)
-{
- tBTA_AV_CB *p_cb = &bta_av_cb;
- int i;
- uint8_t mask;
+void bta_av_restore_switch(void) {
+ tBTA_AV_CB* p_cb = &bta_av_cb;
+ int i;
+ uint8_t mask;
- APPL_TRACE_DEBUG("reg_audio: 0x%x",bta_av_cb.reg_audio);
- for(i=0; i<BTA_AV_NUM_STRS; i++)
- {
- mask = BTA_AV_HNDL_TO_MSK(i);
- if (p_cb->conn_audio == mask)
- {
- if (p_cb->p_scb[i])
- {
- bta_sys_set_policy(BTA_ID_AV, HCI_ENABLE_MASTER_SLAVE_SWITCH, p_cb->p_scb[i]->peer_addr);
- }
- break;
- }
+ APPL_TRACE_DEBUG("reg_audio: 0x%x", bta_av_cb.reg_audio);
+ for (i = 0; i < BTA_AV_NUM_STRS; i++) {
+ mask = BTA_AV_HNDL_TO_MSK(i);
+ if (p_cb->conn_audio == mask) {
+ if (p_cb->p_scb[i]) {
+ bta_sys_set_policy(BTA_ID_AV, HCI_ENABLE_MASTER_SLAVE_SWITCH,
+ p_cb->p_scb[i]->peer_addr);
+ }
+ break;
}
+ }
}
/*******************************************************************************
@@ -879,72 +806,70 @@
* Returns (BTA_SYS_ROLE_CHANGE, new_role, hci_status, p_bda)
*
******************************************************************************/
-static void bta_av_sys_rs_cback (UNUSED_ATTR tBTA_SYS_CONN_STATUS status,uint8_t id,
- uint8_t app_id, BD_ADDR peer_addr)
-{
- int i;
- tBTA_AV_SCB *p_scb = NULL;
- uint8_t cur_role;
- uint8_t peer_idx = 0;
+static void bta_av_sys_rs_cback(UNUSED_ATTR tBTA_SYS_CONN_STATUS status,
+ uint8_t id, uint8_t app_id, BD_ADDR peer_addr) {
+ int i;
+ tBTA_AV_SCB* p_scb = NULL;
+ uint8_t cur_role;
+ uint8_t peer_idx = 0;
- APPL_TRACE_DEBUG("bta_av_sys_rs_cback: %d", bta_av_cb.rs_idx);
- for(i=0; i<BTA_AV_NUM_STRS; i++)
- {
- /* loop through all the SCBs to find matching peer addresses and report the role change event */
- /* note that more than one SCB (a2dp & vdp) maybe waiting for this event */
- p_scb = bta_av_cb.p_scb[i];
- if (p_scb && (bdcmp (peer_addr, p_scb->peer_addr) == 0)) {
- tBTA_AV_ROLE_RES *p_buf =
- (tBTA_AV_ROLE_RES *)osi_malloc(sizeof(tBTA_AV_ROLE_RES));
- APPL_TRACE_DEBUG("new_role:%d, hci_status:x%x hndl: x%x", id, app_id, p_scb->hndl);
- /*
- if ((id != BTM_ROLE_MASTER) && (app_id != HCI_SUCCESS))
- {
- bta_sys_set_policy(BTA_ID_AV, (HCI_ENABLE_MASTER_SLAVE_SWITCH|HCI_ENABLE_SNIFF_MODE), p_scb->peer_addr);
- }
- */
- p_buf->hdr.event = BTA_AV_ROLE_CHANGE_EVT;
- p_buf->hdr.layer_specific = p_scb->hndl;
- p_buf->new_role = id;
- p_buf->hci_status = app_id;
- bta_sys_sendmsg(p_buf);
+ APPL_TRACE_DEBUG("bta_av_sys_rs_cback: %d", bta_av_cb.rs_idx);
+ for (i = 0; i < BTA_AV_NUM_STRS; i++) {
+ /* loop through all the SCBs to find matching peer addresses and report the
+ * role change event */
+ /* note that more than one SCB (a2dp & vdp) maybe waiting for this event */
+ p_scb = bta_av_cb.p_scb[i];
+ if (p_scb && (bdcmp(peer_addr, p_scb->peer_addr) == 0)) {
+ tBTA_AV_ROLE_RES* p_buf =
+ (tBTA_AV_ROLE_RES*)osi_malloc(sizeof(tBTA_AV_ROLE_RES));
+ APPL_TRACE_DEBUG("new_role:%d, hci_status:x%x hndl: x%x", id, app_id,
+ p_scb->hndl);
+ /*
+ if ((id != BTM_ROLE_MASTER) && (app_id != HCI_SUCCESS))
+ {
+ bta_sys_set_policy(BTA_ID_AV,
+ (HCI_ENABLE_MASTER_SLAVE_SWITCH|HCI_ENABLE_SNIFF_MODE), p_scb->peer_addr);
+ }
+ */
+ p_buf->hdr.event = BTA_AV_ROLE_CHANGE_EVT;
+ p_buf->hdr.layer_specific = p_scb->hndl;
+ p_buf->new_role = id;
+ p_buf->hci_status = app_id;
+ bta_sys_sendmsg(p_buf);
- peer_idx = p_scb->hdi + 1; /* Handle index for the peer_addr */
- }
+ peer_idx = p_scb->hdi + 1; /* Handle index for the peer_addr */
+ }
+ }
+
+ /* restore role switch policy, if role switch failed */
+ if ((HCI_SUCCESS != app_id) &&
+ (BTM_GetRole(peer_addr, &cur_role) == BTM_SUCCESS) &&
+ (cur_role == BTM_ROLE_SLAVE)) {
+ bta_sys_set_policy(BTA_ID_AV, HCI_ENABLE_MASTER_SLAVE_SWITCH, peer_addr);
+ }
+
+ /* if BTA_AvOpen() was called for other device, which caused the role switch
+ * of the peer_addr, */
+ /* we need to continue opening process for the BTA_AvOpen(). */
+ if ((bta_av_cb.rs_idx != 0) && (bta_av_cb.rs_idx != peer_idx)) {
+ if ((bta_av_cb.rs_idx - 1) < BTA_AV_NUM_STRS) {
+ p_scb = bta_av_cb.p_scb[bta_av_cb.rs_idx - 1];
+ }
+ if (p_scb && p_scb->q_tag == BTA_AV_Q_TAG_OPEN) {
+ APPL_TRACE_DEBUG("bta_av_sys_rs_cback: rs_idx(%d), hndl:x%x q_tag: %d",
+ bta_av_cb.rs_idx, p_scb->hndl, p_scb->q_tag);
+
+ if (HCI_SUCCESS == app_id || HCI_ERR_NO_CONNECTION == app_id)
+ p_scb->q_info.open.switch_res = BTA_AV_RS_OK;
+ else
+ p_scb->q_info.open.switch_res = BTA_AV_RS_FAIL;
+
+ /* Continue av open process */
+ bta_av_do_disc_a2dp(p_scb, (tBTA_AV_DATA*)&(p_scb->q_info.open));
}
- /* restore role switch policy, if role switch failed */
- if ((HCI_SUCCESS != app_id) &&
- (BTM_GetRole (peer_addr, &cur_role) == BTM_SUCCESS) &&
- (cur_role == BTM_ROLE_SLAVE) )
- {
- bta_sys_set_policy(BTA_ID_AV, HCI_ENABLE_MASTER_SLAVE_SWITCH, peer_addr);
- }
-
- /* if BTA_AvOpen() was called for other device, which caused the role switch of the peer_addr, */
- /* we need to continue opening process for the BTA_AvOpen(). */
- if ((bta_av_cb.rs_idx != 0) && (bta_av_cb.rs_idx != peer_idx))
- {
- if ((bta_av_cb.rs_idx -1) < BTA_AV_NUM_STRS)
- {
- p_scb = bta_av_cb.p_scb[bta_av_cb.rs_idx - 1];
- }
- if (p_scb && p_scb->q_tag == BTA_AV_Q_TAG_OPEN)
- {
- APPL_TRACE_DEBUG ("bta_av_sys_rs_cback: rs_idx(%d), hndl:x%x q_tag: %d",
- bta_av_cb.rs_idx, p_scb->hndl, p_scb->q_tag);
-
- if(HCI_SUCCESS == app_id || HCI_ERR_NO_CONNECTION == app_id)
- p_scb->q_info.open.switch_res = BTA_AV_RS_OK;
- else
- p_scb->q_info.open.switch_res = BTA_AV_RS_FAIL;
-
- /* Continue av open process */
- bta_av_do_disc_a2dp(p_scb, (tBTA_AV_DATA *)&(p_scb->q_info.open));
- }
-
- bta_av_cb.rs_idx = 0;
- }
+ bta_av_cb.rs_idx = 0;
+ }
}
/*******************************************************************************
@@ -952,56 +877,50 @@
* Function bta_av_sco_chg_cback
*
* Description receive & process the SCO connection up/down event from sys.
- * call setup also triggers this callback, to suspend av before sco
+ * call setup also triggers this callback, to suspend av before
+ *sco
* activity happens, or to resume av once call ends.
*
* Returns void
*
******************************************************************************/
-static void bta_av_sco_chg_cback(tBTA_SYS_CONN_STATUS status,
- uint8_t id,UNUSED_ATTR uint8_t app_id,
- UNUSED_ATTR BD_ADDR peer_addr)
-{
- tBTA_AV_SCB *p_scb;
- int i;
- tBTA_AV_API_STOP stop;
+static void bta_av_sco_chg_cback(tBTA_SYS_CONN_STATUS status, uint8_t id,
+ UNUSED_ATTR uint8_t app_id,
+ UNUSED_ATTR BD_ADDR peer_addr) {
+ tBTA_AV_SCB* p_scb;
+ int i;
+ tBTA_AV_API_STOP stop;
- APPL_TRACE_DEBUG("bta_av_sco_chg_cback:%d status:%d", id, status);
- if(id)
- {
- bta_av_cb.sco_occupied = true;
+ APPL_TRACE_DEBUG("bta_av_sco_chg_cback:%d status:%d", id, status);
+ if (id) {
+ bta_av_cb.sco_occupied = true;
- /* either BTA_SYS_SCO_OPEN or BTA_SYS_SCO_CLOSE with remaining active SCO */
- for(i=0; i<BTA_AV_NUM_STRS; i++)
- {
- p_scb = bta_av_cb.p_scb[i];
+ /* either BTA_SYS_SCO_OPEN or BTA_SYS_SCO_CLOSE with remaining active SCO */
+ for (i = 0; i < BTA_AV_NUM_STRS; i++) {
+ p_scb = bta_av_cb.p_scb[i];
- if( p_scb && p_scb->co_started && (p_scb->sco_suspend == false))
- {
- APPL_TRACE_DEBUG("suspending scb:%d", i);
- /* scb is used and started, not suspended automatically */
- p_scb->sco_suspend = true;
- stop.flush = false;
- stop.suspend = true;
- bta_av_ssm_execute(p_scb, BTA_AV_AP_STOP_EVT, (tBTA_AV_DATA *)&stop);
- }
- }
+ if (p_scb && p_scb->co_started && (p_scb->sco_suspend == false)) {
+ APPL_TRACE_DEBUG("suspending scb:%d", i);
+ /* scb is used and started, not suspended automatically */
+ p_scb->sco_suspend = true;
+ stop.flush = false;
+ stop.suspend = true;
+ bta_av_ssm_execute(p_scb, BTA_AV_AP_STOP_EVT, (tBTA_AV_DATA*)&stop);
+ }
}
- else
- {
- bta_av_cb.sco_occupied = false;
+ } else {
+ bta_av_cb.sco_occupied = false;
- for(i=0; i<BTA_AV_NUM_STRS; i++)
- {
- p_scb = bta_av_cb.p_scb[i];
+ for (i = 0; i < BTA_AV_NUM_STRS; i++) {
+ p_scb = bta_av_cb.p_scb[i];
- if( p_scb && p_scb->sco_suspend ) /* scb is used and suspended for SCO */
- {
- APPL_TRACE_DEBUG("starting scb:%d", i);
- bta_av_ssm_execute(p_scb, BTA_AV_AP_START_EVT, NULL);
- }
- }
+ if (p_scb && p_scb->sco_suspend) /* scb is used and suspended for SCO */
+ {
+ APPL_TRACE_DEBUG("starting scb:%d", i);
+ bta_av_ssm_execute(p_scb, BTA_AV_AP_START_EVT, NULL);
+ }
}
+ }
}
/*******************************************************************************
@@ -1015,44 +934,43 @@
* Returns true, if role switch is done
*
******************************************************************************/
-bool bta_av_switch_if_needed(tBTA_AV_SCB *p_scb)
-{
- uint8_t role;
- bool needed = false;
- tBTA_AV_SCB *p_scbi;
- int i;
- uint8_t mask;
+bool bta_av_switch_if_needed(tBTA_AV_SCB* p_scb) {
+ uint8_t role;
+ bool needed = false;
+ tBTA_AV_SCB* p_scbi;
+ int i;
+ uint8_t mask;
- for(i=0; i<BTA_AV_NUM_STRS; i++)
+ for (i = 0; i < BTA_AV_NUM_STRS; i++) {
+ mask = BTA_AV_HNDL_TO_MSK(i);
+ p_scbi = bta_av_cb.p_scb[i];
+ if (p_scbi && (p_scb->hdi != i) && /* not the original channel */
+ ((bta_av_cb.conn_audio & mask) || /* connected audio */
+ (bta_av_cb.conn_video & mask))) /* connected video */
{
- mask = BTA_AV_HNDL_TO_MSK(i);
- p_scbi = bta_av_cb.p_scb[i];
- if( p_scbi && (p_scb->hdi != i) && /* not the original channel */
- ((bta_av_cb.conn_audio & mask) ||/* connected audio */
- (bta_av_cb.conn_video & mask)) ) /* connected video */
- {
- BTM_GetRole(p_scbi->peer_addr, &role);
- /* this channel is open - clear the role switch link policy for this link */
- if(BTM_ROLE_MASTER != role)
- {
- if (bta_av_cb.features & BTA_AV_FEAT_MASTER)
- bta_sys_clear_policy(BTA_ID_AV, HCI_ENABLE_MASTER_SLAVE_SWITCH, p_scbi->peer_addr);
- if (BTM_CMD_STARTED != BTM_SwitchRole(p_scbi->peer_addr, BTM_ROLE_MASTER, NULL))
- {
- /* can not switch role on SCBI
- * start the timer on SCB - because this function is ONLY called when SCB gets API_OPEN */
- bta_sys_start_timer(p_scb->avrc_ct_timer,
- BTA_AV_RS_TIME_VAL,
- BTA_AV_AVRC_TIMER_EVT, p_scb->hndl);
- }
- needed = true;
- /* mark the original channel as waiting for RS result */
- bta_av_cb.rs_idx = p_scb->hdi + 1;
- break;
- }
+ BTM_GetRole(p_scbi->peer_addr, &role);
+ /* this channel is open - clear the role switch link policy for this link
+ */
+ if (BTM_ROLE_MASTER != role) {
+ if (bta_av_cb.features & BTA_AV_FEAT_MASTER)
+ bta_sys_clear_policy(BTA_ID_AV, HCI_ENABLE_MASTER_SLAVE_SWITCH,
+ p_scbi->peer_addr);
+ if (BTM_CMD_STARTED !=
+ BTM_SwitchRole(p_scbi->peer_addr, BTM_ROLE_MASTER, NULL)) {
+ /* can not switch role on SCBI
+ * start the timer on SCB - because this function is ONLY called when
+ * SCB gets API_OPEN */
+ bta_sys_start_timer(p_scb->avrc_ct_timer, BTA_AV_RS_TIME_VAL,
+ BTA_AV_AVRC_TIMER_EVT, p_scb->hndl);
}
+ needed = true;
+ /* mark the original channel as waiting for RS result */
+ bta_av_cb.rs_idx = p_scb->hdi + 1;
+ break;
+ }
}
- return needed;
+ }
+ return needed;
}
/*******************************************************************************
@@ -1065,33 +983,31 @@
* Returns true, if role is ok
*
******************************************************************************/
-bool bta_av_link_role_ok(tBTA_AV_SCB *p_scb, uint8_t bits)
-{
- uint8_t role;
- bool is_ok = true;
+bool bta_av_link_role_ok(tBTA_AV_SCB* p_scb, uint8_t bits) {
+ uint8_t role;
+ bool is_ok = true;
- if (BTM_GetRole(p_scb->peer_addr, &role) == BTM_SUCCESS)
- {
- LOG_INFO(LOG_TAG, "%s hndl:x%x role:%d conn_audio:x%x bits:%d features:x%x",
- __func__, p_scb->hndl, role, bta_av_cb.conn_audio, bits,
- bta_av_cb.features);
- if (BTM_ROLE_MASTER != role &&
- (A2DP_BitsSet(bta_av_cb.conn_audio) > bits ||
- (bta_av_cb.features & BTA_AV_FEAT_MASTER))) {
- if (bta_av_cb.features & BTA_AV_FEAT_MASTER)
- bta_sys_clear_policy(BTA_ID_AV, HCI_ENABLE_MASTER_SLAVE_SWITCH, p_scb->peer_addr);
+ if (BTM_GetRole(p_scb->peer_addr, &role) == BTM_SUCCESS) {
+ LOG_INFO(LOG_TAG, "%s hndl:x%x role:%d conn_audio:x%x bits:%d features:x%x",
+ __func__, p_scb->hndl, role, bta_av_cb.conn_audio, bits,
+ bta_av_cb.features);
+ if (BTM_ROLE_MASTER != role &&
+ (A2DP_BitsSet(bta_av_cb.conn_audio) > bits ||
+ (bta_av_cb.features & BTA_AV_FEAT_MASTER))) {
+ if (bta_av_cb.features & BTA_AV_FEAT_MASTER)
+ bta_sys_clear_policy(BTA_ID_AV, HCI_ENABLE_MASTER_SLAVE_SWITCH,
+ p_scb->peer_addr);
- if (BTM_CMD_STARTED != BTM_SwitchRole(p_scb->peer_addr, BTM_ROLE_MASTER, NULL))
- {
- /* can not switch role on SCB - start the timer on SCB */
- }
- is_ok = false;
- p_scb->wait |= BTA_AV_WAIT_ROLE_SW_RES_START;
-
- }
+ if (BTM_CMD_STARTED !=
+ BTM_SwitchRole(p_scb->peer_addr, BTM_ROLE_MASTER, NULL)) {
+ /* can not switch role on SCB - start the timer on SCB */
+ }
+ is_ok = false;
+ p_scb->wait |= BTA_AV_WAIT_ROLE_SW_RES_START;
}
+ }
- return is_ok;
+ return is_ok;
}
/*******************************************************************************
@@ -1104,81 +1020,73 @@
* Returns The smallest mtu of the connected audio channels
*
******************************************************************************/
-uint16_t bta_av_chk_mtu(tBTA_AV_SCB *p_scb,
- UNUSED_ATTR uint16_t mtu)
-{
- uint16_t ret_mtu = BTA_AV_MAX_A2DP_MTU;
- tBTA_AV_SCB *p_scbi;
- int i;
- uint8_t mask;
+uint16_t bta_av_chk_mtu(tBTA_AV_SCB* p_scb, UNUSED_ATTR uint16_t mtu) {
+ uint16_t ret_mtu = BTA_AV_MAX_A2DP_MTU;
+ tBTA_AV_SCB* p_scbi;
+ int i;
+ uint8_t mask;
- /* TODO_MV mess with the mtu according to the number of EDR/non-EDR headsets */
- if(p_scb->chnl == BTA_AV_CHNL_AUDIO)
- {
- if(bta_av_cb.audio_open_cnt >= 2)
- {
- /* more than one audio channel is connected */
- for(i=0; i<BTA_AV_NUM_STRS; i++)
- {
- p_scbi = bta_av_cb.p_scb[i];
- if((p_scb != p_scbi) && p_scbi && (p_scbi->chnl == BTA_AV_CHNL_AUDIO) )
- {
- mask = BTA_AV_HNDL_TO_MSK(i);
- APPL_TRACE_DEBUG("[%d] mtu: %d, mask:0x%x",
- i, p_scbi->stream_mtu, mask);
- if(bta_av_cb.conn_audio & mask)
- {
- if(ret_mtu > p_scbi->stream_mtu)
- ret_mtu = p_scbi->stream_mtu;
- }
- }
- }
+ /* TODO_MV mess with the mtu according to the number of EDR/non-EDR headsets
+ */
+ if (p_scb->chnl == BTA_AV_CHNL_AUDIO) {
+ if (bta_av_cb.audio_open_cnt >= 2) {
+ /* more than one audio channel is connected */
+ for (i = 0; i < BTA_AV_NUM_STRS; i++) {
+ p_scbi = bta_av_cb.p_scb[i];
+ if ((p_scb != p_scbi) && p_scbi &&
+ (p_scbi->chnl == BTA_AV_CHNL_AUDIO)) {
+ mask = BTA_AV_HNDL_TO_MSK(i);
+ APPL_TRACE_DEBUG("[%d] mtu: %d, mask:0x%x", i, p_scbi->stream_mtu,
+ mask);
+ if (bta_av_cb.conn_audio & mask) {
+ if (ret_mtu > p_scbi->stream_mtu) ret_mtu = p_scbi->stream_mtu;
+ }
}
- APPL_TRACE_DEBUG("bta_av_chk_mtu audio count:%d, conn_audio:0x%x, ret:%d",
- bta_av_cb.audio_open_cnt, bta_av_cb.conn_audio, ret_mtu);
+ }
}
- return ret_mtu;
+ APPL_TRACE_DEBUG("bta_av_chk_mtu audio count:%d, conn_audio:0x%x, ret:%d",
+ bta_av_cb.audio_open_cnt, bta_av_cb.conn_audio, ret_mtu);
+ }
+ return ret_mtu;
}
/*******************************************************************************
*
* Function bta_av_dup_audio_buf
*
- * Description dup the audio data to the q_info.a2dp of other audio channels
+ * Description dup the audio data to the q_info.a2dp of other audio
+ *channels
*
* Returns void
*
******************************************************************************/
-void bta_av_dup_audio_buf(tBTA_AV_SCB *p_scb, BT_HDR *p_buf)
-{
- /* Test whether there is more than one audio channel connected */
- if ((p_buf == NULL) || (bta_av_cb.audio_open_cnt < 2))
- return;
+void bta_av_dup_audio_buf(tBTA_AV_SCB* p_scb, BT_HDR* p_buf) {
+ /* Test whether there is more than one audio channel connected */
+ if ((p_buf == NULL) || (bta_av_cb.audio_open_cnt < 2)) return;
- uint16_t copy_size = BT_HDR_SIZE + p_buf->len + p_buf->offset;
- for (int i = 0; i < BTA_AV_NUM_STRS; i++) {
- tBTA_AV_SCB *p_scbi = bta_av_cb.p_scb[i];
+ uint16_t copy_size = BT_HDR_SIZE + p_buf->len + p_buf->offset;
+ for (int i = 0; i < BTA_AV_NUM_STRS; i++) {
+ tBTA_AV_SCB* p_scbi = bta_av_cb.p_scb[i];
- if (i == p_scb->hdi)
- continue; /* Ignore the original channel */
- if ((p_scbi == NULL) || !p_scbi->co_started)
- continue; /* Ignore if SCB is not used or started */
- if (!(bta_av_cb.conn_audio & BTA_AV_HNDL_TO_MSK(i)))
- continue; /* Audio is not connected */
+ if (i == p_scb->hdi) continue; /* Ignore the original channel */
+ if ((p_scbi == NULL) || !p_scbi->co_started)
+ continue; /* Ignore if SCB is not used or started */
+ if (!(bta_av_cb.conn_audio & BTA_AV_HNDL_TO_MSK(i)))
+ continue; /* Audio is not connected */
- /* Enqueue the data */
- BT_HDR *p_new = (BT_HDR *)osi_malloc(copy_size);
- memcpy(p_new, p_buf, copy_size);
- list_append(p_scbi->a2dp_list, p_new);
+ /* Enqueue the data */
+ BT_HDR* p_new = (BT_HDR*)osi_malloc(copy_size);
+ memcpy(p_new, p_buf, copy_size);
+ list_append(p_scbi->a2dp_list, p_new);
- if (list_length(p_scbi->a2dp_list) > p_bta_av_cfg->audio_mqs) {
- // Drop the oldest packet
- bta_av_co_audio_drop(p_scbi->hndl);
- BT_HDR *p_buf_drop = static_cast<BT_HDR *>(list_front(p_scbi->a2dp_list));
- list_remove(p_scbi->a2dp_list, p_buf_drop);
- osi_free(p_buf_drop);
- }
+ if (list_length(p_scbi->a2dp_list) > p_bta_av_cfg->audio_mqs) {
+ // Drop the oldest packet
+ bta_av_co_audio_drop(p_scbi->hndl);
+ BT_HDR* p_buf_drop = static_cast<BT_HDR*>(list_front(p_scbi->a2dp_list));
+ list_remove(p_scbi->a2dp_list, p_buf_drop);
+ osi_free(p_buf_drop);
}
+ }
}
/*******************************************************************************
@@ -1191,33 +1099,32 @@
* Returns void
*
******************************************************************************/
-void bta_av_sm_execute(tBTA_AV_CB *p_cb, uint16_t event, tBTA_AV_DATA *p_data)
-{
- tBTA_AV_ST_TBL state_table;
- uint8_t action;
+void bta_av_sm_execute(tBTA_AV_CB* p_cb, uint16_t event, tBTA_AV_DATA* p_data) {
+ tBTA_AV_ST_TBL state_table;
+ uint8_t action;
#if (BTA_AV_DEBUG == TRUE)
- APPL_TRACE_EVENT("AV event=0x%x(%s) state=%d(%s)",
- event, bta_av_evt_code(event), p_cb->state, bta_av_st_code(p_cb->state));
+ APPL_TRACE_EVENT("AV event=0x%x(%s) state=%d(%s)", event,
+ bta_av_evt_code(event), p_cb->state,
+ bta_av_st_code(p_cb->state));
#else
- APPL_TRACE_EVENT("AV event=0x%x state=%d", event, p_cb->state);
+ APPL_TRACE_EVENT("AV event=0x%x state=%d", event, p_cb->state);
#endif
- /* look up the state table for the current state */
- state_table = bta_av_st_tbl[p_cb->state];
+ /* look up the state table for the current state */
+ state_table = bta_av_st_tbl[p_cb->state];
- event &= 0x00FF;
+ event &= 0x00FF;
- /* set next state */
- p_cb->state = state_table[event][BTA_AV_NEXT_STATE];
- APPL_TRACE_EVENT("next state=%d event offset:%d", p_cb->state, event);
+ /* set next state */
+ p_cb->state = state_table[event][BTA_AV_NEXT_STATE];
+ APPL_TRACE_EVENT("next state=%d event offset:%d", p_cb->state, event);
- /* execute action functions */
- if ((action = state_table[event][BTA_AV_ACTION_COL]) != BTA_AV_IGNORE)
- {
- APPL_TRACE_EVENT("%s action executed %d", __func__, action);
- (*bta_av_action[action])(p_cb, p_data);
- }
+ /* execute action functions */
+ if ((action = state_table[event][BTA_AV_ACTION_COL]) != BTA_AV_IGNORE) {
+ APPL_TRACE_EVENT("%s action executed %d", __func__, action);
+ (*bta_av_action[action])(p_cb, p_data);
+ }
}
/*******************************************************************************
@@ -1230,44 +1137,37 @@
* Returns bool
*
******************************************************************************/
-bool bta_av_hdl_event(BT_HDR *p_msg)
-{
- uint16_t event = p_msg->event;
- uint16_t first_event = BTA_AV_FIRST_NSM_EVT;
+bool bta_av_hdl_event(BT_HDR* p_msg) {
+ uint16_t event = p_msg->event;
+ uint16_t first_event = BTA_AV_FIRST_NSM_EVT;
- if (event > BTA_AV_LAST_EVT)
- {
- return true; /* to free p_msg */
- }
+ if (event > BTA_AV_LAST_EVT) {
+ return true; /* to free p_msg */
+ }
- if(event >= first_event)
- {
+ if (event >= first_event) {
#if (BTA_AV_DEBUG == TRUE)
- APPL_TRACE_VERBOSE("AV nsm event=0x%x(%s)", event, bta_av_evt_code(event));
+ APPL_TRACE_VERBOSE("AV nsm event=0x%x(%s)", event, bta_av_evt_code(event));
#else
- APPL_TRACE_VERBOSE("AV nsm event=0x%x", event);
+ APPL_TRACE_VERBOSE("AV nsm event=0x%x", event);
#endif
- /* non state machine events */
- (*bta_av_nsm_act[event - BTA_AV_FIRST_NSM_EVT]) ((tBTA_AV_DATA *) p_msg);
- }
- else if (event >= BTA_AV_FIRST_SM_EVT && event <= BTA_AV_LAST_SM_EVT)
- {
+ /* non state machine events */
+ (*bta_av_nsm_act[event - BTA_AV_FIRST_NSM_EVT])((tBTA_AV_DATA*)p_msg);
+ } else if (event >= BTA_AV_FIRST_SM_EVT && event <= BTA_AV_LAST_SM_EVT) {
#if (BTA_AV_DEBUG == TRUE)
- APPL_TRACE_VERBOSE("AV sm event=0x%x(%s)", event, bta_av_evt_code(event));
+ APPL_TRACE_VERBOSE("AV sm event=0x%x(%s)", event, bta_av_evt_code(event));
#else
- APPL_TRACE_VERBOSE("AV sm event=0x%x", event);
+ APPL_TRACE_VERBOSE("AV sm event=0x%x", event);
#endif
- /* state machine events */
- bta_av_sm_execute(&bta_av_cb, p_msg->event, (tBTA_AV_DATA *) p_msg);
- }
- else
- {
- APPL_TRACE_VERBOSE("handle=0x%x", p_msg->layer_specific);
- /* stream state machine events */
- bta_av_ssm_execute( bta_av_hndl_to_scb(p_msg->layer_specific),
- p_msg->event, (tBTA_AV_DATA *) p_msg);
- }
- return true;
+ /* state machine events */
+ bta_av_sm_execute(&bta_av_cb, p_msg->event, (tBTA_AV_DATA*)p_msg);
+ } else {
+ APPL_TRACE_VERBOSE("handle=0x%x", p_msg->layer_specific);
+ /* stream state machine events */
+ bta_av_ssm_execute(bta_av_hndl_to_scb(p_msg->layer_specific), p_msg->event,
+ (tBTA_AV_DATA*)p_msg);
+ }
+ return true;
}
/*****************************************************************************
@@ -1283,14 +1183,15 @@
* Returns char *
*
******************************************************************************/
-static const char *bta_av_st_code(uint8_t state)
-{
- switch(state)
- {
- case BTA_AV_INIT_ST: return "INIT";
- case BTA_AV_OPEN_ST: return "OPEN";
- default: return "unknown";
- }
+static const char* bta_av_st_code(uint8_t state) {
+ switch (state) {
+ case BTA_AV_INIT_ST:
+ return "INIT";
+ case BTA_AV_OPEN_ST:
+ return "OPEN";
+ default:
+ return "unknown";
+ }
}
/*******************************************************************************
*
@@ -1301,74 +1202,132 @@
* Returns char *
*
******************************************************************************/
-const char *bta_av_evt_code(uint16_t evt_code)
-{
- switch(evt_code)
- {
- case BTA_AV_API_DISABLE_EVT: return "API_DISABLE";
- case BTA_AV_API_REMOTE_CMD_EVT: return "API_REMOTE_CMD";
- case BTA_AV_API_VENDOR_CMD_EVT: return "API_VENDOR_CMD";
- case BTA_AV_API_VENDOR_RSP_EVT: return "API_VENDOR_RSP";
- case BTA_AV_API_META_RSP_EVT: return "API_META_RSP_EVT";
- case BTA_AV_API_RC_CLOSE_EVT: return "API_RC_CLOSE";
- case BTA_AV_AVRC_OPEN_EVT: return "AVRC_OPEN";
- case BTA_AV_AVRC_MSG_EVT: return "AVRC_MSG";
- case BTA_AV_AVRC_NONE_EVT: return "AVRC_NONE";
+const char* bta_av_evt_code(uint16_t evt_code) {
+ switch (evt_code) {
+ case BTA_AV_API_DISABLE_EVT:
+ return "API_DISABLE";
+ case BTA_AV_API_REMOTE_CMD_EVT:
+ return "API_REMOTE_CMD";
+ case BTA_AV_API_VENDOR_CMD_EVT:
+ return "API_VENDOR_CMD";
+ case BTA_AV_API_VENDOR_RSP_EVT:
+ return "API_VENDOR_RSP";
+ case BTA_AV_API_META_RSP_EVT:
+ return "API_META_RSP_EVT";
+ case BTA_AV_API_RC_CLOSE_EVT:
+ return "API_RC_CLOSE";
+ case BTA_AV_AVRC_OPEN_EVT:
+ return "AVRC_OPEN";
+ case BTA_AV_AVRC_MSG_EVT:
+ return "AVRC_MSG";
+ case BTA_AV_AVRC_NONE_EVT:
+ return "AVRC_NONE";
- case BTA_AV_API_OPEN_EVT: return "API_OPEN";
- case BTA_AV_API_CLOSE_EVT: return "API_CLOSE";
- case BTA_AV_AP_START_EVT: return "AP_START";
- case BTA_AV_AP_STOP_EVT: return "AP_STOP";
- case BTA_AV_API_RECONFIG_EVT: return "API_RECONFIG";
- case BTA_AV_API_PROTECT_REQ_EVT: return "API_PROTECT_REQ";
- case BTA_AV_API_PROTECT_RSP_EVT: return "API_PROTECT_RSP";
- case BTA_AV_API_RC_OPEN_EVT: return "API_RC_OPEN";
- case BTA_AV_SRC_DATA_READY_EVT: return "SRC_DATA_READY";
- case BTA_AV_CI_SETCONFIG_OK_EVT: return "CI_SETCONFIG_OK";
- case BTA_AV_CI_SETCONFIG_FAIL_EVT: return "CI_SETCONFIG_FAIL";
- case BTA_AV_SDP_DISC_OK_EVT: return "SDP_DISC_OK";
- case BTA_AV_SDP_DISC_FAIL_EVT: return "SDP_DISC_FAIL";
- case BTA_AV_STR_DISC_OK_EVT: return "STR_DISC_OK";
- case BTA_AV_STR_DISC_FAIL_EVT: return "STR_DISC_FAIL";
- case BTA_AV_STR_GETCAP_OK_EVT: return "STR_GETCAP_OK";
- case BTA_AV_STR_GETCAP_FAIL_EVT: return "STR_GETCAP_FAIL";
- case BTA_AV_STR_OPEN_OK_EVT: return "STR_OPEN_OK";
- case BTA_AV_STR_OPEN_FAIL_EVT: return "STR_OPEN_FAIL";
- case BTA_AV_STR_START_OK_EVT: return "STR_START_OK";
- case BTA_AV_STR_START_FAIL_EVT: return "STR_START_FAIL";
- case BTA_AV_STR_CLOSE_EVT: return "STR_CLOSE";
- case BTA_AV_STR_CONFIG_IND_EVT: return "STR_CONFIG_IND";
- case BTA_AV_STR_SECURITY_IND_EVT: return "STR_SECURITY_IND";
- case BTA_AV_STR_SECURITY_CFM_EVT: return "STR_SECURITY_CFM";
- case BTA_AV_STR_WRITE_CFM_EVT: return "STR_WRITE_CFM";
- case BTA_AV_STR_SUSPEND_CFM_EVT: return "STR_SUSPEND_CFM";
- case BTA_AV_STR_RECONFIG_CFM_EVT: return "STR_RECONFIG_CFM";
- case BTA_AV_AVRC_TIMER_EVT: return "AVRC_TIMER";
- case BTA_AV_AVDT_CONNECT_EVT: return "AVDT_CONNECT";
- case BTA_AV_AVDT_DISCONNECT_EVT: return "AVDT_DISCONNECT";
- case BTA_AV_ROLE_CHANGE_EVT: return "ROLE_CHANGE";
- case BTA_AV_AVDT_DELAY_RPT_EVT: return "AVDT_DELAY_RPT";
- case BTA_AV_ACP_CONNECT_EVT: return "ACP_CONNECT";
+ case BTA_AV_API_OPEN_EVT:
+ return "API_OPEN";
+ case BTA_AV_API_CLOSE_EVT:
+ return "API_CLOSE";
+ case BTA_AV_AP_START_EVT:
+ return "AP_START";
+ case BTA_AV_AP_STOP_EVT:
+ return "AP_STOP";
+ case BTA_AV_API_RECONFIG_EVT:
+ return "API_RECONFIG";
+ case BTA_AV_API_PROTECT_REQ_EVT:
+ return "API_PROTECT_REQ";
+ case BTA_AV_API_PROTECT_RSP_EVT:
+ return "API_PROTECT_RSP";
+ case BTA_AV_API_RC_OPEN_EVT:
+ return "API_RC_OPEN";
+ case BTA_AV_SRC_DATA_READY_EVT:
+ return "SRC_DATA_READY";
+ case BTA_AV_CI_SETCONFIG_OK_EVT:
+ return "CI_SETCONFIG_OK";
+ case BTA_AV_CI_SETCONFIG_FAIL_EVT:
+ return "CI_SETCONFIG_FAIL";
+ case BTA_AV_SDP_DISC_OK_EVT:
+ return "SDP_DISC_OK";
+ case BTA_AV_SDP_DISC_FAIL_EVT:
+ return "SDP_DISC_FAIL";
+ case BTA_AV_STR_DISC_OK_EVT:
+ return "STR_DISC_OK";
+ case BTA_AV_STR_DISC_FAIL_EVT:
+ return "STR_DISC_FAIL";
+ case BTA_AV_STR_GETCAP_OK_EVT:
+ return "STR_GETCAP_OK";
+ case BTA_AV_STR_GETCAP_FAIL_EVT:
+ return "STR_GETCAP_FAIL";
+ case BTA_AV_STR_OPEN_OK_EVT:
+ return "STR_OPEN_OK";
+ case BTA_AV_STR_OPEN_FAIL_EVT:
+ return "STR_OPEN_FAIL";
+ case BTA_AV_STR_START_OK_EVT:
+ return "STR_START_OK";
+ case BTA_AV_STR_START_FAIL_EVT:
+ return "STR_START_FAIL";
+ case BTA_AV_STR_CLOSE_EVT:
+ return "STR_CLOSE";
+ case BTA_AV_STR_CONFIG_IND_EVT:
+ return "STR_CONFIG_IND";
+ case BTA_AV_STR_SECURITY_IND_EVT:
+ return "STR_SECURITY_IND";
+ case BTA_AV_STR_SECURITY_CFM_EVT:
+ return "STR_SECURITY_CFM";
+ case BTA_AV_STR_WRITE_CFM_EVT:
+ return "STR_WRITE_CFM";
+ case BTA_AV_STR_SUSPEND_CFM_EVT:
+ return "STR_SUSPEND_CFM";
+ case BTA_AV_STR_RECONFIG_CFM_EVT:
+ return "STR_RECONFIG_CFM";
+ case BTA_AV_AVRC_TIMER_EVT:
+ return "AVRC_TIMER";
+ case BTA_AV_AVDT_CONNECT_EVT:
+ return "AVDT_CONNECT";
+ case BTA_AV_AVDT_DISCONNECT_EVT:
+ return "AVDT_DISCONNECT";
+ case BTA_AV_ROLE_CHANGE_EVT:
+ return "ROLE_CHANGE";
+ case BTA_AV_AVDT_DELAY_RPT_EVT:
+ return "AVDT_DELAY_RPT";
+ case BTA_AV_ACP_CONNECT_EVT:
+ return "ACP_CONNECT";
- case BTA_AV_API_ENABLE_EVT: return "API_ENABLE";
- case BTA_AV_API_REGISTER_EVT: return "API_REG";
- case BTA_AV_API_DEREGISTER_EVT: return "API_DEREG";
- case BTA_AV_API_DISCONNECT_EVT: return "API_DISCNT";
- case BTA_AV_CI_SRC_DATA_READY_EVT: return "CI_DATA_READY";
- case BTA_AV_SIG_CHG_EVT: return "SIG_CHG";
- case BTA_AV_SIGNALLING_TIMER_EVT: return "SIGNALLING_TIMER";
- case BTA_AV_SDP_AVRC_DISC_EVT: return "SDP_AVRC_DISC";
- case BTA_AV_AVRC_CLOSE_EVT: return "AVRC_CLOSE";
- case BTA_AV_AVRC_BROWSE_OPEN_EVT: return "AVRC_BROWSE_OPEN";
- case BTA_AV_AVRC_BROWSE_CLOSE_EVT: return "AVRC_BROWSE_CLOSE";
- case BTA_AV_CONN_CHG_EVT: return "CONN_CHG";
- case BTA_AV_DEREG_COMP_EVT: return "DEREG_COMP";
+ case BTA_AV_API_ENABLE_EVT:
+ return "API_ENABLE";
+ case BTA_AV_API_REGISTER_EVT:
+ return "API_REG";
+ case BTA_AV_API_DEREGISTER_EVT:
+ return "API_DEREG";
+ case BTA_AV_API_DISCONNECT_EVT:
+ return "API_DISCNT";
+ case BTA_AV_CI_SRC_DATA_READY_EVT:
+ return "CI_DATA_READY";
+ case BTA_AV_SIG_CHG_EVT:
+ return "SIG_CHG";
+ case BTA_AV_SIGNALLING_TIMER_EVT:
+ return "SIGNALLING_TIMER";
+ case BTA_AV_SDP_AVRC_DISC_EVT:
+ return "SDP_AVRC_DISC";
+ case BTA_AV_AVRC_CLOSE_EVT:
+ return "AVRC_CLOSE";
+ case BTA_AV_AVRC_BROWSE_OPEN_EVT:
+ return "AVRC_BROWSE_OPEN";
+ case BTA_AV_AVRC_BROWSE_CLOSE_EVT:
+ return "AVRC_BROWSE_CLOSE";
+ case BTA_AV_CONN_CHG_EVT:
+ return "CONN_CHG";
+ case BTA_AV_DEREG_COMP_EVT:
+ return "DEREG_COMP";
#if (AVDT_REPORTING == TRUE)
- case BTA_AV_AVDT_RPT_CONN_EVT: return "RPT_CONN";
+ case BTA_AV_AVDT_RPT_CONN_EVT:
+ return "RPT_CONN";
#endif
- case BTA_AV_API_START_EVT: return "API_START";
- case BTA_AV_API_STOP_EVT: return "API_STOP";
- default: return "unknown";
- }
+ case BTA_AV_API_START_EVT:
+ return "API_START";
+ case BTA_AV_API_STOP_EVT:
+ return "API_STOP";
+ default:
+ return "unknown";
+ }
}
#endif /* BTA_AV_DEBUG */
diff --git a/bta/av/bta_av_ssm.cc b/bta/av/bta_av_ssm.cc
index 4595486..1578c22 100644
--- a/bta/av/bta_av_ssm.cc
+++ b/bta/av/bta_av_ssm.cc
@@ -32,352 +32,442 @@
****************************************************************************/
/* state machine states */
-enum
-{
- BTA_AV_INIT_SST,
- BTA_AV_INCOMING_SST,
- BTA_AV_OPENING_SST,
- BTA_AV_OPEN_SST,
- BTA_AV_RCFG_SST,
- BTA_AV_CLOSING_SST
+enum {
+ BTA_AV_INIT_SST,
+ BTA_AV_INCOMING_SST,
+ BTA_AV_OPENING_SST,
+ BTA_AV_OPEN_SST,
+ BTA_AV_RCFG_SST,
+ BTA_AV_CLOSING_SST
};
-
/* state machine action enumeration list */
-enum
-{
- BTA_AV_DO_DISC,
- BTA_AV_CLEANUP,
- BTA_AV_FREE_SDB,
- BTA_AV_CONFIG_IND,
- BTA_AV_DISCONNECT_REQ,
- BTA_AV_SECURITY_REQ,
- BTA_AV_SECURITY_RSP,
- BTA_AV_SETCONFIG_RSP,
- BTA_AV_ST_RC_TIMER,
- BTA_AV_STR_OPENED,
- BTA_AV_SECURITY_IND,
- BTA_AV_SECURITY_CFM,
- BTA_AV_DO_CLOSE,
- BTA_AV_CONNECT_REQ,
- BTA_AV_SDP_FAILED,
- BTA_AV_DISC_RESULTS,
- BTA_AV_DISC_RES_AS_ACP,
- BTA_AV_OPEN_FAILED,
- BTA_AV_GETCAP_RESULTS,
- BTA_AV_SETCONFIG_REJ,
- BTA_AV_DISCOVER_REQ,
- BTA_AV_CONN_FAILED,
- BTA_AV_DO_START,
- BTA_AV_STR_STOPPED,
- BTA_AV_RECONFIG,
- BTA_AV_DATA_PATH,
- BTA_AV_START_OK,
- BTA_AV_START_FAILED,
- BTA_AV_STR_CLOSED,
- BTA_AV_CLR_CONG,
- BTA_AV_SUSPEND_CFM,
- BTA_AV_RCFG_STR_OK,
- BTA_AV_RCFG_FAILED,
- BTA_AV_RCFG_CONNECT,
- BTA_AV_RCFG_DISCNTD,
- BTA_AV_SUSPEND_CONT,
- BTA_AV_RCFG_CFM,
- BTA_AV_RCFG_OPEN,
- BTA_AV_SECURITY_REJ,
- BTA_AV_OPEN_RC,
- BTA_AV_CHK_2ND_START,
- BTA_AV_SAVE_CAPS,
- BTA_AV_SET_USE_RC,
- BTA_AV_CCO_CLOSE,
- BTA_AV_SWITCH_ROLE,
- BTA_AV_ROLE_RES,
- BTA_AV_DELAY_CO,
- BTA_AV_OPEN_AT_INC,
- BTA_AV_OFFLOAD_REQ,
- BTA_AV_OFFLOAD_RSP,
- BTA_AV_NUM_SACTIONS
+enum {
+ BTA_AV_DO_DISC,
+ BTA_AV_CLEANUP,
+ BTA_AV_FREE_SDB,
+ BTA_AV_CONFIG_IND,
+ BTA_AV_DISCONNECT_REQ,
+ BTA_AV_SECURITY_REQ,
+ BTA_AV_SECURITY_RSP,
+ BTA_AV_SETCONFIG_RSP,
+ BTA_AV_ST_RC_TIMER,
+ BTA_AV_STR_OPENED,
+ BTA_AV_SECURITY_IND,
+ BTA_AV_SECURITY_CFM,
+ BTA_AV_DO_CLOSE,
+ BTA_AV_CONNECT_REQ,
+ BTA_AV_SDP_FAILED,
+ BTA_AV_DISC_RESULTS,
+ BTA_AV_DISC_RES_AS_ACP,
+ BTA_AV_OPEN_FAILED,
+ BTA_AV_GETCAP_RESULTS,
+ BTA_AV_SETCONFIG_REJ,
+ BTA_AV_DISCOVER_REQ,
+ BTA_AV_CONN_FAILED,
+ BTA_AV_DO_START,
+ BTA_AV_STR_STOPPED,
+ BTA_AV_RECONFIG,
+ BTA_AV_DATA_PATH,
+ BTA_AV_START_OK,
+ BTA_AV_START_FAILED,
+ BTA_AV_STR_CLOSED,
+ BTA_AV_CLR_CONG,
+ BTA_AV_SUSPEND_CFM,
+ BTA_AV_RCFG_STR_OK,
+ BTA_AV_RCFG_FAILED,
+ BTA_AV_RCFG_CONNECT,
+ BTA_AV_RCFG_DISCNTD,
+ BTA_AV_SUSPEND_CONT,
+ BTA_AV_RCFG_CFM,
+ BTA_AV_RCFG_OPEN,
+ BTA_AV_SECURITY_REJ,
+ BTA_AV_OPEN_RC,
+ BTA_AV_CHK_2ND_START,
+ BTA_AV_SAVE_CAPS,
+ BTA_AV_SET_USE_RC,
+ BTA_AV_CCO_CLOSE,
+ BTA_AV_SWITCH_ROLE,
+ BTA_AV_ROLE_RES,
+ BTA_AV_DELAY_CO,
+ BTA_AV_OPEN_AT_INC,
+ BTA_AV_OFFLOAD_REQ,
+ BTA_AV_OFFLOAD_RSP,
+ BTA_AV_NUM_SACTIONS
};
-#define BTA_AV_SIGNORE BTA_AV_NUM_SACTIONS
-
+#define BTA_AV_SIGNORE BTA_AV_NUM_SACTIONS
/* state table information */
/* #define BTA_AV_SACTION_COL 0 position of actions */
-#define BTA_AV_SACTIONS 2 /* number of actions */
-#define BTA_AV_SNEXT_STATE 2 /* position of next state */
-#define BTA_AV_NUM_COLS 3 /* number of columns in state tables */
+#define BTA_AV_SACTIONS 2 /* number of actions */
+#define BTA_AV_SNEXT_STATE 2 /* position of next state */
+#define BTA_AV_NUM_COLS 3 /* number of columns in state tables */
/* state table for init state */
-static const uint8_t bta_av_sst_init[][BTA_AV_NUM_COLS] =
-{
-/* Event Action 1 Action 2 Next state */
-/* AP_OPEN_EVT */ {BTA_AV_DO_DISC, BTA_AV_SIGNORE, BTA_AV_OPENING_SST },
-/* AP_CLOSE_EVT */ {BTA_AV_CLEANUP, BTA_AV_SIGNORE, BTA_AV_INIT_SST },
-/* AP_START_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INIT_SST },
-/* AP_STOP_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INIT_SST },
-/* API_RECONFIG_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INIT_SST },
-/* API_PROTECT_REQ_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INIT_SST },
-/* API_PROTECT_RSP_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INIT_SST },
-/* API_RC_OPEN_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INIT_SST },
-/* SRC_DATA_READY_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INIT_SST },
-/* CI_SETCONFIG_OK_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INIT_SST },
-/* CI_SETCONFIG_FAIL_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INIT_SST },
-/* SDP_DISC_OK_EVT */ {BTA_AV_FREE_SDB, BTA_AV_SIGNORE, BTA_AV_INIT_SST },
-/* SDP_DISC_FAIL_EVT */ {BTA_AV_FREE_SDB, BTA_AV_SIGNORE, BTA_AV_INIT_SST },
-/* STR_DISC_OK_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INIT_SST },
-/* STR_DISC_FAIL_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INIT_SST },
-/* STR_GETCAP_OK_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INIT_SST },
-/* STR_GETCAP_FAIL_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INIT_SST },
-/* STR_OPEN_OK_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INIT_SST },
-/* STR_OPEN_FAIL_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INIT_SST },
-/* STR_START_OK_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INIT_SST },
-/* STR_START_FAIL_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INIT_SST },
-/* STR_CLOSE_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INIT_SST },
-/* STR_CONFIG_IND_EVT */ {BTA_AV_SETCONFIG_REJ, BTA_AV_SIGNORE, BTA_AV_INIT_SST },
-/* STR_SECURITY_IND_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INIT_SST },
-/* STR_SECURITY_CFM_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INIT_SST },
-/* STR_WRITE_CFM_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INIT_SST },
-/* STR_SUSPEND_CFM_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INIT_SST },
-/* STR_RECONFIG_CFM_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INIT_SST },
-/* AVRC_TIMER_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INIT_SST },
-/* AVDT_CONNECT_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INIT_SST },
-/* AVDT_DISCONNECT_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INIT_SST },
-/* ROLE_CHANGE_EVT*/ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INIT_SST },
-/* AVDT_DELAY_RPT_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INIT_SST },
-/* ACP_CONNECT_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INCOMING_SST },
-/* API_OFFLOAD_START_EVT */{BTA_AV_OFFLOAD_REQ, BTA_AV_SIGNORE, BTA_AV_INIT_SST },
-/* API_OFFLOAD_START_RSP_EVT */{BTA_AV_OFFLOAD_RSP, BTA_AV_SIGNORE, BTA_AV_INIT_SST }
-};
+static const uint8_t bta_av_sst_init[][BTA_AV_NUM_COLS] = {
+ /* Event Action 1 Action 2 Next state */
+ /* AP_OPEN_EVT */ {BTA_AV_DO_DISC, BTA_AV_SIGNORE, BTA_AV_OPENING_SST},
+ /* AP_CLOSE_EVT */ {BTA_AV_CLEANUP, BTA_AV_SIGNORE, BTA_AV_INIT_SST},
+ /* AP_START_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INIT_SST},
+ /* AP_STOP_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INIT_SST},
+ /* API_RECONFIG_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INIT_SST},
+ /* API_PROTECT_REQ_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INIT_SST},
+ /* API_PROTECT_RSP_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INIT_SST},
+ /* API_RC_OPEN_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INIT_SST},
+ /* SRC_DATA_READY_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INIT_SST},
+ /* CI_SETCONFIG_OK_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INIT_SST},
+ /* CI_SETCONFIG_FAIL_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE,
+ BTA_AV_INIT_SST},
+ /* SDP_DISC_OK_EVT */ {BTA_AV_FREE_SDB, BTA_AV_SIGNORE, BTA_AV_INIT_SST},
+ /* SDP_DISC_FAIL_EVT */ {BTA_AV_FREE_SDB, BTA_AV_SIGNORE, BTA_AV_INIT_SST},
+ /* STR_DISC_OK_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INIT_SST},
+ /* STR_DISC_FAIL_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INIT_SST},
+ /* STR_GETCAP_OK_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INIT_SST},
+ /* STR_GETCAP_FAIL_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INIT_SST},
+ /* STR_OPEN_OK_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INIT_SST},
+ /* STR_OPEN_FAIL_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INIT_SST},
+ /* STR_START_OK_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INIT_SST},
+ /* STR_START_FAIL_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INIT_SST},
+ /* STR_CLOSE_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INIT_SST},
+ /* STR_CONFIG_IND_EVT */ {BTA_AV_SETCONFIG_REJ, BTA_AV_SIGNORE,
+ BTA_AV_INIT_SST},
+ /* STR_SECURITY_IND_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE,
+ BTA_AV_INIT_SST},
+ /* STR_SECURITY_CFM_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE,
+ BTA_AV_INIT_SST},
+ /* STR_WRITE_CFM_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INIT_SST},
+ /* STR_SUSPEND_CFM_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INIT_SST},
+ /* STR_RECONFIG_CFM_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE,
+ BTA_AV_INIT_SST},
+ /* AVRC_TIMER_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INIT_SST},
+ /* AVDT_CONNECT_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INIT_SST},
+ /* AVDT_DISCONNECT_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INIT_SST},
+ /* ROLE_CHANGE_EVT*/ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INIT_SST},
+ /* AVDT_DELAY_RPT_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INIT_SST},
+ /* ACP_CONNECT_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INCOMING_SST},
+ /* API_OFFLOAD_START_EVT */ {BTA_AV_OFFLOAD_REQ, BTA_AV_SIGNORE,
+ BTA_AV_INIT_SST},
+ /* API_OFFLOAD_START_RSP_EVT */ {BTA_AV_OFFLOAD_RSP, BTA_AV_SIGNORE,
+ BTA_AV_INIT_SST}};
/* state table for incoming state */
-static const uint8_t bta_av_sst_incoming[][BTA_AV_NUM_COLS] =
-{
-/* Event Action 1 Action 2 Next state */
-/* AP_OPEN_EVT */ {BTA_AV_OPEN_AT_INC, BTA_AV_SIGNORE, BTA_AV_INCOMING_SST },
-/* AP_CLOSE_EVT */ {BTA_AV_CCO_CLOSE, BTA_AV_DISCONNECT_REQ, BTA_AV_CLOSING_SST },
-/* AP_START_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INCOMING_SST },
-/* AP_STOP_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INCOMING_SST },
-/* API_RECONFIG_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INCOMING_SST },
-/* API_PROTECT_REQ_EVT */ {BTA_AV_SECURITY_REQ, BTA_AV_SIGNORE, BTA_AV_INCOMING_SST },
-/* API_PROTECT_RSP_EVT */ {BTA_AV_SECURITY_RSP, BTA_AV_SIGNORE, BTA_AV_INCOMING_SST },
-/* API_RC_OPEN_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INCOMING_SST },
-/* SRC_DATA_READY_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INCOMING_SST },
-/* CI_SETCONFIG_OK_EVT */ {BTA_AV_SETCONFIG_RSP, BTA_AV_ST_RC_TIMER, BTA_AV_INCOMING_SST },
-/* CI_SETCONFIG_FAIL_EVT */ {BTA_AV_SETCONFIG_REJ, BTA_AV_CLEANUP, BTA_AV_INIT_SST },
-/* SDP_DISC_OK_EVT */ {BTA_AV_FREE_SDB, BTA_AV_SIGNORE, BTA_AV_INCOMING_SST },
-/* SDP_DISC_FAIL_EVT */ {BTA_AV_FREE_SDB, BTA_AV_SIGNORE, BTA_AV_INCOMING_SST },
-/* STR_DISC_OK_EVT */ {BTA_AV_DISC_RES_AS_ACP,BTA_AV_SIGNORE, BTA_AV_INCOMING_SST },
-/* STR_DISC_FAIL_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INCOMING_SST },
-/* STR_GETCAP_OK_EVT */ {BTA_AV_SAVE_CAPS, BTA_AV_SIGNORE, BTA_AV_INCOMING_SST },
-/* STR_GETCAP_FAIL_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INCOMING_SST },
-/* STR_OPEN_OK_EVT */ {BTA_AV_STR_OPENED, BTA_AV_SIGNORE, BTA_AV_OPEN_SST },
-/* STR_OPEN_FAIL_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INCOMING_SST },
-/* STR_START_OK_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INCOMING_SST },
-/* STR_START_FAIL_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INCOMING_SST },
-/* STR_CLOSE_EVT */ {BTA_AV_CCO_CLOSE, BTA_AV_CLEANUP, BTA_AV_INIT_SST },
-/* STR_CONFIG_IND_EVT */ {BTA_AV_CONFIG_IND, BTA_AV_SIGNORE, BTA_AV_INCOMING_SST },
-/* STR_SECURITY_IND_EVT */ {BTA_AV_SECURITY_IND, BTA_AV_SIGNORE, BTA_AV_INCOMING_SST },
-/* STR_SECURITY_CFM_EVT */ {BTA_AV_SECURITY_CFM, BTA_AV_SIGNORE, BTA_AV_INCOMING_SST },
-/* STR_WRITE_CFM_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INCOMING_SST },
-/* STR_SUSPEND_CFM_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INCOMING_SST },
-/* STR_RECONFIG_CFM_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INCOMING_SST },
-/* AVRC_TIMER_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INCOMING_SST },
-/* AVDT_CONNECT_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INCOMING_SST },
-/* AVDT_DISCONNECT_EVT */ {BTA_AV_CCO_CLOSE, BTA_AV_DISCONNECT_REQ, BTA_AV_CLOSING_SST },
-/* ROLE_CHANGE_EVT*/ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INCOMING_SST },
-/* AVDT_DELAY_RPT_EVT */ {BTA_AV_DELAY_CO, BTA_AV_SIGNORE, BTA_AV_INCOMING_SST },
-/* ACP_CONNECT_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INCOMING_SST },
-/* API_OFFLOAD_START_EVT */{BTA_AV_OFFLOAD_REQ, BTA_AV_SIGNORE, BTA_AV_INCOMING_SST },
-/* API_OFFLOAD_START_RSP_EVT */{BTA_AV_OFFLOAD_RSP, BTA_AV_SIGNORE, BTA_AV_INCOMING_SST }
-};
+static const uint8_t bta_av_sst_incoming[][BTA_AV_NUM_COLS] = {
+ /* Event Action 1 Action 2 Next state */
+ /* AP_OPEN_EVT */ {BTA_AV_OPEN_AT_INC, BTA_AV_SIGNORE, BTA_AV_INCOMING_SST},
+ /* AP_CLOSE_EVT */ {BTA_AV_CCO_CLOSE, BTA_AV_DISCONNECT_REQ,
+ BTA_AV_CLOSING_SST},
+ /* AP_START_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INCOMING_SST},
+ /* AP_STOP_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INCOMING_SST},
+ /* API_RECONFIG_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE,
+ BTA_AV_INCOMING_SST},
+ /* API_PROTECT_REQ_EVT */ {BTA_AV_SECURITY_REQ, BTA_AV_SIGNORE,
+ BTA_AV_INCOMING_SST},
+ /* API_PROTECT_RSP_EVT */ {BTA_AV_SECURITY_RSP, BTA_AV_SIGNORE,
+ BTA_AV_INCOMING_SST},
+ /* API_RC_OPEN_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE,
+ BTA_AV_INCOMING_SST},
+ /* SRC_DATA_READY_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE,
+ BTA_AV_INCOMING_SST},
+ /* CI_SETCONFIG_OK_EVT */ {BTA_AV_SETCONFIG_RSP, BTA_AV_ST_RC_TIMER,
+ BTA_AV_INCOMING_SST},
+ /* CI_SETCONFIG_FAIL_EVT */ {BTA_AV_SETCONFIG_REJ, BTA_AV_CLEANUP,
+ BTA_AV_INIT_SST},
+ /* SDP_DISC_OK_EVT */ {BTA_AV_FREE_SDB, BTA_AV_SIGNORE,
+ BTA_AV_INCOMING_SST},
+ /* SDP_DISC_FAIL_EVT */ {BTA_AV_FREE_SDB, BTA_AV_SIGNORE,
+ BTA_AV_INCOMING_SST},
+ /* STR_DISC_OK_EVT */ {BTA_AV_DISC_RES_AS_ACP, BTA_AV_SIGNORE,
+ BTA_AV_INCOMING_SST},
+ /* STR_DISC_FAIL_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE,
+ BTA_AV_INCOMING_SST},
+ /* STR_GETCAP_OK_EVT */ {BTA_AV_SAVE_CAPS, BTA_AV_SIGNORE,
+ BTA_AV_INCOMING_SST},
+ /* STR_GETCAP_FAIL_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE,
+ BTA_AV_INCOMING_SST},
+ /* STR_OPEN_OK_EVT */ {BTA_AV_STR_OPENED, BTA_AV_SIGNORE, BTA_AV_OPEN_SST},
+ /* STR_OPEN_FAIL_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE,
+ BTA_AV_INCOMING_SST},
+ /* STR_START_OK_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE,
+ BTA_AV_INCOMING_SST},
+ /* STR_START_FAIL_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE,
+ BTA_AV_INCOMING_SST},
+ /* STR_CLOSE_EVT */ {BTA_AV_CCO_CLOSE, BTA_AV_CLEANUP, BTA_AV_INIT_SST},
+ /* STR_CONFIG_IND_EVT */ {BTA_AV_CONFIG_IND, BTA_AV_SIGNORE,
+ BTA_AV_INCOMING_SST},
+ /* STR_SECURITY_IND_EVT */ {BTA_AV_SECURITY_IND, BTA_AV_SIGNORE,
+ BTA_AV_INCOMING_SST},
+ /* STR_SECURITY_CFM_EVT */ {BTA_AV_SECURITY_CFM, BTA_AV_SIGNORE,
+ BTA_AV_INCOMING_SST},
+ /* STR_WRITE_CFM_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE,
+ BTA_AV_INCOMING_SST},
+ /* STR_SUSPEND_CFM_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE,
+ BTA_AV_INCOMING_SST},
+ /* STR_RECONFIG_CFM_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE,
+ BTA_AV_INCOMING_SST},
+ /* AVRC_TIMER_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INCOMING_SST},
+ /* AVDT_CONNECT_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE,
+ BTA_AV_INCOMING_SST},
+ /* AVDT_DISCONNECT_EVT */ {BTA_AV_CCO_CLOSE, BTA_AV_DISCONNECT_REQ,
+ BTA_AV_CLOSING_SST},
+ /* ROLE_CHANGE_EVT*/ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INCOMING_SST},
+ /* AVDT_DELAY_RPT_EVT */ {BTA_AV_DELAY_CO, BTA_AV_SIGNORE,
+ BTA_AV_INCOMING_SST},
+ /* ACP_CONNECT_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_INCOMING_SST},
+ /* API_OFFLOAD_START_EVT */ {BTA_AV_OFFLOAD_REQ, BTA_AV_SIGNORE,
+ BTA_AV_INCOMING_SST},
+ /* API_OFFLOAD_START_RSP_EVT */ {BTA_AV_OFFLOAD_RSP, BTA_AV_SIGNORE,
+ BTA_AV_INCOMING_SST}};
/* state table for opening state */
-static const uint8_t bta_av_sst_opening[][BTA_AV_NUM_COLS] =
-{
-/* Event Action 1 Action 2 Next state */
-/* AP_OPEN_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_OPENING_SST },
-/* AP_CLOSE_EVT */ {BTA_AV_DO_CLOSE, BTA_AV_SIGNORE, BTA_AV_CLOSING_SST },
-/* AP_START_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_OPENING_SST },
-/* AP_STOP_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_OPENING_SST },
-/* API_RECONFIG_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_OPENING_SST },
-/* API_PROTECT_REQ_EVT */ {BTA_AV_SECURITY_REQ, BTA_AV_SIGNORE, BTA_AV_OPENING_SST },
-/* API_PROTECT_RSP_EVT */ {BTA_AV_SECURITY_RSP, BTA_AV_SIGNORE, BTA_AV_OPENING_SST },
-/* API_RC_OPEN_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_OPENING_SST },
-/* SRC_DATA_READY_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_OPENING_SST },
-/* CI_SETCONFIG_OK_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_OPENING_SST },
-/* CI_SETCONFIG_FAIL_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_OPENING_SST },
-/* SDP_DISC_OK_EVT */ {BTA_AV_CONNECT_REQ, BTA_AV_SIGNORE, BTA_AV_OPENING_SST },
-/* SDP_DISC_FAIL_EVT */ {BTA_AV_CONNECT_REQ, BTA_AV_SIGNORE, BTA_AV_OPENING_SST },
-/* STR_DISC_OK_EVT */ {BTA_AV_DISC_RESULTS, BTA_AV_SIGNORE, BTA_AV_OPENING_SST },
-/* STR_DISC_FAIL_EVT */ {BTA_AV_OPEN_FAILED, BTA_AV_SIGNORE, BTA_AV_CLOSING_SST },
-/* STR_GETCAP_OK_EVT */ {BTA_AV_GETCAP_RESULTS, BTA_AV_SIGNORE, BTA_AV_OPENING_SST },
-/* STR_GETCAP_FAIL_EVT */ {BTA_AV_OPEN_FAILED, BTA_AV_SIGNORE, BTA_AV_CLOSING_SST },
-/* STR_OPEN_OK_EVT */ {BTA_AV_ST_RC_TIMER, BTA_AV_STR_OPENED, BTA_AV_OPEN_SST },
-/* STR_OPEN_FAIL_EVT */ {BTA_AV_OPEN_FAILED, BTA_AV_SIGNORE, BTA_AV_CLOSING_SST },
-/* STR_START_OK_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_OPENING_SST },
-/* STR_START_FAIL_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_OPENING_SST },
-/* STR_CLOSE_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_OPENING_SST },
-/* STR_CONFIG_IND_EVT */ {BTA_AV_CONFIG_IND, BTA_AV_SIGNORE, BTA_AV_INCOMING_SST },
-/* STR_SECURITY_IND_EVT */ {BTA_AV_SECURITY_IND, BTA_AV_SIGNORE, BTA_AV_OPENING_SST },
-/* STR_SECURITY_CFM_EVT */ {BTA_AV_SECURITY_CFM, BTA_AV_SIGNORE, BTA_AV_OPENING_SST },
-/* STR_WRITE_CFM_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_OPENING_SST },
-/* STR_SUSPEND_CFM_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_OPENING_SST },
-/* STR_RECONFIG_CFM_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_OPENING_SST },
-/* AVRC_TIMER_EVT */ {BTA_AV_SWITCH_ROLE, BTA_AV_SIGNORE, BTA_AV_OPENING_SST },
-/* AVDT_CONNECT_EVT */ {BTA_AV_DISCOVER_REQ, BTA_AV_SIGNORE, BTA_AV_OPENING_SST },
-/* AVDT_DISCONNECT_EVT */ {BTA_AV_CONN_FAILED, BTA_AV_SIGNORE, BTA_AV_INIT_SST },
-/* ROLE_CHANGE_EVT*/ {BTA_AV_ROLE_RES, BTA_AV_SIGNORE, BTA_AV_OPENING_SST },
-/* AVDT_DELAY_RPT_EVT */ {BTA_AV_DELAY_CO, BTA_AV_SIGNORE, BTA_AV_OPENING_SST },
-/* ACP_CONNECT_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_OPENING_SST },
-/* API_OFFLOAD_START_EVT */{BTA_AV_OFFLOAD_REQ, BTA_AV_SIGNORE, BTA_AV_OPENING_SST },
-/* API_OFFLOAD_START_RSP_EVT */{BTA_AV_OFFLOAD_RSP, BTA_AV_SIGNORE, BTA_AV_OPENING_SST }
-};
+static const uint8_t bta_av_sst_opening[][BTA_AV_NUM_COLS] = {
+ /* Event Action 1 Action 2 Next state */
+ /* AP_OPEN_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_OPENING_SST},
+ /* AP_CLOSE_EVT */ {BTA_AV_DO_CLOSE, BTA_AV_SIGNORE, BTA_AV_CLOSING_SST},
+ /* AP_START_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_OPENING_SST},
+ /* AP_STOP_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_OPENING_SST},
+ /* API_RECONFIG_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_OPENING_SST},
+ /* API_PROTECT_REQ_EVT */ {BTA_AV_SECURITY_REQ, BTA_AV_SIGNORE,
+ BTA_AV_OPENING_SST},
+ /* API_PROTECT_RSP_EVT */ {BTA_AV_SECURITY_RSP, BTA_AV_SIGNORE,
+ BTA_AV_OPENING_SST},
+ /* API_RC_OPEN_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_OPENING_SST},
+ /* SRC_DATA_READY_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE,
+ BTA_AV_OPENING_SST},
+ /* CI_SETCONFIG_OK_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE,
+ BTA_AV_OPENING_SST},
+ /* CI_SETCONFIG_FAIL_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE,
+ BTA_AV_OPENING_SST},
+ /* SDP_DISC_OK_EVT */ {BTA_AV_CONNECT_REQ, BTA_AV_SIGNORE,
+ BTA_AV_OPENING_SST},
+ /* SDP_DISC_FAIL_EVT */ {BTA_AV_CONNECT_REQ, BTA_AV_SIGNORE,
+ BTA_AV_OPENING_SST},
+ /* STR_DISC_OK_EVT */ {BTA_AV_DISC_RESULTS, BTA_AV_SIGNORE,
+ BTA_AV_OPENING_SST},
+ /* STR_DISC_FAIL_EVT */ {BTA_AV_OPEN_FAILED, BTA_AV_SIGNORE,
+ BTA_AV_CLOSING_SST},
+ /* STR_GETCAP_OK_EVT */ {BTA_AV_GETCAP_RESULTS, BTA_AV_SIGNORE,
+ BTA_AV_OPENING_SST},
+ /* STR_GETCAP_FAIL_EVT */ {BTA_AV_OPEN_FAILED, BTA_AV_SIGNORE,
+ BTA_AV_CLOSING_SST},
+ /* STR_OPEN_OK_EVT */ {BTA_AV_ST_RC_TIMER, BTA_AV_STR_OPENED,
+ BTA_AV_OPEN_SST},
+ /* STR_OPEN_FAIL_EVT */ {BTA_AV_OPEN_FAILED, BTA_AV_SIGNORE,
+ BTA_AV_CLOSING_SST},
+ /* STR_START_OK_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_OPENING_SST},
+ /* STR_START_FAIL_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE,
+ BTA_AV_OPENING_SST},
+ /* STR_CLOSE_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_OPENING_SST},
+ /* STR_CONFIG_IND_EVT */ {BTA_AV_CONFIG_IND, BTA_AV_SIGNORE,
+ BTA_AV_INCOMING_SST},
+ /* STR_SECURITY_IND_EVT */ {BTA_AV_SECURITY_IND, BTA_AV_SIGNORE,
+ BTA_AV_OPENING_SST},
+ /* STR_SECURITY_CFM_EVT */ {BTA_AV_SECURITY_CFM, BTA_AV_SIGNORE,
+ BTA_AV_OPENING_SST},
+ /* STR_WRITE_CFM_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE,
+ BTA_AV_OPENING_SST},
+ /* STR_SUSPEND_CFM_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE,
+ BTA_AV_OPENING_SST},
+ /* STR_RECONFIG_CFM_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE,
+ BTA_AV_OPENING_SST},
+ /* AVRC_TIMER_EVT */ {BTA_AV_SWITCH_ROLE, BTA_AV_SIGNORE,
+ BTA_AV_OPENING_SST},
+ /* AVDT_CONNECT_EVT */ {BTA_AV_DISCOVER_REQ, BTA_AV_SIGNORE,
+ BTA_AV_OPENING_SST},
+ /* AVDT_DISCONNECT_EVT */ {BTA_AV_CONN_FAILED, BTA_AV_SIGNORE,
+ BTA_AV_INIT_SST},
+ /* ROLE_CHANGE_EVT*/ {BTA_AV_ROLE_RES, BTA_AV_SIGNORE, BTA_AV_OPENING_SST},
+ /* AVDT_DELAY_RPT_EVT */ {BTA_AV_DELAY_CO, BTA_AV_SIGNORE,
+ BTA_AV_OPENING_SST},
+ /* ACP_CONNECT_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_OPENING_SST},
+ /* API_OFFLOAD_START_EVT */ {BTA_AV_OFFLOAD_REQ, BTA_AV_SIGNORE,
+ BTA_AV_OPENING_SST},
+ /* API_OFFLOAD_START_RSP_EVT */ {BTA_AV_OFFLOAD_RSP, BTA_AV_SIGNORE,
+ BTA_AV_OPENING_SST}};
/* state table for open state */
-static const uint8_t bta_av_sst_open[][BTA_AV_NUM_COLS] =
-{
-/* Event Action 1 Action 2 Next state */
-/* AP_OPEN_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_OPEN_SST },
-/* AP_CLOSE_EVT */ {BTA_AV_DO_CLOSE, BTA_AV_SIGNORE, BTA_AV_CLOSING_SST },
-/* AP_START_EVT */ {BTA_AV_DO_START, BTA_AV_SIGNORE, BTA_AV_OPEN_SST },
-/* AP_STOP_EVT */ {BTA_AV_STR_STOPPED, BTA_AV_SIGNORE, BTA_AV_OPEN_SST },
-/* API_RECONFIG_EVT */ {BTA_AV_RECONFIG, BTA_AV_SIGNORE, BTA_AV_RCFG_SST },
-/* API_PROTECT_REQ_EVT */ {BTA_AV_SECURITY_REQ, BTA_AV_SIGNORE, BTA_AV_OPEN_SST },
-/* API_PROTECT_RSP_EVT */ {BTA_AV_SECURITY_RSP, BTA_AV_SIGNORE, BTA_AV_OPEN_SST },
-/* API_RC_OPEN_EVT */ {BTA_AV_SET_USE_RC, BTA_AV_OPEN_RC, BTA_AV_OPEN_SST },
-/* SRC_DATA_READY_EVT */ {BTA_AV_DATA_PATH, BTA_AV_SIGNORE, BTA_AV_OPEN_SST },
-/* CI_SETCONFIG_OK_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_OPEN_SST },
-/* CI_SETCONFIG_FAIL_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_OPEN_SST },
-/* SDP_DISC_OK_EVT */ {BTA_AV_FREE_SDB, BTA_AV_SIGNORE, BTA_AV_OPEN_SST },
-/* SDP_DISC_FAIL_EVT */ {BTA_AV_FREE_SDB, BTA_AV_SIGNORE, BTA_AV_OPEN_SST },
-/* STR_DISC_OK_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_OPEN_SST },
-/* STR_DISC_FAIL_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_OPEN_SST },
-/* STR_GETCAP_OK_EVT */ {BTA_AV_SAVE_CAPS, BTA_AV_SIGNORE, BTA_AV_OPEN_SST },
-/* STR_GETCAP_FAIL_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_OPEN_SST },
-/* STR_OPEN_OK_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_OPEN_SST },
-/* STR_OPEN_FAIL_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_OPEN_SST },
-/* STR_START_OK_EVT */ {BTA_AV_START_OK, BTA_AV_SIGNORE, BTA_AV_OPEN_SST },
-/* STR_START_FAIL_EVT */ {BTA_AV_START_FAILED, BTA_AV_SIGNORE, BTA_AV_OPEN_SST },
-/* STR_CLOSE_EVT */ {BTA_AV_STR_CLOSED, BTA_AV_SIGNORE, BTA_AV_INIT_SST },
-/* STR_CONFIG_IND_EVT */ {BTA_AV_SETCONFIG_REJ, BTA_AV_SIGNORE, BTA_AV_OPEN_SST },
-/* STR_SECURITY_IND_EVT */ {BTA_AV_SECURITY_IND, BTA_AV_SIGNORE, BTA_AV_OPEN_SST },
-/* STR_SECURITY_CFM_EVT */ {BTA_AV_SECURITY_CFM, BTA_AV_SIGNORE, BTA_AV_OPEN_SST },
-/* STR_WRITE_CFM_EVT */ {BTA_AV_CLR_CONG, BTA_AV_DATA_PATH, BTA_AV_OPEN_SST },
-/* STR_SUSPEND_CFM_EVT */ {BTA_AV_SUSPEND_CFM, BTA_AV_SIGNORE, BTA_AV_OPEN_SST },
-/* STR_RECONFIG_CFM_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_OPEN_SST },
-/* AVRC_TIMER_EVT */ {BTA_AV_OPEN_RC, BTA_AV_CHK_2ND_START, BTA_AV_OPEN_SST },
-/* AVDT_CONNECT_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_OPEN_SST },
-/* AVDT_DISCONNECT_EVT */ {BTA_AV_STR_CLOSED, BTA_AV_SIGNORE, BTA_AV_INIT_SST },
-/* ROLE_CHANGE_EVT*/ {BTA_AV_ROLE_RES, BTA_AV_SIGNORE, BTA_AV_OPEN_SST },
-/* AVDT_DELAY_RPT_EVT */ {BTA_AV_DELAY_CO, BTA_AV_SIGNORE, BTA_AV_OPEN_SST },
-/* ACP_CONNECT_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_OPEN_SST },
-/* API_OFFLOAD_START_EVT */{BTA_AV_OFFLOAD_REQ, BTA_AV_SIGNORE, BTA_AV_OPEN_SST },
-/* API_OFFLOAD_START_RSP_EVT */{BTA_AV_OFFLOAD_RSP, BTA_AV_SIGNORE, BTA_AV_OPEN_SST }
-};
+static const uint8_t bta_av_sst_open[][BTA_AV_NUM_COLS] = {
+ /* Event Action 1 Action 2 Next state */
+ /* AP_OPEN_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_OPEN_SST},
+ /* AP_CLOSE_EVT */ {BTA_AV_DO_CLOSE, BTA_AV_SIGNORE, BTA_AV_CLOSING_SST},
+ /* AP_START_EVT */ {BTA_AV_DO_START, BTA_AV_SIGNORE, BTA_AV_OPEN_SST},
+ /* AP_STOP_EVT */ {BTA_AV_STR_STOPPED, BTA_AV_SIGNORE, BTA_AV_OPEN_SST},
+ /* API_RECONFIG_EVT */ {BTA_AV_RECONFIG, BTA_AV_SIGNORE, BTA_AV_RCFG_SST},
+ /* API_PROTECT_REQ_EVT */ {BTA_AV_SECURITY_REQ, BTA_AV_SIGNORE,
+ BTA_AV_OPEN_SST},
+ /* API_PROTECT_RSP_EVT */ {BTA_AV_SECURITY_RSP, BTA_AV_SIGNORE,
+ BTA_AV_OPEN_SST},
+ /* API_RC_OPEN_EVT */ {BTA_AV_SET_USE_RC, BTA_AV_OPEN_RC, BTA_AV_OPEN_SST},
+ /* SRC_DATA_READY_EVT */ {BTA_AV_DATA_PATH, BTA_AV_SIGNORE,
+ BTA_AV_OPEN_SST},
+ /* CI_SETCONFIG_OK_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_OPEN_SST},
+ /* CI_SETCONFIG_FAIL_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE,
+ BTA_AV_OPEN_SST},
+ /* SDP_DISC_OK_EVT */ {BTA_AV_FREE_SDB, BTA_AV_SIGNORE, BTA_AV_OPEN_SST},
+ /* SDP_DISC_FAIL_EVT */ {BTA_AV_FREE_SDB, BTA_AV_SIGNORE, BTA_AV_OPEN_SST},
+ /* STR_DISC_OK_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_OPEN_SST},
+ /* STR_DISC_FAIL_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_OPEN_SST},
+ /* STR_GETCAP_OK_EVT */ {BTA_AV_SAVE_CAPS, BTA_AV_SIGNORE, BTA_AV_OPEN_SST},
+ /* STR_GETCAP_FAIL_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_OPEN_SST},
+ /* STR_OPEN_OK_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_OPEN_SST},
+ /* STR_OPEN_FAIL_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_OPEN_SST},
+ /* STR_START_OK_EVT */ {BTA_AV_START_OK, BTA_AV_SIGNORE, BTA_AV_OPEN_SST},
+ /* STR_START_FAIL_EVT */ {BTA_AV_START_FAILED, BTA_AV_SIGNORE,
+ BTA_AV_OPEN_SST},
+ /* STR_CLOSE_EVT */ {BTA_AV_STR_CLOSED, BTA_AV_SIGNORE, BTA_AV_INIT_SST},
+ /* STR_CONFIG_IND_EVT */ {BTA_AV_SETCONFIG_REJ, BTA_AV_SIGNORE,
+ BTA_AV_OPEN_SST},
+ /* STR_SECURITY_IND_EVT */ {BTA_AV_SECURITY_IND, BTA_AV_SIGNORE,
+ BTA_AV_OPEN_SST},
+ /* STR_SECURITY_CFM_EVT */ {BTA_AV_SECURITY_CFM, BTA_AV_SIGNORE,
+ BTA_AV_OPEN_SST},
+ /* STR_WRITE_CFM_EVT */ {BTA_AV_CLR_CONG, BTA_AV_DATA_PATH,
+ BTA_AV_OPEN_SST},
+ /* STR_SUSPEND_CFM_EVT */ {BTA_AV_SUSPEND_CFM, BTA_AV_SIGNORE,
+ BTA_AV_OPEN_SST},
+ /* STR_RECONFIG_CFM_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE,
+ BTA_AV_OPEN_SST},
+ /* AVRC_TIMER_EVT */ {BTA_AV_OPEN_RC, BTA_AV_CHK_2ND_START,
+ BTA_AV_OPEN_SST},
+ /* AVDT_CONNECT_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_OPEN_SST},
+ /* AVDT_DISCONNECT_EVT */ {BTA_AV_STR_CLOSED, BTA_AV_SIGNORE,
+ BTA_AV_INIT_SST},
+ /* ROLE_CHANGE_EVT*/ {BTA_AV_ROLE_RES, BTA_AV_SIGNORE, BTA_AV_OPEN_SST},
+ /* AVDT_DELAY_RPT_EVT */ {BTA_AV_DELAY_CO, BTA_AV_SIGNORE, BTA_AV_OPEN_SST},
+ /* ACP_CONNECT_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_OPEN_SST},
+ /* API_OFFLOAD_START_EVT */ {BTA_AV_OFFLOAD_REQ, BTA_AV_SIGNORE,
+ BTA_AV_OPEN_SST},
+ /* API_OFFLOAD_START_RSP_EVT */ {BTA_AV_OFFLOAD_RSP, BTA_AV_SIGNORE,
+ BTA_AV_OPEN_SST}};
/* state table for reconfig state */
-static const uint8_t bta_av_sst_rcfg[][BTA_AV_NUM_COLS] =
-{
-/* Event Action 1 Action 2 Next state */
-/* AP_OPEN_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_RCFG_SST },
-/* AP_CLOSE_EVT */ {BTA_AV_DISCONNECT_REQ, BTA_AV_SIGNORE, BTA_AV_CLOSING_SST },
-/* AP_START_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_RCFG_SST },
-/* AP_STOP_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_RCFG_SST },
-/* API_RECONFIG_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_RCFG_SST },
-/* API_PROTECT_REQ_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_RCFG_SST },
-/* API_PROTECT_RSP_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_RCFG_SST },
-/* API_RC_OPEN_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_RCFG_SST },
-/* SRC_DATA_READY_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_RCFG_SST },
-/* CI_SETCONFIG_OK_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_RCFG_SST },
-/* CI_SETCONFIG_FAIL_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_RCFG_SST },
-/* SDP_DISC_OK_EVT */ {BTA_AV_FREE_SDB, BTA_AV_SIGNORE, BTA_AV_RCFG_SST },
-/* SDP_DISC_FAIL_EVT */ {BTA_AV_FREE_SDB, BTA_AV_SIGNORE, BTA_AV_RCFG_SST },
-/* STR_DISC_OK_EVT */ {BTA_AV_DISC_RESULTS, BTA_AV_SIGNORE, BTA_AV_RCFG_SST },
-/* STR_DISC_FAIL_EVT */ {BTA_AV_STR_CLOSED, BTA_AV_SIGNORE, BTA_AV_INIT_SST },
-/* STR_GETCAP_OK_EVT */ {BTA_AV_GETCAP_RESULTS, BTA_AV_SIGNORE, BTA_AV_RCFG_SST },
-/* STR_GETCAP_FAIL_EVT */ {BTA_AV_STR_CLOSED, BTA_AV_SIGNORE, BTA_AV_INIT_SST },
-/* STR_OPEN_OK_EVT */ {BTA_AV_RCFG_STR_OK, BTA_AV_SIGNORE, BTA_AV_OPEN_SST },
-/* STR_OPEN_FAIL_EVT */ {BTA_AV_RCFG_FAILED, BTA_AV_SIGNORE, BTA_AV_RCFG_SST },
-/* STR_START_OK_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_RCFG_SST },
-/* STR_START_FAIL_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_RCFG_SST },
-/* STR_CLOSE_EVT */ {BTA_AV_RCFG_CONNECT, BTA_AV_SIGNORE, BTA_AV_RCFG_SST },
-/* STR_CONFIG_IND_EVT */ {BTA_AV_SETCONFIG_REJ, BTA_AV_SIGNORE, BTA_AV_RCFG_SST },
-/* STR_SECURITY_IND_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_RCFG_SST },
-/* STR_SECURITY_CFM_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_RCFG_SST },
-/* STR_WRITE_CFM_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_RCFG_SST },
-/* STR_SUSPEND_CFM_EVT */ {BTA_AV_SUSPEND_CFM, BTA_AV_SUSPEND_CONT, BTA_AV_RCFG_SST },
-/* STR_RECONFIG_CFM_EVT */ {BTA_AV_RCFG_CFM, BTA_AV_SIGNORE, BTA_AV_RCFG_SST },
-/* AVRC_TIMER_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_RCFG_SST },
-/* AVDT_CONNECT_EVT */ {BTA_AV_RCFG_OPEN, BTA_AV_SIGNORE, BTA_AV_RCFG_SST },
-/* AVDT_DISCONNECT_EVT */ {BTA_AV_RCFG_DISCNTD, BTA_AV_SIGNORE, BTA_AV_RCFG_SST },
-/* ROLE_CHANGE_EVT*/ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_RCFG_SST },
-/* AVDT_DELAY_RPT_EVT */ {BTA_AV_DELAY_CO, BTA_AV_SIGNORE, BTA_AV_RCFG_SST },
-/* ACP_CONNECT_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_RCFG_SST },
-/* API_OFFLOAD_START_EVT */{BTA_AV_OFFLOAD_REQ, BTA_AV_SIGNORE, BTA_AV_RCFG_SST },
-/* API_OFFLOAD_START_RSP_EVT */{BTA_AV_OFFLOAD_RSP, BTA_AV_SIGNORE, BTA_AV_RCFG_SST }
-};
+static const uint8_t bta_av_sst_rcfg[][BTA_AV_NUM_COLS] = {
+ /* Event Action 1 Action 2 Next state */
+ /* AP_OPEN_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_RCFG_SST},
+ /* AP_CLOSE_EVT */ {BTA_AV_DISCONNECT_REQ, BTA_AV_SIGNORE,
+ BTA_AV_CLOSING_SST},
+ /* AP_START_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_RCFG_SST},
+ /* AP_STOP_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_RCFG_SST},
+ /* API_RECONFIG_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_RCFG_SST},
+ /* API_PROTECT_REQ_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_RCFG_SST},
+ /* API_PROTECT_RSP_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_RCFG_SST},
+ /* API_RC_OPEN_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_RCFG_SST},
+ /* SRC_DATA_READY_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_RCFG_SST},
+ /* CI_SETCONFIG_OK_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_RCFG_SST},
+ /* CI_SETCONFIG_FAIL_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE,
+ BTA_AV_RCFG_SST},
+ /* SDP_DISC_OK_EVT */ {BTA_AV_FREE_SDB, BTA_AV_SIGNORE, BTA_AV_RCFG_SST},
+ /* SDP_DISC_FAIL_EVT */ {BTA_AV_FREE_SDB, BTA_AV_SIGNORE, BTA_AV_RCFG_SST},
+ /* STR_DISC_OK_EVT */ {BTA_AV_DISC_RESULTS, BTA_AV_SIGNORE,
+ BTA_AV_RCFG_SST},
+ /* STR_DISC_FAIL_EVT */ {BTA_AV_STR_CLOSED, BTA_AV_SIGNORE,
+ BTA_AV_INIT_SST},
+ /* STR_GETCAP_OK_EVT */ {BTA_AV_GETCAP_RESULTS, BTA_AV_SIGNORE,
+ BTA_AV_RCFG_SST},
+ /* STR_GETCAP_FAIL_EVT */ {BTA_AV_STR_CLOSED, BTA_AV_SIGNORE,
+ BTA_AV_INIT_SST},
+ /* STR_OPEN_OK_EVT */ {BTA_AV_RCFG_STR_OK, BTA_AV_SIGNORE, BTA_AV_OPEN_SST},
+ /* STR_OPEN_FAIL_EVT */ {BTA_AV_RCFG_FAILED, BTA_AV_SIGNORE,
+ BTA_AV_RCFG_SST},
+ /* STR_START_OK_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_RCFG_SST},
+ /* STR_START_FAIL_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_RCFG_SST},
+ /* STR_CLOSE_EVT */ {BTA_AV_RCFG_CONNECT, BTA_AV_SIGNORE, BTA_AV_RCFG_SST},
+ /* STR_CONFIG_IND_EVT */ {BTA_AV_SETCONFIG_REJ, BTA_AV_SIGNORE,
+ BTA_AV_RCFG_SST},
+ /* STR_SECURITY_IND_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE,
+ BTA_AV_RCFG_SST},
+ /* STR_SECURITY_CFM_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE,
+ BTA_AV_RCFG_SST},
+ /* STR_WRITE_CFM_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_RCFG_SST},
+ /* STR_SUSPEND_CFM_EVT */ {BTA_AV_SUSPEND_CFM, BTA_AV_SUSPEND_CONT,
+ BTA_AV_RCFG_SST},
+ /* STR_RECONFIG_CFM_EVT */ {BTA_AV_RCFG_CFM, BTA_AV_SIGNORE,
+ BTA_AV_RCFG_SST},
+ /* AVRC_TIMER_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_RCFG_SST},
+ /* AVDT_CONNECT_EVT */ {BTA_AV_RCFG_OPEN, BTA_AV_SIGNORE, BTA_AV_RCFG_SST},
+ /* AVDT_DISCONNECT_EVT */ {BTA_AV_RCFG_DISCNTD, BTA_AV_SIGNORE,
+ BTA_AV_RCFG_SST},
+ /* ROLE_CHANGE_EVT*/ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_RCFG_SST},
+ /* AVDT_DELAY_RPT_EVT */ {BTA_AV_DELAY_CO, BTA_AV_SIGNORE, BTA_AV_RCFG_SST},
+ /* ACP_CONNECT_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_RCFG_SST},
+ /* API_OFFLOAD_START_EVT */ {BTA_AV_OFFLOAD_REQ, BTA_AV_SIGNORE,
+ BTA_AV_RCFG_SST},
+ /* API_OFFLOAD_START_RSP_EVT */ {BTA_AV_OFFLOAD_RSP, BTA_AV_SIGNORE,
+ BTA_AV_RCFG_SST}};
/* state table for closing state */
-static const uint8_t bta_av_sst_closing[][BTA_AV_NUM_COLS] =
-{
-/* Event Action 1 Action 2 Next state */
-/* AP_OPEN_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_CLOSING_SST },
-/* AP_CLOSE_EVT */ {BTA_AV_DISCONNECT_REQ, BTA_AV_SIGNORE, BTA_AV_CLOSING_SST },
-/* AP_START_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_CLOSING_SST },
-/* AP_STOP_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_CLOSING_SST },
-/* API_RECONFIG_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_CLOSING_SST },
-/* API_PROTECT_REQ_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_CLOSING_SST },
-/* API_PROTECT_RSP_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_CLOSING_SST },
-/* API_RC_OPEN_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_CLOSING_SST },
-/* SRC_DATA_READY_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_CLOSING_SST },
-/* CI_SETCONFIG_OK_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_CLOSING_SST },
-/* CI_SETCONFIG_FAIL_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_CLOSING_SST },
-/* SDP_DISC_OK_EVT */ {BTA_AV_SDP_FAILED, BTA_AV_SIGNORE, BTA_AV_INIT_SST },
-/* SDP_DISC_FAIL_EVT */ {BTA_AV_SDP_FAILED, BTA_AV_SIGNORE, BTA_AV_INIT_SST },
-/* STR_DISC_OK_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_CLOSING_SST },
-/* STR_DISC_FAIL_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_CLOSING_SST },
-/* STR_GETCAP_OK_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_CLOSING_SST },
-/* STR_GETCAP_FAIL_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_CLOSING_SST },
-/* STR_OPEN_OK_EVT */ {BTA_AV_DO_CLOSE, BTA_AV_SIGNORE, BTA_AV_CLOSING_SST },
-/* STR_OPEN_FAIL_EVT */ {BTA_AV_DISCONNECT_REQ, BTA_AV_SIGNORE, BTA_AV_CLOSING_SST },
-/* STR_START_OK_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_CLOSING_SST },
-/* STR_START_FAIL_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_CLOSING_SST },
-/* STR_CLOSE_EVT */ {BTA_AV_DISCONNECT_REQ, BTA_AV_SIGNORE, BTA_AV_CLOSING_SST },
-/* STR_CONFIG_IND_EVT */ {BTA_AV_SETCONFIG_REJ, BTA_AV_SIGNORE, BTA_AV_CLOSING_SST },
-/* STR_SECURITY_IND_EVT */ {BTA_AV_SECURITY_REJ, BTA_AV_SIGNORE, BTA_AV_CLOSING_SST },
-/* STR_SECURITY_CFM_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_CLOSING_SST },
-/* STR_WRITE_CFM_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_CLOSING_SST },
-/* STR_SUSPEND_CFM_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_CLOSING_SST },
-/* STR_RECONFIG_CFM_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_CLOSING_SST },
-/* AVRC_TIMER_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_CLOSING_SST },
-/* AVDT_CONNECT_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_CLOSING_SST },
-/* AVDT_DISCONNECT_EVT */ {BTA_AV_STR_CLOSED, BTA_AV_SIGNORE, BTA_AV_INIT_SST },
-/* ROLE_CHANGE_EVT*/ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_CLOSING_SST },
-/* AVDT_DELAY_RPT_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_CLOSING_SST },
-/* ACP_CONNECT_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_CLOSING_SST },
-/* API_OFFLOAD_START_EVT */{BTA_AV_OFFLOAD_REQ, BTA_AV_SIGNORE, BTA_AV_CLOSING_SST },
-/* API_OFFLOAD_START_RSP_EVT */{BTA_AV_OFFLOAD_RSP, BTA_AV_SIGNORE, BTA_AV_CLOSING_SST }
-};
+static const uint8_t bta_av_sst_closing[][BTA_AV_NUM_COLS] = {
+ /* Event Action 1 Action 2 Next state */
+ /* AP_OPEN_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_CLOSING_SST},
+ /* AP_CLOSE_EVT */ {BTA_AV_DISCONNECT_REQ, BTA_AV_SIGNORE,
+ BTA_AV_CLOSING_SST},
+ /* AP_START_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_CLOSING_SST},
+ /* AP_STOP_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_CLOSING_SST},
+ /* API_RECONFIG_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_CLOSING_SST},
+ /* API_PROTECT_REQ_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE,
+ BTA_AV_CLOSING_SST},
+ /* API_PROTECT_RSP_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE,
+ BTA_AV_CLOSING_SST},
+ /* API_RC_OPEN_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_CLOSING_SST},
+ /* SRC_DATA_READY_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE,
+ BTA_AV_CLOSING_SST},
+ /* CI_SETCONFIG_OK_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE,
+ BTA_AV_CLOSING_SST},
+ /* CI_SETCONFIG_FAIL_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE,
+ BTA_AV_CLOSING_SST},
+ /* SDP_DISC_OK_EVT */ {BTA_AV_SDP_FAILED, BTA_AV_SIGNORE, BTA_AV_INIT_SST},
+ /* SDP_DISC_FAIL_EVT */ {BTA_AV_SDP_FAILED, BTA_AV_SIGNORE,
+ BTA_AV_INIT_SST},
+ /* STR_DISC_OK_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_CLOSING_SST},
+ /* STR_DISC_FAIL_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE,
+ BTA_AV_CLOSING_SST},
+ /* STR_GETCAP_OK_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE,
+ BTA_AV_CLOSING_SST},
+ /* STR_GETCAP_FAIL_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE,
+ BTA_AV_CLOSING_SST},
+ /* STR_OPEN_OK_EVT */ {BTA_AV_DO_CLOSE, BTA_AV_SIGNORE, BTA_AV_CLOSING_SST},
+ /* STR_OPEN_FAIL_EVT */ {BTA_AV_DISCONNECT_REQ, BTA_AV_SIGNORE,
+ BTA_AV_CLOSING_SST},
+ /* STR_START_OK_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_CLOSING_SST},
+ /* STR_START_FAIL_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE,
+ BTA_AV_CLOSING_SST},
+ /* STR_CLOSE_EVT */ {BTA_AV_DISCONNECT_REQ, BTA_AV_SIGNORE,
+ BTA_AV_CLOSING_SST},
+ /* STR_CONFIG_IND_EVT */ {BTA_AV_SETCONFIG_REJ, BTA_AV_SIGNORE,
+ BTA_AV_CLOSING_SST},
+ /* STR_SECURITY_IND_EVT */ {BTA_AV_SECURITY_REJ, BTA_AV_SIGNORE,
+ BTA_AV_CLOSING_SST},
+ /* STR_SECURITY_CFM_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE,
+ BTA_AV_CLOSING_SST},
+ /* STR_WRITE_CFM_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE,
+ BTA_AV_CLOSING_SST},
+ /* STR_SUSPEND_CFM_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE,
+ BTA_AV_CLOSING_SST},
+ /* STR_RECONFIG_CFM_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE,
+ BTA_AV_CLOSING_SST},
+ /* AVRC_TIMER_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_CLOSING_SST},
+ /* AVDT_CONNECT_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_CLOSING_SST},
+ /* AVDT_DISCONNECT_EVT */ {BTA_AV_STR_CLOSED, BTA_AV_SIGNORE,
+ BTA_AV_INIT_SST},
+ /* ROLE_CHANGE_EVT*/ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_CLOSING_SST},
+ /* AVDT_DELAY_RPT_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE,
+ BTA_AV_CLOSING_SST},
+ /* ACP_CONNECT_EVT */ {BTA_AV_SIGNORE, BTA_AV_SIGNORE, BTA_AV_CLOSING_SST},
+ /* API_OFFLOAD_START_EVT */ {BTA_AV_OFFLOAD_REQ, BTA_AV_SIGNORE,
+ BTA_AV_CLOSING_SST},
+ /* API_OFFLOAD_START_RSP_EVT */ {BTA_AV_OFFLOAD_RSP, BTA_AV_SIGNORE,
+ BTA_AV_CLOSING_SST}};
/* type for state table */
typedef const uint8_t (*tBTA_AV_SST_TBL)[BTA_AV_NUM_COLS];
/* state table */
-static const tBTA_AV_SST_TBL bta_av_sst_tbl[] =
-{
- bta_av_sst_init,
- bta_av_sst_incoming,
- bta_av_sst_opening,
- bta_av_sst_open,
- bta_av_sst_rcfg,
- bta_av_sst_closing
-};
-
-
+static const tBTA_AV_SST_TBL bta_av_sst_tbl[] = {
+ bta_av_sst_init, bta_av_sst_incoming, bta_av_sst_opening,
+ bta_av_sst_open, bta_av_sst_rcfg, bta_av_sst_closing};
#if (BTA_AV_DEBUG == TRUE)
-static const char *bta_av_sst_code(uint8_t state);
+static const char* bta_av_sst_code(uint8_t state);
#endif
/*******************************************************************************
@@ -390,17 +480,14 @@
* Returns true if stream state machine is in reconfig state.
*
******************************************************************************/
-bool bta_av_is_rcfg_sst (tBTA_AV_SCB *p_scb)
-{
- bool is_rcfg_sst = false;
+bool bta_av_is_rcfg_sst(tBTA_AV_SCB* p_scb) {
+ bool is_rcfg_sst = false;
- if (p_scb != NULL)
- {
- if (p_scb->state == BTA_AV_RCFG_SST)
- is_rcfg_sst = true;
- }
+ if (p_scb != NULL) {
+ if (p_scb->state == BTA_AV_RCFG_SST) is_rcfg_sst = true;
+ }
- return is_rcfg_sst;
+ return is_rcfg_sst;
}
/*******************************************************************************
@@ -413,66 +500,59 @@
* Returns void
*
******************************************************************************/
-void bta_av_ssm_execute(tBTA_AV_SCB *p_scb, uint16_t event, tBTA_AV_DATA *p_data)
-{
- tBTA_AV_SST_TBL state_table;
- uint8_t action;
- int i, xx;
+void bta_av_ssm_execute(tBTA_AV_SCB* p_scb, uint16_t event,
+ tBTA_AV_DATA* p_data) {
+ tBTA_AV_SST_TBL state_table;
+ uint8_t action;
+ int i, xx;
- if(p_scb == NULL)
- {
- /* this stream is not registered */
- APPL_TRACE_EVENT("AV channel not registered");
- return;
- }
+ if (p_scb == NULL) {
+ /* this stream is not registered */
+ APPL_TRACE_EVENT("AV channel not registered");
+ return;
+ }
- /* In case incoming connection is for VDP, we need to swap scb. */
- /* When ACP_CONNECT_EVT was received, we put first available scb to */
- /* to Incoming state. Later, when STR_CONFIG_IND_EVT is coming, we */
- /* know if it is A2DP or VDP. */
- if ((p_scb->state == BTA_AV_INIT_SST) && (event == BTA_AV_STR_CONFIG_IND_EVT))
- {
- for (xx = 0; xx < BTA_AV_NUM_STRS; xx++)
- {
- if (bta_av_cb.p_scb[xx])
- {
- if (bta_av_cb.p_scb[xx]->state == BTA_AV_INCOMING_SST)
- {
- bta_av_cb.p_scb[xx]->state = BTA_AV_INIT_SST;
- bta_av_cb.p_scb[xx]->coll_mask = 0;
- p_scb->state = BTA_AV_INCOMING_SST;
- break;
- }
- }
+ /* In case incoming connection is for VDP, we need to swap scb. */
+ /* When ACP_CONNECT_EVT was received, we put first available scb to */
+ /* to Incoming state. Later, when STR_CONFIG_IND_EVT is coming, we */
+ /* know if it is A2DP or VDP. */
+ if ((p_scb->state == BTA_AV_INIT_SST) &&
+ (event == BTA_AV_STR_CONFIG_IND_EVT)) {
+ for (xx = 0; xx < BTA_AV_NUM_STRS; xx++) {
+ if (bta_av_cb.p_scb[xx]) {
+ if (bta_av_cb.p_scb[xx]->state == BTA_AV_INCOMING_SST) {
+ bta_av_cb.p_scb[xx]->state = BTA_AV_INIT_SST;
+ bta_av_cb.p_scb[xx]->coll_mask = 0;
+ p_scb->state = BTA_AV_INCOMING_SST;
+ break;
}
+ }
}
+ }
#if (BTA_AV_DEBUG == TRUE)
- APPL_TRACE_VERBOSE("AV Sevent(0x%x)=0x%x(%s) state=%d(%s)",
- p_scb->hndl, event, bta_av_evt_code(event), p_scb->state, bta_av_sst_code(p_scb->state));
+ APPL_TRACE_VERBOSE("AV Sevent(0x%x)=0x%x(%s) state=%d(%s)", p_scb->hndl,
+ event, bta_av_evt_code(event), p_scb->state,
+ bta_av_sst_code(p_scb->state));
#else
- APPL_TRACE_VERBOSE("AV Sevent=0x%x state=%d", event, p_scb->state);
+ APPL_TRACE_VERBOSE("AV Sevent=0x%x state=%d", event, p_scb->state);
#endif
- /* look up the state table for the current state */
- state_table = bta_av_sst_tbl[p_scb->state];
+ /* look up the state table for the current state */
+ state_table = bta_av_sst_tbl[p_scb->state];
- event -= BTA_AV_FIRST_SSM_EVT;
+ event -= BTA_AV_FIRST_SSM_EVT;
- /* set next state */
- p_scb->state = state_table[event][BTA_AV_SNEXT_STATE];
+ /* set next state */
+ p_scb->state = state_table[event][BTA_AV_SNEXT_STATE];
- /* execute action functions */
- for(i=0; i< BTA_AV_SACTIONS; i++)
- {
- if ((action = state_table[event][i]) != BTA_AV_SIGNORE)
- {
- (*p_scb->p_act_tbl[action])(p_scb, p_data);
- }
- else
- break;
- }
-
+ /* execute action functions */
+ for (i = 0; i < BTA_AV_SACTIONS; i++) {
+ if ((action = state_table[event][i]) != BTA_AV_SIGNORE) {
+ (*p_scb->p_act_tbl[action])(p_scb, p_data);
+ } else
+ break;
+ }
}
/*******************************************************************************
@@ -485,17 +565,14 @@
* Returns true if scb is in opening state.
*
******************************************************************************/
-bool bta_av_is_scb_opening (tBTA_AV_SCB *p_scb)
-{
- bool is_opening = false;
+bool bta_av_is_scb_opening(tBTA_AV_SCB* p_scb) {
+ bool is_opening = false;
- if (p_scb)
- {
- if (p_scb->state == BTA_AV_OPENING_SST)
- is_opening = true;
- }
+ if (p_scb) {
+ if (p_scb->state == BTA_AV_OPENING_SST) is_opening = true;
+ }
- return is_opening;
+ return is_opening;
}
/*******************************************************************************
@@ -508,17 +585,14 @@
* Returns true if scb is in incoming state.
*
******************************************************************************/
-bool bta_av_is_scb_incoming (tBTA_AV_SCB *p_scb)
-{
- bool is_incoming = false;
+bool bta_av_is_scb_incoming(tBTA_AV_SCB* p_scb) {
+ bool is_incoming = false;
- if (p_scb)
- {
- if (p_scb->state == BTA_AV_INCOMING_SST)
- is_incoming = true;
- }
+ if (p_scb) {
+ if (p_scb->state == BTA_AV_INCOMING_SST) is_incoming = true;
+ }
- return is_incoming;
+ return is_incoming;
}
/*******************************************************************************
@@ -531,12 +605,10 @@
* Returns None
*
******************************************************************************/
-void bta_av_set_scb_sst_init (tBTA_AV_SCB *p_scb)
-{
- if (p_scb)
- {
- p_scb->state = BTA_AV_INIT_SST;
- }
+void bta_av_set_scb_sst_init(tBTA_AV_SCB* p_scb) {
+ if (p_scb) {
+ p_scb->state = BTA_AV_INIT_SST;
+ }
}
/*******************************************************************************
@@ -549,17 +621,14 @@
* Returns true if scb is in incoming state.
*
******************************************************************************/
-bool bta_av_is_scb_init (tBTA_AV_SCB *p_scb)
-{
- bool is_init = false;
+bool bta_av_is_scb_init(tBTA_AV_SCB* p_scb) {
+ bool is_init = false;
- if (p_scb)
- {
- if (p_scb->state == BTA_AV_INIT_SST)
- is_init = true;
- }
+ if (p_scb) {
+ if (p_scb->state == BTA_AV_INIT_SST) is_init = true;
+ }
- return is_init;
+ return is_init;
}
/*******************************************************************************
@@ -572,12 +641,10 @@
* Returns None
*
******************************************************************************/
-void bta_av_set_scb_sst_incoming (tBTA_AV_SCB *p_scb)
-{
- if (p_scb)
- {
- p_scb->state = BTA_AV_INCOMING_SST;
- }
+void bta_av_set_scb_sst_incoming(tBTA_AV_SCB* p_scb) {
+ if (p_scb) {
+ p_scb->state = BTA_AV_INCOMING_SST;
+ }
}
/*****************************************************************************
@@ -593,18 +660,23 @@
* Returns char *
*
******************************************************************************/
-static const char *bta_av_sst_code(uint8_t state)
-{
- switch(state)
- {
- case BTA_AV_INIT_SST: return "INIT";
- case BTA_AV_INCOMING_SST: return "INCOMING";
- case BTA_AV_OPENING_SST: return "OPENING";
- case BTA_AV_OPEN_SST: return "OPEN";
- case BTA_AV_RCFG_SST: return "RCFG";
- case BTA_AV_CLOSING_SST: return "CLOSING";
- default: return "unknown";
- }
+static const char* bta_av_sst_code(uint8_t state) {
+ switch (state) {
+ case BTA_AV_INIT_SST:
+ return "INIT";
+ case BTA_AV_INCOMING_SST:
+ return "INCOMING";
+ case BTA_AV_OPENING_SST:
+ return "OPENING";
+ case BTA_AV_OPEN_SST:
+ return "OPEN";
+ case BTA_AV_RCFG_SST:
+ return "RCFG";
+ case BTA_AV_CLOSING_SST:
+ return "CLOSING";
+ default:
+ return "unknown";
+ }
}
#endif
diff --git a/bta/closure/bta_closure.cc b/bta/closure/bta_closure.cc
index 0d37450..19c0c3e 100644
--- a/bta/closure/bta_closure.cc
+++ b/bta/closure/bta_closure.cc
@@ -54,7 +54,7 @@
bta_closure_sys_sendmsg = sender;
}
-bool bta_closure_execute(BT_HDR *p_msg) {
+bool bta_closure_execute(BT_HDR* p_msg) {
if (p_msg->event != BTA_CLOSURE_EXECUTE_EVT) {
APPL_TRACE_ERROR("%s: don't know how to execute event type %d", __func__,
p_msg->event);
@@ -84,14 +84,14 @@
* for how to handle dynamic memory ownership/smart pointers with base::Owned(),
* base::Passed(), base::ConstRef() and others.
*/
-void do_in_bta_thread(const tracked_objects::Location &from_here,
- const base::Closure &task) {
+void do_in_bta_thread(const tracked_objects::Location& from_here,
+ const base::Closure& task) {
PendingTask pending_task(from_here, task, TimeTicks(), true);
task_queue.push(std::move(pending_task));
- tBTA_CLOSURE_EXECUTE *p_msg =
- (tBTA_CLOSURE_EXECUTE *)osi_malloc(sizeof(tBTA_CLOSURE_EXECUTE));
+ tBTA_CLOSURE_EXECUTE* p_msg =
+ (tBTA_CLOSURE_EXECUTE*)osi_malloc(sizeof(tBTA_CLOSURE_EXECUTE));
APPL_TRACE_API("%s", __func__);
diff --git a/bta/closure/bta_closure_int.h b/bta/closure/bta_closure_int.h
index 25c7e8e..39aaab3 100644
--- a/bta/closure/bta_closure_int.h
+++ b/bta/closure/bta_closure_int.h
@@ -33,7 +33,7 @@
* override system methods for tests.
*/
void bta_closure_init(tBTA_SYS_REGISTER registerer, tBTA_SYS_SENDMSG sender);
-bool bta_closure_execute(BT_HDR *p_msg);
+bool bta_closure_execute(BT_HDR* p_msg);
#ifdef __cplusplus
}
diff --git a/bta/dm/bta_dm_act.cc b/bta/dm/bta_dm_act.cc
index 462a489..109b9ab 100644
--- a/bta/dm/bta_dm_act.cc
+++ b/bta/dm/bta_dm_act.cc
@@ -28,6 +28,7 @@
#include <assert.h>
#include <string.h>
+#include "bt_common.h"
#include "bt_target.h"
#include "bt_types.h"
#include "bta_api.h"
@@ -38,8 +39,7 @@
#include "btm_api.h"
#include "btm_int.h"
#include "btu.h"
-#include "gap_api.h" /* For GAP_BleReadPeerPrefConnParams */
-#include "bt_common.h"
+#include "gap_api.h" /* For GAP_BleReadPeerPrefConnParams */
#include "l2c_api.h"
#include "osi/include/log.h"
#include "osi/include/osi.h"
@@ -50,67 +50,79 @@
#include "gap_api.h"
#endif
-static void bta_dm_inq_results_cb (tBTM_INQ_RESULTS *p_inq, uint8_t *p_eir);
-static void bta_dm_inq_cmpl_cb (void * p_result);
-static void bta_dm_service_search_remname_cback(BD_ADDR bd_addr, DEV_CLASS dc, BD_NAME bd_name);
-static void bta_dm_remname_cback (tBTM_REMOTE_DEV_NAME *p_remote_name);
-static void bta_dm_find_services ( BD_ADDR bd_addr);
+static void bta_dm_inq_results_cb(tBTM_INQ_RESULTS* p_inq, uint8_t* p_eir);
+static void bta_dm_inq_cmpl_cb(void* p_result);
+static void bta_dm_service_search_remname_cback(BD_ADDR bd_addr, DEV_CLASS dc,
+ BD_NAME bd_name);
+static void bta_dm_remname_cback(tBTM_REMOTE_DEV_NAME* p_remote_name);
+static void bta_dm_find_services(BD_ADDR bd_addr);
static void bta_dm_discover_next_device(void);
-static void bta_dm_sdp_callback (uint16_t sdp_status);
-static uint8_t bta_dm_authorize_cback (BD_ADDR bd_addr, DEV_CLASS dev_class, BD_NAME bd_name,
- uint8_t *service_name, uint8_t service_id, bool is_originator);
-static uint8_t bta_dm_pin_cback (BD_ADDR bd_addr, DEV_CLASS dev_class, BD_NAME bd_name, bool min_16_digit);
-static uint8_t bta_dm_new_link_key_cback(BD_ADDR bd_addr, DEV_CLASS dev_class, BD_NAME bd_name,
- LINK_KEY key, uint8_t key_type);
-static uint8_t bta_dm_authentication_complete_cback(BD_ADDR bd_addr, DEV_CLASS dev_class,
- BD_NAME bd_name, int result);
+static void bta_dm_sdp_callback(uint16_t sdp_status);
+static uint8_t bta_dm_authorize_cback(BD_ADDR bd_addr, DEV_CLASS dev_class,
+ BD_NAME bd_name, uint8_t* service_name,
+ uint8_t service_id, bool is_originator);
+static uint8_t bta_dm_pin_cback(BD_ADDR bd_addr, DEV_CLASS dev_class,
+ BD_NAME bd_name, bool min_16_digit);
+static uint8_t bta_dm_new_link_key_cback(BD_ADDR bd_addr, DEV_CLASS dev_class,
+ BD_NAME bd_name, LINK_KEY key,
+ uint8_t key_type);
+static uint8_t bta_dm_authentication_complete_cback(BD_ADDR bd_addr,
+ DEV_CLASS dev_class,
+ BD_NAME bd_name,
+ int result);
static void bta_dm_local_name_cback(BD_ADDR bd_addr);
static bool bta_dm_check_av(uint16_t event);
-static void bta_dm_bl_change_cback (tBTM_BL_EVENT_DATA *p_data);
+static void bta_dm_bl_change_cback(tBTM_BL_EVENT_DATA* p_data);
-static void bta_dm_policy_cback(tBTA_SYS_CONN_STATUS status, uint8_t id, uint8_t app_id, BD_ADDR peer_addr);
+static void bta_dm_policy_cback(tBTA_SYS_CONN_STATUS status, uint8_t id,
+ uint8_t app_id, BD_ADDR peer_addr);
/* Extended Inquiry Response */
-static uint8_t bta_dm_sp_cback (tBTM_SP_EVT event, tBTM_SP_EVT_DATA *p_data);
+static uint8_t bta_dm_sp_cback(tBTM_SP_EVT event, tBTM_SP_EVT_DATA* p_data);
-static void bta_dm_set_eir (char *local_name);
+static void bta_dm_set_eir(char* local_name);
-static void bta_dm_eir_search_services( tBTM_INQ_RESULTS *p_result,
- tBTA_SERVICE_MASK *p_services_to_search,
- tBTA_SERVICE_MASK *p_services_found);
+static void bta_dm_eir_search_services(tBTM_INQ_RESULTS* p_result,
+ tBTA_SERVICE_MASK* p_services_to_search,
+ tBTA_SERVICE_MASK* p_services_found);
-static void bta_dm_search_timer_cback(void *data);
-static void bta_dm_disable_conn_down_timer_cback(void *data);
-static void bta_dm_rm_cback(tBTA_SYS_CONN_STATUS status, uint8_t id, uint8_t app_id, BD_ADDR peer_addr);
+static void bta_dm_search_timer_cback(void* data);
+static void bta_dm_disable_conn_down_timer_cback(void* data);
+static void bta_dm_rm_cback(tBTA_SYS_CONN_STATUS status, uint8_t id,
+ uint8_t app_id, BD_ADDR peer_addr);
static void bta_dm_adjust_roles(bool delay_role_switch);
-static char *bta_dm_get_remname(void);
+static char* bta_dm_get_remname(void);
static void bta_dm_bond_cancel_complete_cback(tBTM_STATUS result);
-static bool bta_dm_read_remote_device_name (BD_ADDR bd_addr,tBT_TRANSPORT transport);
+static bool bta_dm_read_remote_device_name(BD_ADDR bd_addr,
+ tBT_TRANSPORT transport);
static void bta_dm_discover_device(BD_ADDR remote_bd_addr);
-static void bta_dm_sys_hw_cback( tBTA_SYS_HW_EVT status );
+static void bta_dm_sys_hw_cback(tBTA_SYS_HW_EVT status);
static void bta_dm_disable_search_and_disc(void);
#if (BLE_INCLUDED == TRUE)
- #if (SMP_INCLUDED == TRUE)
-static uint8_t bta_dm_ble_smp_cback (tBTM_LE_EVT event, BD_ADDR bda, tBTM_LE_EVT_DATA *p_data);
- #endif
-static void bta_dm_ble_id_key_cback (uint8_t key_type, tBTM_BLE_LOCAL_KEYS *p_key);
- #if (BTA_GATT_INCLUDED == TRUE)
+#if (SMP_INCLUDED == TRUE)
+static uint8_t bta_dm_ble_smp_cback(tBTM_LE_EVT event, BD_ADDR bda,
+ tBTM_LE_EVT_DATA* p_data);
+#endif
+static void bta_dm_ble_id_key_cback(uint8_t key_type,
+ tBTM_BLE_LOCAL_KEYS* p_key);
+#if (BTA_GATT_INCLUDED == TRUE)
static void bta_dm_gattc_register(void);
static void btm_dm_start_gatt_discovery(BD_ADDR bd_addr);
static void bta_dm_cancel_gatt_discovery(BD_ADDR bd_addr);
-static void bta_dm_gattc_callback(tBTA_GATTC_EVT event, tBTA_GATTC *p_data);
+static void bta_dm_gattc_callback(tBTA_GATTC_EVT event, tBTA_GATTC* p_data);
extern tBTA_DM_CONTRL_STATE bta_dm_pm_obtain_controller_state(void);
- #endif
+#endif
#if (BLE_VND_INCLUDED == TRUE)
static void bta_dm_ctrl_features_rd_cmpl_cback(tBTM_STATUS result);
#endif
#ifndef BTA_DM_BLE_ADV_CHNL_MAP
-#define BTA_DM_BLE_ADV_CHNL_MAP (BTM_BLE_ADV_CHNL_37|BTM_BLE_ADV_CHNL_38|BTM_BLE_ADV_CHNL_39)
+#define BTA_DM_BLE_ADV_CHNL_MAP \
+ (BTM_BLE_ADV_CHNL_37 | BTM_BLE_ADV_CHNL_38 | BTM_BLE_ADV_CHNL_39)
#endif
#endif
@@ -136,100 +148,98 @@
static void bta_dm_reset_sec_dev_pending(BD_ADDR remote_bd_addr);
static void bta_dm_remove_sec_dev_entry(BD_ADDR remote_bd_addr);
-static void bta_dm_observe_results_cb(tBTM_INQ_RESULTS *p_inq, uint8_t *p_eir);
-static void bta_dm_observe_cmpl_cb(void * p_result);
-static void bta_dm_delay_role_switch_cback(void *data);
-static void bta_dm_disable_timer_cback(void *data);
+static void bta_dm_observe_results_cb(tBTM_INQ_RESULTS* p_inq, uint8_t* p_eir);
+static void bta_dm_observe_cmpl_cb(void* p_result);
+static void bta_dm_delay_role_switch_cback(void* data);
+static void bta_dm_disable_timer_cback(void* data);
-
-const uint16_t bta_service_id_to_uuid_lkup_tbl [BTA_MAX_SERVICE_ID] =
-{
- UUID_SERVCLASS_PNP_INFORMATION, /* Reserved */
- UUID_SERVCLASS_SERIAL_PORT, /* BTA_SPP_SERVICE_ID */
- UUID_SERVCLASS_DIALUP_NETWORKING, /* BTA_DUN_SERVICE_ID */
- UUID_SERVCLASS_AUDIO_SOURCE, /* BTA_A2DP_SOURCE_SERVICE_ID */
- UUID_SERVCLASS_LAN_ACCESS_USING_PPP, /* BTA_LAP_SERVICE_ID */
- UUID_SERVCLASS_HEADSET, /* BTA_HSP_HS_SERVICE_ID */
- UUID_SERVCLASS_HF_HANDSFREE, /* BTA_HFP_HS_SERVICE_ID */
- UUID_SERVCLASS_OBEX_OBJECT_PUSH, /* BTA_OPP_SERVICE_ID */
- UUID_SERVCLASS_OBEX_FILE_TRANSFER, /* BTA_FTP_SERVICE_ID */
- UUID_SERVCLASS_CORDLESS_TELEPHONY, /* BTA_CTP_SERVICE_ID */
- UUID_SERVCLASS_INTERCOM, /* BTA_ICP_SERVICE_ID */
- UUID_SERVCLASS_IRMC_SYNC, /* BTA_SYNC_SERVICE_ID */
- UUID_SERVCLASS_DIRECT_PRINTING, /* BTA_BPP_SERVICE_ID */
- UUID_SERVCLASS_IMAGING_RESPONDER, /* BTA_BIP_SERVICE_ID */
- UUID_SERVCLASS_PANU, /* BTA_PANU_SERVICE_ID */
- UUID_SERVCLASS_NAP, /* BTA_NAP_SERVICE_ID */
- UUID_SERVCLASS_GN, /* BTA_GN_SERVICE_ID */
- UUID_SERVCLASS_SAP, /* BTA_SAP_SERVICE_ID */
- UUID_SERVCLASS_AUDIO_SINK, /* BTA_A2DP_SERVICE_ID */
- UUID_SERVCLASS_AV_REMOTE_CONTROL, /* BTA_AVRCP_SERVICE_ID */
- UUID_SERVCLASS_HUMAN_INTERFACE, /* BTA_HID_SERVICE_ID */
- UUID_SERVCLASS_VIDEO_SINK, /* BTA_VDP_SERVICE_ID */
- UUID_SERVCLASS_PBAP_PSE, /* BTA_PBAP_SERVICE_ID */
- UUID_SERVCLASS_HEADSET_AUDIO_GATEWAY, /* BTA_HSP_SERVICE_ID */
- UUID_SERVCLASS_AG_HANDSFREE, /* BTA_HFP_SERVICE_ID */
- UUID_SERVCLASS_MESSAGE_ACCESS, /* BTA_MAP_SERVICE_ID */
- UUID_SERVCLASS_MESSAGE_NOTIFICATION, /* BTA_MN_SERVICE_ID */
- UUID_SERVCLASS_HDP_PROFILE, /* BTA_HDP_SERVICE_ID */
- UUID_SERVCLASS_PBAP_PCE /* BTA_PCE_SERVICE_ID */
+const uint16_t bta_service_id_to_uuid_lkup_tbl[BTA_MAX_SERVICE_ID] = {
+ UUID_SERVCLASS_PNP_INFORMATION, /* Reserved */
+ UUID_SERVCLASS_SERIAL_PORT, /* BTA_SPP_SERVICE_ID */
+ UUID_SERVCLASS_DIALUP_NETWORKING, /* BTA_DUN_SERVICE_ID */
+ UUID_SERVCLASS_AUDIO_SOURCE, /* BTA_A2DP_SOURCE_SERVICE_ID */
+ UUID_SERVCLASS_LAN_ACCESS_USING_PPP, /* BTA_LAP_SERVICE_ID */
+ UUID_SERVCLASS_HEADSET, /* BTA_HSP_HS_SERVICE_ID */
+ UUID_SERVCLASS_HF_HANDSFREE, /* BTA_HFP_HS_SERVICE_ID */
+ UUID_SERVCLASS_OBEX_OBJECT_PUSH, /* BTA_OPP_SERVICE_ID */
+ UUID_SERVCLASS_OBEX_FILE_TRANSFER, /* BTA_FTP_SERVICE_ID */
+ UUID_SERVCLASS_CORDLESS_TELEPHONY, /* BTA_CTP_SERVICE_ID */
+ UUID_SERVCLASS_INTERCOM, /* BTA_ICP_SERVICE_ID */
+ UUID_SERVCLASS_IRMC_SYNC, /* BTA_SYNC_SERVICE_ID */
+ UUID_SERVCLASS_DIRECT_PRINTING, /* BTA_BPP_SERVICE_ID */
+ UUID_SERVCLASS_IMAGING_RESPONDER, /* BTA_BIP_SERVICE_ID */
+ UUID_SERVCLASS_PANU, /* BTA_PANU_SERVICE_ID */
+ UUID_SERVCLASS_NAP, /* BTA_NAP_SERVICE_ID */
+ UUID_SERVCLASS_GN, /* BTA_GN_SERVICE_ID */
+ UUID_SERVCLASS_SAP, /* BTA_SAP_SERVICE_ID */
+ UUID_SERVCLASS_AUDIO_SINK, /* BTA_A2DP_SERVICE_ID */
+ UUID_SERVCLASS_AV_REMOTE_CONTROL, /* BTA_AVRCP_SERVICE_ID */
+ UUID_SERVCLASS_HUMAN_INTERFACE, /* BTA_HID_SERVICE_ID */
+ UUID_SERVCLASS_VIDEO_SINK, /* BTA_VDP_SERVICE_ID */
+ UUID_SERVCLASS_PBAP_PSE, /* BTA_PBAP_SERVICE_ID */
+ UUID_SERVCLASS_HEADSET_AUDIO_GATEWAY, /* BTA_HSP_SERVICE_ID */
+ UUID_SERVCLASS_AG_HANDSFREE, /* BTA_HFP_SERVICE_ID */
+ UUID_SERVCLASS_MESSAGE_ACCESS, /* BTA_MAP_SERVICE_ID */
+ UUID_SERVCLASS_MESSAGE_NOTIFICATION, /* BTA_MN_SERVICE_ID */
+ UUID_SERVCLASS_HDP_PROFILE, /* BTA_HDP_SERVICE_ID */
+ UUID_SERVCLASS_PBAP_PCE /* BTA_PCE_SERVICE_ID */
#if (BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE)
- ,UUID_PROTOCOL_ATT /* BTA_GATT_SERVICE_ID */
+ ,
+ UUID_PROTOCOL_ATT /* BTA_GATT_SERVICE_ID */
#endif
};
/*
- * NOTE : The number of element in bta_service_id_to_btm_srv_id_lkup_tbl should be matching with
+ * NOTE : The number of element in bta_service_id_to_btm_srv_id_lkup_tbl should
+ * be matching with
* the value BTA_MAX_SERVICE_ID in bta_api.h
*
- * i.e., If you add new Service ID for BTA, the correct security ID of the new service
- * from Security service definitions (btm_api.h) should be added to this lookup table.
+ * i.e., If you add new Service ID for BTA, the correct security ID of
+ * the new service
+ * from Security service definitions (btm_api.h) should be added to
+ * this lookup table.
*/
-const uint32_t bta_service_id_to_btm_srv_id_lkup_tbl [BTA_MAX_SERVICE_ID] =
-{
- 0, /* Reserved */
- BTM_SEC_SERVICE_SERIAL_PORT, /* BTA_SPP_SERVICE_ID */
- BTM_SEC_SERVICE_DUN, /* BTA_DUN_SERVICE_ID */
- BTM_SEC_SERVICE_AVDTP, /* BTA_AUDIO_SOURCE_SERVICE_ID */
- BTM_SEC_SERVICE_LAN_ACCESS, /* BTA_LAP_SERVICE_ID */
- BTM_SEC_SERVICE_HEADSET_AG, /* BTA_HSP_SERVICE_ID */
- BTM_SEC_SERVICE_AG_HANDSFREE, /* BTA_HFP_SERVICE_ID */
- BTM_SEC_SERVICE_OBEX, /* BTA_OPP_SERVICE_ID */
- BTM_SEC_SERVICE_OBEX_FTP, /* BTA_FTP_SERVICE_ID */
- BTM_SEC_SERVICE_CORDLESS, /* BTA_CTP_SERVICE_ID */
- BTM_SEC_SERVICE_INTERCOM, /* BTA_ICP_SERVICE_ID */
- BTM_SEC_SERVICE_IRMC_SYNC, /* BTA_SYNC_SERVICE_ID */
- BTM_SEC_SERVICE_BPP_JOB, /* BTA_BPP_SERVICE_ID */
- BTM_SEC_SERVICE_BIP, /* BTA_BIP_SERVICE_ID */
- BTM_SEC_SERVICE_BNEP_PANU, /* BTA_PANU_SERVICE_ID */
- BTM_SEC_SERVICE_BNEP_NAP, /* BTA_NAP_SERVICE_ID */
- BTM_SEC_SERVICE_BNEP_GN, /* BTA_GN_SERVICE_ID */
- BTM_SEC_SERVICE_SAP, /* BTA_SAP_SERVICE_ID */
- BTM_SEC_SERVICE_AVDTP, /* BTA_A2DP_SERVICE_ID */
- BTM_SEC_SERVICE_AVCTP, /* BTA_AVRCP_SERVICE_ID */
- BTM_SEC_SERVICE_HIDH_SEC_CTRL, /* BTA_HID_SERVICE_ID */
- BTM_SEC_SERVICE_AVDTP, /* BTA_VDP_SERVICE_ID */
- BTM_SEC_SERVICE_PBAP, /* BTA_PBAP_SERVICE_ID */
- BTM_SEC_SERVICE_HEADSET, /* BTA_HSP_HS_SERVICE_ID */
- BTM_SEC_SERVICE_HF_HANDSFREE, /* BTA_HFP_HS_SERVICE_ID */
- BTM_SEC_SERVICE_MAP, /* BTA_MAP_SERVICE_ID */
- BTM_SEC_SERVICE_MAP, /* BTA_MN_SERVICE_ID */
- BTM_SEC_SERVICE_HDP_SNK, /* BTA_HDP_SERVICE_ID */
- BTM_SEC_SERVICE_PBAP /* BTA_PCE_SERVICE_ID */
+const uint32_t bta_service_id_to_btm_srv_id_lkup_tbl[BTA_MAX_SERVICE_ID] = {
+ 0, /* Reserved */
+ BTM_SEC_SERVICE_SERIAL_PORT, /* BTA_SPP_SERVICE_ID */
+ BTM_SEC_SERVICE_DUN, /* BTA_DUN_SERVICE_ID */
+ BTM_SEC_SERVICE_AVDTP, /* BTA_AUDIO_SOURCE_SERVICE_ID */
+ BTM_SEC_SERVICE_LAN_ACCESS, /* BTA_LAP_SERVICE_ID */
+ BTM_SEC_SERVICE_HEADSET_AG, /* BTA_HSP_SERVICE_ID */
+ BTM_SEC_SERVICE_AG_HANDSFREE, /* BTA_HFP_SERVICE_ID */
+ BTM_SEC_SERVICE_OBEX, /* BTA_OPP_SERVICE_ID */
+ BTM_SEC_SERVICE_OBEX_FTP, /* BTA_FTP_SERVICE_ID */
+ BTM_SEC_SERVICE_CORDLESS, /* BTA_CTP_SERVICE_ID */
+ BTM_SEC_SERVICE_INTERCOM, /* BTA_ICP_SERVICE_ID */
+ BTM_SEC_SERVICE_IRMC_SYNC, /* BTA_SYNC_SERVICE_ID */
+ BTM_SEC_SERVICE_BPP_JOB, /* BTA_BPP_SERVICE_ID */
+ BTM_SEC_SERVICE_BIP, /* BTA_BIP_SERVICE_ID */
+ BTM_SEC_SERVICE_BNEP_PANU, /* BTA_PANU_SERVICE_ID */
+ BTM_SEC_SERVICE_BNEP_NAP, /* BTA_NAP_SERVICE_ID */
+ BTM_SEC_SERVICE_BNEP_GN, /* BTA_GN_SERVICE_ID */
+ BTM_SEC_SERVICE_SAP, /* BTA_SAP_SERVICE_ID */
+ BTM_SEC_SERVICE_AVDTP, /* BTA_A2DP_SERVICE_ID */
+ BTM_SEC_SERVICE_AVCTP, /* BTA_AVRCP_SERVICE_ID */
+ BTM_SEC_SERVICE_HIDH_SEC_CTRL, /* BTA_HID_SERVICE_ID */
+ BTM_SEC_SERVICE_AVDTP, /* BTA_VDP_SERVICE_ID */
+ BTM_SEC_SERVICE_PBAP, /* BTA_PBAP_SERVICE_ID */
+ BTM_SEC_SERVICE_HEADSET, /* BTA_HSP_HS_SERVICE_ID */
+ BTM_SEC_SERVICE_HF_HANDSFREE, /* BTA_HFP_HS_SERVICE_ID */
+ BTM_SEC_SERVICE_MAP, /* BTA_MAP_SERVICE_ID */
+ BTM_SEC_SERVICE_MAP, /* BTA_MN_SERVICE_ID */
+ BTM_SEC_SERVICE_HDP_SNK, /* BTA_HDP_SERVICE_ID */
+ BTM_SEC_SERVICE_PBAP /* BTA_PCE_SERVICE_ID */
#if (BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE)
- ,BTM_SEC_SERVICE_ATT /* BTA_GATT_SERVICE_ID */
+ ,
+ BTM_SEC_SERVICE_ATT /* BTA_GATT_SERVICE_ID */
#endif
};
/* bta security callback */
-const tBTM_APPL_INFO bta_security =
-{
- &bta_dm_authorize_cback,
- &bta_dm_pin_cback,
- &bta_dm_new_link_key_cback,
- &bta_dm_authentication_complete_cback,
- &bta_dm_bond_cancel_complete_cback,
+const tBTM_APPL_INFO bta_security = {
+ &bta_dm_authorize_cback, &bta_dm_pin_cback, &bta_dm_new_link_key_cback,
+ &bta_dm_authentication_complete_cback, &bta_dm_bond_cancel_complete_cback,
#if (BTM_LOCAL_IO_CAPS != BTM_IO_CAP_NONE)
&bta_dm_sp_cback
#else
@@ -237,18 +247,20 @@
#endif
#if (BLE_INCLUDED == TRUE)
#if (SMP_INCLUDED == TRUE)
- ,&bta_dm_ble_smp_cback
+ ,
+ &bta_dm_ble_smp_cback
#endif
- ,&bta_dm_ble_id_key_cback
+ ,
+ &bta_dm_ble_id_key_cback
#endif
};
-#define MAX_DISC_RAW_DATA_BUF (4096)
+#define MAX_DISC_RAW_DATA_BUF (4096)
uint8_t g_disc_raw_data_buf[MAX_DISC_RAW_DATA_BUF];
extern DEV_CLASS local_device_default_class;
-extern fixed_queue_t *btu_bta_alarm_queue;
+extern fixed_queue_t* btu_bta_alarm_queue;
/*******************************************************************************
*
@@ -260,38 +272,39 @@
* Returns void
*
******************************************************************************/
-void bta_dm_enable(tBTA_DM_MSG *p_data)
-{
- tBTA_DM_ENABLE enable_event;
+void bta_dm_enable(tBTA_DM_MSG* p_data) {
+ tBTA_DM_ENABLE enable_event;
- /* if already in use, return an error */
- if( bta_dm_cb.is_bta_dm_active == true )
- {
- APPL_TRACE_WARNING("%s Device already started by another application", __func__);
- memset(&enable_event, 0, sizeof(tBTA_DM_ENABLE));
- enable_event.status = BTA_FAILURE;
- if (p_data->enable.p_sec_cback != NULL)
- p_data->enable.p_sec_cback(BTA_DM_ENABLE_EVT, (tBTA_DM_SEC *)&enable_event);
- return;
- }
+ /* if already in use, return an error */
+ if (bta_dm_cb.is_bta_dm_active == true) {
+ APPL_TRACE_WARNING("%s Device already started by another application",
+ __func__);
+ memset(&enable_event, 0, sizeof(tBTA_DM_ENABLE));
+ enable_event.status = BTA_FAILURE;
+ if (p_data->enable.p_sec_cback != NULL)
+ p_data->enable.p_sec_cback(BTA_DM_ENABLE_EVT,
+ (tBTA_DM_SEC*)&enable_event);
+ return;
+ }
- /* first, register our callback to SYS HW manager */
- bta_sys_hw_register( BTA_SYS_HW_BLUETOOTH, bta_dm_sys_hw_cback );
+ /* first, register our callback to SYS HW manager */
+ bta_sys_hw_register(BTA_SYS_HW_BLUETOOTH, bta_dm_sys_hw_cback);
- /* make sure security callback is saved - if no callback, do not erase the previous one,
- it could be an error recovery mechanism */
- if( p_data->enable.p_sec_cback != NULL )
+ /* make sure security callback is saved - if no callback, do not erase the
+ previous one,
+ it could be an error recovery mechanism */
+ if (p_data->enable.p_sec_cback != NULL)
bta_dm_cb.p_sec_cback = p_data->enable.p_sec_cback;
- /* notify BTA DM is now active */
- bta_dm_cb.is_bta_dm_active = true;
+ /* notify BTA DM is now active */
+ bta_dm_cb.is_bta_dm_active = true;
- /* send a message to BTA SYS */
- tBTA_SYS_HW_MSG *sys_enable_event =
- (tBTA_SYS_HW_MSG *)osi_malloc(sizeof(tBTA_SYS_HW_MSG));
- sys_enable_event->hdr.event = BTA_SYS_API_ENABLE_EVT;
- sys_enable_event->hw_module = BTA_SYS_HW_BLUETOOTH;
+ /* send a message to BTA SYS */
+ tBTA_SYS_HW_MSG* sys_enable_event =
+ (tBTA_SYS_HW_MSG*)osi_malloc(sizeof(tBTA_SYS_HW_MSG));
+ sys_enable_event->hdr.event = BTA_SYS_API_ENABLE_EVT;
+ sys_enable_event->hw_module = BTA_SYS_HW_BLUETOOTH;
- bta_sys_sendmsg(sys_enable_event);
+ bta_sys_sendmsg(sys_enable_event);
}
/*******************************************************************************
@@ -304,16 +317,15 @@
* Returns void
*
******************************************************************************/
-void bta_dm_init_cb(void)
-{
- memset(&bta_dm_cb, 0, sizeof(bta_dm_cb));
- bta_dm_cb.disable_timer = alarm_new("bta_dm.disable_timer");
- bta_dm_cb.switch_delay_timer = alarm_new("bta_dm.switch_delay_timer");
- for (size_t i = 0; i < BTA_DM_NUM_PM_TIMER; i++) {
- for (size_t j = 0; j < BTA_DM_PM_MODE_TIMER_MAX; j++) {
- bta_dm_cb.pm_timer[i].timer[j] = alarm_new("bta_dm.pm_timer");
- }
+void bta_dm_init_cb(void) {
+ memset(&bta_dm_cb, 0, sizeof(bta_dm_cb));
+ bta_dm_cb.disable_timer = alarm_new("bta_dm.disable_timer");
+ bta_dm_cb.switch_delay_timer = alarm_new("bta_dm.switch_delay_timer");
+ for (size_t i = 0; i < BTA_DM_NUM_PM_TIMER; i++) {
+ for (size_t j = 0; j < BTA_DM_PM_MODE_TIMER_MAX; j++) {
+ bta_dm_cb.pm_timer[i].timer[j] = alarm_new("bta_dm.pm_timer");
}
+ }
}
/*******************************************************************************
@@ -326,20 +338,19 @@
* Returns void
*
******************************************************************************/
-void bta_dm_deinit_cb(void)
-{
- /*
- * TODO: Should alarm_free() the bta_dm_cb timers during graceful
- * shutdown.
- */
- alarm_free(bta_dm_cb.disable_timer);
- alarm_free(bta_dm_cb.switch_delay_timer);
- for (size_t i = 0; i < BTA_DM_NUM_PM_TIMER; i++) {
- for (size_t j = 0; j < BTA_DM_PM_MODE_TIMER_MAX; j++) {
- alarm_free(bta_dm_cb.pm_timer[i].timer[j]);
- }
+void bta_dm_deinit_cb(void) {
+ /*
+ * TODO: Should alarm_free() the bta_dm_cb timers during graceful
+ * shutdown.
+ */
+ alarm_free(bta_dm_cb.disable_timer);
+ alarm_free(bta_dm_cb.switch_delay_timer);
+ for (size_t i = 0; i < BTA_DM_NUM_PM_TIMER; i++) {
+ for (size_t j = 0; j < BTA_DM_PM_MODE_TIMER_MAX; j++) {
+ alarm_free(bta_dm_cb.pm_timer[i].timer[j]);
}
- memset(&bta_dm_cb, 0, sizeof(bta_dm_cb));
+ }
+ memset(&bta_dm_cb, 0, sizeof(bta_dm_cb));
}
/*******************************************************************************
@@ -352,130 +363,130 @@
* Returns void
*
******************************************************************************/
-static void bta_dm_sys_hw_cback( tBTA_SYS_HW_EVT status )
-{
- DEV_CLASS dev_class;
- tBTA_DM_SEC_CBACK *temp_cback;
+static void bta_dm_sys_hw_cback(tBTA_SYS_HW_EVT status) {
+ DEV_CLASS dev_class;
+ tBTA_DM_SEC_CBACK* temp_cback;
#if (BLE_INCLUDED == TRUE)
- uint8_t key_mask = 0;
- BT_OCTET16 er;
- tBTA_BLE_LOCAL_ID_KEYS id_key;
+ uint8_t key_mask = 0;
+ BT_OCTET16 er;
+ tBTA_BLE_LOCAL_ID_KEYS id_key;
#endif
- APPL_TRACE_DEBUG("%s with event: %i", __func__, status);
+ APPL_TRACE_DEBUG("%s with event: %i", __func__, status);
- /* On H/W error evt, report to the registered DM application callback */
- if (status == BTA_SYS_HW_ERROR_EVT) {
- if( bta_dm_cb.p_sec_cback != NULL )
- bta_dm_cb.p_sec_cback(BTA_DM_HW_ERROR_EVT, NULL);
- return;
- }
+ /* On H/W error evt, report to the registered DM application callback */
+ if (status == BTA_SYS_HW_ERROR_EVT) {
+ if (bta_dm_cb.p_sec_cback != NULL)
+ bta_dm_cb.p_sec_cback(BTA_DM_HW_ERROR_EVT, NULL);
+ return;
+ }
- if( status == BTA_SYS_HW_OFF_EVT )
- {
- if( bta_dm_cb.p_sec_cback != NULL )
- bta_dm_cb.p_sec_cback(BTA_DM_DISABLE_EVT, NULL);
+ if (status == BTA_SYS_HW_OFF_EVT) {
+ if (bta_dm_cb.p_sec_cback != NULL)
+ bta_dm_cb.p_sec_cback(BTA_DM_DISABLE_EVT, NULL);
- /* reinitialize the control block */
- bta_dm_deinit_cb();
+ /* reinitialize the control block */
+ bta_dm_deinit_cb();
- /* hw is ready, go on with BTA DM initialization */
- alarm_free(bta_dm_search_cb.search_timer);
- alarm_free(bta_dm_search_cb.gatt_close_timer);
- memset(&bta_dm_search_cb, 0, sizeof(bta_dm_search_cb));
+ /* hw is ready, go on with BTA DM initialization */
+ alarm_free(bta_dm_search_cb.search_timer);
+ alarm_free(bta_dm_search_cb.gatt_close_timer);
+ memset(&bta_dm_search_cb, 0, sizeof(bta_dm_search_cb));
- /* unregister from SYS */
- bta_sys_hw_unregister( BTA_SYS_HW_BLUETOOTH );
- /* notify BTA DM is now unactive */
- bta_dm_cb.is_bta_dm_active = false;
- }
- else
- if( status == BTA_SYS_HW_ON_EVT )
- {
- /* FIXME: We should not unregister as the SYS shall invoke this callback on a H/W error.
- * We need to revisit when this platform has more than one BLuetooth H/W chip */
- //bta_sys_hw_unregister( BTA_SYS_HW_BLUETOOTH);
+ /* unregister from SYS */
+ bta_sys_hw_unregister(BTA_SYS_HW_BLUETOOTH);
+ /* notify BTA DM is now unactive */
+ bta_dm_cb.is_bta_dm_active = false;
+ } else if (status == BTA_SYS_HW_ON_EVT) {
+ /* FIXME: We should not unregister as the SYS shall invoke this callback on
+ * a H/W error.
+ * We need to revisit when this platform has more than one BLuetooth H/W chip
+ */
+ // bta_sys_hw_unregister( BTA_SYS_HW_BLUETOOTH);
- /* save security callback */
- temp_cback = bta_dm_cb.p_sec_cback;
- /* make sure the control block is properly initialized */
- bta_dm_init_cb();
- /* and retrieve the callback */
- bta_dm_cb.p_sec_cback=temp_cback;
- bta_dm_cb.is_bta_dm_active = true;
+ /* save security callback */
+ temp_cback = bta_dm_cb.p_sec_cback;
+ /* make sure the control block is properly initialized */
+ bta_dm_init_cb();
+ /* and retrieve the callback */
+ bta_dm_cb.p_sec_cback = temp_cback;
+ bta_dm_cb.is_bta_dm_active = true;
- /* hw is ready, go on with BTA DM initialization */
- alarm_free(bta_dm_search_cb.search_timer);
- alarm_free(bta_dm_search_cb.gatt_close_timer);
- memset(&bta_dm_search_cb, 0, sizeof(bta_dm_search_cb));
- /*
- * TODO: Should alarm_free() the bta_dm_search_cb timers during
- * graceful shutdown.
- */
- bta_dm_search_cb.search_timer =
- alarm_new("bta_dm_search.search_timer");
- bta_dm_search_cb.gatt_close_timer =
- alarm_new("bta_dm_search.gatt_close_timer");
+ /* hw is ready, go on with BTA DM initialization */
+ alarm_free(bta_dm_search_cb.search_timer);
+ alarm_free(bta_dm_search_cb.gatt_close_timer);
+ memset(&bta_dm_search_cb, 0, sizeof(bta_dm_search_cb));
+ /*
+ * TODO: Should alarm_free() the bta_dm_search_cb timers during
+ * graceful shutdown.
+ */
+ bta_dm_search_cb.search_timer = alarm_new("bta_dm_search.search_timer");
+ bta_dm_search_cb.gatt_close_timer =
+ alarm_new("bta_dm_search.gatt_close_timer");
- memset(&bta_dm_conn_srvcs, 0, sizeof(bta_dm_conn_srvcs));
- memset(&bta_dm_di_cb, 0, sizeof(tBTA_DM_DI_CB));
+ memset(&bta_dm_conn_srvcs, 0, sizeof(bta_dm_conn_srvcs));
+ memset(&bta_dm_di_cb, 0, sizeof(tBTA_DM_DI_CB));
- memcpy(dev_class, p_bta_dm_cfg->dev_class, sizeof(dev_class));
- BTM_SetDeviceClass (dev_class);
+ memcpy(dev_class, p_bta_dm_cfg->dev_class, sizeof(dev_class));
+ BTM_SetDeviceClass(dev_class);
#if (BLE_INCLUDED == TRUE)
- /* load BLE local information: ID keys, ER if available */
- bta_dm_co_ble_load_local_keys(&key_mask, er, &id_key);
+ /* load BLE local information: ID keys, ER if available */
+ bta_dm_co_ble_load_local_keys(&key_mask, er, &id_key);
- if (key_mask & BTA_BLE_LOCAL_KEY_TYPE_ER)
- {
- BTM_BleLoadLocalKeys(BTA_BLE_LOCAL_KEY_TYPE_ER, (tBTM_BLE_LOCAL_KEYS *)&er);
- }
- if (key_mask & BTA_BLE_LOCAL_KEY_TYPE_ID)
- {
- BTM_BleLoadLocalKeys(BTA_BLE_LOCAL_KEY_TYPE_ID, (tBTM_BLE_LOCAL_KEYS *)&id_key);
- }
+ if (key_mask & BTA_BLE_LOCAL_KEY_TYPE_ER) {
+ BTM_BleLoadLocalKeys(BTA_BLE_LOCAL_KEY_TYPE_ER,
+ (tBTM_BLE_LOCAL_KEYS*)&er);
+ }
+ if (key_mask & BTA_BLE_LOCAL_KEY_TYPE_ID) {
+ BTM_BleLoadLocalKeys(BTA_BLE_LOCAL_KEY_TYPE_ID,
+ (tBTM_BLE_LOCAL_KEYS*)&id_key);
+ }
#if (BTA_GATT_INCLUDED == TRUE)
- bta_dm_search_cb.conn_id = BTA_GATT_INVALID_CONN_ID;
+ bta_dm_search_cb.conn_id = BTA_GATT_INVALID_CONN_ID;
#endif // (defined(BTA_GATT_INCLUDED) && BTA_GATT_INCLUDED)
#endif // (defined(BLE_INCLUDED) && (BLE_INCLUDED == true))
- BTM_SecRegister((tBTM_APPL_INFO*)&bta_security);
- BTM_SetDefaultLinkSuperTout(p_bta_dm_cfg->link_timeout);
- BTM_WritePageTimeout(p_bta_dm_cfg->page_timeout);
- bta_dm_cb.cur_policy = p_bta_dm_cfg->policy_settings;
- BTM_SetDefaultLinkPolicy(bta_dm_cb.cur_policy);
- BTM_RegBusyLevelNotif (bta_dm_bl_change_cback, NULL, BTM_BL_UPDATE_MASK|BTM_BL_ROLE_CHG_MASK);
+ BTM_SecRegister((tBTM_APPL_INFO*)&bta_security);
+ BTM_SetDefaultLinkSuperTout(p_bta_dm_cfg->link_timeout);
+ BTM_WritePageTimeout(p_bta_dm_cfg->page_timeout);
+ bta_dm_cb.cur_policy = p_bta_dm_cfg->policy_settings;
+ BTM_SetDefaultLinkPolicy(bta_dm_cb.cur_policy);
+ BTM_RegBusyLevelNotif(bta_dm_bl_change_cback, NULL,
+ BTM_BL_UPDATE_MASK | BTM_BL_ROLE_CHG_MASK);
#if (BLE_VND_INCLUDED == TRUE)
- BTM_BleReadControllerFeatures (bta_dm_ctrl_features_rd_cmpl_cback);
+ BTM_BleReadControllerFeatures(bta_dm_ctrl_features_rd_cmpl_cback);
#endif
- /* Earlier, we used to invoke BTM_ReadLocalAddr which was just copying the bd_addr
- from the control block and invoking the callback which was sending the DM_ENABLE_EVT.
- But then we have a few HCI commands being invoked above which were still in progress
- when the ENABLE_EVT was sent. So modified this to fetch the local name which forces
- the DM_ENABLE_EVT to be sent only after all the init steps are complete */
- BTM_ReadLocalDeviceNameFromController((tBTM_CMPL_CB *)bta_dm_local_name_cback);
+ /* Earlier, we used to invoke BTM_ReadLocalAddr which was just copying the
+ bd_addr
+ from the control block and invoking the callback which was sending the
+ DM_ENABLE_EVT.
+ But then we have a few HCI commands being invoked above which were still
+ in progress
+ when the ENABLE_EVT was sent. So modified this to fetch the local name
+ which forces
+ the DM_ENABLE_EVT to be sent only after all the init steps are complete
+ */
+ BTM_ReadLocalDeviceNameFromController(
+ (tBTM_CMPL_CB*)bta_dm_local_name_cback);
- bta_sys_rm_register((tBTA_SYS_CONN_CBACK*)bta_dm_rm_cback);
+ bta_sys_rm_register((tBTA_SYS_CONN_CBACK*)bta_dm_rm_cback);
- /* initialize bluetooth low power manager */
- bta_dm_init_pm();
+ /* initialize bluetooth low power manager */
+ bta_dm_init_pm();
- bta_sys_policy_register((tBTA_SYS_CONN_CBACK*)bta_dm_policy_cback);
+ bta_sys_policy_register((tBTA_SYS_CONN_CBACK*)bta_dm_policy_cback);
#if (BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE)
- bta_dm_gattc_register();
+ bta_dm_gattc_register();
#endif
- }
- else
- APPL_TRACE_DEBUG(" --- ignored event");
-
+ } else
+ APPL_TRACE_DEBUG(" --- ignored event");
}
-
/*******************************************************************************
*
* Function bta_dm_disable
@@ -486,47 +497,45 @@
* Returns void
*
******************************************************************************/
-void bta_dm_disable (UNUSED_ATTR tBTA_DM_MSG *p_data)
-{
- /* Set l2cap idle timeout to 0 (so BTE immediately disconnects ACL link after last channel is closed) */
- L2CA_SetIdleTimeoutByBdAddr((uint8_t *)BT_BD_ANY, 0, BT_TRANSPORT_BR_EDR);
- L2CA_SetIdleTimeoutByBdAddr((uint8_t *)BT_BD_ANY, 0, BT_TRANSPORT_LE);
+void bta_dm_disable(UNUSED_ATTR tBTA_DM_MSG* p_data) {
+ /* Set l2cap idle timeout to 0 (so BTE immediately disconnects ACL link after
+ * last channel is closed) */
+ L2CA_SetIdleTimeoutByBdAddr((uint8_t*)BT_BD_ANY, 0, BT_TRANSPORT_BR_EDR);
+ L2CA_SetIdleTimeoutByBdAddr((uint8_t*)BT_BD_ANY, 0, BT_TRANSPORT_LE);
- /* disable all active subsystems */
- bta_sys_disable(BTA_SYS_HW_BLUETOOTH);
+ /* disable all active subsystems */
+ bta_sys_disable(BTA_SYS_HW_BLUETOOTH);
- BTM_SetDiscoverability(BTM_NON_DISCOVERABLE, 0, 0);
- BTM_SetConnectability(BTM_NON_CONNECTABLE, 0, 0);
+ BTM_SetDiscoverability(BTM_NON_DISCOVERABLE, 0, 0);
+ BTM_SetConnectability(BTM_NON_CONNECTABLE, 0, 0);
- bta_dm_disable_pm();
- bta_dm_disable_search_and_disc();
- bta_dm_cb.disabling = true;
+ bta_dm_disable_pm();
+ bta_dm_disable_search_and_disc();
+ bta_dm_cb.disabling = true;
#if (BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE)
- BTM_BleClearBgConnDev();
+ BTM_BleClearBgConnDev();
#endif
- if(BTM_GetNumAclLinks()==0)
- {
+ if (BTM_GetNumAclLinks() == 0) {
#if (BTA_DISABLE_DELAY > 0)
- /* If BTA_DISABLE_DELAY is defined and greater than zero, then delay the shutdown by
- * BTA_DISABLE_DELAY milliseconds
- */
- APPL_TRACE_WARNING("%s BTA_DISABLE_DELAY set to %d ms",
- __func__, BTA_DISABLE_DELAY);
- alarm_set_on_queue(bta_dm_cb.disable_timer, BTA_DISABLE_DELAY,
- bta_dm_disable_conn_down_timer_cback, NULL,
- btu_bta_alarm_queue);
+ /* If BTA_DISABLE_DELAY is defined and greater than zero, then delay the
+ * shutdown by
+ * BTA_DISABLE_DELAY milliseconds
+ */
+ APPL_TRACE_WARNING("%s BTA_DISABLE_DELAY set to %d ms", __func__,
+ BTA_DISABLE_DELAY);
+ alarm_set_on_queue(bta_dm_cb.disable_timer, BTA_DISABLE_DELAY,
+ bta_dm_disable_conn_down_timer_cback, NULL,
+ btu_bta_alarm_queue);
#else
- bta_dm_disable_conn_down_timer_cback(NULL);
+ bta_dm_disable_conn_down_timer_cback(NULL);
#endif
- }
- else
- {
- alarm_set_on_queue(bta_dm_cb.disable_timer, BTA_DM_DISABLE_TIMER_MS,
- bta_dm_disable_timer_cback, UINT_TO_PTR(0),
- btu_bta_alarm_queue);
- }
+ } else {
+ alarm_set_on_queue(bta_dm_cb.disable_timer, BTA_DM_DISABLE_TIMER_MS,
+ bta_dm_disable_timer_cback, UINT_TO_PTR(0),
+ btu_bta_alarm_queue);
+ }
}
/*******************************************************************************
@@ -541,48 +550,40 @@
* Returns void
*
******************************************************************************/
-static void bta_dm_disable_timer_cback(void *data)
-{
- uint8_t i;
- tBT_TRANSPORT transport = BT_TRANSPORT_BR_EDR;
- bool trigger_disc = false;
- uint32_t param = PTR_TO_UINT(data);
+static void bta_dm_disable_timer_cback(void* data) {
+ uint8_t i;
+ tBT_TRANSPORT transport = BT_TRANSPORT_BR_EDR;
+ bool trigger_disc = false;
+ uint32_t param = PTR_TO_UINT(data);
- APPL_TRACE_EVENT("%s trial %u", __func__, param);
+ APPL_TRACE_EVENT("%s trial %u", __func__, param);
- if (BTM_GetNumAclLinks() && (param == 0))
- {
- for(i=0; i<bta_dm_cb.device_list.count; i++)
- {
+ if (BTM_GetNumAclLinks() && (param == 0)) {
+ for (i = 0; i < bta_dm_cb.device_list.count; i++) {
#if (BLE_INCLUDED == TRUE)
- transport = bta_dm_cb.device_list.peer_device[i].transport;
+ transport = bta_dm_cb.device_list.peer_device[i].transport;
#endif
- btm_remove_acl(bta_dm_cb.device_list.peer_device[i].peer_bdaddr, transport);
- trigger_disc = true;
- }
-
- /* Retrigger disable timer in case ACL disconnect failed, DISABLE_EVT still need
- to be sent out to avoid jave layer disable timeout */
- if (trigger_disc)
- {
- alarm_set_on_queue(bta_dm_cb.disable_timer,
- BTA_DM_DISABLE_TIMER_RETRIAL_MS,
- bta_dm_disable_timer_cback, UINT_TO_PTR(1),
- btu_bta_alarm_queue);
- }
+ btm_remove_acl(bta_dm_cb.device_list.peer_device[i].peer_bdaddr,
+ transport);
+ trigger_disc = true;
}
- else
- {
- bta_dm_cb.disabling = false;
- bta_sys_remove_uuid(UUID_SERVCLASS_PNP_INFORMATION);
- bta_dm_cb.p_sec_cback(BTA_DM_DISABLE_EVT, NULL);
+ /* Retrigger disable timer in case ACL disconnect failed, DISABLE_EVT still
+ need
+ to be sent out to avoid jave layer disable timeout */
+ if (trigger_disc) {
+ alarm_set_on_queue(
+ bta_dm_cb.disable_timer, BTA_DM_DISABLE_TIMER_RETRIAL_MS,
+ bta_dm_disable_timer_cback, UINT_TO_PTR(1), btu_bta_alarm_queue);
}
+ } else {
+ bta_dm_cb.disabling = false;
+
+ bta_sys_remove_uuid(UUID_SERVCLASS_PNP_INFORMATION);
+ bta_dm_cb.p_sec_cback(BTA_DM_DISABLE_EVT, NULL);
+ }
}
-
-
-
/*******************************************************************************
*
* Function bta_dm_set_dev_name
@@ -593,11 +594,9 @@
* Returns void
*
******************************************************************************/
-void bta_dm_set_dev_name (tBTA_DM_MSG *p_data)
-{
-
- BTM_SetLocalDeviceName((char*)p_data->set_name.name);
- bta_dm_set_eir ((char*)p_data->set_name.name);
+void bta_dm_set_dev_name(tBTA_DM_MSG* p_data) {
+ BTM_SetLocalDeviceName((char*)p_data->set_name.name);
+ bta_dm_set_eir((char*)p_data->set_name.name);
}
/*******************************************************************************
@@ -610,75 +609,71 @@
* Returns void
*
******************************************************************************/
-void bta_dm_set_visibility(tBTA_DM_MSG *p_data)
-{
- uint16_t window, interval;
+void bta_dm_set_visibility(tBTA_DM_MSG* p_data) {
+ uint16_t window, interval;
#if (BTA_GATT_INCLUDED == TRUE)
- uint16_t le_disc_mode = BTM_BleReadDiscoverability();
- uint16_t le_conn_mode = BTM_BleReadConnectability();
+ uint16_t le_disc_mode = BTM_BleReadDiscoverability();
+ uint16_t le_conn_mode = BTM_BleReadConnectability();
#endif // BTA_GATT_INCLUDED
- uint16_t disc_mode = BTM_ReadDiscoverability(&window, &interval);
- uint16_t conn_mode = BTM_ReadConnectability(&window, &interval);
+ uint16_t disc_mode = BTM_ReadDiscoverability(&window, &interval);
+ uint16_t conn_mode = BTM_ReadConnectability(&window, &interval);
- /* set modes for Discoverability and connectability if not ignore */
- if (p_data->set_visibility.disc_mode != (BTA_DM_IGNORE | BTA_DM_LE_IGNORE))
- {
+ /* set modes for Discoverability and connectability if not ignore */
+ if (p_data->set_visibility.disc_mode != (BTA_DM_IGNORE | BTA_DM_LE_IGNORE)) {
#if (BTA_GATT_INCLUDED == TRUE)
- if ((p_data->set_visibility.disc_mode & BTA_DM_LE_IGNORE) == BTA_DM_LE_IGNORE)
- p_data->set_visibility.disc_mode =
- ((p_data->set_visibility.disc_mode & ~BTA_DM_LE_IGNORE) | le_disc_mode);
+ if ((p_data->set_visibility.disc_mode & BTA_DM_LE_IGNORE) ==
+ BTA_DM_LE_IGNORE)
+ p_data->set_visibility.disc_mode =
+ ((p_data->set_visibility.disc_mode & ~BTA_DM_LE_IGNORE) |
+ le_disc_mode);
#endif // BTA_GATT_INCLUDED
- if ((p_data->set_visibility.disc_mode & BTA_DM_IGNORE) == BTA_DM_IGNORE)
- p_data->set_visibility.disc_mode =
- ((p_data->set_visibility.disc_mode & ~BTA_DM_IGNORE) | disc_mode);
+ if ((p_data->set_visibility.disc_mode & BTA_DM_IGNORE) == BTA_DM_IGNORE)
+ p_data->set_visibility.disc_mode =
+ ((p_data->set_visibility.disc_mode & ~BTA_DM_IGNORE) | disc_mode);
- BTM_SetDiscoverability(p_data->set_visibility.disc_mode,
- bta_dm_cb.inquiry_scan_window,
- bta_dm_cb.inquiry_scan_interval);
- }
+ BTM_SetDiscoverability(p_data->set_visibility.disc_mode,
+ bta_dm_cb.inquiry_scan_window,
+ bta_dm_cb.inquiry_scan_interval);
+ }
- if (p_data->set_visibility.conn_mode != (BTA_DM_IGNORE | BTA_DM_LE_IGNORE))
- {
+ if (p_data->set_visibility.conn_mode != (BTA_DM_IGNORE | BTA_DM_LE_IGNORE)) {
#if (BTA_GATT_INCLUDED == TRUE)
- if ((p_data->set_visibility.conn_mode & BTA_DM_LE_IGNORE) == BTA_DM_LE_IGNORE)
- p_data->set_visibility.conn_mode =
- ((p_data->set_visibility.conn_mode & ~BTA_DM_LE_IGNORE) | le_conn_mode);
+ if ((p_data->set_visibility.conn_mode & BTA_DM_LE_IGNORE) ==
+ BTA_DM_LE_IGNORE)
+ p_data->set_visibility.conn_mode =
+ ((p_data->set_visibility.conn_mode & ~BTA_DM_LE_IGNORE) |
+ le_conn_mode);
#endif // BTA_GATT_INCLUDED
- if ((p_data->set_visibility.conn_mode & BTA_DM_IGNORE) == BTA_DM_IGNORE)
- p_data->set_visibility.conn_mode =
- ((p_data->set_visibility.conn_mode & ~BTA_DM_IGNORE) | conn_mode);
+ if ((p_data->set_visibility.conn_mode & BTA_DM_IGNORE) == BTA_DM_IGNORE)
+ p_data->set_visibility.conn_mode =
+ ((p_data->set_visibility.conn_mode & ~BTA_DM_IGNORE) | conn_mode);
- BTM_SetConnectability(p_data->set_visibility.conn_mode,
- bta_dm_cb.page_scan_window,
- bta_dm_cb.page_scan_interval);
- }
+ BTM_SetConnectability(p_data->set_visibility.conn_mode,
+ bta_dm_cb.page_scan_window,
+ bta_dm_cb.page_scan_interval);
+ }
- /* Send False or True if not ignore */
- if (p_data->set_visibility.pair_mode != BTA_DM_IGNORE )
- {
+ /* Send False or True if not ignore */
+ if (p_data->set_visibility.pair_mode != BTA_DM_IGNORE) {
+ if (p_data->set_visibility.pair_mode == BTA_DM_NON_PAIRABLE)
+ bta_dm_cb.disable_pair_mode = true;
+ else
+ bta_dm_cb.disable_pair_mode = false;
+ }
- if (p_data->set_visibility.pair_mode == BTA_DM_NON_PAIRABLE)
- bta_dm_cb.disable_pair_mode = true;
- else
- bta_dm_cb.disable_pair_mode = false;
+ /* Send False or True if not ignore */
+ if (p_data->set_visibility.conn_paired_only != BTA_DM_IGNORE) {
+ if (p_data->set_visibility.conn_paired_only == BTA_DM_CONN_ALL)
+ bta_dm_cb.conn_paired_only = false;
+ else
+ bta_dm_cb.conn_paired_only = true;
+ }
- }
-
- /* Send False or True if not ignore */
- if (p_data->set_visibility.conn_paired_only != BTA_DM_IGNORE)
- {
-
- if (p_data->set_visibility.conn_paired_only == BTA_DM_CONN_ALL)
- bta_dm_cb.conn_paired_only = false;
- else
- bta_dm_cb.conn_paired_only = true;
-
- }
-
- /* Change mode if either mode is not ignore */
- if (p_data->set_visibility.pair_mode != BTA_DM_IGNORE || p_data->set_visibility.conn_paired_only != BTA_DM_IGNORE)
- BTM_SetPairableMode((bool)(!(bta_dm_cb.disable_pair_mode)),bta_dm_cb.conn_paired_only);
-
+ /* Change mode if either mode is not ignore */
+ if (p_data->set_visibility.pair_mode != BTA_DM_IGNORE ||
+ p_data->set_visibility.conn_paired_only != BTA_DM_IGNORE)
+ BTM_SetPairableMode((bool)(!(bta_dm_cb.disable_pair_mode)),
+ bta_dm_cb.conn_paired_only);
}
/*******************************************************************************
@@ -688,28 +683,26 @@
* Description Removes device, Disconnects ACL link if required.
***
******************************************************************************/
-void bta_dm_process_remove_device(BD_ADDR bd_addr)
-{
+void bta_dm_process_remove_device(BD_ADDR bd_addr) {
#if (BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE)
- /* need to remove all pending background connection before unpair */
- BTA_GATTC_CancelOpen(0, bd_addr, false);
+ /* need to remove all pending background connection before unpair */
+ BTA_GATTC_CancelOpen(0, bd_addr, false);
#endif
- BTM_SecDeleteDevice(bd_addr);
+ BTM_SecDeleteDevice(bd_addr);
#if (BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE)
- /* remove all cached GATT information */
- BTA_GATTC_Refresh(bd_addr);
+ /* remove all cached GATT information */
+ BTA_GATTC_Refresh(bd_addr);
#endif
- if (bta_dm_cb.p_sec_cback)
- {
- tBTA_DM_SEC sec_event;
- bdcpy(sec_event.link_down.bd_addr, bd_addr);
- /* No connection, set status to success (acl disc code not valid) */
- sec_event.link_down.status = HCI_SUCCESS;
- bta_dm_cb.p_sec_cback(BTA_DM_DEV_UNPAIRED_EVT, &sec_event);
- }
+ if (bta_dm_cb.p_sec_cback) {
+ tBTA_DM_SEC sec_event;
+ bdcpy(sec_event.link_down.bd_addr, bd_addr);
+ /* No connection, set status to success (acl disc code not valid) */
+ sec_event.link_down.status = HCI_SUCCESS;
+ bta_dm_cb.p_sec_cback(BTA_DM_DEV_UNPAIRED_EVT, &sec_event);
+ }
}
/*******************************************************************************
@@ -719,90 +712,87 @@
* Description Removes device, disconnects ACL link if required.
***
******************************************************************************/
-void bta_dm_remove_device(tBTA_DM_MSG *p_data)
-{
- tBTA_DM_API_REMOVE_DEVICE *p_dev = &p_data->remove_dev;
- bool continue_delete_other_dev = false;
- if (p_dev == NULL)
- return;
+void bta_dm_remove_device(tBTA_DM_MSG* p_data) {
+ tBTA_DM_API_REMOVE_DEVICE* p_dev = &p_data->remove_dev;
+ bool continue_delete_other_dev = false;
+ if (p_dev == NULL) return;
- BD_ADDR other_address;
- bdcpy(other_address, p_dev->bd_addr);
+ BD_ADDR other_address;
+ bdcpy(other_address, p_dev->bd_addr);
- /* If ACL exists for the device in the remove_bond message*/
- bool continue_delete_dev = false;
- uint8_t other_transport = BT_TRANSPORT_INVALID;
+ /* If ACL exists for the device in the remove_bond message*/
+ bool continue_delete_dev = false;
+ uint8_t other_transport = BT_TRANSPORT_INVALID;
- if (BTM_IsAclConnectionUp(p_dev->bd_addr, BT_TRANSPORT_LE) ||
- BTM_IsAclConnectionUp(p_dev->bd_addr, BT_TRANSPORT_BR_EDR))
- {
- APPL_TRACE_DEBUG("%s: ACL Up count %d", __func__, bta_dm_cb.device_list.count);
- continue_delete_dev = false;
+ if (BTM_IsAclConnectionUp(p_dev->bd_addr, BT_TRANSPORT_LE) ||
+ BTM_IsAclConnectionUp(p_dev->bd_addr, BT_TRANSPORT_BR_EDR)) {
+ APPL_TRACE_DEBUG("%s: ACL Up count %d", __func__,
+ bta_dm_cb.device_list.count);
+ continue_delete_dev = false;
- /* Take the link down first, and mark the device for removal when disconnected */
- for(int i=0; i < bta_dm_cb.device_list.count; i++)
- {
- if (!bdcmp(bta_dm_cb.device_list.peer_device[i].peer_bdaddr, p_dev->bd_addr))
- {
- uint8_t transport = BT_TRANSPORT_BR_EDR;
+ /* Take the link down first, and mark the device for removal when
+ * disconnected */
+ for (int i = 0; i < bta_dm_cb.device_list.count; i++) {
+ if (!bdcmp(bta_dm_cb.device_list.peer_device[i].peer_bdaddr,
+ p_dev->bd_addr)) {
+ uint8_t transport = BT_TRANSPORT_BR_EDR;
#if (BTA_GATT_INCLUDED == TRUE)
- transport = bta_dm_cb.device_list.peer_device[i].transport;
+ transport = bta_dm_cb.device_list.peer_device[i].transport;
#endif // BTA_GATT_INCLUDED
- bta_dm_cb.device_list.peer_device[i].conn_state = BTA_DM_UNPAIRING;
- btm_remove_acl(p_dev->bd_addr, transport);
+ bta_dm_cb.device_list.peer_device[i].conn_state = BTA_DM_UNPAIRING;
+ btm_remove_acl(p_dev->bd_addr, transport);
#if (BTA_GATT_INCLUDED == TRUE)
- APPL_TRACE_DEBUG("%s:transport = %d", __func__,
- bta_dm_cb.device_list.peer_device[i].transport);
+ APPL_TRACE_DEBUG("%s:transport = %d", __func__,
+ bta_dm_cb.device_list.peer_device[i].transport);
- /* save the other transport to check if device is connected on other_transport */
- if(bta_dm_cb.device_list.peer_device[i].transport == BT_TRANSPORT_LE)
- other_transport = BT_TRANSPORT_BR_EDR;
- else
- other_transport = BT_TRANSPORT_LE;
+ /* save the other transport to check if device is connected on
+ * other_transport */
+ if (bta_dm_cb.device_list.peer_device[i].transport == BT_TRANSPORT_LE)
+ other_transport = BT_TRANSPORT_BR_EDR;
+ else
+ other_transport = BT_TRANSPORT_LE;
#endif // BTA_GATT_INCLUDED
- break;
- }
- }
+ break;
+ }
}
- else
- {
- continue_delete_dev = true;
- }
+ } else {
+ continue_delete_dev = true;
+ }
#if (BTA_GATT_INCLUDED == TRUE)
- // If it is DUMO device and device is paired as different address, unpair that device
- // if different address
- if ((other_transport && (BTM_ReadConnectedTransportAddress(other_address, other_transport))) ||
- (!other_transport && (BTM_ReadConnectedTransportAddress(other_address, BT_TRANSPORT_BR_EDR) ||
- BTM_ReadConnectedTransportAddress(other_address, BT_TRANSPORT_LE))))
- {
- continue_delete_other_dev = false;
- /* Take the link down first, and mark the device for removal when disconnected */
- for(int i=0; i < bta_dm_cb.device_list.count; i++)
- {
- if (!bdcmp(bta_dm_cb.device_list.peer_device[i].peer_bdaddr, other_address))
- {
- bta_dm_cb.device_list.peer_device[i].conn_state = BTA_DM_UNPAIRING;
- btm_remove_acl(other_address,bta_dm_cb.device_list.peer_device[i].transport);
- break;
- }
- }
+ // If it is DUMO device and device is paired as different address, unpair that
+ // device
+ // if different address
+ if ((other_transport &&
+ (BTM_ReadConnectedTransportAddress(other_address, other_transport))) ||
+ (!other_transport &&
+ (BTM_ReadConnectedTransportAddress(other_address, BT_TRANSPORT_BR_EDR) ||
+ BTM_ReadConnectedTransportAddress(other_address, BT_TRANSPORT_LE)))) {
+ continue_delete_other_dev = false;
+ /* Take the link down first, and mark the device for removal when
+ * disconnected */
+ for (int i = 0; i < bta_dm_cb.device_list.count; i++) {
+ if (!bdcmp(bta_dm_cb.device_list.peer_device[i].peer_bdaddr,
+ other_address)) {
+ bta_dm_cb.device_list.peer_device[i].conn_state = BTA_DM_UNPAIRING;
+ btm_remove_acl(other_address,
+ bta_dm_cb.device_list.peer_device[i].transport);
+ break;
+ }
}
- else
- {
- APPL_TRACE_DEBUG("%s: continue to delete the other dev ", __func__);
- continue_delete_other_dev = true;
- }
-#endif // BTA_GATT_INCLUDED
- /* Delete the device mentioned in the msg */
- if (continue_delete_dev)
- bta_dm_process_remove_device(p_dev->bd_addr);
+ } else {
+ APPL_TRACE_DEBUG("%s: continue to delete the other dev ", __func__);
+ continue_delete_other_dev = true;
+ }
+#endif // BTA_GATT_INCLUDED
+ /* Delete the device mentioned in the msg */
+ if (continue_delete_dev) bta_dm_process_remove_device(p_dev->bd_addr);
- /* Delete the other paired device too */
- BD_ADDR dummy_bda = {0};
- if (continue_delete_other_dev && (bdcmp(other_address, dummy_bda) != 0))
- bta_dm_process_remove_device(other_address);
+ /* Delete the other paired device too */
+ BD_ADDR dummy_bda = {0};
+ if (continue_delete_other_dev && (bdcmp(other_address, dummy_bda) != 0))
+ bta_dm_process_remove_device(other_address);
}
/*******************************************************************************
@@ -810,141 +800,129 @@
* Function bta_dm_add_device
*
* Description This function adds a Link Key to an security database entry.
- * It is normally called during host startup to restore all required information
+ * It is normally called during host startup to restore all
+ *required information
* stored in the NVRAM.
***
******************************************************************************/
-void bta_dm_add_device (tBTA_DM_MSG *p_data)
-{
- tBTA_DM_API_ADD_DEVICE *p_dev = &p_data->add_dev;
- uint8_t *p_dc = NULL;
- uint8_t *p_lc = NULL;
- uint32_t trusted_services_mask[BTM_SEC_SERVICE_ARRAY_SIZE];
- uint8_t index = 0;
- uint8_t btm_mask_index = 0;
+void bta_dm_add_device(tBTA_DM_MSG* p_data) {
+ tBTA_DM_API_ADD_DEVICE* p_dev = &p_data->add_dev;
+ uint8_t* p_dc = NULL;
+ uint8_t* p_lc = NULL;
+ uint32_t trusted_services_mask[BTM_SEC_SERVICE_ARRAY_SIZE];
+ uint8_t index = 0;
+ uint8_t btm_mask_index = 0;
- memset (trusted_services_mask, 0, sizeof(trusted_services_mask));
+ memset(trusted_services_mask, 0, sizeof(trusted_services_mask));
- /* If not all zeros, the device class has been specified */
- if (p_dev->dc_known)
- p_dc = (uint8_t *)p_dev->dc;
+ /* If not all zeros, the device class has been specified */
+ if (p_dev->dc_known) p_dc = (uint8_t*)p_dev->dc;
- if (p_dev->link_key_known)
- p_lc = (uint8_t *)p_dev->link_key;
+ if (p_dev->link_key_known) p_lc = (uint8_t*)p_dev->link_key;
- if (p_dev->is_trusted)
- {
- /* covert BTA service mask to BTM mask */
- while (p_dev->tm && (index < BTA_MAX_SERVICE_ID))
- {
- if (p_dev->tm & (uint32_t)(1<<index))
- {
+ if (p_dev->is_trusted) {
+ /* covert BTA service mask to BTM mask */
+ while (p_dev->tm && (index < BTA_MAX_SERVICE_ID)) {
+ if (p_dev->tm & (uint32_t)(1 << index)) {
+ btm_mask_index =
+ bta_service_id_to_btm_srv_id_lkup_tbl[index] / BTM_SEC_ARRAY_BITS;
+ trusted_services_mask[btm_mask_index] |=
+ (uint32_t)(1 << (bta_service_id_to_btm_srv_id_lkup_tbl[index] -
+ (uint32_t)(btm_mask_index * 32)));
- btm_mask_index = bta_service_id_to_btm_srv_id_lkup_tbl[index] / BTM_SEC_ARRAY_BITS;
- trusted_services_mask[btm_mask_index] |= (uint32_t)(1 << (bta_service_id_to_btm_srv_id_lkup_tbl[index] - (uint32_t)(btm_mask_index * 32)));
-
- p_dev->tm &= (uint32_t)(~(1<<index));
-
- }
- index++;
- }
+ p_dev->tm &= (uint32_t)(~(1 << index));
+ }
+ index++;
}
+ }
- if (!BTM_SecAddDevice (p_dev->bd_addr, p_dc, p_dev->bd_name, p_dev->features,
- trusted_services_mask, p_lc, p_dev->key_type, p_dev->io_cap,
- p_dev->pin_length))
- {
- APPL_TRACE_ERROR ("BTA_DM: Error adding device %08x%04x",
- (p_dev->bd_addr[0]<<24)+(p_dev->bd_addr[1]<<16)+(p_dev->bd_addr[2]<<8)+p_dev->bd_addr[3],
- (p_dev->bd_addr[4]<<8)+p_dev->bd_addr[5]);
- }
+ if (!BTM_SecAddDevice(p_dev->bd_addr, p_dc, p_dev->bd_name, p_dev->features,
+ trusted_services_mask, p_lc, p_dev->key_type,
+ p_dev->io_cap, p_dev->pin_length)) {
+ APPL_TRACE_ERROR("BTA_DM: Error adding device %08x%04x",
+ (p_dev->bd_addr[0] << 24) + (p_dev->bd_addr[1] << 16) +
+ (p_dev->bd_addr[2] << 8) + p_dev->bd_addr[3],
+ (p_dev->bd_addr[4] << 8) + p_dev->bd_addr[5]);
+ }
}
/*******************************************************************************
*
* Function bta_dm_close_acl
*
- * Description This function forces to close the connection to a remote device
+ * Description This function forces to close the connection to a remote
+ *device
* and optionaly remove the device from security database if
* required.
***
******************************************************************************/
-void bta_dm_close_acl(tBTA_DM_MSG *p_data)
-{
- tBTA_DM_API_REMOVE_ACL *p_remove_acl = &p_data->remove_acl;
- uint8_t index;
+void bta_dm_close_acl(tBTA_DM_MSG* p_data) {
+ tBTA_DM_API_REMOVE_ACL* p_remove_acl = &p_data->remove_acl;
+ uint8_t index;
- APPL_TRACE_DEBUG("bta_dm_close_acl");
+ APPL_TRACE_DEBUG("bta_dm_close_acl");
- if (BTM_IsAclConnectionUp(p_remove_acl->bd_addr, p_remove_acl->transport))
- {
- for (index = 0; index < bta_dm_cb.device_list.count; index ++)
- {
- if (!bdcmp( bta_dm_cb.device_list.peer_device[index].peer_bdaddr, p_remove_acl->bd_addr))
- break;
- }
- if (index != bta_dm_cb.device_list.count)
- {
- if (p_remove_acl->remove_dev)
- bta_dm_cb.device_list.peer_device[index].remove_dev_pending = true;
- }
- else
- {
- APPL_TRACE_ERROR("unknown device, remove ACL failed");
- }
- /* Disconnect the ACL link */
- btm_remove_acl(p_remove_acl->bd_addr, p_remove_acl->transport);
+ if (BTM_IsAclConnectionUp(p_remove_acl->bd_addr, p_remove_acl->transport)) {
+ for (index = 0; index < bta_dm_cb.device_list.count; index++) {
+ if (!bdcmp(bta_dm_cb.device_list.peer_device[index].peer_bdaddr,
+ p_remove_acl->bd_addr))
+ break;
}
- /* if to remove the device from security database ? do it now */
- else if (p_remove_acl->remove_dev)
- {
- if (!BTM_SecDeleteDevice(p_remove_acl->bd_addr))
- {
- APPL_TRACE_ERROR("delete device from security database failed.");
- }
+ if (index != bta_dm_cb.device_list.count) {
+ if (p_remove_acl->remove_dev)
+ bta_dm_cb.device_list.peer_device[index].remove_dev_pending = true;
+ } else {
+ APPL_TRACE_ERROR("unknown device, remove ACL failed");
+ }
+ /* Disconnect the ACL link */
+ btm_remove_acl(p_remove_acl->bd_addr, p_remove_acl->transport);
+ }
+ /* if to remove the device from security database ? do it now */
+ else if (p_remove_acl->remove_dev) {
+ if (!BTM_SecDeleteDevice(p_remove_acl->bd_addr)) {
+ APPL_TRACE_ERROR("delete device from security database failed.");
+ }
#if (BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE)
- /* need to remove all pending background connection if any */
- BTA_GATTC_CancelOpen(0, p_remove_acl->bd_addr, false);
- /* remove all cached GATT information */
- BTA_GATTC_Refresh(p_remove_acl->bd_addr);
+ /* need to remove all pending background connection if any */
+ BTA_GATTC_CancelOpen(0, p_remove_acl->bd_addr, false);
+ /* remove all cached GATT information */
+ BTA_GATTC_Refresh(p_remove_acl->bd_addr);
#endif
- }
- /* otherwise, no action needed */
-
+ }
+ /* otherwise, no action needed */
}
/*******************************************************************************
*
* Function bta_dm_remove_all_acl
*
- * Description This function forces to close all the ACL links specified by link type
+ * Description This function forces to close all the ACL links specified by
+ *link type
***
******************************************************************************/
-void bta_dm_remove_all_acl(tBTA_DM_MSG *p_data)
-{
- const tBTA_DM_LINK_TYPE link_type = p_data->remove_all_acl.link_type;
- tBT_TRANSPORT transport = BT_TRANSPORT_BR_EDR;
+void bta_dm_remove_all_acl(tBTA_DM_MSG* p_data) {
+ const tBTA_DM_LINK_TYPE link_type = p_data->remove_all_acl.link_type;
+ tBT_TRANSPORT transport = BT_TRANSPORT_BR_EDR;
- APPL_TRACE_DEBUG("%s link type = %d", __func__, link_type);
+ APPL_TRACE_DEBUG("%s link type = %d", __func__, link_type);
- for (uint8_t i=0; i < bta_dm_cb.device_list.count; i++)
- {
- BD_ADDR addr = {0};
- bdcpy(addr, bta_dm_cb.device_list.peer_device[i].peer_bdaddr);
+ for (uint8_t i = 0; i < bta_dm_cb.device_list.count; i++) {
+ BD_ADDR addr = {0};
+ bdcpy(addr, bta_dm_cb.device_list.peer_device[i].peer_bdaddr);
#if (BLE_INCLUDED == TRUE)
- transport = bta_dm_cb.device_list.peer_device[i].transport;
+ transport = bta_dm_cb.device_list.peer_device[i].transport;
#endif
- if ((link_type == BTA_DM_LINK_TYPE_ALL) ||
- ((link_type == BTA_DM_LINK_TYPE_LE) && (transport == BT_TRANSPORT_LE)) ||
- ((link_type == BTA_DM_LINK_TYPE_BR_EDR) && (transport == BT_TRANSPORT_BR_EDR)))
- {
- /* Disconnect the ACL link */
- btm_remove_acl(addr, transport);
- }
+ if ((link_type == BTA_DM_LINK_TYPE_ALL) ||
+ ((link_type == BTA_DM_LINK_TYPE_LE) &&
+ (transport == BT_TRANSPORT_LE)) ||
+ ((link_type == BTA_DM_LINK_TYPE_BR_EDR) &&
+ (transport == BT_TRANSPORT_BR_EDR))) {
+ /* Disconnect the ACL link */
+ btm_remove_acl(addr, transport);
}
+ }
}
-
/*******************************************************************************
*
* Function bta_dm_bond
@@ -955,47 +933,39 @@
* Returns void
*
******************************************************************************/
-void bta_dm_bond (tBTA_DM_MSG *p_data)
-{
- tBTM_STATUS status;
- tBTA_DM_SEC sec_event;
- char *p_name;
+void bta_dm_bond(tBTA_DM_MSG* p_data) {
+ tBTM_STATUS status;
+ tBTA_DM_SEC sec_event;
+ char* p_name;
- if (p_data->bond.transport == BTA_TRANSPORT_UNKNOWN)
- status = BTM_SecBond ( p_data->bond.bd_addr, 0, NULL, 0 );
- else
- status = BTM_SecBondByTransport ( p_data->bond.bd_addr, p_data->bond.transport, 0, NULL, 0 );
+ if (p_data->bond.transport == BTA_TRANSPORT_UNKNOWN)
+ status = BTM_SecBond(p_data->bond.bd_addr, 0, NULL, 0);
+ else
+ status = BTM_SecBondByTransport(p_data->bond.bd_addr,
+ p_data->bond.transport, 0, NULL, 0);
-
- if (bta_dm_cb.p_sec_cback && (status != BTM_CMD_STARTED))
- {
-
- memset(&sec_event, 0, sizeof(tBTA_DM_SEC));
- bdcpy(sec_event.auth_cmpl.bd_addr, p_data->bond.bd_addr);
- p_name = BTM_SecReadDevName(p_data->bond.bd_addr);
- if (p_name != NULL)
- {
- memcpy(sec_event.auth_cmpl.bd_name, p_name, (BD_NAME_LEN-1));
- sec_event.auth_cmpl.bd_name[BD_NAME_LEN-1] = 0;
- }
-
-/* taken care of by memset [above]
- sec_event.auth_cmpl.key_present = false;
- sec_event.auth_cmpl.success = false;
-*/
- sec_event.auth_cmpl.fail_reason = HCI_ERR_ILLEGAL_COMMAND;
- if (status == BTM_SUCCESS)
- {
- sec_event.auth_cmpl.success = true;
- }
- else
- {
- /* delete this device entry from Sec Dev DB */
- bta_dm_remove_sec_dev_entry(p_data->bond.bd_addr);
- }
- bta_dm_cb.p_sec_cback(BTA_DM_AUTH_CMPL_EVT, &sec_event);
+ if (bta_dm_cb.p_sec_cback && (status != BTM_CMD_STARTED)) {
+ memset(&sec_event, 0, sizeof(tBTA_DM_SEC));
+ bdcpy(sec_event.auth_cmpl.bd_addr, p_data->bond.bd_addr);
+ p_name = BTM_SecReadDevName(p_data->bond.bd_addr);
+ if (p_name != NULL) {
+ memcpy(sec_event.auth_cmpl.bd_name, p_name, (BD_NAME_LEN - 1));
+ sec_event.auth_cmpl.bd_name[BD_NAME_LEN - 1] = 0;
}
+ /* taken care of by memset [above]
+ sec_event.auth_cmpl.key_present = false;
+ sec_event.auth_cmpl.success = false;
+ */
+ sec_event.auth_cmpl.fail_reason = HCI_ERR_ILLEGAL_COMMAND;
+ if (status == BTM_SUCCESS) {
+ sec_event.auth_cmpl.success = true;
+ } else {
+ /* delete this device entry from Sec Dev DB */
+ bta_dm_remove_sec_dev_entry(p_data->bond.bd_addr);
+ }
+ bta_dm_cb.p_sec_cback(BTA_DM_AUTH_CMPL_EVT, &sec_event);
+ }
}
/*******************************************************************************
@@ -1008,21 +978,19 @@
* Returns void
*
******************************************************************************/
-void bta_dm_bond_cancel (tBTA_DM_MSG *p_data)
-{
- tBTM_STATUS status;
- tBTA_DM_SEC sec_event;
+void bta_dm_bond_cancel(tBTA_DM_MSG* p_data) {
+ tBTM_STATUS status;
+ tBTA_DM_SEC sec_event;
- APPL_TRACE_EVENT(" bta_dm_bond_cancel ");
- status = BTM_SecBondCancel ( p_data->bond_cancel.bd_addr );
+ APPL_TRACE_EVENT(" bta_dm_bond_cancel ");
+ status = BTM_SecBondCancel(p_data->bond_cancel.bd_addr);
- if (bta_dm_cb.p_sec_cback && (status != BTM_CMD_STARTED && status != BTM_SUCCESS))
- {
- sec_event.bond_cancel_cmpl.result = BTA_FAILURE;
+ if (bta_dm_cb.p_sec_cback &&
+ (status != BTM_CMD_STARTED && status != BTM_SUCCESS)) {
+ sec_event.bond_cancel_cmpl.result = BTA_FAILURE;
- bta_dm_cb.p_sec_cback(BTA_DM_BOND_CANCEL_CMPL_EVT, &sec_event);
- }
-
+ bta_dm_cb.p_sec_cback(BTA_DM_BOND_CANCEL_CMPL_EVT, &sec_event);
+ }
}
/*******************************************************************************
@@ -1035,32 +1003,26 @@
* Returns void
*
******************************************************************************/
-void bta_dm_pin_reply (tBTA_DM_MSG *p_data)
-{
- uint32_t trusted_mask[BTM_SEC_SERVICE_ARRAY_SIZE];
- uint32_t * current_trusted_mask;
+void bta_dm_pin_reply(tBTA_DM_MSG* p_data) {
+ uint32_t trusted_mask[BTM_SEC_SERVICE_ARRAY_SIZE];
+ uint32_t* current_trusted_mask;
- current_trusted_mask = BTM_ReadTrustedMask(p_data->pin_reply.bd_addr);
+ current_trusted_mask = BTM_ReadTrustedMask(p_data->pin_reply.bd_addr);
- if(current_trusted_mask)
- {
- memcpy(trusted_mask, current_trusted_mask, sizeof(trusted_mask));
- }
- else
- {
- memset(trusted_mask, 0, sizeof(trusted_mask));
- }
+ if (current_trusted_mask) {
+ memcpy(trusted_mask, current_trusted_mask, sizeof(trusted_mask));
+ } else {
+ memset(trusted_mask, 0, sizeof(trusted_mask));
+ }
- if(p_data->pin_reply.accept)
- {
-
- BTM_PINCodeReply(p_data->pin_reply.bd_addr, BTM_SUCCESS, p_data->pin_reply.pin_len, p_data->pin_reply.p_pin, trusted_mask );
- }
- else
- {
- BTM_PINCodeReply(p_data->pin_reply.bd_addr, BTM_NOT_AUTHORIZED, 0, NULL, trusted_mask );
- }
-
+ if (p_data->pin_reply.accept) {
+ BTM_PINCodeReply(p_data->pin_reply.bd_addr, BTM_SUCCESS,
+ p_data->pin_reply.pin_len, p_data->pin_reply.p_pin,
+ trusted_mask);
+ } else {
+ BTM_PINCodeReply(p_data->pin_reply.bd_addr, BTM_NOT_AUTHORIZED, 0, NULL,
+ trusted_mask);
+ }
}
/*******************************************************************************
@@ -1072,59 +1034,52 @@
* Returns void
*
******************************************************************************/
-static void bta_dm_policy_cback(tBTA_SYS_CONN_STATUS status, uint8_t id, uint8_t app_id, BD_ADDR peer_addr)
-{
- tBTA_DM_PEER_DEVICE *p_dev = NULL;
- uint16_t policy = app_id;
- uint32_t mask = (uint32_t)(1 << id);
+static void bta_dm_policy_cback(tBTA_SYS_CONN_STATUS status, uint8_t id,
+ uint8_t app_id, BD_ADDR peer_addr) {
+ tBTA_DM_PEER_DEVICE* p_dev = NULL;
+ uint16_t policy = app_id;
+ uint32_t mask = (uint32_t)(1 << id);
- if(peer_addr)
- p_dev = bta_dm_find_peer_device(peer_addr);
+ if (peer_addr) p_dev = bta_dm_find_peer_device(peer_addr);
- APPL_TRACE_DEBUG(" bta_dm_policy_cback cmd:%d, policy:0x%x",
- status, policy);
- switch(status)
- {
+ APPL_TRACE_DEBUG(" bta_dm_policy_cback cmd:%d, policy:0x%x", status, policy);
+ switch (status) {
case BTA_SYS_PLCY_SET:
- if(!p_dev)
- return;
- /* restore the default link policy */
- p_dev->link_policy |= policy;
- BTM_SetLinkPolicy(p_dev->peer_bdaddr, &(p_dev->link_policy));
- break;
+ if (!p_dev) return;
+ /* restore the default link policy */
+ p_dev->link_policy |= policy;
+ BTM_SetLinkPolicy(p_dev->peer_bdaddr, &(p_dev->link_policy));
+ break;
case BTA_SYS_PLCY_CLR:
- if(!p_dev)
- return;
- /* clear the policy from the default link policy */
- p_dev->link_policy &= (~policy);
- BTM_SetLinkPolicy(p_dev->peer_bdaddr, &(p_dev->link_policy));
+ if (!p_dev) return;
+ /* clear the policy from the default link policy */
+ p_dev->link_policy &= (~policy);
+ BTM_SetLinkPolicy(p_dev->peer_bdaddr, &(p_dev->link_policy));
- if(policy & (HCI_ENABLE_SNIFF_MODE | HCI_ENABLE_PARK_MODE))
- {
- /* if clearing sniff/park, wake the link */
- bta_dm_pm_active(p_dev->peer_bdaddr);
- }
- break;
+ if (policy & (HCI_ENABLE_SNIFF_MODE | HCI_ENABLE_PARK_MODE)) {
+ /* if clearing sniff/park, wake the link */
+ bta_dm_pm_active(p_dev->peer_bdaddr);
+ }
+ break;
case BTA_SYS_PLCY_DEF_SET:
- /* want to restore/set the role switch policy */
- bta_dm_cb.role_policy_mask &= ~mask;
- if(0 == bta_dm_cb.role_policy_mask)
- {
- /* if nobody wants to insist on the role */
- bta_dm_cb.cur_policy |= HCI_ENABLE_MASTER_SLAVE_SWITCH;
- BTM_SetDefaultLinkPolicy(bta_dm_cb.cur_policy);
- }
- break;
+ /* want to restore/set the role switch policy */
+ bta_dm_cb.role_policy_mask &= ~mask;
+ if (0 == bta_dm_cb.role_policy_mask) {
+ /* if nobody wants to insist on the role */
+ bta_dm_cb.cur_policy |= HCI_ENABLE_MASTER_SLAVE_SWITCH;
+ BTM_SetDefaultLinkPolicy(bta_dm_cb.cur_policy);
+ }
+ break;
case BTA_SYS_PLCY_DEF_CLR:
- /* want to remove the role switch policy */
- bta_dm_cb.role_policy_mask |= mask;
- bta_dm_cb.cur_policy &= ~HCI_ENABLE_MASTER_SLAVE_SWITCH;
- BTM_SetDefaultLinkPolicy(bta_dm_cb.cur_policy);
- break;
- }
+ /* want to remove the role switch policy */
+ bta_dm_cb.role_policy_mask |= mask;
+ bta_dm_cb.cur_policy &= ~HCI_ENABLE_MASTER_SLAVE_SWITCH;
+ BTM_SetDefaultLinkPolicy(bta_dm_cb.cur_policy);
+ break;
+ }
}
/*******************************************************************************
@@ -1137,13 +1092,11 @@
* Returns void
*
******************************************************************************/
-void bta_dm_confirm(tBTA_DM_MSG *p_data)
-{
- tBTM_STATUS res = BTM_NOT_AUTHORIZED;
+void bta_dm_confirm(tBTA_DM_MSG* p_data) {
+ tBTM_STATUS res = BTM_NOT_AUTHORIZED;
- if(p_data->confirm.accept == true)
- res = BTM_SUCCESS;
- BTM_ConfirmReqReply(res, p_data->confirm.bd_addr);
+ if (p_data->confirm.accept == true) res = BTM_SUCCESS;
+ BTM_ConfirmReqReply(res, p_data->confirm.bd_addr);
}
/*******************************************************************************
@@ -1155,10 +1108,7 @@
* Returns void
*
******************************************************************************/
-void bta_dm_loc_oob(UNUSED_ATTR tBTA_DM_MSG *p_data)
-{
- BTM_ReadLocalOobData();
-}
+void bta_dm_loc_oob(UNUSED_ATTR tBTA_DM_MSG* p_data) { BTM_ReadLocalOobData(); }
/*******************************************************************************
*
@@ -1169,33 +1119,30 @@
* Returns void
*
******************************************************************************/
-void bta_dm_ci_io_req_act(tBTA_DM_MSG *p_data)
-{
- tBTM_AUTH_REQ auth_req = BTM_AUTH_AP_NO;
- if(p_data->ci_io_req.auth_req)
- auth_req = BTM_AUTH_AP_YES;
- BTM_IoCapRsp(p_data->ci_io_req.bd_addr, p_data->ci_io_req.io_cap,
- p_data->ci_io_req.oob_data, auth_req);
+void bta_dm_ci_io_req_act(tBTA_DM_MSG* p_data) {
+ tBTM_AUTH_REQ auth_req = BTM_AUTH_AP_NO;
+ if (p_data->ci_io_req.auth_req) auth_req = BTM_AUTH_AP_YES;
+ BTM_IoCapRsp(p_data->ci_io_req.bd_addr, p_data->ci_io_req.io_cap,
+ p_data->ci_io_req.oob_data, auth_req);
}
/*******************************************************************************
*
* Function bta_dm_ci_rmt_oob_act
*
- * Description respond to the OOB data request for the remote device from BTM
+ * Description respond to the OOB data request for the remote device from
+ *BTM
*
*
* Returns void
*
******************************************************************************/
-void bta_dm_ci_rmt_oob_act(tBTA_DM_MSG *p_data)
-{
- tBTM_STATUS res = BTM_NOT_AUTHORIZED;
+void bta_dm_ci_rmt_oob_act(tBTA_DM_MSG* p_data) {
+ tBTM_STATUS res = BTM_NOT_AUTHORIZED;
- if(p_data->ci_rmt_oob.accept == true)
- res = BTM_SUCCESS;
- BTM_RemoteOobDataReply(res, p_data->ci_rmt_oob.bd_addr,
- p_data->ci_rmt_oob.c, p_data->ci_rmt_oob.r );
+ if (p_data->ci_rmt_oob.accept == true) res = BTM_SUCCESS;
+ BTM_RemoteOobDataReply(res, p_data->ci_rmt_oob.bd_addr, p_data->ci_rmt_oob.c,
+ p_data->ci_rmt_oob.r);
}
/*******************************************************************************
@@ -1208,48 +1155,47 @@
* Returns void
*
******************************************************************************/
-void bta_dm_search_start (tBTA_DM_MSG *p_data)
-{
- tBTM_INQUIRY_CMPL result;
+void bta_dm_search_start(tBTA_DM_MSG* p_data) {
+ tBTM_INQUIRY_CMPL result;
#if (BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE)
- size_t len = sizeof(tBT_UUID) * p_data->search.num_uuid;
- bta_dm_gattc_register();
+ size_t len = sizeof(tBT_UUID) * p_data->search.num_uuid;
+ bta_dm_gattc_register();
#endif
- APPL_TRACE_DEBUG("%s avoid_scatter=%d", __func__, p_bta_dm_cfg->avoid_scatter);
+ APPL_TRACE_DEBUG("%s avoid_scatter=%d", __func__,
+ p_bta_dm_cfg->avoid_scatter);
- if (p_bta_dm_cfg->avoid_scatter &&
- (p_data->search.rs_res == BTA_DM_RS_NONE) && bta_dm_check_av(BTA_DM_API_SEARCH_EVT))
- {
- memcpy(&bta_dm_cb.search_msg, &p_data->search, sizeof(tBTA_DM_API_SEARCH));
- return;
- }
+ if (p_bta_dm_cfg->avoid_scatter &&
+ (p_data->search.rs_res == BTA_DM_RS_NONE) &&
+ bta_dm_check_av(BTA_DM_API_SEARCH_EVT)) {
+ memcpy(&bta_dm_cb.search_msg, &p_data->search, sizeof(tBTA_DM_API_SEARCH));
+ return;
+ }
- BTM_ClearInqDb(NULL);
- /* save search params */
- bta_dm_search_cb.p_search_cback = p_data->search.p_cback;
- bta_dm_search_cb.services = p_data->search.services;
+ BTM_ClearInqDb(NULL);
+ /* save search params */
+ bta_dm_search_cb.p_search_cback = p_data->search.p_cback;
+ bta_dm_search_cb.services = p_data->search.services;
#if (BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE)
- osi_free_and_reset((void **)&bta_dm_search_cb.p_srvc_uuid);
+ osi_free_and_reset((void**)&bta_dm_search_cb.p_srvc_uuid);
- if ((bta_dm_search_cb.num_uuid = p_data->search.num_uuid) != 0 &&
- p_data->search.p_uuid != NULL) {
- bta_dm_search_cb.p_srvc_uuid = (tBT_UUID *)osi_malloc(len);
- memcpy(bta_dm_search_cb.p_srvc_uuid, p_data->search.p_uuid, len);
- }
+ if ((bta_dm_search_cb.num_uuid = p_data->search.num_uuid) != 0 &&
+ p_data->search.p_uuid != NULL) {
+ bta_dm_search_cb.p_srvc_uuid = (tBT_UUID*)osi_malloc(len);
+ memcpy(bta_dm_search_cb.p_srvc_uuid, p_data->search.p_uuid, len);
+ }
#endif
- result.status = BTM_StartInquiry( (tBTM_INQ_PARMS*)&p_data->search.inq_params,
- bta_dm_inq_results_cb,
- (tBTM_CMPL_CB*) bta_dm_inq_cmpl_cb);
+ result.status = BTM_StartInquiry((tBTM_INQ_PARMS*)&p_data->search.inq_params,
+ bta_dm_inq_results_cb,
+ (tBTM_CMPL_CB*)bta_dm_inq_cmpl_cb);
- APPL_TRACE_EVENT("%s status=%d", __func__, result.status);
- if (result.status != BTM_CMD_STARTED)
- {
- result.num_resp = 0;
- bta_dm_inq_cmpl_cb ((void *)&result);
- }
+ APPL_TRACE_EVENT("%s status=%d", __func__, result.status);
+ if (result.status != BTM_CMD_STARTED) {
+ result.num_resp = 0;
+ bta_dm_inq_cmpl_cb((void*)&result);
+ }
}
/*******************************************************************************
@@ -1262,46 +1208,41 @@
* Returns void
*
******************************************************************************/
-void bta_dm_search_cancel (UNUSED_ATTR tBTA_DM_MSG *p_data)
-{
+void bta_dm_search_cancel(UNUSED_ATTR tBTA_DM_MSG* p_data) {
+ tBTA_DM_MSG* p_msg;
- tBTA_DM_MSG *p_msg;
-
- if (BTM_IsInquiryActive())
- {
- if (BTM_CancelInquiry() == BTM_SUCCESS)
- {
- bta_dm_search_cancel_notify(NULL);
- p_msg = (tBTA_DM_MSG *)osi_malloc(sizeof(tBTA_DM_MSG));
- p_msg->hdr.event = BTA_DM_SEARCH_CMPL_EVT;
- p_msg->hdr.layer_specific = BTA_DM_API_DISCOVER_EVT;
- bta_sys_sendmsg(p_msg);
- } else {
- /* flag a search cancel is pending */
- bta_dm_search_cb.cancel_pending = true;
- }
- }
- /* If no Service Search going on then issue cancel remote name in case it is active */
- else if (!bta_dm_search_cb.name_discover_done)
- {
- BTM_CancelRemoteDeviceName();
-
- p_msg = (tBTA_DM_MSG *)osi_malloc(sizeof(tBTA_DM_MSG));
- p_msg->hdr.event = BTA_DM_SEARCH_CMPL_EVT;
- p_msg->hdr.layer_specific = BTA_DM_API_DISCOVER_EVT;
- bta_sys_sendmsg(p_msg);
+ if (BTM_IsInquiryActive()) {
+ if (BTM_CancelInquiry() == BTM_SUCCESS) {
+ bta_dm_search_cancel_notify(NULL);
+ p_msg = (tBTA_DM_MSG*)osi_malloc(sizeof(tBTA_DM_MSG));
+ p_msg->hdr.event = BTA_DM_SEARCH_CMPL_EVT;
+ p_msg->hdr.layer_specific = BTA_DM_API_DISCOVER_EVT;
+ bta_sys_sendmsg(p_msg);
} else {
- p_msg = (tBTA_DM_MSG *)osi_malloc(sizeof(tBTA_DM_MSG));
- p_msg->hdr.event = BTA_DM_INQUIRY_CMPL_EVT;
- p_msg->hdr.layer_specific = BTA_DM_API_DISCOVER_EVT;
- bta_sys_sendmsg(p_msg);
+ /* flag a search cancel is pending */
+ bta_dm_search_cb.cancel_pending = true;
}
+ }
+ /* If no Service Search going on then issue cancel remote name in case it is
+ active */
+ else if (!bta_dm_search_cb.name_discover_done) {
+ BTM_CancelRemoteDeviceName();
+
+ p_msg = (tBTA_DM_MSG*)osi_malloc(sizeof(tBTA_DM_MSG));
+ p_msg->hdr.event = BTA_DM_SEARCH_CMPL_EVT;
+ p_msg->hdr.layer_specific = BTA_DM_API_DISCOVER_EVT;
+ bta_sys_sendmsg(p_msg);
+ } else {
+ p_msg = (tBTA_DM_MSG*)osi_malloc(sizeof(tBTA_DM_MSG));
+ p_msg->hdr.event = BTA_DM_INQUIRY_CMPL_EVT;
+ p_msg->hdr.layer_specific = BTA_DM_API_DISCOVER_EVT;
+ bta_sys_sendmsg(p_msg);
+ }
#if (BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE)
- if (bta_dm_search_cb.gatt_disc_active)
- {
- bta_dm_cancel_gatt_discovery(bta_dm_search_cb.peer_bdaddr);
- }
+ if (bta_dm_search_cb.gatt_disc_active) {
+ bta_dm_cancel_gatt_discovery(bta_dm_search_cb.peer_bdaddr);
+ }
#endif
}
@@ -1315,41 +1256,40 @@
* Returns void
*
******************************************************************************/
-void bta_dm_discover (tBTA_DM_MSG *p_data)
-{
+void bta_dm_discover(tBTA_DM_MSG* p_data) {
#if (BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE)
- size_t len = sizeof(tBT_UUID) * p_data->discover.num_uuid;
+ size_t len = sizeof(tBT_UUID) * p_data->discover.num_uuid;
#endif
- APPL_TRACE_EVENT("%s services_to_search=0x%04X, sdp_search=%d", __func__,
- p_data->discover.services, p_data->discover.sdp_search);
+ APPL_TRACE_EVENT("%s services_to_search=0x%04X, sdp_search=%d", __func__,
+ p_data->discover.services, p_data->discover.sdp_search);
- /* save the search condition */
- bta_dm_search_cb.services = p_data->discover.services;
+ /* save the search condition */
+ bta_dm_search_cb.services = p_data->discover.services;
#if (BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE)
- bta_dm_gattc_register();
- osi_free_and_reset((void **)&bta_dm_search_cb.p_srvc_uuid);
- if ((bta_dm_search_cb.num_uuid = p_data->discover.num_uuid) != 0 &&
- p_data->discover.p_uuid != NULL) {
- bta_dm_search_cb.p_srvc_uuid = (tBT_UUID *)osi_malloc(len);
- memcpy(bta_dm_search_cb.p_srvc_uuid, p_data->discover.p_uuid, len);
- }
- bta_dm_search_cb.uuid_to_search = bta_dm_search_cb.num_uuid;
+ bta_dm_gattc_register();
+ osi_free_and_reset((void**)&bta_dm_search_cb.p_srvc_uuid);
+ if ((bta_dm_search_cb.num_uuid = p_data->discover.num_uuid) != 0 &&
+ p_data->discover.p_uuid != NULL) {
+ bta_dm_search_cb.p_srvc_uuid = (tBT_UUID*)osi_malloc(len);
+ memcpy(bta_dm_search_cb.p_srvc_uuid, p_data->discover.p_uuid, len);
+ }
+ bta_dm_search_cb.uuid_to_search = bta_dm_search_cb.num_uuid;
#endif
- bta_dm_search_cb.p_search_cback = p_data->discover.p_cback;
- bta_dm_search_cb.sdp_search = p_data->discover.sdp_search;
- bta_dm_search_cb.services_to_search = bta_dm_search_cb.services;
- bta_dm_search_cb.service_index = 0;
- bta_dm_search_cb.services_found = 0;
- bta_dm_search_cb.peer_name[0] = 0;
- bta_dm_search_cb.sdp_search = p_data->discover.sdp_search;
- bta_dm_search_cb.p_btm_inq_info = BTM_InqDbRead (p_data->discover.bd_addr);
- bta_dm_search_cb.transport = p_data->discover.transport;
+ bta_dm_search_cb.p_search_cback = p_data->discover.p_cback;
+ bta_dm_search_cb.sdp_search = p_data->discover.sdp_search;
+ bta_dm_search_cb.services_to_search = bta_dm_search_cb.services;
+ bta_dm_search_cb.service_index = 0;
+ bta_dm_search_cb.services_found = 0;
+ bta_dm_search_cb.peer_name[0] = 0;
+ bta_dm_search_cb.sdp_search = p_data->discover.sdp_search;
+ bta_dm_search_cb.p_btm_inq_info = BTM_InqDbRead(p_data->discover.bd_addr);
+ bta_dm_search_cb.transport = p_data->discover.transport;
- bta_dm_search_cb.name_discover_done = false;
- memcpy(&bta_dm_search_cb.uuid, &p_data->discover.uuid, sizeof(tSDP_UUID));
- bta_dm_discover_device(p_data->discover.bd_addr);
+ bta_dm_search_cb.name_discover_done = false;
+ memcpy(&bta_dm_search_cb.uuid, &p_data->discover.uuid, sizeof(tSDP_UUID));
+ bta_dm_discover_device(p_data->discover.bd_addr);
}
/*******************************************************************************
@@ -1361,23 +1301,21 @@
* Returns void
*
******************************************************************************/
-void bta_dm_di_disc_cmpl(tBTA_DM_MSG *p_data)
-{
- tBTA_DM_DI_DISC_CMPL di_disc;
+void bta_dm_di_disc_cmpl(tBTA_DM_MSG* p_data) {
+ tBTA_DM_DI_DISC_CMPL di_disc;
- memset(&di_disc, 0, sizeof(tBTA_DM_DI_DISC_CMPL));
- bdcpy(di_disc.bd_addr, bta_dm_search_cb.peer_bdaddr);
+ memset(&di_disc, 0, sizeof(tBTA_DM_DI_DISC_CMPL));
+ bdcpy(di_disc.bd_addr, bta_dm_search_cb.peer_bdaddr);
- if((p_data->hdr.offset == SDP_SUCCESS)
- || (p_data->hdr.offset == SDP_DB_FULL))
- {
- di_disc.num_record = SDP_GetNumDiRecords(bta_dm_di_cb.p_di_db);
- }
- else
- di_disc.result = BTA_FAILURE;
+ if ((p_data->hdr.offset == SDP_SUCCESS) ||
+ (p_data->hdr.offset == SDP_DB_FULL)) {
+ di_disc.num_record = SDP_GetNumDiRecords(bta_dm_di_cb.p_di_db);
+ } else
+ di_disc.result = BTA_FAILURE;
- bta_dm_di_cb.p_di_db = NULL;
- bta_dm_search_cb.p_search_cback(BTA_DM_DI_DISC_CMPL_EVT, (tBTA_DM_SEARCH *) &di_disc);
+ bta_dm_di_cb.p_di_db = NULL;
+ bta_dm_search_cb.p_search_cback(BTA_DM_DI_DISC_CMPL_EVT,
+ (tBTA_DM_SEARCH*)&di_disc);
}
/*******************************************************************************
@@ -1390,44 +1328,41 @@
* Returns void
*
******************************************************************************/
-static void bta_dm_di_disc_callback(uint16_t result)
-{
- tBTA_DM_MSG *p_msg = (tBTA_DM_MSG *)osi_malloc(sizeof(tBTA_DM_MSG));
+static void bta_dm_di_disc_callback(uint16_t result) {
+ tBTA_DM_MSG* p_msg = (tBTA_DM_MSG*)osi_malloc(sizeof(tBTA_DM_MSG));
- p_msg->hdr.event = BTA_DM_SEARCH_CMPL_EVT;
- p_msg->hdr.layer_specific = BTA_DM_API_DI_DISCOVER_EVT;
- p_msg->hdr.offset = result;
+ p_msg->hdr.event = BTA_DM_SEARCH_CMPL_EVT;
+ p_msg->hdr.layer_specific = BTA_DM_API_DI_DISCOVER_EVT;
+ p_msg->hdr.offset = result;
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
}
/*******************************************************************************
*
* Function bta_dm_disable_search_and_disc
*
- * Description Cancels an ongoing search or discovery for devices in case of
+ * Description Cancels an ongoing search or discovery for devices in case
+ *of
* a Bluetooth disable
*
*
* Returns void
*
******************************************************************************/
-static void bta_dm_disable_search_and_disc (void)
-{
- tBTA_DM_DI_DISC_CMPL di_disc;
+static void bta_dm_disable_search_and_disc(void) {
+ tBTA_DM_DI_DISC_CMPL di_disc;
- if (bta_dm_search_cb.state != BTA_DM_SEARCH_IDLE)
- bta_dm_search_cancel(NULL);
+ if (bta_dm_search_cb.state != BTA_DM_SEARCH_IDLE) bta_dm_search_cancel(NULL);
- if (bta_dm_di_cb.p_di_db != NULL)
- {
- memset(&di_disc, 0, sizeof(tBTA_DM_DI_DISC_CMPL));
- bdcpy(di_disc.bd_addr, bta_dm_search_cb.peer_bdaddr);
- di_disc.result = BTA_FAILURE;
+ if (bta_dm_di_cb.p_di_db != NULL) {
+ memset(&di_disc, 0, sizeof(tBTA_DM_DI_DISC_CMPL));
+ bdcpy(di_disc.bd_addr, bta_dm_search_cb.peer_bdaddr);
+ di_disc.result = BTA_FAILURE;
- bta_dm_di_cb.p_di_db = NULL;
- bta_dm_search_cb.p_search_cback(BTA_DM_DI_DISC_CMPL_EVT, NULL);
- }
+ bta_dm_di_cb.p_di_db = NULL;
+ bta_dm_search_cb.p_search_cback(BTA_DM_DI_DISC_CMPL_EVT, NULL);
+ }
}
/*******************************************************************************
@@ -1440,29 +1375,29 @@
* Returns void
*
******************************************************************************/
-void bta_dm_di_disc (tBTA_DM_MSG *p_data)
-{
- uint16_t result = BTA_FAILURE;
+void bta_dm_di_disc(tBTA_DM_MSG* p_data) {
+ uint16_t result = BTA_FAILURE;
- bta_dm_search_cb.p_search_cback = p_data->di_disc.p_cback;
- bdcpy(bta_dm_search_cb.peer_bdaddr, p_data->di_disc.bd_addr);
- bta_dm_di_cb.p_di_db = p_data->di_disc.p_sdp_db;
+ bta_dm_search_cb.p_search_cback = p_data->di_disc.p_cback;
+ bdcpy(bta_dm_search_cb.peer_bdaddr, p_data->di_disc.bd_addr);
+ bta_dm_di_cb.p_di_db = p_data->di_disc.p_sdp_db;
- bta_dm_search_cb.p_sdp_db = (tSDP_DISCOVERY_DB *)osi_malloc(BTA_DM_SDP_DB_SIZE);
- if (SDP_DiDiscover(bta_dm_search_cb.peer_bdaddr, p_data->di_disc.p_sdp_db,
- p_data->di_disc.len,
- bta_dm_di_disc_callback) == SDP_SUCCESS) {
- result = BTA_SUCCESS;
- }
+ bta_dm_search_cb.p_sdp_db =
+ (tSDP_DISCOVERY_DB*)osi_malloc(BTA_DM_SDP_DB_SIZE);
+ if (SDP_DiDiscover(bta_dm_search_cb.peer_bdaddr, p_data->di_disc.p_sdp_db,
+ p_data->di_disc.len,
+ bta_dm_di_disc_callback) == SDP_SUCCESS) {
+ result = BTA_SUCCESS;
+ }
- if (result == BTA_FAILURE) {
- tBTA_DM_MSG *p_msg = (tBTA_DM_MSG *)osi_malloc(sizeof(tBTA_DM_MSG));
+ if (result == BTA_FAILURE) {
+ tBTA_DM_MSG* p_msg = (tBTA_DM_MSG*)osi_malloc(sizeof(tBTA_DM_MSG));
- p_msg->hdr.event = BTA_DM_SEARCH_CMPL_EVT;
- p_msg->hdr.layer_specific = BTA_DM_API_DI_DISCOVER_EVT;
- p_data->hdr.offset = result;
- bta_sys_sendmsg(p_msg);
- }
+ p_msg->hdr.event = BTA_DM_SEARCH_CMPL_EVT;
+ p_msg->hdr.layer_specific = BTA_DM_API_DI_DISCOVER_EVT;
+ p_data->hdr.offset = result;
+ bta_sys_sendmsg(p_msg);
+ }
}
/*******************************************************************************
@@ -1474,41 +1409,42 @@
* Returns true if started to get remote name
*
******************************************************************************/
-static bool bta_dm_read_remote_device_name (BD_ADDR bd_addr,tBT_TRANSPORT transport)
-{
- tBTM_STATUS btm_status;
+static bool bta_dm_read_remote_device_name(BD_ADDR bd_addr,
+ tBT_TRANSPORT transport) {
+ tBTM_STATUS btm_status;
- APPL_TRACE_DEBUG("bta_dm_read_remote_device_name");
+ APPL_TRACE_DEBUG("bta_dm_read_remote_device_name");
- bdcpy(bta_dm_search_cb.peer_bdaddr, bd_addr);
- bta_dm_search_cb.peer_name[0] = 0;
+ bdcpy(bta_dm_search_cb.peer_bdaddr, bd_addr);
+ bta_dm_search_cb.peer_name[0] = 0;
- btm_status = BTM_ReadRemoteDeviceName (bta_dm_search_cb.peer_bdaddr,
- (tBTM_CMPL_CB *) bta_dm_remname_cback,
- transport);
+ btm_status =
+ BTM_ReadRemoteDeviceName(bta_dm_search_cb.peer_bdaddr,
+ (tBTM_CMPL_CB*)bta_dm_remname_cback, transport);
- if ( btm_status == BTM_CMD_STARTED )
- {
- APPL_TRACE_DEBUG("bta_dm_read_remote_device_name: BTM_ReadRemoteDeviceName is started");
+ if (btm_status == BTM_CMD_STARTED) {
+ APPL_TRACE_DEBUG(
+ "bta_dm_read_remote_device_name: BTM_ReadRemoteDeviceName is started");
- return (true);
- }
- else if ( btm_status == BTM_BUSY )
- {
- APPL_TRACE_DEBUG("bta_dm_read_remote_device_name: BTM_ReadRemoteDeviceName is busy");
+ return (true);
+ } else if (btm_status == BTM_BUSY) {
+ APPL_TRACE_DEBUG(
+ "bta_dm_read_remote_device_name: BTM_ReadRemoteDeviceName is busy");
- /* Remote name discovery is on going now so BTM cannot notify through "bta_dm_remname_cback" */
- /* adding callback to get notified that current reading remore name done */
- BTM_SecAddRmtNameNotifyCallback(&bta_dm_service_search_remname_cback);
+ /* Remote name discovery is on going now so BTM cannot notify through
+ * "bta_dm_remname_cback" */
+ /* adding callback to get notified that current reading remore name done */
+ BTM_SecAddRmtNameNotifyCallback(&bta_dm_service_search_remname_cback);
- return (true);
- }
- else
- {
- APPL_TRACE_WARNING("bta_dm_read_remote_device_name: BTM_ReadRemoteDeviceName returns 0x%02X", btm_status);
+ return (true);
+ } else {
+ APPL_TRACE_WARNING(
+ "bta_dm_read_remote_device_name: BTM_ReadRemoteDeviceName returns "
+ "0x%02X",
+ btm_status);
- return (false);
- }
+ return (false);
+ }
}
/*******************************************************************************
@@ -1520,31 +1456,31 @@
* Returns void
*
******************************************************************************/
-void bta_dm_inq_cmpl (tBTA_DM_MSG *p_data)
-{
- tBTA_DM_SEARCH data;
+void bta_dm_inq_cmpl(tBTA_DM_MSG* p_data) {
+ tBTA_DM_SEARCH data;
- APPL_TRACE_DEBUG("bta_dm_inq_cmpl");
+ APPL_TRACE_DEBUG("bta_dm_inq_cmpl");
- data.inq_cmpl.num_resps = p_data->inq_cmpl.num;
- bta_dm_search_cb.p_search_cback(BTA_DM_INQ_CMPL_EVT, &data);
+ data.inq_cmpl.num_resps = p_data->inq_cmpl.num;
+ bta_dm_search_cb.p_search_cback(BTA_DM_INQ_CMPL_EVT, &data);
- if((bta_dm_search_cb.p_btm_inq_info = BTM_InqDbFirst()) != NULL)
- {
- /* start name and service discovery from the first device on inquiry result */
- bta_dm_search_cb.name_discover_done = false;
- bta_dm_search_cb.peer_name[0] = 0;
- bta_dm_discover_device(bta_dm_search_cb.p_btm_inq_info->results.remote_bd_addr);
- } else {
- tBTA_DM_MSG *p_msg = (tBTA_DM_MSG *)osi_malloc(sizeof(tBTA_DM_MSG));
+ if ((bta_dm_search_cb.p_btm_inq_info = BTM_InqDbFirst()) != NULL) {
+ /* start name and service discovery from the first device on inquiry result
+ */
+ bta_dm_search_cb.name_discover_done = false;
+ bta_dm_search_cb.peer_name[0] = 0;
+ bta_dm_discover_device(
+ bta_dm_search_cb.p_btm_inq_info->results.remote_bd_addr);
+ } else {
+ tBTA_DM_MSG* p_msg = (tBTA_DM_MSG*)osi_malloc(sizeof(tBTA_DM_MSG));
- /* no devices, search complete */
- bta_dm_search_cb.services = 0;
+ /* no devices, search complete */
+ bta_dm_search_cb.services = 0;
- p_msg->hdr.event = BTA_DM_SEARCH_CMPL_EVT;
- p_msg->hdr.layer_specific = BTA_DM_API_DISCOVER_EVT;
- bta_sys_sendmsg(p_msg);
- }
+ p_msg->hdr.event = BTA_DM_SEARCH_CMPL_EVT;
+ p_msg->hdr.layer_specific = BTA_DM_API_DISCOVER_EVT;
+ bta_sys_sendmsg(p_msg);
+ }
}
/*******************************************************************************
@@ -1556,16 +1492,15 @@
* Returns void
*
******************************************************************************/
-void bta_dm_rmt_name (tBTA_DM_MSG *p_data)
-{
- APPL_TRACE_DEBUG("bta_dm_rmt_name");
+void bta_dm_rmt_name(tBTA_DM_MSG* p_data) {
+ APPL_TRACE_DEBUG("bta_dm_rmt_name");
- if( p_data->rem_name.result.disc_res.bd_name[0] && bta_dm_search_cb.p_btm_inq_info)
- {
- bta_dm_search_cb.p_btm_inq_info->appl_knows_rem_name = true;
- }
+ if (p_data->rem_name.result.disc_res.bd_name[0] &&
+ bta_dm_search_cb.p_btm_inq_info) {
+ bta_dm_search_cb.p_btm_inq_info->appl_knows_rem_name = true;
+ }
- bta_dm_discover_device(bta_dm_search_cb.peer_bdaddr);
+ bta_dm_discover_device(bta_dm_search_cb.peer_bdaddr);
}
/*******************************************************************************
@@ -1578,22 +1513,19 @@
* Returns void
*
******************************************************************************/
-void bta_dm_disc_rmt_name (tBTA_DM_MSG *p_data)
-{
- tBTM_INQ_INFO *p_btm_inq_info;
+void bta_dm_disc_rmt_name(tBTA_DM_MSG* p_data) {
+ tBTM_INQ_INFO* p_btm_inq_info;
- APPL_TRACE_DEBUG("bta_dm_disc_rmt_name");
+ APPL_TRACE_DEBUG("bta_dm_disc_rmt_name");
- p_btm_inq_info = BTM_InqDbRead (p_data->rem_name.result.disc_res.bd_addr);
- if( p_btm_inq_info )
- {
- if( p_data->rem_name.result.disc_res.bd_name[0] )
- {
- p_btm_inq_info->appl_knows_rem_name = true;
- }
+ p_btm_inq_info = BTM_InqDbRead(p_data->rem_name.result.disc_res.bd_addr);
+ if (p_btm_inq_info) {
+ if (p_data->rem_name.result.disc_res.bd_name[0]) {
+ p_btm_inq_info->appl_knows_rem_name = true;
}
+ }
- bta_dm_discover_device(p_data->rem_name.result.disc_res.bd_addr);
+ bta_dm_discover_device(p_data->rem_name.result.disc_res.bd_addr);
}
/*******************************************************************************
@@ -1605,240 +1537,227 @@
* Returns void
*
******************************************************************************/
-void bta_dm_sdp_result (tBTA_DM_MSG *p_data)
-{
-
- tSDP_DISC_REC *p_sdp_rec = NULL;
- tBTA_DM_MSG *p_msg;
- bool scn_found = false;
- uint16_t service = 0xFFFF;
- tSDP_PROTOCOL_ELEM pe;
+void bta_dm_sdp_result(tBTA_DM_MSG* p_data) {
+ tSDP_DISC_REC* p_sdp_rec = NULL;
+ tBTA_DM_MSG* p_msg;
+ bool scn_found = false;
+ uint16_t service = 0xFFFF;
+ tSDP_PROTOCOL_ELEM pe;
#if (BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE)
- tBT_UUID *p_uuid = bta_dm_search_cb.p_srvc_uuid;
- tBTA_DM_SEARCH result;
- tBT_UUID service_uuid;
+ tBT_UUID* p_uuid = bta_dm_search_cb.p_srvc_uuid;
+ tBTA_DM_SEARCH result;
+ tBT_UUID service_uuid;
#endif
- uint32_t num_uuids = 0;
- uint8_t uuid_list[32][MAX_UUID_SIZE]; // assuming a max of 32 services
+ uint32_t num_uuids = 0;
+ uint8_t uuid_list[32][MAX_UUID_SIZE]; // assuming a max of 32 services
- if((p_data->sdp_event.sdp_result == SDP_SUCCESS)
- || (p_data->sdp_event.sdp_result == SDP_NO_RECS_MATCH)
- || (p_data->sdp_event.sdp_result == SDP_DB_FULL))
- {
- APPL_TRACE_DEBUG("sdp_result::0x%x", p_data->sdp_event.sdp_result);
- do
- {
+ if ((p_data->sdp_event.sdp_result == SDP_SUCCESS) ||
+ (p_data->sdp_event.sdp_result == SDP_NO_RECS_MATCH) ||
+ (p_data->sdp_event.sdp_result == SDP_DB_FULL)) {
+ APPL_TRACE_DEBUG("sdp_result::0x%x", p_data->sdp_event.sdp_result);
+ do {
+ p_sdp_rec = NULL;
+ if (bta_dm_search_cb.service_index == (BTA_USER_SERVICE_ID + 1)) {
+ p_sdp_rec = SDP_FindServiceUUIDInDb(bta_dm_search_cb.p_sdp_db,
+ &bta_dm_search_cb.uuid, p_sdp_rec);
- p_sdp_rec = NULL;
- if( bta_dm_search_cb.service_index == (BTA_USER_SERVICE_ID+1) )
- {
- p_sdp_rec = SDP_FindServiceUUIDInDb(bta_dm_search_cb.p_sdp_db, &bta_dm_search_cb.uuid, p_sdp_rec);
-
- if (p_sdp_rec && SDP_FindProtocolListElemInRec(p_sdp_rec, UUID_PROTOCOL_RFCOMM, &pe))
- {
- bta_dm_search_cb.peer_scn = (uint8_t) pe.params[0];
- scn_found = true;
- }
- }
- else
- {
- service = bta_service_id_to_uuid_lkup_tbl[bta_dm_search_cb.service_index-1];
- p_sdp_rec = SDP_FindServiceInDb(bta_dm_search_cb.p_sdp_db, service, p_sdp_rec);
- }
+ if (p_sdp_rec && SDP_FindProtocolListElemInRec(
+ p_sdp_rec, UUID_PROTOCOL_RFCOMM, &pe)) {
+ bta_dm_search_cb.peer_scn = (uint8_t)pe.params[0];
+ scn_found = true;
+ }
+ } else {
+ service =
+ bta_service_id_to_uuid_lkup_tbl[bta_dm_search_cb.service_index - 1];
+ p_sdp_rec =
+ SDP_FindServiceInDb(bta_dm_search_cb.p_sdp_db, service, p_sdp_rec);
+ }
#if (BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE)
- /* finished with BR/EDR services, now we check the result for GATT based service UUID */
- if (bta_dm_search_cb.service_index == BTA_MAX_SERVICE_ID)
- {
- if (bta_dm_search_cb.uuid_to_search != 0 && p_uuid != NULL)
- {
- p_uuid += (bta_dm_search_cb.num_uuid - bta_dm_search_cb.uuid_to_search);
- /* only support 16 bits UUID for now */
- service = p_uuid->uu.uuid16;
+ /* finished with BR/EDR services, now we check the result for GATT based
+ * service UUID */
+ if (bta_dm_search_cb.service_index == BTA_MAX_SERVICE_ID) {
+ if (bta_dm_search_cb.uuid_to_search != 0 && p_uuid != NULL) {
+ p_uuid +=
+ (bta_dm_search_cb.num_uuid - bta_dm_search_cb.uuid_to_search);
+ /* only support 16 bits UUID for now */
+ service = p_uuid->uu.uuid16;
+ }
+ /* all GATT based services */
+ do {
+ /* find a service record, report it */
+ p_sdp_rec =
+ SDP_FindServiceInDb(bta_dm_search_cb.p_sdp_db, 0, p_sdp_rec);
+ if (p_sdp_rec) {
+ if (SDP_FindServiceUUIDInRec(p_sdp_rec, &service_uuid)) {
+ /* send result back to app now, one by one */
+ bdcpy(result.disc_ble_res.bd_addr, bta_dm_search_cb.peer_bdaddr);
+ strlcpy((char*)result.disc_ble_res.bd_name, bta_dm_get_remname(),
+ BD_NAME_LEN);
+ result.disc_ble_res.service.len = service_uuid.len;
+ result.disc_ble_res.service.uu.uuid16 = service_uuid.uu.uuid16;
- }
- /* all GATT based services */
- do
- {
- /* find a service record, report it */
- p_sdp_rec = SDP_FindServiceInDb(bta_dm_search_cb.p_sdp_db,
- 0, p_sdp_rec);
- if (p_sdp_rec)
- {
- if (SDP_FindServiceUUIDInRec(p_sdp_rec, &service_uuid))
- {
- /* send result back to app now, one by one */
- bdcpy (result.disc_ble_res.bd_addr, bta_dm_search_cb.peer_bdaddr);
- strlcpy((char*)result.disc_ble_res.bd_name, bta_dm_get_remname(), BD_NAME_LEN);
- result.disc_ble_res.service.len = service_uuid.len;
- result.disc_ble_res.service.uu.uuid16 = service_uuid.uu.uuid16;
-
- bta_dm_search_cb.p_search_cback(BTA_DM_DISC_BLE_RES_EVT, &result);
- }
- }
-
- if (bta_dm_search_cb.uuid_to_search > 0)
- break;
-
- } while (p_sdp_rec);
+ bta_dm_search_cb.p_search_cback(BTA_DM_DISC_BLE_RES_EVT, &result);
}
- else
+ }
+
+ if (bta_dm_search_cb.uuid_to_search > 0) break;
+
+ } while (p_sdp_rec);
+ } else
#endif
- {
- /* SDP_DB_FULL means some records with the
- required attributes were received */
- if (((p_data->sdp_event.sdp_result == SDP_DB_FULL) &&
- bta_dm_search_cb.services != BTA_ALL_SERVICE_MASK) ||
- (p_sdp_rec != NULL))
- {
- if (service != UUID_SERVCLASS_PNP_INFORMATION)
- {
- uint16_t tmp_svc = 0xFFFF;
- bta_dm_search_cb.services_found |=
- (tBTA_SERVICE_MASK)(BTA_SERVICE_ID_TO_SERVICE_MASK(bta_dm_search_cb.service_index-1));
- tmp_svc = bta_service_id_to_uuid_lkup_tbl[bta_dm_search_cb.service_index-1];
- /* Add to the list of UUIDs */
- sdpu_uuid16_to_uuid128(tmp_svc, uuid_list[num_uuids]);
- num_uuids++;
- }
- }
- }
+ {
+ /* SDP_DB_FULL means some records with the
+ required attributes were received */
+ if (((p_data->sdp_event.sdp_result == SDP_DB_FULL) &&
+ bta_dm_search_cb.services != BTA_ALL_SERVICE_MASK) ||
+ (p_sdp_rec != NULL)) {
+ if (service != UUID_SERVCLASS_PNP_INFORMATION) {
+ uint16_t tmp_svc = 0xFFFF;
+ bta_dm_search_cb.services_found |=
+ (tBTA_SERVICE_MASK)(BTA_SERVICE_ID_TO_SERVICE_MASK(
+ bta_dm_search_cb.service_index - 1));
+ tmp_svc =
+ bta_service_id_to_uuid_lkup_tbl[bta_dm_search_cb.service_index -
+ 1];
+ /* Add to the list of UUIDs */
+ sdpu_uuid16_to_uuid128(tmp_svc, uuid_list[num_uuids]);
+ num_uuids++;
+ }
+ }
+ }
- if(bta_dm_search_cb.services == BTA_ALL_SERVICE_MASK &&
- bta_dm_search_cb.services_to_search == 0)
- {
+ if (bta_dm_search_cb.services == BTA_ALL_SERVICE_MASK &&
+ bta_dm_search_cb.services_to_search == 0) {
#if (BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE)
- if ( bta_dm_search_cb.service_index == BTA_BLE_SERVICE_ID &&
- bta_dm_search_cb.uuid_to_search > 0)
- bta_dm_search_cb.uuid_to_search --;
+ if (bta_dm_search_cb.service_index == BTA_BLE_SERVICE_ID &&
+ bta_dm_search_cb.uuid_to_search > 0)
+ bta_dm_search_cb.uuid_to_search--;
- if (bta_dm_search_cb.uuid_to_search == 0 ||
- bta_dm_search_cb.service_index != BTA_BLE_SERVICE_ID)
+ if (bta_dm_search_cb.uuid_to_search == 0 ||
+ bta_dm_search_cb.service_index != BTA_BLE_SERVICE_ID)
#endif
- bta_dm_search_cb.service_index++;
- }
- else /* regular one service per search or PNP search */
- break;
+ bta_dm_search_cb.service_index++;
+ } else /* regular one service per search or PNP search */
+ break;
- } while (bta_dm_search_cb.service_index <= BTA_MAX_SERVICE_ID);
+ } while (bta_dm_search_cb.service_index <= BTA_MAX_SERVICE_ID);
- APPL_TRACE_DEBUG("%s services_found = %04x", __func__,
- bta_dm_search_cb.services_found);
+ APPL_TRACE_DEBUG("%s services_found = %04x", __func__,
+ bta_dm_search_cb.services_found);
- /* Collect the 128-bit services here and put them into the list */
- if(bta_dm_search_cb.services == BTA_ALL_SERVICE_MASK)
- {
- p_sdp_rec = NULL;
- do
- {
- tBT_UUID temp_uuid;
- /* find a service record, report it */
- p_sdp_rec = SDP_FindServiceInDb_128bit(bta_dm_search_cb.p_sdp_db, p_sdp_rec);
- if (p_sdp_rec)
- {
- if (SDP_FindServiceUUIDInRec_128bit(p_sdp_rec, &temp_uuid))
- {
- memcpy(uuid_list[num_uuids], temp_uuid.uu.uuid128, MAX_UUID_SIZE);
- num_uuids++;
- }
- }
- } while (p_sdp_rec);
+ /* Collect the 128-bit services here and put them into the list */
+ if (bta_dm_search_cb.services == BTA_ALL_SERVICE_MASK) {
+ p_sdp_rec = NULL;
+ do {
+ tBT_UUID temp_uuid;
+ /* find a service record, report it */
+ p_sdp_rec =
+ SDP_FindServiceInDb_128bit(bta_dm_search_cb.p_sdp_db, p_sdp_rec);
+ if (p_sdp_rec) {
+ if (SDP_FindServiceUUIDInRec_128bit(p_sdp_rec, &temp_uuid)) {
+ memcpy(uuid_list[num_uuids], temp_uuid.uu.uuid128, MAX_UUID_SIZE);
+ num_uuids++;
+ }
}
- /* if there are more services to search for */
- if(bta_dm_search_cb.services_to_search)
- {
- /* Free up the p_sdp_db before checking the next one */
- bta_dm_free_sdp_db(NULL);
- bta_dm_find_services(bta_dm_search_cb.peer_bdaddr);
- }
- else
- {
- /* callbacks */
- /* start next bd_addr if necessary */
-
- BTM_SecDeleteRmtNameNotifyCallback(&bta_dm_service_search_remname_cback);
-
- p_msg = (tBTA_DM_MSG *)osi_malloc(sizeof(tBTA_DM_MSG));
- p_msg->hdr.event = BTA_DM_DISCOVERY_RESULT_EVT;
- p_msg->disc_result.result.disc_res.result = BTA_SUCCESS;
- p_msg->disc_result.result.disc_res.p_raw_data = NULL;
- p_msg->disc_result.result.disc_res.raw_data_size = 0;
- p_msg->disc_result.result.disc_res.num_uuids = num_uuids;
- p_msg->disc_result.result.disc_res.p_uuid_list = NULL;
- if (num_uuids > 0) {
- p_msg->disc_result.result.disc_res.p_uuid_list =
- (uint8_t *)osi_malloc(num_uuids * MAX_UUID_SIZE);
- memcpy(p_msg->disc_result.result.disc_res.p_uuid_list,
- uuid_list, num_uuids * MAX_UUID_SIZE);
- }
- // Copy the raw_data to the discovery result structure
- if (bta_dm_search_cb.p_sdp_db != NULL &&
- bta_dm_search_cb.p_sdp_db->raw_used != 0 &&
- bta_dm_search_cb.p_sdp_db->raw_data != NULL) {
- APPL_TRACE_DEBUG("%s raw_data used = 0x%x raw_data_ptr = 0x%x",
- __func__,
- bta_dm_search_cb.p_sdp_db->raw_used,
- bta_dm_search_cb.p_sdp_db->raw_data);
-
- p_msg->disc_result.result.disc_res.p_raw_data =
- (uint8_t *) osi_malloc(bta_dm_search_cb.p_sdp_db->raw_used);
- memcpy(p_msg->disc_result.result.disc_res.p_raw_data,
- bta_dm_search_cb.p_sdp_db->raw_data,
- bta_dm_search_cb.p_sdp_db->raw_used);
-
- p_msg->disc_result.result.disc_res.raw_data_size =
- bta_dm_search_cb.p_sdp_db->raw_used;
-
- bta_dm_search_cb.p_sdp_db->raw_data = NULL; //no need to free this - it is a global assigned.
- bta_dm_search_cb.p_sdp_db->raw_used = 0;
- bta_dm_search_cb.p_sdp_db->raw_size = 0;
- } else {
- APPL_TRACE_DEBUG("%s raw data size is 0 or raw_data is null!!",
- __func__);
- }
- /* Done with p_sdp_db. Free it */
- bta_dm_free_sdp_db(NULL);
- p_msg->disc_result.result.disc_res.services = bta_dm_search_cb.services_found;
-
- // Piggy back the SCN over result field
- if (scn_found) {
- p_msg->disc_result.result.disc_res.result = (3 + bta_dm_search_cb.peer_scn);
- p_msg->disc_result.result.disc_res.services |= BTA_USER_SERVICE_MASK;
-
- APPL_TRACE_EVENT(" Piggy back the SCN over result field SCN=%d", bta_dm_search_cb.peer_scn);
-
- }
- bdcpy(p_msg->disc_result.result.disc_res.bd_addr,
- bta_dm_search_cb.peer_bdaddr);
- strlcpy((char*)p_msg->disc_result.result.disc_res.bd_name,
- bta_dm_get_remname(), BD_NAME_LEN);
-
- bta_sys_sendmsg(p_msg);
- }
- } else {
- /* conn failed. No need for timer */
- if(p_data->sdp_event.sdp_result == SDP_CONN_FAILED || p_data->sdp_event.sdp_result == SDP_CONN_REJECTED
- || p_data->sdp_event.sdp_result == SDP_SECURITY_ERR)
- bta_dm_search_cb.wait_disc = false;
-
- /* not able to connect go to next device */
- if (bta_dm_search_cb.p_sdp_db)
- osi_free_and_reset((void **)&bta_dm_search_cb.p_sdp_db);
-
- BTM_SecDeleteRmtNameNotifyCallback(&bta_dm_service_search_remname_cback);
-
- p_msg = (tBTA_DM_MSG *)osi_malloc(sizeof(tBTA_DM_MSG));
- p_msg->hdr.event = BTA_DM_DISCOVERY_RESULT_EVT;
- p_msg->disc_result.result.disc_res.result = BTA_FAILURE;
- p_msg->disc_result.result.disc_res.services = bta_dm_search_cb.services_found;
- bdcpy(p_msg->disc_result.result.disc_res.bd_addr,
- bta_dm_search_cb.peer_bdaddr);
- strlcpy((char*)p_msg->disc_result.result.disc_res.bd_name,
- bta_dm_get_remname(), BD_NAME_LEN);
-
- bta_sys_sendmsg(p_msg);
+ } while (p_sdp_rec);
}
+ /* if there are more services to search for */
+ if (bta_dm_search_cb.services_to_search) {
+ /* Free up the p_sdp_db before checking the next one */
+ bta_dm_free_sdp_db(NULL);
+ bta_dm_find_services(bta_dm_search_cb.peer_bdaddr);
+ } else {
+ /* callbacks */
+ /* start next bd_addr if necessary */
+
+ BTM_SecDeleteRmtNameNotifyCallback(&bta_dm_service_search_remname_cback);
+
+ p_msg = (tBTA_DM_MSG*)osi_malloc(sizeof(tBTA_DM_MSG));
+ p_msg->hdr.event = BTA_DM_DISCOVERY_RESULT_EVT;
+ p_msg->disc_result.result.disc_res.result = BTA_SUCCESS;
+ p_msg->disc_result.result.disc_res.p_raw_data = NULL;
+ p_msg->disc_result.result.disc_res.raw_data_size = 0;
+ p_msg->disc_result.result.disc_res.num_uuids = num_uuids;
+ p_msg->disc_result.result.disc_res.p_uuid_list = NULL;
+ if (num_uuids > 0) {
+ p_msg->disc_result.result.disc_res.p_uuid_list =
+ (uint8_t*)osi_malloc(num_uuids * MAX_UUID_SIZE);
+ memcpy(p_msg->disc_result.result.disc_res.p_uuid_list, uuid_list,
+ num_uuids * MAX_UUID_SIZE);
+ }
+ // Copy the raw_data to the discovery result structure
+ if (bta_dm_search_cb.p_sdp_db != NULL &&
+ bta_dm_search_cb.p_sdp_db->raw_used != 0 &&
+ bta_dm_search_cb.p_sdp_db->raw_data != NULL) {
+ APPL_TRACE_DEBUG("%s raw_data used = 0x%x raw_data_ptr = 0x%x",
+ __func__, bta_dm_search_cb.p_sdp_db->raw_used,
+ bta_dm_search_cb.p_sdp_db->raw_data);
+
+ p_msg->disc_result.result.disc_res.p_raw_data =
+ (uint8_t*)osi_malloc(bta_dm_search_cb.p_sdp_db->raw_used);
+ memcpy(p_msg->disc_result.result.disc_res.p_raw_data,
+ bta_dm_search_cb.p_sdp_db->raw_data,
+ bta_dm_search_cb.p_sdp_db->raw_used);
+
+ p_msg->disc_result.result.disc_res.raw_data_size =
+ bta_dm_search_cb.p_sdp_db->raw_used;
+
+ bta_dm_search_cb.p_sdp_db->raw_data =
+ NULL; // no need to free this - it is a global assigned.
+ bta_dm_search_cb.p_sdp_db->raw_used = 0;
+ bta_dm_search_cb.p_sdp_db->raw_size = 0;
+ } else {
+ APPL_TRACE_DEBUG("%s raw data size is 0 or raw_data is null!!",
+ __func__);
+ }
+ /* Done with p_sdp_db. Free it */
+ bta_dm_free_sdp_db(NULL);
+ p_msg->disc_result.result.disc_res.services =
+ bta_dm_search_cb.services_found;
+
+ // Piggy back the SCN over result field
+ if (scn_found) {
+ p_msg->disc_result.result.disc_res.result =
+ (3 + bta_dm_search_cb.peer_scn);
+ p_msg->disc_result.result.disc_res.services |= BTA_USER_SERVICE_MASK;
+
+ APPL_TRACE_EVENT(" Piggy back the SCN over result field SCN=%d",
+ bta_dm_search_cb.peer_scn);
+ }
+ bdcpy(p_msg->disc_result.result.disc_res.bd_addr,
+ bta_dm_search_cb.peer_bdaddr);
+ strlcpy((char*)p_msg->disc_result.result.disc_res.bd_name,
+ bta_dm_get_remname(), BD_NAME_LEN);
+
+ bta_sys_sendmsg(p_msg);
+ }
+ } else {
+ /* conn failed. No need for timer */
+ if (p_data->sdp_event.sdp_result == SDP_CONN_FAILED ||
+ p_data->sdp_event.sdp_result == SDP_CONN_REJECTED ||
+ p_data->sdp_event.sdp_result == SDP_SECURITY_ERR)
+ bta_dm_search_cb.wait_disc = false;
+
+ /* not able to connect go to next device */
+ if (bta_dm_search_cb.p_sdp_db)
+ osi_free_and_reset((void**)&bta_dm_search_cb.p_sdp_db);
+
+ BTM_SecDeleteRmtNameNotifyCallback(&bta_dm_service_search_remname_cback);
+
+ p_msg = (tBTA_DM_MSG*)osi_malloc(sizeof(tBTA_DM_MSG));
+ p_msg->hdr.event = BTA_DM_DISCOVERY_RESULT_EVT;
+ p_msg->disc_result.result.disc_res.result = BTA_FAILURE;
+ p_msg->disc_result.result.disc_res.services =
+ bta_dm_search_cb.services_found;
+ bdcpy(p_msg->disc_result.result.disc_res.bd_addr,
+ bta_dm_search_cb.peer_bdaddr);
+ strlcpy((char*)p_msg->disc_result.result.disc_res.bd_name,
+ bta_dm_get_remname(), BD_NAME_LEN);
+
+ bta_sys_sendmsg(p_msg);
+ }
}
/*******************************************************************************
@@ -1850,45 +1769,47 @@
* Returns void
*
******************************************************************************/
-void bta_dm_search_cmpl(tBTA_DM_MSG *p_data)
-{
- APPL_TRACE_EVENT("%s", __func__);
+void bta_dm_search_cmpl(tBTA_DM_MSG* p_data) {
+ APPL_TRACE_EVENT("%s", __func__);
#if (BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE)
- osi_free_and_reset((void **)&bta_dm_search_cb.p_srvc_uuid);
+ osi_free_and_reset((void**)&bta_dm_search_cb.p_srvc_uuid);
#endif
- if (p_data->hdr.layer_specific == BTA_DM_API_DI_DISCOVER_EVT)
- bta_dm_di_disc_cmpl(p_data);
- else
- bta_dm_search_cb.p_search_cback(BTA_DM_DISC_CMPL_EVT, NULL);
+ if (p_data->hdr.layer_specific == BTA_DM_API_DI_DISCOVER_EVT)
+ bta_dm_di_disc_cmpl(p_data);
+ else
+ bta_dm_search_cb.p_search_cback(BTA_DM_DISC_CMPL_EVT, NULL);
}
/*******************************************************************************
*
* Function bta_dm_disc_result
*
- * Description Service discovery result when discovering services on a device
+ * Description Service discovery result when discovering services on a
+ *device
*
* Returns void
*
******************************************************************************/
-void bta_dm_disc_result (tBTA_DM_MSG *p_data)
-{
- APPL_TRACE_EVENT("%s", __func__);
+void bta_dm_disc_result(tBTA_DM_MSG* p_data) {
+ APPL_TRACE_EVENT("%s", __func__);
#if (BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE)
- /* if any BR/EDR service discovery has been done, report the event */
- if ((bta_dm_search_cb.services & ((BTA_ALL_SERVICE_MASK | BTA_USER_SERVICE_MASK ) & ~BTA_BLE_SERVICE_MASK)))
+ /* if any BR/EDR service discovery has been done, report the event */
+ if ((bta_dm_search_cb.services &
+ ((BTA_ALL_SERVICE_MASK | BTA_USER_SERVICE_MASK) &
+ ~BTA_BLE_SERVICE_MASK)))
#endif
- bta_dm_search_cb.p_search_cback(BTA_DM_DISC_RES_EVT, &p_data->disc_result.result);
+ bta_dm_search_cb.p_search_cback(BTA_DM_DISC_RES_EVT,
+ &p_data->disc_result.result);
- tBTA_DM_MSG *p_msg = (tBTA_DM_MSG *)osi_malloc(sizeof(tBTA_DM_MSG));
+ tBTA_DM_MSG* p_msg = (tBTA_DM_MSG*)osi_malloc(sizeof(tBTA_DM_MSG));
- /* send a message to change state */
- p_msg->hdr.event = BTA_DM_SEARCH_CMPL_EVT;
- p_msg->hdr.layer_specific = BTA_DM_API_DISCOVER_EVT;
- bta_sys_sendmsg(p_msg);
+ /* send a message to change state */
+ p_msg->hdr.event = BTA_DM_SEARCH_CMPL_EVT;
+ p_msg->hdr.layer_specific = BTA_DM_API_DISCOVER_EVT;
+ bta_sys_sendmsg(p_msg);
}
/*******************************************************************************
@@ -1900,35 +1821,31 @@
* Returns void
*
******************************************************************************/
-void bta_dm_search_result (tBTA_DM_MSG *p_data)
-{
- APPL_TRACE_DEBUG("%s searching:0x%04x, result:0x%04x", __func__,
- bta_dm_search_cb.services,
- p_data->disc_result.result.disc_res.services);
+void bta_dm_search_result(tBTA_DM_MSG* p_data) {
+ APPL_TRACE_DEBUG("%s searching:0x%04x, result:0x%04x", __func__,
+ bta_dm_search_cb.services,
+ p_data->disc_result.result.disc_res.services);
- /* call back if application wants name discovery or found services that application is searching */
- if (( !bta_dm_search_cb.services )
- ||(( bta_dm_search_cb.services ) && ( p_data->disc_result.result.disc_res.services )))
- {
- bta_dm_search_cb.p_search_cback(BTA_DM_DISC_RES_EVT, &p_data->disc_result.result);
- }
+ /* call back if application wants name discovery or found services that
+ * application is searching */
+ if ((!bta_dm_search_cb.services) ||
+ ((bta_dm_search_cb.services) &&
+ (p_data->disc_result.result.disc_res.services))) {
+ bta_dm_search_cb.p_search_cback(BTA_DM_DISC_RES_EVT,
+ &p_data->disc_result.result);
+ }
- /* if searching did not initiate to create link */
- if(!bta_dm_search_cb.wait_disc )
- {
- /* if service searching is done with EIR, don't search next device */
- if( bta_dm_search_cb.p_btm_inq_info )
- bta_dm_discover_next_device();
- }
- else
- {
- /* wait until link is disconnected or timeout */
- bta_dm_search_cb.sdp_results = true;
- alarm_set_on_queue(bta_dm_search_cb.search_timer,
- 1000 * (L2CAP_LINK_INACTIVITY_TOUT + 1),
- bta_dm_search_timer_cback, NULL,
- btu_bta_alarm_queue);
- }
+ /* if searching did not initiate to create link */
+ if (!bta_dm_search_cb.wait_disc) {
+ /* if service searching is done with EIR, don't search next device */
+ if (bta_dm_search_cb.p_btm_inq_info) bta_dm_discover_next_device();
+ } else {
+ /* wait until link is disconnected or timeout */
+ bta_dm_search_cb.sdp_results = true;
+ alarm_set_on_queue(bta_dm_search_cb.search_timer,
+ 1000 * (L2CAP_LINK_INACTIVITY_TOUT + 1),
+ bta_dm_search_timer_cback, NULL, btu_bta_alarm_queue);
+ }
}
/*******************************************************************************
@@ -1941,17 +1858,14 @@
* Returns void
*
******************************************************************************/
-static void bta_dm_search_timer_cback(UNUSED_ATTR void *data)
-{
- APPL_TRACE_EVENT("%s", __func__);
- bta_dm_search_cb.wait_disc = false;
+static void bta_dm_search_timer_cback(UNUSED_ATTR void* data) {
+ APPL_TRACE_EVENT("%s", __func__);
+ bta_dm_search_cb.wait_disc = false;
- /* proceed with next device */
- bta_dm_discover_next_device();
-
+ /* proceed with next device */
+ bta_dm_discover_next_device();
}
-
/*******************************************************************************
*
* Function bta_dm_free_sdp_db
@@ -1961,9 +1875,8 @@
* Returns void
*
******************************************************************************/
-void bta_dm_free_sdp_db (UNUSED_ATTR tBTA_DM_MSG *p_data)
-{
- osi_free_and_reset((void **)&bta_dm_search_cb.p_sdp_db);
+void bta_dm_free_sdp_db(UNUSED_ATTR tBTA_DM_MSG* p_data) {
+ osi_free_and_reset((void**)&bta_dm_search_cb.p_sdp_db);
}
/*******************************************************************************
@@ -1975,13 +1888,11 @@
* Returns void
*
******************************************************************************/
-void bta_dm_queue_search(tBTA_DM_MSG *p_data)
-{
- osi_free(bta_dm_search_cb.p_search_queue);
- bta_dm_search_cb.p_search_queue =
- (tBTA_DM_MSG *)osi_malloc(sizeof(tBTA_DM_API_SEARCH));
- memcpy(bta_dm_search_cb.p_search_queue, p_data,
- sizeof(tBTA_DM_API_SEARCH));
+void bta_dm_queue_search(tBTA_DM_MSG* p_data) {
+ osi_free(bta_dm_search_cb.p_search_queue);
+ bta_dm_search_cb.p_search_queue =
+ (tBTA_DM_MSG*)osi_malloc(sizeof(tBTA_DM_API_SEARCH));
+ memcpy(bta_dm_search_cb.p_search_queue, p_data, sizeof(tBTA_DM_API_SEARCH));
}
/*******************************************************************************
@@ -1993,13 +1904,11 @@
* Returns void
*
******************************************************************************/
-void bta_dm_queue_disc(tBTA_DM_MSG *p_data)
-{
- osi_free(bta_dm_search_cb.p_search_queue);
- bta_dm_search_cb.p_search_queue =
- (tBTA_DM_MSG *)osi_malloc(sizeof(tBTA_DM_API_DISCOVER));
- memcpy(bta_dm_search_cb.p_search_queue, p_data,
- sizeof(tBTA_DM_API_DISCOVER));
+void bta_dm_queue_disc(tBTA_DM_MSG* p_data) {
+ osi_free(bta_dm_search_cb.p_search_queue);
+ bta_dm_search_cb.p_search_queue =
+ (tBTA_DM_MSG*)osi_malloc(sizeof(tBTA_DM_API_DISCOVER));
+ memcpy(bta_dm_search_cb.p_search_queue, p_data, sizeof(tBTA_DM_API_DISCOVER));
}
/*******************************************************************************
@@ -2011,9 +1920,8 @@
* Returns void
*
******************************************************************************/
-void bta_dm_search_clear_queue(UNUSED_ATTR tBTA_DM_MSG *p_data)
-{
- osi_free_and_reset((void **)&bta_dm_search_cb.p_search_queue);
+void bta_dm_search_clear_queue(UNUSED_ATTR tBTA_DM_MSG* p_data) {
+ osi_free_and_reset((void**)&bta_dm_search_cb.p_search_queue);
}
/*******************************************************************************
@@ -2025,14 +1933,11 @@
* Returns void
*
******************************************************************************/
-void bta_dm_search_cancel_cmpl (UNUSED_ATTR tBTA_DM_MSG *p_data)
-{
- if(bta_dm_search_cb.p_search_queue)
- {
- bta_sys_sendmsg(bta_dm_search_cb.p_search_queue);
- bta_dm_search_cb.p_search_queue = NULL;
- }
-
+void bta_dm_search_cancel_cmpl(UNUSED_ATTR tBTA_DM_MSG* p_data) {
+ if (bta_dm_search_cb.p_search_queue) {
+ bta_sys_sendmsg(bta_dm_search_cb.p_search_queue);
+ bta_dm_search_cb.p_search_queue = NULL;
+ }
}
/*******************************************************************************
@@ -2045,13 +1950,11 @@
* Returns void
*
******************************************************************************/
-void bta_dm_search_cancel_transac_cmpl(UNUSED_ATTR tBTA_DM_MSG *p_data)
-{
- osi_free_and_reset((void **)&bta_dm_search_cb.p_sdp_db);
- bta_dm_search_cancel_notify(NULL);
+void bta_dm_search_cancel_transac_cmpl(UNUSED_ATTR tBTA_DM_MSG* p_data) {
+ osi_free_and_reset((void**)&bta_dm_search_cb.p_sdp_db);
+ bta_dm_search_cancel_notify(NULL);
}
-
/*******************************************************************************
*
* Function bta_dm_search_cancel_notify
@@ -2061,23 +1964,18 @@
* Returns void
*
******************************************************************************/
-void bta_dm_search_cancel_notify (UNUSED_ATTR tBTA_DM_MSG *p_data)
-{
- if (bta_dm_search_cb.p_search_cback)
- {
- bta_dm_search_cb.p_search_cback(BTA_DM_SEARCH_CANCEL_CMPL_EVT, NULL);
- }
- if (!bta_dm_search_cb.name_discover_done)
- {
- BTM_CancelRemoteDeviceName();
- }
+void bta_dm_search_cancel_notify(UNUSED_ATTR tBTA_DM_MSG* p_data) {
+ if (bta_dm_search_cb.p_search_cback) {
+ bta_dm_search_cb.p_search_cback(BTA_DM_SEARCH_CANCEL_CMPL_EVT, NULL);
+ }
+ if (!bta_dm_search_cb.name_discover_done) {
+ BTM_CancelRemoteDeviceName();
+ }
#if (BLE_INCLUDED == TRUE) && (BTA_GATT_INCLUDED == TRUE)
- if (bta_dm_search_cb.gatt_disc_active)
- {
- bta_dm_cancel_gatt_discovery(bta_dm_search_cb.peer_bdaddr);
- }
+ if (bta_dm_search_cb.gatt_disc_active) {
+ bta_dm_cancel_gatt_discovery(bta_dm_search_cb.peer_bdaddr);
+ }
#endif
-
}
/*******************************************************************************
@@ -2089,113 +1987,116 @@
* Returns void
*
******************************************************************************/
-static void bta_dm_find_services ( BD_ADDR bd_addr)
-{
+static void bta_dm_find_services(BD_ADDR bd_addr) {
+ tSDP_UUID uuid;
- tSDP_UUID uuid;
+ memset(&uuid, 0, sizeof(tSDP_UUID));
- memset(&uuid, 0, sizeof(tSDP_UUID));
-
- while(bta_dm_search_cb.service_index < BTA_MAX_SERVICE_ID)
- {
- if( bta_dm_search_cb.services_to_search
- & (tBTA_SERVICE_MASK)(BTA_SERVICE_ID_TO_SERVICE_MASK(bta_dm_search_cb.service_index)))
- {
- bta_dm_search_cb.p_sdp_db = (tSDP_DISCOVERY_DB *)osi_malloc(BTA_DM_SDP_DB_SIZE);
- APPL_TRACE_DEBUG("bta_dm_search_cb.services = %04x***********", bta_dm_search_cb.services);
- /* try to search all services by search based on L2CAP UUID */
- if (bta_dm_search_cb.services == BTA_ALL_SERVICE_MASK) {
- LOG_INFO(LOG_TAG, "%s services_to_search=%08x", __func__,
- bta_dm_search_cb.services_to_search);
- if (bta_dm_search_cb.services_to_search & BTA_RES_SERVICE_MASK) {
- uuid.uu.uuid16 = bta_service_id_to_uuid_lkup_tbl[0];
- bta_dm_search_cb.services_to_search &= ~BTA_RES_SERVICE_MASK;
- } else {
- uuid.uu.uuid16 = UUID_PROTOCOL_L2CAP;
- bta_dm_search_cb.services_to_search = 0;
- }
- } else {
-#if (BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE)
- /* for LE only profile */
- if (bta_dm_search_cb.service_index == BTA_BLE_SERVICE_ID) {
- if (bta_dm_search_cb.uuid_to_search > 0 &&
- bta_dm_search_cb.p_srvc_uuid) {
- memcpy(&uuid,
- (const void *)(bta_dm_search_cb.p_srvc_uuid +
- bta_dm_search_cb.num_uuid -
- bta_dm_search_cb.uuid_to_search),
- sizeof(tBT_UUID));
-
- bta_dm_search_cb.uuid_to_search--;
- } else {
- uuid.uu.uuid16 = bta_service_id_to_uuid_lkup_tbl[bta_dm_search_cb.service_index];
- }
-
- /* last one? clear the BLE service bit if all discovery has been done */
- if (bta_dm_search_cb.uuid_to_search == 0)
- bta_dm_search_cb.services_to_search &=
- (tBTA_SERVICE_MASK)(~(BTA_SERVICE_ID_TO_SERVICE_MASK(bta_dm_search_cb.service_index)));
-
- } else
-#endif
- {
- /* remove the service from services to be searched */
- bta_dm_search_cb.services_to_search &=
- (tBTA_SERVICE_MASK)(~(BTA_SERVICE_ID_TO_SERVICE_MASK(bta_dm_search_cb.service_index)));
- uuid.uu.uuid16 = bta_service_id_to_uuid_lkup_tbl[bta_dm_search_cb.service_index];
- }
- }
-
- if (uuid.len == 0)
- uuid.len = LEN_UUID_16;
-
- if (bta_dm_search_cb.service_index == BTA_USER_SERVICE_ID) {
- memcpy(&uuid, &bta_dm_search_cb.uuid, sizeof(tSDP_UUID));
- }
-
- LOG_INFO(LOG_TAG, "%s search UUID = %04x", __func__,
- uuid.uu.uuid16);
- SDP_InitDiscoveryDb(bta_dm_search_cb.p_sdp_db, BTA_DM_SDP_DB_SIZE,
- 1, &uuid, 0, NULL);
-
- memset(g_disc_raw_data_buf, 0, sizeof(g_disc_raw_data_buf));
- bta_dm_search_cb.p_sdp_db->raw_data = g_disc_raw_data_buf;
-
- bta_dm_search_cb.p_sdp_db->raw_size = MAX_DISC_RAW_DATA_BUF;
-
- if (!SDP_ServiceSearchAttributeRequest(bd_addr, bta_dm_search_cb.p_sdp_db, &bta_dm_sdp_callback)) {
- /*
- * If discovery is not successful with this device, then
- * proceed with the next one.
- */
- osi_free_and_reset((void **)&bta_dm_search_cb.p_sdp_db);
- bta_dm_search_cb.service_index = BTA_MAX_SERVICE_ID;
-
- } else {
-#if (BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE)
- if ((bta_dm_search_cb.service_index == BTA_BLE_SERVICE_ID &&
- bta_dm_search_cb.uuid_to_search == 0) ||
- bta_dm_search_cb.service_index != BTA_BLE_SERVICE_ID)
-#endif
- bta_dm_search_cb.service_index++;
- return;
- }
+ while (bta_dm_search_cb.service_index < BTA_MAX_SERVICE_ID) {
+ if (bta_dm_search_cb.services_to_search &
+ (tBTA_SERVICE_MASK)(
+ BTA_SERVICE_ID_TO_SERVICE_MASK(bta_dm_search_cb.service_index))) {
+ bta_dm_search_cb.p_sdp_db =
+ (tSDP_DISCOVERY_DB*)osi_malloc(BTA_DM_SDP_DB_SIZE);
+ APPL_TRACE_DEBUG("bta_dm_search_cb.services = %04x***********",
+ bta_dm_search_cb.services);
+ /* try to search all services by search based on L2CAP UUID */
+ if (bta_dm_search_cb.services == BTA_ALL_SERVICE_MASK) {
+ LOG_INFO(LOG_TAG, "%s services_to_search=%08x", __func__,
+ bta_dm_search_cb.services_to_search);
+ if (bta_dm_search_cb.services_to_search & BTA_RES_SERVICE_MASK) {
+ uuid.uu.uuid16 = bta_service_id_to_uuid_lkup_tbl[0];
+ bta_dm_search_cb.services_to_search &= ~BTA_RES_SERVICE_MASK;
+ } else {
+ uuid.uu.uuid16 = UUID_PROTOCOL_L2CAP;
+ bta_dm_search_cb.services_to_search = 0;
}
+ } else {
+#if (BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE)
+ /* for LE only profile */
+ if (bta_dm_search_cb.service_index == BTA_BLE_SERVICE_ID) {
+ if (bta_dm_search_cb.uuid_to_search > 0 &&
+ bta_dm_search_cb.p_srvc_uuid) {
+ memcpy(&uuid, (const void*)(bta_dm_search_cb.p_srvc_uuid +
+ bta_dm_search_cb.num_uuid -
+ bta_dm_search_cb.uuid_to_search),
+ sizeof(tBT_UUID));
- bta_dm_search_cb.service_index++;
+ bta_dm_search_cb.uuid_to_search--;
+ } else {
+ uuid.uu.uuid16 =
+ bta_service_id_to_uuid_lkup_tbl[bta_dm_search_cb.service_index];
+ }
+
+ /* last one? clear the BLE service bit if all discovery has been done
+ */
+ if (bta_dm_search_cb.uuid_to_search == 0)
+ bta_dm_search_cb.services_to_search &=
+ (tBTA_SERVICE_MASK)(~(BTA_SERVICE_ID_TO_SERVICE_MASK(
+ bta_dm_search_cb.service_index)));
+
+ } else
+#endif
+ {
+ /* remove the service from services to be searched */
+ bta_dm_search_cb.services_to_search &= (tBTA_SERVICE_MASK)(~(
+ BTA_SERVICE_ID_TO_SERVICE_MASK(bta_dm_search_cb.service_index)));
+ uuid.uu.uuid16 =
+ bta_service_id_to_uuid_lkup_tbl[bta_dm_search_cb.service_index];
+ }
+ }
+
+ if (uuid.len == 0) uuid.len = LEN_UUID_16;
+
+ if (bta_dm_search_cb.service_index == BTA_USER_SERVICE_ID) {
+ memcpy(&uuid, &bta_dm_search_cb.uuid, sizeof(tSDP_UUID));
+ }
+
+ LOG_INFO(LOG_TAG, "%s search UUID = %04x", __func__, uuid.uu.uuid16);
+ SDP_InitDiscoveryDb(bta_dm_search_cb.p_sdp_db, BTA_DM_SDP_DB_SIZE, 1,
+ &uuid, 0, NULL);
+
+ memset(g_disc_raw_data_buf, 0, sizeof(g_disc_raw_data_buf));
+ bta_dm_search_cb.p_sdp_db->raw_data = g_disc_raw_data_buf;
+
+ bta_dm_search_cb.p_sdp_db->raw_size = MAX_DISC_RAW_DATA_BUF;
+
+ if (!SDP_ServiceSearchAttributeRequest(bd_addr, bta_dm_search_cb.p_sdp_db,
+ &bta_dm_sdp_callback)) {
+ /*
+ * If discovery is not successful with this device, then
+ * proceed with the next one.
+ */
+ osi_free_and_reset((void**)&bta_dm_search_cb.p_sdp_db);
+ bta_dm_search_cb.service_index = BTA_MAX_SERVICE_ID;
+
+ } else {
+#if (BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE)
+ if ((bta_dm_search_cb.service_index == BTA_BLE_SERVICE_ID &&
+ bta_dm_search_cb.uuid_to_search == 0) ||
+ bta_dm_search_cb.service_index != BTA_BLE_SERVICE_ID)
+#endif
+ bta_dm_search_cb.service_index++;
+ return;
+ }
}
- /* no more services to be discovered */
- if (bta_dm_search_cb.service_index >= BTA_MAX_SERVICE_ID) {
- tBTA_DM_MSG *p_msg = (tBTA_DM_MSG *)osi_malloc(sizeof(tBTA_DM_MSG));
- p_msg->hdr.event = BTA_DM_DISCOVERY_RESULT_EVT;
- p_msg->disc_result.result.disc_res.services = bta_dm_search_cb.services_found;
- bdcpy(p_msg->disc_result.result.disc_res.bd_addr, bta_dm_search_cb.peer_bdaddr);
- strlcpy((char*)p_msg->disc_result.result.disc_res.bd_name,
- bta_dm_get_remname(), BD_NAME_LEN);
+ bta_dm_search_cb.service_index++;
+ }
- bta_sys_sendmsg(p_msg);
- }
+ /* no more services to be discovered */
+ if (bta_dm_search_cb.service_index >= BTA_MAX_SERVICE_ID) {
+ tBTA_DM_MSG* p_msg = (tBTA_DM_MSG*)osi_malloc(sizeof(tBTA_DM_MSG));
+ p_msg->hdr.event = BTA_DM_DISCOVERY_RESULT_EVT;
+ p_msg->disc_result.result.disc_res.services =
+ bta_dm_search_cb.services_found;
+ bdcpy(p_msg->disc_result.result.disc_res.bd_addr,
+ bta_dm_search_cb.peer_bdaddr);
+ strlcpy((char*)p_msg->disc_result.result.disc_res.bd_name,
+ bta_dm_get_remname(), BD_NAME_LEN);
+
+ bta_sys_sendmsg(p_msg);
+ }
}
/*******************************************************************************
@@ -2207,27 +2108,27 @@
* Returns void
*
******************************************************************************/
-static void bta_dm_discover_next_device(void)
-{
- APPL_TRACE_DEBUG("bta_dm_discover_next_device");
+static void bta_dm_discover_next_device(void) {
+ APPL_TRACE_DEBUG("bta_dm_discover_next_device");
- /* searching next device on inquiry result */
- if((bta_dm_search_cb.p_btm_inq_info = BTM_InqDbNext(bta_dm_search_cb.p_btm_inq_info)) != NULL) {
- bta_dm_search_cb.name_discover_done = false;
- bta_dm_search_cb.peer_name[0] = 0;
- bta_dm_discover_device(bta_dm_search_cb.p_btm_inq_info->results.remote_bd_addr);
- } else {
- tBTA_DM_MSG *p_msg =
- (tBTA_DM_MSG *)osi_malloc(sizeof(tBTA_DM_MSG));
+ /* searching next device on inquiry result */
+ if ((bta_dm_search_cb.p_btm_inq_info =
+ BTM_InqDbNext(bta_dm_search_cb.p_btm_inq_info)) != NULL) {
+ bta_dm_search_cb.name_discover_done = false;
+ bta_dm_search_cb.peer_name[0] = 0;
+ bta_dm_discover_device(
+ bta_dm_search_cb.p_btm_inq_info->results.remote_bd_addr);
+ } else {
+ tBTA_DM_MSG* p_msg = (tBTA_DM_MSG*)osi_malloc(sizeof(tBTA_DM_MSG));
- /* no devices, search complete */
- bta_dm_search_cb.services = 0;
+ /* no devices, search complete */
+ bta_dm_search_cb.services = 0;
- p_msg->hdr.event = BTA_DM_SEARCH_CMPL_EVT;
- p_msg->hdr.layer_specific = BTA_DM_API_DISCOVER_EVT;
+ p_msg->hdr.event = BTA_DM_SEARCH_CMPL_EVT;
+ p_msg->hdr.layer_specific = BTA_DM_API_DISCOVER_EVT;
- bta_sys_sendmsg(p_msg);
- }
+ bta_sys_sendmsg(p_msg);
+ }
}
/*******************************************************************************
@@ -2239,145 +2140,136 @@
* Returns void
*
******************************************************************************/
-static void bta_dm_discover_device(BD_ADDR remote_bd_addr)
-{
- tBT_TRANSPORT transport = BT_TRANSPORT_BR_EDR;
+static void bta_dm_discover_device(BD_ADDR remote_bd_addr) {
+ tBT_TRANSPORT transport = BT_TRANSPORT_BR_EDR;
#if (BLE_INCLUDED == TRUE)
- if (bta_dm_search_cb.transport == BTA_TRANSPORT_UNKNOWN)
- {
- tBT_DEVICE_TYPE dev_type;
- tBLE_ADDR_TYPE addr_type;
+ if (bta_dm_search_cb.transport == BTA_TRANSPORT_UNKNOWN) {
+ tBT_DEVICE_TYPE dev_type;
+ tBLE_ADDR_TYPE addr_type;
- BTM_ReadDevInfo(remote_bd_addr, &dev_type, &addr_type);
- if (dev_type == BT_DEVICE_TYPE_BLE || addr_type == BLE_ADDR_RANDOM)
- transport = BT_TRANSPORT_LE;
- } else {
- transport = bta_dm_search_cb.transport;
- }
+ BTM_ReadDevInfo(remote_bd_addr, &dev_type, &addr_type);
+ if (dev_type == BT_DEVICE_TYPE_BLE || addr_type == BLE_ADDR_RANDOM)
+ transport = BT_TRANSPORT_LE;
+ } else {
+ transport = bta_dm_search_cb.transport;
+ }
#endif
- /* Reset transport state for next discovery */
- bta_dm_search_cb.transport = BTA_TRANSPORT_UNKNOWN;
+ /* Reset transport state for next discovery */
+ bta_dm_search_cb.transport = BTA_TRANSPORT_UNKNOWN;
- APPL_TRACE_DEBUG("%s BDA:0x%02X%02X%02X%02X%02X%02X", __func__,
- remote_bd_addr[0],remote_bd_addr[1],
- remote_bd_addr[2],remote_bd_addr[3],
- remote_bd_addr[4],remote_bd_addr[5]);
+ APPL_TRACE_DEBUG("%s BDA:0x%02X%02X%02X%02X%02X%02X", __func__,
+ remote_bd_addr[0], remote_bd_addr[1], remote_bd_addr[2],
+ remote_bd_addr[3], remote_bd_addr[4], remote_bd_addr[5]);
- bdcpy(bta_dm_search_cb.peer_bdaddr, remote_bd_addr);
+ bdcpy(bta_dm_search_cb.peer_bdaddr, remote_bd_addr);
- APPL_TRACE_DEBUG("%s name_discover_done = %d p_btm_inq_info 0x%x state = %d, transport=%d",
- __func__,
- bta_dm_search_cb.name_discover_done,
- bta_dm_search_cb.p_btm_inq_info,
- bta_dm_search_cb.state,
- transport);
+ APPL_TRACE_DEBUG(
+ "%s name_discover_done = %d p_btm_inq_info 0x%x state = %d, transport=%d",
+ __func__, bta_dm_search_cb.name_discover_done,
+ bta_dm_search_cb.p_btm_inq_info, bta_dm_search_cb.state, transport);
- if (bta_dm_search_cb.p_btm_inq_info)
- {
- APPL_TRACE_DEBUG("%s appl_knows_rem_name %d", __func__,
- bta_dm_search_cb.p_btm_inq_info->appl_knows_rem_name);
- }
+ if (bta_dm_search_cb.p_btm_inq_info) {
+ APPL_TRACE_DEBUG("%s appl_knows_rem_name %d", __func__,
+ bta_dm_search_cb.p_btm_inq_info->appl_knows_rem_name);
+ }
#if (BLE_INCLUDED == TRUE)
- if((bta_dm_search_cb.p_btm_inq_info)
- && (bta_dm_search_cb.p_btm_inq_info->results.device_type == BT_DEVICE_TYPE_BLE)
- && (bta_dm_search_cb.state == BTA_DM_SEARCH_ACTIVE))
- {
- /* Do not perform RNR for LE devices at inquiry complete*/
- bta_dm_search_cb.name_discover_done = true;
- }
+ if ((bta_dm_search_cb.p_btm_inq_info) &&
+ (bta_dm_search_cb.p_btm_inq_info->results.device_type ==
+ BT_DEVICE_TYPE_BLE) &&
+ (bta_dm_search_cb.state == BTA_DM_SEARCH_ACTIVE)) {
+ /* Do not perform RNR for LE devices at inquiry complete*/
+ bta_dm_search_cb.name_discover_done = true;
+ }
#endif
- /* if name discovery is not done and application needs remote name */
- if ((!bta_dm_search_cb.name_discover_done)
- && (( bta_dm_search_cb.p_btm_inq_info == NULL )
- ||(bta_dm_search_cb.p_btm_inq_info && (!bta_dm_search_cb.p_btm_inq_info->appl_knows_rem_name))))
- {
- if (bta_dm_read_remote_device_name(bta_dm_search_cb.peer_bdaddr, transport) == true)
- return;
+ /* if name discovery is not done and application needs remote name */
+ if ((!bta_dm_search_cb.name_discover_done) &&
+ ((bta_dm_search_cb.p_btm_inq_info == NULL) ||
+ (bta_dm_search_cb.p_btm_inq_info &&
+ (!bta_dm_search_cb.p_btm_inq_info->appl_knows_rem_name)))) {
+ if (bta_dm_read_remote_device_name(bta_dm_search_cb.peer_bdaddr,
+ transport) == true)
+ return;
- /* starting name discovery failed */
- bta_dm_search_cb.name_discover_done = true;
- }
+ /* starting name discovery failed */
+ bta_dm_search_cb.name_discover_done = true;
+ }
- /* if application wants to discover service */
- if ( bta_dm_search_cb.services )
- {
- /* initialize variables */
- bta_dm_search_cb.service_index = 0;
- bta_dm_search_cb.services_found = 0;
- bta_dm_search_cb.services_to_search = bta_dm_search_cb.services;
+ /* if application wants to discover service */
+ if (bta_dm_search_cb.services) {
+ /* initialize variables */
+ bta_dm_search_cb.service_index = 0;
+ bta_dm_search_cb.services_found = 0;
+ bta_dm_search_cb.services_to_search = bta_dm_search_cb.services;
#if (BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE)
- bta_dm_search_cb.uuid_to_search = bta_dm_search_cb.num_uuid;
+ bta_dm_search_cb.uuid_to_search = bta_dm_search_cb.num_uuid;
#endif
- if ((bta_dm_search_cb.p_btm_inq_info != NULL) &&
- bta_dm_search_cb.services != BTA_USER_SERVICE_MASK
- &&(bta_dm_search_cb.sdp_search == false))
- {
- /* check if EIR provides the information of supported services */
- bta_dm_eir_search_services( &bta_dm_search_cb.p_btm_inq_info->results,
- &bta_dm_search_cb.services_to_search,
- &bta_dm_search_cb.services_found );
- }
+ if ((bta_dm_search_cb.p_btm_inq_info != NULL) &&
+ bta_dm_search_cb.services != BTA_USER_SERVICE_MASK &&
+ (bta_dm_search_cb.sdp_search == false)) {
+ /* check if EIR provides the information of supported services */
+ bta_dm_eir_search_services(&bta_dm_search_cb.p_btm_inq_info->results,
+ &bta_dm_search_cb.services_to_search,
+ &bta_dm_search_cb.services_found);
+ }
- /* if seaching with EIR is not completed */
- if(bta_dm_search_cb.services_to_search)
- {
- /* check whether connection already exists to the device
- if connection exists, we don't have to wait for ACL
- link to go down to start search on next device */
- if (BTM_IsAclConnectionUp(bta_dm_search_cb.peer_bdaddr, BT_TRANSPORT_BR_EDR))
- bta_dm_search_cb.wait_disc = false;
- else
- bta_dm_search_cb.wait_disc = true;
+ /* if seaching with EIR is not completed */
+ if (bta_dm_search_cb.services_to_search) {
+ /* check whether connection already exists to the device
+ if connection exists, we don't have to wait for ACL
+ link to go down to start search on next device */
+ if (BTM_IsAclConnectionUp(bta_dm_search_cb.peer_bdaddr,
+ BT_TRANSPORT_BR_EDR))
+ bta_dm_search_cb.wait_disc = false;
+ else
+ bta_dm_search_cb.wait_disc = true;
#if (BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE)
- if ( bta_dm_search_cb.p_btm_inq_info )
- {
- APPL_TRACE_DEBUG("%s p_btm_inq_info 0x%x results.device_type 0x%x services_to_search 0x%x",
- __func__,
- bta_dm_search_cb.p_btm_inq_info,
- bta_dm_search_cb.p_btm_inq_info->results.device_type,
- bta_dm_search_cb.services_to_search);
- }
+ if (bta_dm_search_cb.p_btm_inq_info) {
+ APPL_TRACE_DEBUG(
+ "%s p_btm_inq_info 0x%x results.device_type 0x%x "
+ "services_to_search 0x%x",
+ __func__, bta_dm_search_cb.p_btm_inq_info,
+ bta_dm_search_cb.p_btm_inq_info->results.device_type,
+ bta_dm_search_cb.services_to_search);
+ }
- if (transport == BT_TRANSPORT_LE)
- {
- if (bta_dm_search_cb.services_to_search & BTA_BLE_SERVICE_MASK)
- {
- //set the raw data buffer here
- memset(g_disc_raw_data_buf, 0, sizeof(g_disc_raw_data_buf));
- bta_dm_search_cb.p_ble_rawdata = g_disc_raw_data_buf;
+ if (transport == BT_TRANSPORT_LE) {
+ if (bta_dm_search_cb.services_to_search & BTA_BLE_SERVICE_MASK) {
+ // set the raw data buffer here
+ memset(g_disc_raw_data_buf, 0, sizeof(g_disc_raw_data_buf));
+ bta_dm_search_cb.p_ble_rawdata = g_disc_raw_data_buf;
- bta_dm_search_cb.ble_raw_size = MAX_DISC_RAW_DATA_BUF;
- bta_dm_search_cb.ble_raw_used = 0;
+ bta_dm_search_cb.ble_raw_size = MAX_DISC_RAW_DATA_BUF;
+ bta_dm_search_cb.ble_raw_used = 0;
- /* start GATT for service discovery */
- btm_dm_start_gatt_discovery(bta_dm_search_cb.peer_bdaddr);
- return;
- }
- }
- else
-#endif
- {
- bta_dm_search_cb.sdp_results = false;
- bta_dm_find_services(bta_dm_search_cb.peer_bdaddr);
- return;
- }
+ /* start GATT for service discovery */
+ btm_dm_start_gatt_discovery(bta_dm_search_cb.peer_bdaddr);
+ return;
}
+ } else
+#endif
+ {
+ bta_dm_search_cb.sdp_results = false;
+ bta_dm_find_services(bta_dm_search_cb.peer_bdaddr);
+ return;
+ }
}
+ }
- /* name discovery and service discovery are done for this device */
- tBTA_DM_MSG *p_msg = (tBTA_DM_MSG *)osi_malloc(sizeof(tBTA_DM_MSG));
- p_msg->hdr.event = BTA_DM_DISCOVERY_RESULT_EVT;
- /* initialize the data structure - includes p_raw_data and raw_data_size */
- memset(&(p_msg->disc_result.result), 0, sizeof(tBTA_DM_DISC_RES));
- p_msg->disc_result.result.disc_res.result = BTA_SUCCESS;
- p_msg->disc_result.result.disc_res.services = bta_dm_search_cb.services_found;
- bdcpy(p_msg->disc_result.result.disc_res.bd_addr, bta_dm_search_cb.peer_bdaddr);
- strlcpy((char*)p_msg->disc_result.result.disc_res.bd_name,
- (char*)bta_dm_search_cb.peer_name, BD_NAME_LEN);
+ /* name discovery and service discovery are done for this device */
+ tBTA_DM_MSG* p_msg = (tBTA_DM_MSG*)osi_malloc(sizeof(tBTA_DM_MSG));
+ p_msg->hdr.event = BTA_DM_DISCOVERY_RESULT_EVT;
+ /* initialize the data structure - includes p_raw_data and raw_data_size */
+ memset(&(p_msg->disc_result.result), 0, sizeof(tBTA_DM_DISC_RES));
+ p_msg->disc_result.result.disc_res.result = BTA_SUCCESS;
+ p_msg->disc_result.result.disc_res.services = bta_dm_search_cb.services_found;
+ bdcpy(p_msg->disc_result.result.disc_res.bd_addr,
+ bta_dm_search_cb.peer_bdaddr);
+ strlcpy((char*)p_msg->disc_result.result.disc_res.bd_name,
+ (char*)bta_dm_search_cb.peer_name, BD_NAME_LEN);
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
}
/*******************************************************************************
@@ -2389,16 +2281,14 @@
* Returns void
*
******************************************************************************/
-static void bta_dm_sdp_callback (uint16_t sdp_status)
-{
+static void bta_dm_sdp_callback(uint16_t sdp_status) {
+ tBTA_DM_SDP_RESULT* p_msg =
+ (tBTA_DM_SDP_RESULT*)osi_malloc(sizeof(tBTA_DM_SDP_RESULT));
- tBTA_DM_SDP_RESULT *p_msg =
- (tBTA_DM_SDP_RESULT *)osi_malloc(sizeof(tBTA_DM_SDP_RESULT));
+ p_msg->hdr.event = BTA_DM_SDP_RESULT_EVT;
+ p_msg->sdp_result = sdp_status;
- p_msg->hdr.event = BTA_DM_SDP_RESULT_EVT;
- p_msg->sdp_result = sdp_status;
-
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
}
/*******************************************************************************
@@ -2410,52 +2300,45 @@
* Returns void
*
******************************************************************************/
-static void bta_dm_inq_results_cb (tBTM_INQ_RESULTS *p_inq, uint8_t *p_eir)
-{
+static void bta_dm_inq_results_cb(tBTM_INQ_RESULTS* p_inq, uint8_t* p_eir) {
+ tBTA_DM_SEARCH result;
+ tBTM_INQ_INFO* p_inq_info;
+ uint16_t service_class;
- tBTA_DM_SEARCH result;
- tBTM_INQ_INFO *p_inq_info;
- uint16_t service_class;
-
- bdcpy(result.inq_res.bd_addr, p_inq->remote_bd_addr);
- memcpy(result.inq_res.dev_class, p_inq->dev_class, DEV_CLASS_LEN);
- BTM_COD_SERVICE_CLASS(service_class, p_inq->dev_class);
- result.inq_res.is_limited = (service_class & BTM_COD_SERVICE_LMTD_DISCOVER)?true:false;
- result.inq_res.rssi = p_inq->rssi;
+ bdcpy(result.inq_res.bd_addr, p_inq->remote_bd_addr);
+ memcpy(result.inq_res.dev_class, p_inq->dev_class, DEV_CLASS_LEN);
+ BTM_COD_SERVICE_CLASS(service_class, p_inq->dev_class);
+ result.inq_res.is_limited =
+ (service_class & BTM_COD_SERVICE_LMTD_DISCOVER) ? true : false;
+ result.inq_res.rssi = p_inq->rssi;
#if (BLE_INCLUDED == TRUE)
- result.inq_res.ble_addr_type = p_inq->ble_addr_type;
- result.inq_res.inq_result_type = p_inq->inq_result_type;
- result.inq_res.device_type = p_inq->device_type;
- result.inq_res.flag = p_inq->flag;
+ result.inq_res.ble_addr_type = p_inq->ble_addr_type;
+ result.inq_res.inq_result_type = p_inq->inq_result_type;
+ result.inq_res.device_type = p_inq->device_type;
+ result.inq_res.flag = p_inq->flag;
#endif
- /* application will parse EIR to find out remote device name */
- result.inq_res.p_eir = p_eir;
+ /* application will parse EIR to find out remote device name */
+ result.inq_res.p_eir = p_eir;
- if((p_inq_info = BTM_InqDbRead(p_inq->remote_bd_addr)) != NULL)
- {
- /* initialize remt_name_not_required to false so that we get the name by default */
- result.inq_res.remt_name_not_required = false;
+ if ((p_inq_info = BTM_InqDbRead(p_inq->remote_bd_addr)) != NULL) {
+ /* initialize remt_name_not_required to false so that we get the name by
+ * default */
+ result.inq_res.remt_name_not_required = false;
+ }
- }
+ if (bta_dm_search_cb.p_search_cback)
+ bta_dm_search_cb.p_search_cback(BTA_DM_INQ_RES_EVT, &result);
- if(bta_dm_search_cb.p_search_cback)
- bta_dm_search_cb.p_search_cback(BTA_DM_INQ_RES_EVT, &result);
-
- if(p_inq_info)
- {
- /* application indicates if it knows the remote name, inside the callback
- copy that to the inquiry data base*/
- if(result.inq_res.remt_name_not_required)
- p_inq_info->appl_knows_rem_name = true;
-
- }
-
-
+ if (p_inq_info) {
+ /* application indicates if it knows the remote name, inside the callback
+ copy that to the inquiry data base*/
+ if (result.inq_res.remt_name_not_required)
+ p_inq_info->appl_knows_rem_name = true;
+ }
}
-
/*******************************************************************************
*
* Function bta_dm_inq_cmpl_cb
@@ -2465,23 +2348,22 @@
* Returns void
*
******************************************************************************/
-static void bta_dm_inq_cmpl_cb (void * p_result)
-{
- tBTA_DM_MSG *p_msg = (tBTA_DM_MSG *)osi_malloc(sizeof(tBTA_DM_MSG));
+static void bta_dm_inq_cmpl_cb(void* p_result) {
+ tBTA_DM_MSG* p_msg = (tBTA_DM_MSG*)osi_malloc(sizeof(tBTA_DM_MSG));
- APPL_TRACE_DEBUG("%s", __func__);
+ APPL_TRACE_DEBUG("%s", __func__);
- if (bta_dm_search_cb.cancel_pending == false) {
- p_msg->inq_cmpl.hdr.event = BTA_DM_INQUIRY_CMPL_EVT;
- p_msg->inq_cmpl.num = ((tBTM_INQUIRY_CMPL *)p_result)->num_resp;
- } else {
- bta_dm_search_cb.cancel_pending = false;
- bta_dm_search_cancel_notify(NULL);
- p_msg->hdr.event = BTA_DM_SEARCH_CMPL_EVT;
- p_msg->hdr.layer_specific = BTA_DM_API_DISCOVER_EVT;
- }
+ if (bta_dm_search_cb.cancel_pending == false) {
+ p_msg->inq_cmpl.hdr.event = BTA_DM_INQUIRY_CMPL_EVT;
+ p_msg->inq_cmpl.num = ((tBTM_INQUIRY_CMPL*)p_result)->num_resp;
+ } else {
+ bta_dm_search_cb.cancel_pending = false;
+ bta_dm_search_cancel_notify(NULL);
+ p_msg->hdr.event = BTA_DM_SEARCH_CMPL_EVT;
+ p_msg->hdr.layer_specific = BTA_DM_API_DISCOVER_EVT;
+ }
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
}
/*******************************************************************************
@@ -2493,53 +2375,50 @@
* Returns void
*
******************************************************************************/
-static void bta_dm_service_search_remname_cback (BD_ADDR bd_addr,
- UNUSED_ATTR DEV_CLASS dc, BD_NAME bd_name)
-{
- tBTM_REMOTE_DEV_NAME rem_name;
- tBTM_STATUS btm_status;
+static void bta_dm_service_search_remname_cback(BD_ADDR bd_addr,
+ UNUSED_ATTR DEV_CLASS dc,
+ BD_NAME bd_name) {
+ tBTM_REMOTE_DEV_NAME rem_name;
+ tBTM_STATUS btm_status;
- APPL_TRACE_DEBUG("bta_dm_service_search_remname_cback name=<%s>", bd_name);
+ APPL_TRACE_DEBUG("bta_dm_service_search_remname_cback name=<%s>", bd_name);
- /* if this is what we are looking for */
- if (!bdcmp( bta_dm_search_cb.peer_bdaddr, bd_addr))
- {
- rem_name.length = strlen((char*)bd_name);
- if (rem_name.length > (BD_NAME_LEN-1))
- {
- rem_name.length = (BD_NAME_LEN-1);
- rem_name.remote_bd_name[(BD_NAME_LEN-1)] = 0;
- }
- strlcpy((char*)rem_name.remote_bd_name, (char*)bd_name, BD_NAME_LEN);
- rem_name.status = BTM_SUCCESS;
-
- bta_dm_remname_cback(&rem_name);
+ /* if this is what we are looking for */
+ if (!bdcmp(bta_dm_search_cb.peer_bdaddr, bd_addr)) {
+ rem_name.length = strlen((char*)bd_name);
+ if (rem_name.length > (BD_NAME_LEN - 1)) {
+ rem_name.length = (BD_NAME_LEN - 1);
+ rem_name.remote_bd_name[(BD_NAME_LEN - 1)] = 0;
}
- else
- {
- /* get name of device */
- btm_status = BTM_ReadRemoteDeviceName (bta_dm_search_cb.peer_bdaddr,
- (tBTM_CMPL_CB *) bta_dm_remname_cback,
- BT_TRANSPORT_BR_EDR);
- if ( btm_status == BTM_BUSY )
- {
- /* wait for next chance(notification of remote name discovery done) */
- APPL_TRACE_DEBUG("bta_dm_service_search_remname_cback: BTM_ReadRemoteDeviceName is busy");
- }
- else if ( btm_status != BTM_CMD_STARTED )
- {
- /* if failed to start getting remote name then continue */
- APPL_TRACE_WARNING("bta_dm_service_search_remname_cback: BTM_ReadRemoteDeviceName returns 0x%02X", btm_status);
+ strlcpy((char*)rem_name.remote_bd_name, (char*)bd_name, BD_NAME_LEN);
+ rem_name.status = BTM_SUCCESS;
- rem_name.length = 0;
- rem_name.remote_bd_name[0] = 0;
- rem_name.status = btm_status;
- bta_dm_remname_cback(&rem_name);
- }
+ bta_dm_remname_cback(&rem_name);
+ } else {
+ /* get name of device */
+ btm_status = BTM_ReadRemoteDeviceName(bta_dm_search_cb.peer_bdaddr,
+ (tBTM_CMPL_CB*)bta_dm_remname_cback,
+ BT_TRANSPORT_BR_EDR);
+ if (btm_status == BTM_BUSY) {
+ /* wait for next chance(notification of remote name discovery done) */
+ APPL_TRACE_DEBUG(
+ "bta_dm_service_search_remname_cback: BTM_ReadRemoteDeviceName is "
+ "busy");
+ } else if (btm_status != BTM_CMD_STARTED) {
+ /* if failed to start getting remote name then continue */
+ APPL_TRACE_WARNING(
+ "bta_dm_service_search_remname_cback: BTM_ReadRemoteDeviceName "
+ "returns 0x%02X",
+ btm_status);
+
+ rem_name.length = 0;
+ rem_name.remote_bd_name[0] = 0;
+ rem_name.status = btm_status;
+ bta_dm_remname_cback(&rem_name);
}
+ }
}
-
/*******************************************************************************
*
* Function bta_dm_remname_cback
@@ -2549,33 +2428,31 @@
* Returns void
*
******************************************************************************/
-static void bta_dm_remname_cback (tBTM_REMOTE_DEV_NAME *p_remote_name)
-{
- APPL_TRACE_DEBUG("bta_dm_remname_cback len = %d name=<%s>", p_remote_name->length,
- p_remote_name->remote_bd_name);
+static void bta_dm_remname_cback(tBTM_REMOTE_DEV_NAME* p_remote_name) {
+ APPL_TRACE_DEBUG("bta_dm_remname_cback len = %d name=<%s>",
+ p_remote_name->length, p_remote_name->remote_bd_name);
- /* remote name discovery is done but it could be failed */
- bta_dm_search_cb.name_discover_done = true;
- strlcpy((char*)bta_dm_search_cb.peer_name,
- (char*)p_remote_name->remote_bd_name, BD_NAME_LEN);
+ /* remote name discovery is done but it could be failed */
+ bta_dm_search_cb.name_discover_done = true;
+ strlcpy((char*)bta_dm_search_cb.peer_name,
+ (char*)p_remote_name->remote_bd_name, BD_NAME_LEN);
- BTM_SecDeleteRmtNameNotifyCallback(&bta_dm_service_search_remname_cback);
+ BTM_SecDeleteRmtNameNotifyCallback(&bta_dm_service_search_remname_cback);
#if (BLE_INCLUDED == TRUE)
- if (bta_dm_search_cb.transport == BT_TRANSPORT_LE )
- {
- GAP_BleReadPeerPrefConnParams (bta_dm_search_cb.peer_bdaddr);
- }
+ if (bta_dm_search_cb.transport == BT_TRANSPORT_LE) {
+ GAP_BleReadPeerPrefConnParams(bta_dm_search_cb.peer_bdaddr);
+ }
#endif
- tBTA_DM_REM_NAME *p_msg =
- (tBTA_DM_REM_NAME *)osi_malloc(sizeof(tBTA_DM_REM_NAME));
- bdcpy(p_msg->result.disc_res.bd_addr, bta_dm_search_cb.peer_bdaddr);
- strlcpy((char*)p_msg->result.disc_res.bd_name,
- (char*)p_remote_name->remote_bd_name, BD_NAME_LEN);
- p_msg->hdr.event = BTA_DM_REMT_NAME_EVT;
+ tBTA_DM_REM_NAME* p_msg =
+ (tBTA_DM_REM_NAME*)osi_malloc(sizeof(tBTA_DM_REM_NAME));
+ bdcpy(p_msg->result.disc_res.bd_addr, bta_dm_search_cb.peer_bdaddr);
+ strlcpy((char*)p_msg->result.disc_res.bd_name,
+ (char*)p_remote_name->remote_bd_name, BD_NAME_LEN);
+ p_msg->hdr.event = BTA_DM_REMT_NAME_EVT;
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
}
/*******************************************************************************
@@ -2587,54 +2464,46 @@
* Returns void
*
******************************************************************************/
-static uint8_t bta_dm_authorize_cback (BD_ADDR bd_addr, DEV_CLASS dev_class, BD_NAME bd_name,
- UNUSED_ATTR uint8_t *service_name, uint8_t service_id,
- UNUSED_ATTR bool is_originator)
-{
- tBTA_DM_SEC sec_event;
- uint8_t index = 1;
+static uint8_t bta_dm_authorize_cback(BD_ADDR bd_addr, DEV_CLASS dev_class,
+ BD_NAME bd_name,
+ UNUSED_ATTR uint8_t* service_name,
+ uint8_t service_id,
+ UNUSED_ATTR bool is_originator) {
+ tBTA_DM_SEC sec_event;
+ uint8_t index = 1;
- bdcpy(sec_event.authorize.bd_addr, bd_addr);
- memcpy(sec_event.authorize.dev_class, dev_class, DEV_CLASS_LEN);
- strlcpy((char*)sec_event.authorize.bd_name, (char*)bd_name, BD_NAME_LEN);
+ bdcpy(sec_event.authorize.bd_addr, bd_addr);
+ memcpy(sec_event.authorize.dev_class, dev_class, DEV_CLASS_LEN);
+ strlcpy((char*)sec_event.authorize.bd_name, (char*)bd_name, BD_NAME_LEN);
#if (BTA_JV_INCLUDED == TRUE)
- sec_event.authorize.service = service_id;
+ sec_event.authorize.service = service_id;
#endif
- while(index < BTA_MAX_SERVICE_ID)
- {
- /* get the BTA service id corresponding to BTM id */
- if(bta_service_id_to_btm_srv_id_lkup_tbl[index] == service_id)
- {
- sec_event.authorize.service = index;
- break;
- }
- index++;
+ while (index < BTA_MAX_SERVICE_ID) {
+ /* get the BTA service id corresponding to BTM id */
+ if (bta_service_id_to_btm_srv_id_lkup_tbl[index] == service_id) {
+ sec_event.authorize.service = index;
+ break;
}
+ index++;
+ }
-
- /* if supported service callback otherwise not authorized */
- if(bta_dm_cb.p_sec_cback && (index < BTA_MAX_SERVICE_ID
+ /* if supported service callback otherwise not authorized */
+ if (bta_dm_cb.p_sec_cback && (index < BTA_MAX_SERVICE_ID
#if (BTA_JV_INCLUDED == TRUE)
- /* pass through JV service ID */
- || (service_id >= BTA_FIRST_JV_SERVICE_ID && service_id <= BTA_LAST_JV_SERVICE_ID)
+ /* pass through JV service ID */
+ || (service_id >= BTA_FIRST_JV_SERVICE_ID &&
+ service_id <= BTA_LAST_JV_SERVICE_ID)
#endif
- ))
- {
- bta_dm_cb.p_sec_cback(BTA_DM_AUTHORIZE_EVT, &sec_event);
- return BTM_CMD_STARTED;
- }
- else
- {
- return BTM_NOT_AUTHORIZED;
- }
+ )) {
+ bta_dm_cb.p_sec_cback(BTA_DM_AUTHORIZE_EVT, &sec_event);
+ return BTM_CMD_STARTED;
+ } else {
+ return BTM_NOT_AUTHORIZED;
+ }
}
-
-
-
-
/*******************************************************************************
*
* Function bta_dm_pinname_cback
@@ -2644,56 +2513,53 @@
* Returns void
*
******************************************************************************/
-static void bta_dm_pinname_cback (void *p_data)
-{
- tBTM_REMOTE_DEV_NAME *p_result = (tBTM_REMOTE_DEV_NAME *)p_data;
- tBTA_DM_SEC sec_event;
- uint32_t bytes_to_copy;
- tBTA_DM_SEC_EVT event = bta_dm_cb.pin_evt;
+static void bta_dm_pinname_cback(void* p_data) {
+ tBTM_REMOTE_DEV_NAME* p_result = (tBTM_REMOTE_DEV_NAME*)p_data;
+ tBTA_DM_SEC sec_event;
+ uint32_t bytes_to_copy;
+ tBTA_DM_SEC_EVT event = bta_dm_cb.pin_evt;
- if (BTA_DM_SP_CFM_REQ_EVT == event)
- {
- /* Retrieved saved device class and bd_addr */
- bdcpy(sec_event.cfm_req.bd_addr, bta_dm_cb.pin_bd_addr);
- BTA_COPY_DEVICE_CLASS(sec_event.cfm_req.dev_class, bta_dm_cb.pin_dev_class);
+ if (BTA_DM_SP_CFM_REQ_EVT == event) {
+ /* Retrieved saved device class and bd_addr */
+ bdcpy(sec_event.cfm_req.bd_addr, bta_dm_cb.pin_bd_addr);
+ BTA_COPY_DEVICE_CLASS(sec_event.cfm_req.dev_class, bta_dm_cb.pin_dev_class);
- if (p_result && p_result->status == BTM_SUCCESS)
- {
- bytes_to_copy = (p_result->length < (BD_NAME_LEN-1))
- ? p_result->length : (BD_NAME_LEN-1);
- memcpy(sec_event.cfm_req.bd_name, p_result->remote_bd_name, bytes_to_copy);
- sec_event.pin_req.bd_name[BD_NAME_LEN-1] = 0;
- }
- else /* No name found */
- sec_event.cfm_req.bd_name[0] = 0;
+ if (p_result && p_result->status == BTM_SUCCESS) {
+ bytes_to_copy = (p_result->length < (BD_NAME_LEN - 1))
+ ? p_result->length
+ : (BD_NAME_LEN - 1);
+ memcpy(sec_event.cfm_req.bd_name, p_result->remote_bd_name,
+ bytes_to_copy);
+ sec_event.pin_req.bd_name[BD_NAME_LEN - 1] = 0;
+ } else /* No name found */
+ sec_event.cfm_req.bd_name[0] = 0;
- sec_event.key_notif.passkey = bta_dm_cb.num_val; /* get PIN code numeric number */
+ sec_event.key_notif.passkey =
+ bta_dm_cb.num_val; /* get PIN code numeric number */
- /* 1 additional event data fields for this event */
- sec_event.cfm_req.just_works = bta_dm_cb.just_works;
- }
- else
- {
- /* Retrieved saved device class and bd_addr */
- bdcpy(sec_event.pin_req.bd_addr, bta_dm_cb.pin_bd_addr);
- BTA_COPY_DEVICE_CLASS(sec_event.pin_req.dev_class, bta_dm_cb.pin_dev_class);
+ /* 1 additional event data fields for this event */
+ sec_event.cfm_req.just_works = bta_dm_cb.just_works;
+ } else {
+ /* Retrieved saved device class and bd_addr */
+ bdcpy(sec_event.pin_req.bd_addr, bta_dm_cb.pin_bd_addr);
+ BTA_COPY_DEVICE_CLASS(sec_event.pin_req.dev_class, bta_dm_cb.pin_dev_class);
- if (p_result && p_result->status == BTM_SUCCESS)
- {
- bytes_to_copy = (p_result->length < (BD_NAME_LEN-1))
- ? p_result->length : (BD_NAME_LEN-1);
- memcpy(sec_event.pin_req.bd_name, p_result->remote_bd_name, bytes_to_copy);
- sec_event.pin_req.bd_name[BD_NAME_LEN-1] = 0;
- }
- else /* No name found */
- sec_event.pin_req.bd_name[0] = 0;
+ if (p_result && p_result->status == BTM_SUCCESS) {
+ bytes_to_copy = (p_result->length < (BD_NAME_LEN - 1))
+ ? p_result->length
+ : (BD_NAME_LEN - 1);
+ memcpy(sec_event.pin_req.bd_name, p_result->remote_bd_name,
+ bytes_to_copy);
+ sec_event.pin_req.bd_name[BD_NAME_LEN - 1] = 0;
+ } else /* No name found */
+ sec_event.pin_req.bd_name[0] = 0;
- event = bta_dm_cb.pin_evt;
- sec_event.key_notif.passkey = bta_dm_cb.num_val; /* get PIN code numeric number */
- }
+ event = bta_dm_cb.pin_evt;
+ sec_event.key_notif.passkey =
+ bta_dm_cb.num_val; /* get PIN code numeric number */
+ }
- if( bta_dm_cb.p_sec_cback )
- bta_dm_cb.p_sec_cback(event, &sec_event);
+ if (bta_dm_cb.p_sec_cback) bta_dm_cb.p_sec_cback(event, &sec_event);
}
/*******************************************************************************
@@ -2705,33 +2571,33 @@
* Returns void
*
******************************************************************************/
-static uint8_t bta_dm_pin_cback (BD_ADDR bd_addr, DEV_CLASS dev_class, BD_NAME bd_name,
- bool min_16_digit)
-{
- tBTA_DM_SEC sec_event;
+static uint8_t bta_dm_pin_cback(BD_ADDR bd_addr, DEV_CLASS dev_class,
+ BD_NAME bd_name, bool min_16_digit) {
+ tBTA_DM_SEC sec_event;
- if (!bta_dm_cb.p_sec_cback)
- return BTM_NOT_AUTHORIZED;
+ if (!bta_dm_cb.p_sec_cback) return BTM_NOT_AUTHORIZED;
- /* If the device name is not known, save bdaddr and devclass and initiate a name request */
- if (bd_name[0] == 0)
- {
- bta_dm_cb.pin_evt = BTA_DM_PIN_REQ_EVT;
- bdcpy(bta_dm_cb.pin_bd_addr, bd_addr);
- BTA_COPY_DEVICE_CLASS(bta_dm_cb.pin_dev_class, dev_class);
- if ((BTM_ReadRemoteDeviceName(bd_addr, bta_dm_pinname_cback, BT_TRANSPORT_BR_EDR)) == BTM_CMD_STARTED)
- return BTM_CMD_STARTED;
+ /* If the device name is not known, save bdaddr and devclass and initiate a
+ * name request */
+ if (bd_name[0] == 0) {
+ bta_dm_cb.pin_evt = BTA_DM_PIN_REQ_EVT;
+ bdcpy(bta_dm_cb.pin_bd_addr, bd_addr);
+ BTA_COPY_DEVICE_CLASS(bta_dm_cb.pin_dev_class, dev_class);
+ if ((BTM_ReadRemoteDeviceName(bd_addr, bta_dm_pinname_cback,
+ BT_TRANSPORT_BR_EDR)) == BTM_CMD_STARTED)
+ return BTM_CMD_STARTED;
- APPL_TRACE_WARNING(" bta_dm_pin_cback() -> Failed to start Remote Name Request ");
- }
+ APPL_TRACE_WARNING(
+ " bta_dm_pin_cback() -> Failed to start Remote Name Request ");
+ }
- bdcpy(sec_event.pin_req.bd_addr, bd_addr);
- BTA_COPY_DEVICE_CLASS(sec_event.pin_req.dev_class, dev_class);
- strlcpy((char*)sec_event.pin_req.bd_name, (char*)bd_name, BD_NAME_LEN);
- sec_event.pin_req.min_16_digit = min_16_digit;
+ bdcpy(sec_event.pin_req.bd_addr, bd_addr);
+ BTA_COPY_DEVICE_CLASS(sec_event.pin_req.dev_class, dev_class);
+ strlcpy((char*)sec_event.pin_req.bd_name, (char*)bd_name, BD_NAME_LEN);
+ sec_event.pin_req.min_16_digit = min_16_digit;
- bta_dm_cb.p_sec_cback(BTA_DM_PIN_REQ_EVT, &sec_event);
- return BTM_CMD_STARTED;
+ bta_dm_cb.p_sec_cback(BTA_DM_PIN_REQ_EVT, &sec_event);
+ return BTM_CMD_STARTED;
}
/*******************************************************************************
@@ -2743,55 +2609,53 @@
* Returns void
*
******************************************************************************/
-static uint8_t bta_dm_new_link_key_cback(BD_ADDR bd_addr, UNUSED_ATTR DEV_CLASS dev_class,
- BD_NAME bd_name, LINK_KEY key, uint8_t key_type)
-{
- tBTA_DM_SEC sec_event;
- tBTA_DM_AUTH_CMPL *p_auth_cmpl;
- uint8_t event;
+static uint8_t bta_dm_new_link_key_cback(BD_ADDR bd_addr,
+ UNUSED_ATTR DEV_CLASS dev_class,
+ BD_NAME bd_name, LINK_KEY key,
+ uint8_t key_type) {
+ tBTA_DM_SEC sec_event;
+ tBTA_DM_AUTH_CMPL* p_auth_cmpl;
+ uint8_t event;
- memset (&sec_event, 0, sizeof(tBTA_DM_SEC));
+ memset(&sec_event, 0, sizeof(tBTA_DM_SEC));
- /* Not AMP Key type */
- if (key_type != HCI_LKEY_TYPE_AMP_WIFI && key_type != HCI_LKEY_TYPE_AMP_UWB)
- {
- event = BTA_DM_AUTH_CMPL_EVT;
- p_auth_cmpl = &sec_event.auth_cmpl;
+ /* Not AMP Key type */
+ if (key_type != HCI_LKEY_TYPE_AMP_WIFI && key_type != HCI_LKEY_TYPE_AMP_UWB) {
+ event = BTA_DM_AUTH_CMPL_EVT;
+ p_auth_cmpl = &sec_event.auth_cmpl;
- bdcpy(p_auth_cmpl->bd_addr, bd_addr);
+ bdcpy(p_auth_cmpl->bd_addr, bd_addr);
- memcpy(p_auth_cmpl->bd_name, bd_name, (BD_NAME_LEN-1));
- p_auth_cmpl->bd_name[BD_NAME_LEN-1] = 0;
+ memcpy(p_auth_cmpl->bd_name, bd_name, (BD_NAME_LEN - 1));
+ p_auth_cmpl->bd_name[BD_NAME_LEN - 1] = 0;
- p_auth_cmpl->key_present = true;
- p_auth_cmpl->key_type = key_type;
- p_auth_cmpl->success = true;
+ p_auth_cmpl->key_present = true;
+ p_auth_cmpl->key_type = key_type;
+ p_auth_cmpl->success = true;
- memcpy(p_auth_cmpl->key, key, LINK_KEY_LEN);
- sec_event.auth_cmpl.fail_reason = HCI_SUCCESS;
+ memcpy(p_auth_cmpl->key, key, LINK_KEY_LEN);
+ sec_event.auth_cmpl.fail_reason = HCI_SUCCESS;
#if (BLE_INCLUDED == TRUE)
- // Report the BR link key based on the BR/EDR address and type
- BTM_ReadDevInfo(bd_addr, &sec_event.auth_cmpl.dev_type, &sec_event.auth_cmpl.addr_type);
+ // Report the BR link key based on the BR/EDR address and type
+ BTM_ReadDevInfo(bd_addr, &sec_event.auth_cmpl.dev_type,
+ &sec_event.auth_cmpl.addr_type);
#endif
- if(bta_dm_cb.p_sec_cback)
- bta_dm_cb.p_sec_cback(event, &sec_event);
+ if (bta_dm_cb.p_sec_cback) bta_dm_cb.p_sec_cback(event, &sec_event);
- // Setting remove_dev_pending flag to false, where it will avoid deleting the
- // security device record when the ACL connection link goes down in case of
- // reconnection.
- if (bta_dm_cb.device_list.count)
- bta_dm_reset_sec_dev_pending(p_auth_cmpl->bd_addr);
- }
- else
- {
- APPL_TRACE_WARNING("%s() Received AMP Key", __func__);
- }
+ // Setting remove_dev_pending flag to false, where it will avoid deleting
+ // the
+ // security device record when the ACL connection link goes down in case of
+ // reconnection.
+ if (bta_dm_cb.device_list.count)
+ bta_dm_reset_sec_dev_pending(p_auth_cmpl->bd_addr);
+ } else {
+ APPL_TRACE_WARNING("%s() Received AMP Key", __func__);
+ }
- return BTM_CMD_STARTED;
+ return BTM_CMD_STARTED;
}
-
/*******************************************************************************
*
* Function bta_dm_authentication_complete_cback
@@ -2801,33 +2665,32 @@
* Returns void
*
******************************************************************************/
-static uint8_t bta_dm_authentication_complete_cback(BD_ADDR bd_addr,
- UNUSED_ATTR DEV_CLASS dev_class,BD_NAME bd_name,
- int result)
-{
- tBTA_DM_SEC sec_event;
+static uint8_t bta_dm_authentication_complete_cback(
+ BD_ADDR bd_addr, UNUSED_ATTR DEV_CLASS dev_class, BD_NAME bd_name,
+ int result) {
+ tBTA_DM_SEC sec_event;
- if(result != BTM_SUCCESS)
- {
- memset(&sec_event, 0, sizeof(tBTA_DM_SEC));
- bdcpy(sec_event.auth_cmpl.bd_addr, bd_addr);
+ if (result != BTM_SUCCESS) {
+ memset(&sec_event, 0, sizeof(tBTA_DM_SEC));
+ bdcpy(sec_event.auth_cmpl.bd_addr, bd_addr);
- memcpy(sec_event.auth_cmpl.bd_name, bd_name, (BD_NAME_LEN-1));
- sec_event.auth_cmpl.bd_name[BD_NAME_LEN-1] = 0;
+ memcpy(sec_event.auth_cmpl.bd_name, bd_name, (BD_NAME_LEN - 1));
+ sec_event.auth_cmpl.bd_name[BD_NAME_LEN - 1] = 0;
#if (BLE_INCLUDED == TRUE)
- // Report the BR link key based on the BR/EDR address and type
- BTM_ReadDevInfo(bd_addr, &sec_event.auth_cmpl.dev_type, &sec_event.auth_cmpl.addr_type);
+ // Report the BR link key based on the BR/EDR address and type
+ BTM_ReadDevInfo(bd_addr, &sec_event.auth_cmpl.dev_type,
+ &sec_event.auth_cmpl.addr_type);
#endif
- sec_event.auth_cmpl.fail_reason = (uint8_t)result;
+ sec_event.auth_cmpl.fail_reason = (uint8_t)result;
- if(bta_dm_cb.p_sec_cback)
- bta_dm_cb.p_sec_cback(BTA_DM_AUTH_CMPL_EVT, &sec_event);
+ if (bta_dm_cb.p_sec_cback)
+ bta_dm_cb.p_sec_cback(BTA_DM_AUTH_CMPL_EVT, &sec_event);
- bta_dm_remove_sec_dev_entry(bd_addr);
- }
+ bta_dm_remove_sec_dev_entry(bd_addr);
+ }
- return BTM_SUCCESS;
+ return BTM_SUCCESS;
}
/*******************************************************************************
@@ -2839,150 +2702,159 @@
* Returns void
*
******************************************************************************/
-static uint8_t bta_dm_sp_cback (tBTM_SP_EVT event, tBTM_SP_EVT_DATA *p_data)
-{
- tBTM_STATUS status = BTM_CMD_STARTED;
- tBTA_DM_SEC sec_event;
- tBTA_DM_SEC_EVT pin_evt = BTA_DM_SP_KEY_NOTIF_EVT;
+static uint8_t bta_dm_sp_cback(tBTM_SP_EVT event, tBTM_SP_EVT_DATA* p_data) {
+ tBTM_STATUS status = BTM_CMD_STARTED;
+ tBTA_DM_SEC sec_event;
+ tBTA_DM_SEC_EVT pin_evt = BTA_DM_SP_KEY_NOTIF_EVT;
- APPL_TRACE_EVENT("bta_dm_sp_cback: %d", event);
- if (!bta_dm_cb.p_sec_cback)
- return BTM_NOT_AUTHORIZED;
+ APPL_TRACE_EVENT("bta_dm_sp_cback: %d", event);
+ if (!bta_dm_cb.p_sec_cback) return BTM_NOT_AUTHORIZED;
- /* TODO_SP */
- switch(event)
- {
+ /* TODO_SP */
+ switch (event) {
case BTM_SP_IO_REQ_EVT:
#if (BTM_LOCAL_IO_CAPS != BTM_IO_CAP_NONE)
- /* translate auth_req */
- bta_dm_co_io_req(p_data->io_req.bd_addr, &p_data->io_req.io_cap,
- &p_data->io_req.oob_data, &p_data->io_req.auth_req, p_data->io_req.is_orig);
+ /* translate auth_req */
+ bta_dm_co_io_req(p_data->io_req.bd_addr, &p_data->io_req.io_cap,
+ &p_data->io_req.oob_data, &p_data->io_req.auth_req,
+ p_data->io_req.is_orig);
#endif
- APPL_TRACE_EVENT("io mitm: %d oob_data:%d", p_data->io_req.auth_req, p_data->io_req.oob_data);
- break;
+ APPL_TRACE_EVENT("io mitm: %d oob_data:%d", p_data->io_req.auth_req,
+ p_data->io_req.oob_data);
+ break;
case BTM_SP_IO_RSP_EVT:
#if (BTM_LOCAL_IO_CAPS != BTM_IO_CAP_NONE)
- bta_dm_co_io_rsp(p_data->io_rsp.bd_addr, p_data->io_rsp.io_cap,
- p_data->io_rsp.oob_data, p_data->io_rsp.auth_req );
+ bta_dm_co_io_rsp(p_data->io_rsp.bd_addr, p_data->io_rsp.io_cap,
+ p_data->io_rsp.oob_data, p_data->io_rsp.auth_req);
#endif
- break;
+ break;
case BTM_SP_CFM_REQ_EVT:
- pin_evt = BTA_DM_SP_CFM_REQ_EVT;
- bta_dm_cb.just_works = sec_event.cfm_req.just_works = p_data->cfm_req.just_works;
- sec_event.cfm_req.loc_auth_req = p_data->cfm_req.loc_auth_req;
- sec_event.cfm_req.rmt_auth_req = p_data->cfm_req.rmt_auth_req;
- sec_event.cfm_req.loc_io_caps = p_data->cfm_req.loc_io_caps;
- sec_event.cfm_req.rmt_io_caps = p_data->cfm_req.rmt_io_caps;
+ pin_evt = BTA_DM_SP_CFM_REQ_EVT;
+ bta_dm_cb.just_works = sec_event.cfm_req.just_works =
+ p_data->cfm_req.just_works;
+ sec_event.cfm_req.loc_auth_req = p_data->cfm_req.loc_auth_req;
+ sec_event.cfm_req.rmt_auth_req = p_data->cfm_req.rmt_auth_req;
+ sec_event.cfm_req.loc_io_caps = p_data->cfm_req.loc_io_caps;
+ sec_event.cfm_req.rmt_io_caps = p_data->cfm_req.rmt_io_caps;
- /* continue to next case */
+/* continue to next case */
#if (BTM_LOCAL_IO_CAPS != BTM_IO_CAP_NONE)
/* Passkey entry mode, mobile device with output capability is very
unlikely to receive key request, so skip this event */
/*case BTM_SP_KEY_REQ_EVT: */
case BTM_SP_KEY_NOTIF_EVT:
#endif
- bta_dm_cb.num_val = sec_event.key_notif.passkey = p_data->key_notif.passkey;
+ bta_dm_cb.num_val = sec_event.key_notif.passkey =
+ p_data->key_notif.passkey;
- if(BTM_SP_CFM_REQ_EVT == event)
- {
- /* Due to the switch case falling through below to BTM_SP_KEY_NOTIF_EVT,
- call remote name request using values from cfm_req */
- if(p_data->cfm_req.bd_name[0] == 0)
- {
- bta_dm_cb.pin_evt = pin_evt;
- bdcpy(bta_dm_cb.pin_bd_addr, p_data->cfm_req.bd_addr);
- BTA_COPY_DEVICE_CLASS(bta_dm_cb.pin_dev_class, p_data->cfm_req.dev_class);
- if ((BTM_ReadRemoteDeviceName(p_data->cfm_req.bd_addr, bta_dm_pinname_cback,
- BT_TRANSPORT_BR_EDR)) == BTM_CMD_STARTED)
- return BTM_CMD_STARTED;
- APPL_TRACE_WARNING(" bta_dm_sp_cback() -> Failed to start Remote Name Request ");
- }
- else
- {
- /* Due to the switch case falling through below to BTM_SP_KEY_NOTIF_EVT,
- copy these values into key_notif from cfm_req */
- bdcpy(sec_event.key_notif.bd_addr, p_data->cfm_req.bd_addr);
- BTA_COPY_DEVICE_CLASS(sec_event.key_notif.dev_class, p_data->cfm_req.dev_class);
- strlcpy((char*)sec_event.key_notif.bd_name,
- (char*)p_data->cfm_req.bd_name, BD_NAME_LEN);
- }
+ if (BTM_SP_CFM_REQ_EVT == event) {
+ /* Due to the switch case falling through below to BTM_SP_KEY_NOTIF_EVT,
+ call remote name request using values from cfm_req */
+ if (p_data->cfm_req.bd_name[0] == 0) {
+ bta_dm_cb.pin_evt = pin_evt;
+ bdcpy(bta_dm_cb.pin_bd_addr, p_data->cfm_req.bd_addr);
+ BTA_COPY_DEVICE_CLASS(bta_dm_cb.pin_dev_class,
+ p_data->cfm_req.dev_class);
+ if ((BTM_ReadRemoteDeviceName(
+ p_data->cfm_req.bd_addr, bta_dm_pinname_cback,
+ BT_TRANSPORT_BR_EDR)) == BTM_CMD_STARTED)
+ return BTM_CMD_STARTED;
+ APPL_TRACE_WARNING(
+ " bta_dm_sp_cback() -> Failed to start Remote Name Request ");
+ } else {
+ /* Due to the switch case falling through below to
+ BTM_SP_KEY_NOTIF_EVT,
+ copy these values into key_notif from cfm_req */
+ bdcpy(sec_event.key_notif.bd_addr, p_data->cfm_req.bd_addr);
+ BTA_COPY_DEVICE_CLASS(sec_event.key_notif.dev_class,
+ p_data->cfm_req.dev_class);
+ strlcpy((char*)sec_event.key_notif.bd_name,
+ (char*)p_data->cfm_req.bd_name, BD_NAME_LEN);
}
+ }
- if (BTM_SP_KEY_NOTIF_EVT == event)
- {
- /* If the device name is not known, save bdaddr and devclass
- and initiate a name request with values from key_notif */
- if(p_data->key_notif.bd_name[0] == 0)
- {
- bta_dm_cb.pin_evt = pin_evt;
- bdcpy(bta_dm_cb.pin_bd_addr, p_data->key_notif.bd_addr);
- BTA_COPY_DEVICE_CLASS(bta_dm_cb.pin_dev_class, p_data->key_notif.dev_class);
- if ((BTM_ReadRemoteDeviceName(p_data->key_notif.bd_addr, bta_dm_pinname_cback,
- BT_TRANSPORT_BR_EDR)) == BTM_CMD_STARTED)
- return BTM_CMD_STARTED;
- APPL_TRACE_WARNING(" bta_dm_sp_cback() -> Failed to start Remote Name Request ");
- }
- else
- {
- bdcpy(sec_event.key_notif.bd_addr, p_data->key_notif.bd_addr);
- BTA_COPY_DEVICE_CLASS(sec_event.key_notif.dev_class, p_data->key_notif.dev_class);
- strlcpy((char*)sec_event.key_notif.bd_name,
- (char*)p_data->key_notif.bd_name, BD_NAME_LEN);
- sec_event.key_notif.bd_name[BD_NAME_LEN-1] = 0;
- }
+ if (BTM_SP_KEY_NOTIF_EVT == event) {
+ /* If the device name is not known, save bdaddr and devclass
+ and initiate a name request with values from key_notif */
+ if (p_data->key_notif.bd_name[0] == 0) {
+ bta_dm_cb.pin_evt = pin_evt;
+ bdcpy(bta_dm_cb.pin_bd_addr, p_data->key_notif.bd_addr);
+ BTA_COPY_DEVICE_CLASS(bta_dm_cb.pin_dev_class,
+ p_data->key_notif.dev_class);
+ if ((BTM_ReadRemoteDeviceName(
+ p_data->key_notif.bd_addr, bta_dm_pinname_cback,
+ BT_TRANSPORT_BR_EDR)) == BTM_CMD_STARTED)
+ return BTM_CMD_STARTED;
+ APPL_TRACE_WARNING(
+ " bta_dm_sp_cback() -> Failed to start Remote Name Request ");
+ } else {
+ bdcpy(sec_event.key_notif.bd_addr, p_data->key_notif.bd_addr);
+ BTA_COPY_DEVICE_CLASS(sec_event.key_notif.dev_class,
+ p_data->key_notif.dev_class);
+ strlcpy((char*)sec_event.key_notif.bd_name,
+ (char*)p_data->key_notif.bd_name, BD_NAME_LEN);
+ sec_event.key_notif.bd_name[BD_NAME_LEN - 1] = 0;
}
+ }
- bta_dm_cb.p_sec_cback(pin_evt, &sec_event);
+ bta_dm_cb.p_sec_cback(pin_evt, &sec_event);
- break;
+ break;
case BTM_SP_LOC_OOB_EVT:
- bta_dm_co_loc_oob((bool)(p_data->loc_oob.status == BTM_SUCCESS),
- p_data->loc_oob.c, p_data->loc_oob.r);
- break;
+ bta_dm_co_loc_oob((bool)(p_data->loc_oob.status == BTM_SUCCESS),
+ p_data->loc_oob.c, p_data->loc_oob.r);
+ break;
case BTM_SP_RMT_OOB_EVT:
- /* If the device name is not known, save bdaddr and devclass and initiate a name request */
- if (p_data->rmt_oob.bd_name[0] == 0)
- {
- bta_dm_cb.pin_evt = BTA_DM_SP_RMT_OOB_EVT;
- bdcpy(bta_dm_cb.pin_bd_addr, p_data->rmt_oob.bd_addr);
- BTA_COPY_DEVICE_CLASS(bta_dm_cb.pin_dev_class, p_data->rmt_oob.dev_class);
- if ((BTM_ReadRemoteDeviceName(p_data->rmt_oob.bd_addr, bta_dm_pinname_cback,
- BT_TRANSPORT_BR_EDR)) == BTM_CMD_STARTED)
- return BTM_CMD_STARTED;
- APPL_TRACE_WARNING(" bta_dm_sp_cback() -> Failed to start Remote Name Request ");
- }
+ /* If the device name is not known, save bdaddr and devclass and initiate
+ * a name request */
+ if (p_data->rmt_oob.bd_name[0] == 0) {
+ bta_dm_cb.pin_evt = BTA_DM_SP_RMT_OOB_EVT;
+ bdcpy(bta_dm_cb.pin_bd_addr, p_data->rmt_oob.bd_addr);
+ BTA_COPY_DEVICE_CLASS(bta_dm_cb.pin_dev_class,
+ p_data->rmt_oob.dev_class);
+ if ((BTM_ReadRemoteDeviceName(p_data->rmt_oob.bd_addr,
+ bta_dm_pinname_cback,
+ BT_TRANSPORT_BR_EDR)) == BTM_CMD_STARTED)
+ return BTM_CMD_STARTED;
+ APPL_TRACE_WARNING(
+ " bta_dm_sp_cback() -> Failed to start Remote Name Request ");
+ }
- bdcpy(sec_event.rmt_oob.bd_addr, p_data->rmt_oob.bd_addr);
- BTA_COPY_DEVICE_CLASS(sec_event.rmt_oob.dev_class, p_data->rmt_oob.dev_class);
- strlcpy((char*)sec_event.rmt_oob.bd_name, (char*)p_data->rmt_oob.bd_name, BD_NAME_LEN);
+ bdcpy(sec_event.rmt_oob.bd_addr, p_data->rmt_oob.bd_addr);
+ BTA_COPY_DEVICE_CLASS(sec_event.rmt_oob.dev_class,
+ p_data->rmt_oob.dev_class);
+ strlcpy((char*)sec_event.rmt_oob.bd_name, (char*)p_data->rmt_oob.bd_name,
+ BD_NAME_LEN);
- bta_dm_cb.p_sec_cback(BTA_DM_SP_RMT_OOB_EVT, &sec_event);
+ bta_dm_cb.p_sec_cback(BTA_DM_SP_RMT_OOB_EVT, &sec_event);
- bta_dm_co_rmt_oob(p_data->rmt_oob.bd_addr);
- break;
+ bta_dm_co_rmt_oob(p_data->rmt_oob.bd_addr);
+ break;
case BTM_SP_COMPLT_EVT:
- /* do not report this event - handled by link_key_callback or auth_complete_callback */
- break;
+ /* do not report this event - handled by link_key_callback or
+ * auth_complete_callback */
+ break;
case BTM_SP_KEYPRESS_EVT:
- memcpy(&sec_event.key_press, &p_data->key_press, sizeof(tBTM_SP_KEYPRESS));
- bta_dm_cb.p_sec_cback(BTA_DM_SP_KEYPRESS_EVT, &sec_event);
- break;
+ memcpy(&sec_event.key_press, &p_data->key_press,
+ sizeof(tBTM_SP_KEYPRESS));
+ bta_dm_cb.p_sec_cback(BTA_DM_SP_KEYPRESS_EVT, &sec_event);
+ break;
case BTM_SP_UPGRADE_EVT:
- bta_dm_co_lk_upgrade(p_data->upgrade.bd_addr, &p_data->upgrade.upgrade );
- break;
+ bta_dm_co_lk_upgrade(p_data->upgrade.bd_addr, &p_data->upgrade.upgrade);
+ break;
default:
- status = BTM_NOT_AUTHORIZED;
- break;
- }
- APPL_TRACE_EVENT("dm status: %d", status);
- return status;
+ status = BTM_NOT_AUTHORIZED;
+ break;
+ }
+ APPL_TRACE_EVENT("dm status: %d", status);
+ return status;
}
/*******************************************************************************
@@ -2995,15 +2867,13 @@
* Returns void
*
******************************************************************************/
-static void bta_dm_local_name_cback(UNUSED_ATTR uint8_t *p_name)
-{
- tBTA_DM_SEC sec_event;
+static void bta_dm_local_name_cback(UNUSED_ATTR uint8_t* p_name) {
+ tBTA_DM_SEC sec_event;
- sec_event.enable.status = BTA_SUCCESS;
+ sec_event.enable.status = BTA_SUCCESS;
- if(bta_dm_cb.p_sec_cback)
- bta_dm_cb.p_sec_cback(BTA_DM_ENABLE_EVT, &sec_event);
-
+ if (bta_dm_cb.p_sec_cback)
+ bta_dm_cb.p_sec_cback(BTA_DM_ENABLE_EVT, &sec_event);
}
/*******************************************************************************
@@ -3016,46 +2886,45 @@
* Returns void
*
******************************************************************************/
-static void bta_dm_bl_change_cback (tBTM_BL_EVENT_DATA *p_data)
-{
- tBTA_DM_ACL_CHANGE *p_msg =
- (tBTA_DM_ACL_CHANGE *)osi_malloc(sizeof(tBTA_DM_ACL_CHANGE));
+static void bta_dm_bl_change_cback(tBTM_BL_EVENT_DATA* p_data) {
+ tBTA_DM_ACL_CHANGE* p_msg =
+ (tBTA_DM_ACL_CHANGE*)osi_malloc(sizeof(tBTA_DM_ACL_CHANGE));
- p_msg->event = p_data->event;
- p_msg->is_new = false;
+ p_msg->event = p_data->event;
+ p_msg->is_new = false;
- switch (p_msg->event) {
+ switch (p_msg->event) {
case BTM_BL_CONN_EVT:
- p_msg->is_new = true;
- bdcpy(p_msg->bd_addr, p_data->conn.p_bda);
+ p_msg->is_new = true;
+ bdcpy(p_msg->bd_addr, p_data->conn.p_bda);
#if (BLE_INCLUDED == TRUE)
- p_msg->transport = p_data->conn.transport;
- p_msg->handle = p_data->conn.handle;
+ p_msg->transport = p_data->conn.transport;
+ p_msg->handle = p_data->conn.handle;
#endif
- break;
+ break;
case BTM_BL_DISCN_EVT:
- bdcpy(p_msg->bd_addr, p_data->discn.p_bda);
+ bdcpy(p_msg->bd_addr, p_data->discn.p_bda);
#if (BLE_INCLUDED == TRUE)
- p_msg->transport = p_data->discn.transport;
- p_msg->handle = p_data->discn.handle;
+ p_msg->transport = p_data->discn.transport;
+ p_msg->handle = p_data->discn.handle;
#endif
- break;
+ break;
case BTM_BL_UPDATE_EVT:
- p_msg->busy_level = p_data->update.busy_level;
- p_msg->busy_level_flags = p_data->update.busy_level_flags;
- break;
+ p_msg->busy_level = p_data->update.busy_level;
+ p_msg->busy_level_flags = p_data->update.busy_level_flags;
+ break;
case BTM_BL_ROLE_CHG_EVT:
- p_msg->new_role = p_data->role_chg.new_role;
- p_msg->hci_status = p_data->role_chg.hci_status;
- bdcpy(p_msg->bd_addr, p_data->role_chg.p_bda);
- break;
+ p_msg->new_role = p_data->role_chg.new_role;
+ p_msg->hci_status = p_data->role_chg.hci_status;
+ bdcpy(p_msg->bd_addr, p_data->role_chg.p_bda);
+ break;
case BTM_BL_COLLISION_EVT:
- bdcpy(p_msg->bd_addr, p_data->conn.p_bda);
- break;
- }
+ bdcpy(p_msg->bd_addr, p_data->conn.p_bda);
+ break;
+ }
- p_msg->hdr.event = BTA_DM_ACL_CHANGE_EVT;
- bta_sys_sendmsg(p_msg);
+ p_msg->hdr.event = BTA_DM_ACL_CHANGE_EVT;
+ bta_sys_sendmsg(p_msg);
}
/*******************************************************************************
@@ -3067,15 +2936,14 @@
* Returns
*
******************************************************************************/
-static void bta_dm_rs_cback (UNUSED_ATTR tBTM_ROLE_SWITCH_CMPL *p1)
-{
- APPL_TRACE_WARNING("bta_dm_rs_cback:%d", bta_dm_cb.rs_event);
- if(bta_dm_cb.rs_event == BTA_DM_API_SEARCH_EVT)
- {
- bta_dm_cb.search_msg.rs_res = BTA_DM_RS_OK; /* do not care about the result for now */
- bta_dm_cb.rs_event = 0;
- bta_dm_search_start((tBTA_DM_MSG *)&bta_dm_cb.search_msg);
- }
+static void bta_dm_rs_cback(UNUSED_ATTR tBTM_ROLE_SWITCH_CMPL* p1) {
+ APPL_TRACE_WARNING("bta_dm_rs_cback:%d", bta_dm_cb.rs_event);
+ if (bta_dm_cb.rs_event == BTA_DM_API_SEARCH_EVT) {
+ bta_dm_cb.search_msg.rs_res =
+ BTA_DM_RS_OK; /* do not care about the result for now */
+ bta_dm_cb.rs_event = 0;
+ bta_dm_search_start((tBTA_DM_MSG*)&bta_dm_cb.search_msg);
+ }
}
/*******************************************************************************
@@ -3088,48 +2956,45 @@
* Returns bool - true, if switch is in progress
*
******************************************************************************/
-static bool bta_dm_check_av(uint16_t event)
-{
- bool avoid_roleswitch = false;
- bool switching = false;
- uint8_t i;
- tBTA_DM_PEER_DEVICE *p_dev;
+static bool bta_dm_check_av(uint16_t event) {
+ bool avoid_roleswitch = false;
+ bool switching = false;
+ uint8_t i;
+ tBTA_DM_PEER_DEVICE* p_dev;
#if (BTA_DM_AVOID_A2DP_ROLESWITCH_ON_INQUIRY == TRUE)
- /* avoid role switch upon inquiry if a2dp is actively streaming as it
- introduces an audioglitch due to FW scheduling delays (unavoidable) */
- if (event == BTA_DM_API_SEARCH_EVT)
- {
- avoid_roleswitch = true;
- }
+ /* avoid role switch upon inquiry if a2dp is actively streaming as it
+ introduces an audioglitch due to FW scheduling delays (unavoidable) */
+ if (event == BTA_DM_API_SEARCH_EVT) {
+ avoid_roleswitch = true;
+ }
#endif
- APPL_TRACE_WARNING("bta_dm_check_av:%d", bta_dm_cb.cur_av_count);
- if(bta_dm_cb.cur_av_count)
- {
- for(i=0; i<bta_dm_cb.device_list.count; i++)
- {
- p_dev = &bta_dm_cb.device_list.peer_device[i];
- APPL_TRACE_WARNING("[%d]: state:%d, info:x%x, avoid_rs %d",
- i, p_dev->conn_state, p_dev->info, avoid_roleswitch);
- if((p_dev->conn_state == BTA_DM_CONNECTED) && (p_dev->info & BTA_DM_DI_AV_ACTIVE) &&
- (avoid_roleswitch == false))
- {
- /* make master and take away the role switch policy */
- if(BTM_CMD_STARTED == BTM_SwitchRole (p_dev->peer_bdaddr, HCI_ROLE_MASTER, (tBTM_CMPL_CB *)bta_dm_rs_cback))
- {
- /* the role switch command is actually sent */
- bta_dm_cb.rs_event = event;
- switching = true;
- }
- /* else either already master or can not switch for some reasons */
- bta_dm_policy_cback(BTA_SYS_PLCY_CLR, 0, HCI_ENABLE_MASTER_SLAVE_SWITCH, p_dev->peer_bdaddr);
- break;
- }
+ APPL_TRACE_WARNING("bta_dm_check_av:%d", bta_dm_cb.cur_av_count);
+ if (bta_dm_cb.cur_av_count) {
+ for (i = 0; i < bta_dm_cb.device_list.count; i++) {
+ p_dev = &bta_dm_cb.device_list.peer_device[i];
+ APPL_TRACE_WARNING("[%d]: state:%d, info:x%x, avoid_rs %d", i,
+ p_dev->conn_state, p_dev->info, avoid_roleswitch);
+ if ((p_dev->conn_state == BTA_DM_CONNECTED) &&
+ (p_dev->info & BTA_DM_DI_AV_ACTIVE) && (avoid_roleswitch == false)) {
+ /* make master and take away the role switch policy */
+ if (BTM_CMD_STARTED == BTM_SwitchRole(p_dev->peer_bdaddr,
+ HCI_ROLE_MASTER,
+ (tBTM_CMPL_CB*)bta_dm_rs_cback)) {
+ /* the role switch command is actually sent */
+ bta_dm_cb.rs_event = event;
+ switching = true;
}
+ /* else either already master or can not switch for some reasons */
+ bta_dm_policy_cback(BTA_SYS_PLCY_CLR, 0, HCI_ENABLE_MASTER_SLAVE_SWITCH,
+ p_dev->peer_bdaddr);
+ break;
+ }
}
- return switching;
+ }
+ return switching;
}
/*******************************************************************************
@@ -3142,216 +3007,214 @@
* Returns void
*
******************************************************************************/
-void bta_dm_acl_change(tBTA_DM_MSG *p_data)
-{
+void bta_dm_acl_change(tBTA_DM_MSG* p_data) {
+ uint8_t i;
+ uint8_t* p;
+ tBTA_DM_SEC conn;
+ bool is_new = p_data->acl_change.is_new;
+ BD_ADDR_PTR p_bda = p_data->acl_change.bd_addr;
+ bool need_policy_change = false;
+ bool issue_unpair_cb = false;
- uint8_t i;
- uint8_t *p;
- tBTA_DM_SEC conn;
- bool is_new = p_data->acl_change.is_new;
- BD_ADDR_PTR p_bda = p_data->acl_change.bd_addr;
- bool need_policy_change = false;
- bool issue_unpair_cb = false;
+ tBTA_DM_PEER_DEVICE* p_dev;
+ memset(&conn, 0, sizeof(tBTA_DM_SEC));
- tBTA_DM_PEER_DEVICE *p_dev;
- memset(&conn, 0, sizeof(tBTA_DM_SEC));
+ switch (p_data->acl_change.event) {
+ case BTM_BL_UPDATE_EVT: /* busy level update */
+ if (bta_dm_cb.p_sec_cback) {
+ conn.busy_level.level = p_data->acl_change.busy_level;
+ conn.busy_level.level_flags = p_data->acl_change.busy_level_flags;
+ bta_dm_cb.p_sec_cback(BTA_DM_BUSY_LEVEL_EVT, &conn);
+ }
+ return;
- switch(p_data->acl_change.event)
- {
- case BTM_BL_UPDATE_EVT: /* busy level update */
- if( bta_dm_cb.p_sec_cback )
- {
- conn.busy_level.level = p_data->acl_change.busy_level;
- conn.busy_level.level_flags = p_data->acl_change.busy_level_flags;
- bta_dm_cb.p_sec_cback(BTA_DM_BUSY_LEVEL_EVT, &conn);
+ case BTM_BL_ROLE_CHG_EVT: /* role change event */
+ p_dev = bta_dm_find_peer_device(p_bda);
+ if (p_dev) {
+ APPL_TRACE_DEBUG(
+ "bta_dm_acl_change role chg info:x%x new_role:%d dev count:%d",
+ p_dev->info, p_data->acl_change.new_role,
+ bta_dm_cb.device_list.count);
+ if (p_dev->info & BTA_DM_DI_AV_ACTIVE) {
+ /* there's AV activity on this link */
+ if (p_data->acl_change.new_role == HCI_ROLE_SLAVE &&
+ bta_dm_cb.device_list.count > 1 &&
+ p_data->acl_change.hci_status == HCI_SUCCESS) {
+ /* more than one connections and the AV connection is role switched
+ * to slave
+ * switch it back to master and remove the switch policy */
+ BTM_SwitchRole(p_bda, BTM_ROLE_MASTER, NULL);
+ need_policy_change = true;
+ } else if (p_bta_dm_cfg->avoid_scatter &&
+ (p_data->acl_change.new_role == HCI_ROLE_MASTER)) {
+ /* if the link updated to be master include AV activities, remove
+ * the switch policy */
+ need_policy_change = true;
+ }
+
+ if (need_policy_change) {
+ bta_dm_policy_cback(BTA_SYS_PLCY_CLR, 0,
+ HCI_ENABLE_MASTER_SLAVE_SWITCH,
+ p_dev->peer_bdaddr);
+ }
+ } else {
+ /* there's AV no activity on this link and role switch happened
+ * check if AV is active
+ * if so, make sure the AV link is master */
+ bta_dm_check_av(0);
}
- return;
-
- case BTM_BL_ROLE_CHG_EVT: /* role change event */
- p_dev = bta_dm_find_peer_device(p_bda);
- if(p_dev)
- {
- APPL_TRACE_DEBUG("bta_dm_acl_change role chg info:x%x new_role:%d dev count:%d",
- p_dev->info, p_data->acl_change.new_role, bta_dm_cb.device_list.count);
- if(p_dev->info & BTA_DM_DI_AV_ACTIVE)
- {
- /* there's AV activity on this link */
- if(p_data->acl_change.new_role == HCI_ROLE_SLAVE && bta_dm_cb.device_list.count > 1
- && p_data->acl_change.hci_status == HCI_SUCCESS)
- {
- /* more than one connections and the AV connection is role switched to slave
- * switch it back to master and remove the switch policy */
- BTM_SwitchRole(p_bda, BTM_ROLE_MASTER, NULL);
- need_policy_change = true;
- }
- else if (p_bta_dm_cfg->avoid_scatter && (p_data->acl_change.new_role == HCI_ROLE_MASTER))
- {
- /* if the link updated to be master include AV activities, remove the switch policy */
- need_policy_change = true;
- }
-
- if(need_policy_change)
- {
- bta_dm_policy_cback(BTA_SYS_PLCY_CLR, 0, HCI_ENABLE_MASTER_SLAVE_SWITCH, p_dev->peer_bdaddr);
- }
- }
- else
- {
- /* there's AV no activity on this link and role switch happened
- * check if AV is active
- * if so, make sure the AV link is master */
- bta_dm_check_av(0);
- }
- bta_sys_notify_role_chg(p_data->acl_change.bd_addr, p_data->acl_change.new_role, p_data->acl_change.hci_status);
- bdcpy(conn.role_chg.bd_addr, p_bda);
- conn.role_chg.new_role = (uint8_t) p_data->acl_change.new_role;
- if( bta_dm_cb.p_sec_cback )
- bta_dm_cb.p_sec_cback(BTA_DM_ROLE_CHG_EVT, (tBTA_DM_SEC *)&conn);
- }
- return;
- }
-
- /* Collision report from Stack: Notify profiles */
- if (p_data->acl_change.event == BTM_BL_COLLISION_EVT)
- {
- bta_sys_notify_collision (p_bda);
- return;
- }
-
- if(is_new)
- {
- for(i=0; i<bta_dm_cb.device_list.count; i++)
- {
- if (!bdcmp( bta_dm_cb.device_list.peer_device[i].peer_bdaddr, p_bda)
-#if (BLE_INCLUDED == TRUE)
- && bta_dm_cb.device_list.peer_device[i].conn_handle == p_data->acl_change.handle
-#endif
- )
- break;
-
- }
-
- if(i == bta_dm_cb.device_list.count)
- {
- if (bta_dm_cb.device_list.count < BTA_DM_NUM_PEER_DEVICE)
- {
- bdcpy(bta_dm_cb.device_list.peer_device[bta_dm_cb.device_list.count].peer_bdaddr, p_bda);
- bta_dm_cb.device_list.peer_device[bta_dm_cb.device_list.count].link_policy = bta_dm_cb.cur_policy;
- bta_dm_cb.device_list.count++;
-#if (BLE_INCLUDED == TRUE)
- bta_dm_cb.device_list.peer_device[i].conn_handle = p_data->acl_change.handle;
- if (p_data->acl_change.transport == BT_TRANSPORT_LE)
- bta_dm_cb.device_list.le_count++;
-#endif
- } else {
- APPL_TRACE_ERROR("%s max active connection reached, no resources", __func__);
- return;
- }
- }
-
- bta_dm_cb.device_list.peer_device[i].conn_state = BTA_DM_CONNECTED;
- bta_dm_cb.device_list.peer_device[i].pref_role = BTA_ANY_ROLE;
- bdcpy(conn.link_up.bd_addr, p_bda);
- bta_dm_cb.device_list.peer_device[i].info = BTA_DM_DI_NONE;
-#if (BLE_INCLUDED == TRUE)
- conn.link_up.link_type = p_data->acl_change.transport;
- bta_dm_cb.device_list.peer_device[i].transport = p_data->acl_change.transport;
-#endif
-
- if (((NULL != (p = BTM_ReadLocalFeatures ())) && HCI_SNIFF_SUB_RATE_SUPPORTED(p)) &&
- ((NULL != (p = BTM_ReadRemoteFeatures (p_bda))) && HCI_SNIFF_SUB_RATE_SUPPORTED(p)))
- {
- /* both local and remote devices support SSR */
- bta_dm_cb.device_list.peer_device[i].info = BTA_DM_DI_USE_SSR;
- }
- APPL_TRACE_WARNING("%s info: 0x%x", __func__, bta_dm_cb.device_list.peer_device[i].info);
-
+ bta_sys_notify_role_chg(p_data->acl_change.bd_addr,
+ p_data->acl_change.new_role,
+ p_data->acl_change.hci_status);
+ bdcpy(conn.role_chg.bd_addr, p_bda);
+ conn.role_chg.new_role = (uint8_t)p_data->acl_change.new_role;
if (bta_dm_cb.p_sec_cback)
- bta_dm_cb.p_sec_cback(BTA_DM_LINK_UP_EVT, (tBTA_DM_SEC *)&conn);
- } else {
- for(i=0; i<bta_dm_cb.device_list.count; i++)
- {
- if (bdcmp( bta_dm_cb.device_list.peer_device[i].peer_bdaddr, p_bda)
+ bta_dm_cb.p_sec_cback(BTA_DM_ROLE_CHG_EVT, (tBTA_DM_SEC*)&conn);
+ }
+ return;
+ }
+
+ /* Collision report from Stack: Notify profiles */
+ if (p_data->acl_change.event == BTM_BL_COLLISION_EVT) {
+ bta_sys_notify_collision(p_bda);
+ return;
+ }
+
+ if (is_new) {
+ for (i = 0; i < bta_dm_cb.device_list.count; i++) {
+ if (!bdcmp(bta_dm_cb.device_list.peer_device[i].peer_bdaddr, p_bda)
#if (BLE_INCLUDED == TRUE)
- ||bta_dm_cb.device_list.peer_device[i].transport != p_data->acl_change.transport
+ &&
+ bta_dm_cb.device_list.peer_device[i].conn_handle ==
+ p_data->acl_change.handle
#endif
- )
- continue;
-
- if( bta_dm_cb.device_list.peer_device[i].conn_state == BTA_DM_UNPAIRING )
- {
- if (BTM_SecDeleteDevice(bta_dm_cb.device_list.peer_device[i].peer_bdaddr))
- issue_unpair_cb = true;
-
- APPL_TRACE_DEBUG("%s: Unpairing: issue unpair CB = %d ",__func__, issue_unpair_cb);
- }
-
- conn.link_down.is_removed = bta_dm_cb.device_list.peer_device[i].remove_dev_pending;
-
- for(; i<bta_dm_cb.device_list.count ; i++)
- {
- memcpy(&bta_dm_cb.device_list.peer_device[i], &bta_dm_cb.device_list.peer_device[i+1], sizeof(bta_dm_cb.device_list.peer_device[i]));
- }
- break;
- }
- if(bta_dm_cb.device_list.count)
- bta_dm_cb.device_list.count--;
-#if (BLE_INCLUDED == TRUE)
- if ((p_data->acl_change.transport == BT_TRANSPORT_LE) &&
- (bta_dm_cb.device_list.le_count))
- bta_dm_cb.device_list.le_count--;
- conn.link_down.link_type = p_data->acl_change.transport;
-#endif
-
- if(bta_dm_search_cb.wait_disc && !bdcmp(bta_dm_search_cb.peer_bdaddr, p_bda))
- {
- bta_dm_search_cb.wait_disc = false;
-
- if(bta_dm_search_cb.sdp_results)
- {
- APPL_TRACE_EVENT(" timer stopped ");
- alarm_cancel(bta_dm_search_cb.search_timer);
- bta_dm_discover_next_device();
- }
-
- }
-
- if(bta_dm_cb.disabling)
- {
- if(!BTM_GetNumAclLinks())
- {
- /*
- * Start a timer to make sure that the profiles
- * get the disconnect event.
- */
- alarm_set_on_queue(bta_dm_cb.disable_timer,
- BTA_DM_DISABLE_CONN_DOWN_TIMER_MS,
- bta_dm_disable_conn_down_timer_cback, NULL,
- btu_bta_alarm_queue);
- }
- }
- if (conn.link_down.is_removed)
- {
- BTM_SecDeleteDevice(p_bda);
-#if (BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE)
- /* need to remove all pending background connection */
- BTA_GATTC_CancelOpen(0, p_bda, false);
- /* remove all cached GATT information */
- BTA_GATTC_Refresh(p_bda);
-#endif
- }
-
- bdcpy(conn.link_down.bd_addr, p_bda);
- conn.link_down.status = (uint8_t) btm_get_acl_disc_reason_code();
- if( bta_dm_cb.p_sec_cback )
- {
- bta_dm_cb.p_sec_cback(BTA_DM_LINK_DOWN_EVT, &conn);
- if( issue_unpair_cb )
- bta_dm_cb.p_sec_cback(BTA_DM_DEV_UNPAIRED_EVT, &conn);
- }
+ )
+ break;
}
- bta_dm_adjust_roles(true);
+ if (i == bta_dm_cb.device_list.count) {
+ if (bta_dm_cb.device_list.count < BTA_DM_NUM_PEER_DEVICE) {
+ bdcpy(bta_dm_cb.device_list.peer_device[bta_dm_cb.device_list.count]
+ .peer_bdaddr,
+ p_bda);
+ bta_dm_cb.device_list.peer_device[bta_dm_cb.device_list.count]
+ .link_policy = bta_dm_cb.cur_policy;
+ bta_dm_cb.device_list.count++;
+#if (BLE_INCLUDED == TRUE)
+ bta_dm_cb.device_list.peer_device[i].conn_handle =
+ p_data->acl_change.handle;
+ if (p_data->acl_change.transport == BT_TRANSPORT_LE)
+ bta_dm_cb.device_list.le_count++;
+#endif
+ } else {
+ APPL_TRACE_ERROR("%s max active connection reached, no resources",
+ __func__);
+ return;
+ }
+ }
+
+ bta_dm_cb.device_list.peer_device[i].conn_state = BTA_DM_CONNECTED;
+ bta_dm_cb.device_list.peer_device[i].pref_role = BTA_ANY_ROLE;
+ bdcpy(conn.link_up.bd_addr, p_bda);
+ bta_dm_cb.device_list.peer_device[i].info = BTA_DM_DI_NONE;
+#if (BLE_INCLUDED == TRUE)
+ conn.link_up.link_type = p_data->acl_change.transport;
+ bta_dm_cb.device_list.peer_device[i].transport =
+ p_data->acl_change.transport;
+#endif
+
+ if (((NULL != (p = BTM_ReadLocalFeatures())) &&
+ HCI_SNIFF_SUB_RATE_SUPPORTED(p)) &&
+ ((NULL != (p = BTM_ReadRemoteFeatures(p_bda))) &&
+ HCI_SNIFF_SUB_RATE_SUPPORTED(p))) {
+ /* both local and remote devices support SSR */
+ bta_dm_cb.device_list.peer_device[i].info = BTA_DM_DI_USE_SSR;
+ }
+ APPL_TRACE_WARNING("%s info: 0x%x", __func__,
+ bta_dm_cb.device_list.peer_device[i].info);
+
+ if (bta_dm_cb.p_sec_cback)
+ bta_dm_cb.p_sec_cback(BTA_DM_LINK_UP_EVT, (tBTA_DM_SEC*)&conn);
+ } else {
+ for (i = 0; i < bta_dm_cb.device_list.count; i++) {
+ if (bdcmp(bta_dm_cb.device_list.peer_device[i].peer_bdaddr, p_bda)
+#if (BLE_INCLUDED == TRUE)
+ ||
+ bta_dm_cb.device_list.peer_device[i].transport !=
+ p_data->acl_change.transport
+#endif
+ )
+ continue;
+
+ if (bta_dm_cb.device_list.peer_device[i].conn_state == BTA_DM_UNPAIRING) {
+ if (BTM_SecDeleteDevice(
+ bta_dm_cb.device_list.peer_device[i].peer_bdaddr))
+ issue_unpair_cb = true;
+
+ APPL_TRACE_DEBUG("%s: Unpairing: issue unpair CB = %d ", __func__,
+ issue_unpair_cb);
+ }
+
+ conn.link_down.is_removed =
+ bta_dm_cb.device_list.peer_device[i].remove_dev_pending;
+
+ for (; i < bta_dm_cb.device_list.count; i++) {
+ memcpy(&bta_dm_cb.device_list.peer_device[i],
+ &bta_dm_cb.device_list.peer_device[i + 1],
+ sizeof(bta_dm_cb.device_list.peer_device[i]));
+ }
+ break;
+ }
+ if (bta_dm_cb.device_list.count) bta_dm_cb.device_list.count--;
+#if (BLE_INCLUDED == TRUE)
+ if ((p_data->acl_change.transport == BT_TRANSPORT_LE) &&
+ (bta_dm_cb.device_list.le_count))
+ bta_dm_cb.device_list.le_count--;
+ conn.link_down.link_type = p_data->acl_change.transport;
+#endif
+
+ if (bta_dm_search_cb.wait_disc &&
+ !bdcmp(bta_dm_search_cb.peer_bdaddr, p_bda)) {
+ bta_dm_search_cb.wait_disc = false;
+
+ if (bta_dm_search_cb.sdp_results) {
+ APPL_TRACE_EVENT(" timer stopped ");
+ alarm_cancel(bta_dm_search_cb.search_timer);
+ bta_dm_discover_next_device();
+ }
+ }
+
+ if (bta_dm_cb.disabling) {
+ if (!BTM_GetNumAclLinks()) {
+ /*
+ * Start a timer to make sure that the profiles
+ * get the disconnect event.
+ */
+ alarm_set_on_queue(
+ bta_dm_cb.disable_timer, BTA_DM_DISABLE_CONN_DOWN_TIMER_MS,
+ bta_dm_disable_conn_down_timer_cback, NULL, btu_bta_alarm_queue);
+ }
+ }
+ if (conn.link_down.is_removed) {
+ BTM_SecDeleteDevice(p_bda);
+#if (BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE)
+ /* need to remove all pending background connection */
+ BTA_GATTC_CancelOpen(0, p_bda, false);
+ /* remove all cached GATT information */
+ BTA_GATTC_Refresh(p_bda);
+#endif
+ }
+
+ bdcpy(conn.link_down.bd_addr, p_bda);
+ conn.link_down.status = (uint8_t)btm_get_acl_disc_reason_code();
+ if (bta_dm_cb.p_sec_cback) {
+ bta_dm_cb.p_sec_cback(BTA_DM_LINK_DOWN_EVT, &conn);
+ if (issue_unpair_cb)
+ bta_dm_cb.p_sec_cback(BTA_DM_DEV_UNPAIRED_EVT, &conn);
+ }
+ }
+
+ bta_dm_adjust_roles(true);
}
/*******************************************************************************
@@ -3364,23 +3227,22 @@
* Returns void
*
******************************************************************************/
-static void bta_dm_disable_conn_down_timer_cback(UNUSED_ATTR void *data)
-{
- tBTA_SYS_HW_MSG *sys_enable_event =
- (tBTA_SYS_HW_MSG *)osi_malloc(sizeof(tBTA_SYS_HW_MSG));
+static void bta_dm_disable_conn_down_timer_cback(UNUSED_ATTR void* data) {
+ tBTA_SYS_HW_MSG* sys_enable_event =
+ (tBTA_SYS_HW_MSG*)osi_malloc(sizeof(tBTA_SYS_HW_MSG));
- /* disable the power managment module */
- bta_dm_disable_pm();
+ /* disable the power managment module */
+ bta_dm_disable_pm();
- /* register our callback to SYS HW manager */
- bta_sys_hw_register(BTA_SYS_HW_BLUETOOTH, bta_dm_sys_hw_cback );
+ /* register our callback to SYS HW manager */
+ bta_sys_hw_register(BTA_SYS_HW_BLUETOOTH, bta_dm_sys_hw_cback);
- /* send a message to BTA SYS */
- sys_enable_event->hdr.event = BTA_SYS_API_DISABLE_EVT;
- sys_enable_event->hw_module = BTA_SYS_HW_BLUETOOTH;
- bta_sys_sendmsg(sys_enable_event);
+ /* send a message to BTA SYS */
+ sys_enable_event->hdr.event = BTA_SYS_API_DISABLE_EVT;
+ sys_enable_event->hw_module = BTA_SYS_HW_BLUETOOTH;
+ bta_sys_sendmsg(sys_enable_event);
- bta_dm_cb.disabling = false;
+ bta_dm_cb.disabling = false;
}
/*******************************************************************************
@@ -3393,66 +3255,57 @@
* Returns void
*
******************************************************************************/
-static void bta_dm_rm_cback(tBTA_SYS_CONN_STATUS status, uint8_t id, uint8_t app_id, BD_ADDR peer_addr)
-{
- uint8_t j;
- tBTA_PREF_ROLES role;
- tBTA_DM_PEER_DEVICE *p_dev;
+static void bta_dm_rm_cback(tBTA_SYS_CONN_STATUS status, uint8_t id,
+ uint8_t app_id, BD_ADDR peer_addr) {
+ uint8_t j;
+ tBTA_PREF_ROLES role;
+ tBTA_DM_PEER_DEVICE* p_dev;
- p_dev = bta_dm_find_peer_device(peer_addr);
- if( status == BTA_SYS_CONN_OPEN)
- {
- if(p_dev)
- {
- /* Do not set to connected if we are in the middle of unpairing. When AV stream is
- * started it fakes out a SYS_CONN_OPEN to potentially trigger a role switch command.
- * But this should not be done if we are in the middle of unpairing.
- */
- if (p_dev->conn_state != BTA_DM_UNPAIRING)
- p_dev->conn_state = BTA_DM_CONNECTED;
+ p_dev = bta_dm_find_peer_device(peer_addr);
+ if (status == BTA_SYS_CONN_OPEN) {
+ if (p_dev) {
+ /* Do not set to connected if we are in the middle of unpairing. When AV
+ * stream is
+ * started it fakes out a SYS_CONN_OPEN to potentially trigger a role
+ * switch command.
+ * But this should not be done if we are in the middle of unpairing.
+ */
+ if (p_dev->conn_state != BTA_DM_UNPAIRING)
+ p_dev->conn_state = BTA_DM_CONNECTED;
- for(j=1; j<= p_bta_dm_rm_cfg[0].app_id; j++)
- {
- if(((p_bta_dm_rm_cfg[j].app_id == app_id) || (p_bta_dm_rm_cfg[j].app_id == BTA_ALL_APP_ID))
- && (p_bta_dm_rm_cfg[j].id == id))
- {
- role = p_bta_dm_rm_cfg[j].cfg;
+ for (j = 1; j <= p_bta_dm_rm_cfg[0].app_id; j++) {
+ if (((p_bta_dm_rm_cfg[j].app_id == app_id) ||
+ (p_bta_dm_rm_cfg[j].app_id == BTA_ALL_APP_ID)) &&
+ (p_bta_dm_rm_cfg[j].id == id)) {
+ role = p_bta_dm_rm_cfg[j].cfg;
- if(role > p_dev->pref_role )
- p_dev->pref_role = role;
- break;
- }
- }
+ if (role > p_dev->pref_role) p_dev->pref_role = role;
+ break;
}
+ }
}
+ }
- if((BTA_ID_AV == id)||(BTA_ID_AVK ==id))
- {
- if( status == BTA_SYS_CONN_BUSY)
- {
- if(p_dev)
- p_dev->info |= BTA_DM_DI_AV_ACTIVE;
- /* AV calls bta_sys_conn_open with the A2DP stream count as app_id */
- if(BTA_ID_AV == id)
- bta_dm_cb.cur_av_count = bta_dm_get_av_count();
- }
- else if( status == BTA_SYS_CONN_IDLE)
- {
- if(p_dev)
- p_dev->info &= ~BTA_DM_DI_AV_ACTIVE;
+ if ((BTA_ID_AV == id) || (BTA_ID_AVK == id)) {
+ if (status == BTA_SYS_CONN_BUSY) {
+ if (p_dev) p_dev->info |= BTA_DM_DI_AV_ACTIVE;
+ /* AV calls bta_sys_conn_open with the A2DP stream count as app_id */
+ if (BTA_ID_AV == id) bta_dm_cb.cur_av_count = bta_dm_get_av_count();
+ } else if (status == BTA_SYS_CONN_IDLE) {
+ if (p_dev) p_dev->info &= ~BTA_DM_DI_AV_ACTIVE;
- /* get cur_av_count from connected services */
- if(BTA_ID_AV == id)
- bta_dm_cb.cur_av_count = bta_dm_get_av_count();
- }
- APPL_TRACE_WARNING("bta_dm_rm_cback:%d, status:%d", bta_dm_cb.cur_av_count, status);
+ /* get cur_av_count from connected services */
+ if (BTA_ID_AV == id) bta_dm_cb.cur_av_count = bta_dm_get_av_count();
}
+ APPL_TRACE_WARNING("bta_dm_rm_cback:%d, status:%d", bta_dm_cb.cur_av_count,
+ status);
+ }
- /* Don't adjust roles for each busy/idle state transition to avoid
- excessive switch requests when individual profile busy/idle status
- changes */
- if ((status != BTA_SYS_CONN_BUSY) && (status != BTA_SYS_CONN_IDLE))
- bta_dm_adjust_roles(false);
+ /* Don't adjust roles for each busy/idle state transition to avoid
+ excessive switch requests when individual profile busy/idle status
+ changes */
+ if ((status != BTA_SYS_CONN_BUSY) && (status != BTA_SYS_CONN_IDLE))
+ bta_dm_adjust_roles(false);
}
/*******************************************************************************
@@ -3464,10 +3317,9 @@
* Returns void
*
******************************************************************************/
-static void bta_dm_delay_role_switch_cback(UNUSED_ATTR void *data)
-{
- APPL_TRACE_EVENT("%s: initiating Delayed RS", __func__);
- bta_dm_adjust_roles(false);
+static void bta_dm_delay_role_switch_cback(UNUSED_ATTR void* data) {
+ APPL_TRACE_EVENT("%s: initiating Delayed RS", __func__);
+ bta_dm_adjust_roles(false);
}
/*******************************************************************************
@@ -3481,59 +3333,54 @@
* Returns void
*
******************************************************************************/
-static void bta_dm_reset_sec_dev_pending(BD_ADDR remote_bd_addr)
-{
- for (size_t i = 0; i < bta_dm_cb.device_list.count; i++)
- {
- if (bdcmp(bta_dm_cb.device_list.peer_device[i].peer_bdaddr, remote_bd_addr) == 0)
- {
- bta_dm_cb.device_list.peer_device[i].remove_dev_pending = false;
- return;
- }
+static void bta_dm_reset_sec_dev_pending(BD_ADDR remote_bd_addr) {
+ for (size_t i = 0; i < bta_dm_cb.device_list.count; i++) {
+ if (bdcmp(bta_dm_cb.device_list.peer_device[i].peer_bdaddr,
+ remote_bd_addr) == 0) {
+ bta_dm_cb.device_list.peer_device[i].remove_dev_pending = false;
+ return;
}
+ }
}
/*******************************************************************************
*
* Function bta_dm_remove_sec_dev_entry
*
- * Description Removes device entry from Security device DB if ACL connection with
- * remtoe device does not exist, else schedule for dev entry removal upon
+ * Description Removes device entry from Security device DB if ACL
+ connection with
+ * remtoe device does not exist, else schedule for dev entry
+ removal upon
ACL close
*
* Returns void
*
******************************************************************************/
-static void bta_dm_remove_sec_dev_entry(BD_ADDR remote_bd_addr)
-{
- if ( BTM_IsAclConnectionUp(remote_bd_addr, BT_TRANSPORT_LE) ||
- BTM_IsAclConnectionUp(remote_bd_addr, BT_TRANSPORT_BR_EDR))
- {
- APPL_TRACE_DEBUG("%s ACL is not down. Schedule for Dev Removal when ACL closes",
- __func__);
- BTM_SecClearSecurityFlags (remote_bd_addr);
- for (int i = 0; i < bta_dm_cb.device_list.count; i++)
- {
- if (!bdcmp( bta_dm_cb.device_list.peer_device[i].peer_bdaddr, remote_bd_addr))
- {
- bta_dm_cb.device_list.peer_device[i].remove_dev_pending = TRUE;
- break;
- }
- }
+static void bta_dm_remove_sec_dev_entry(BD_ADDR remote_bd_addr) {
+ if (BTM_IsAclConnectionUp(remote_bd_addr, BT_TRANSPORT_LE) ||
+ BTM_IsAclConnectionUp(remote_bd_addr, BT_TRANSPORT_BR_EDR)) {
+ APPL_TRACE_DEBUG(
+ "%s ACL is not down. Schedule for Dev Removal when ACL closes",
+ __func__);
+ BTM_SecClearSecurityFlags(remote_bd_addr);
+ for (int i = 0; i < bta_dm_cb.device_list.count; i++) {
+ if (!bdcmp(bta_dm_cb.device_list.peer_device[i].peer_bdaddr,
+ remote_bd_addr)) {
+ bta_dm_cb.device_list.peer_device[i].remove_dev_pending = TRUE;
+ break;
+ }
}
- else
- {
- BTM_SecDeleteDevice (remote_bd_addr);
+ } else {
+ BTM_SecDeleteDevice(remote_bd_addr);
#if (BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE)
- /* need to remove all pending background connection */
- BTA_GATTC_CancelOpen(0, remote_bd_addr, false);
- /* remove all cached GATT information */
- BTA_GATTC_Refresh(remote_bd_addr);
+ /* need to remove all pending background connection */
+ BTA_GATTC_CancelOpen(0, remote_bd_addr, false);
+ /* remove all cached GATT information */
+ BTA_GATTC_Refresh(remote_bd_addr);
#endif
- }
+ }
}
-
/*******************************************************************************
*
* Function bta_dm_adjust_roles
@@ -3544,109 +3391,93 @@
* Returns void
*
******************************************************************************/
-static void bta_dm_adjust_roles(bool delay_role_switch)
-{
-
- uint8_t i;
- bool set_master_role = false;
+static void bta_dm_adjust_roles(bool delay_role_switch) {
+ uint8_t i;
+ bool set_master_role = false;
#if (BLE_INCLUDED == TRUE)
- uint8_t br_count = bta_dm_cb.device_list.count - bta_dm_cb.device_list.le_count;
+ uint8_t br_count =
+ bta_dm_cb.device_list.count - bta_dm_cb.device_list.le_count;
#else
- uint8_t br_count = bta_dm_cb.device_list.count;
+ uint8_t br_count = bta_dm_cb.device_list.count;
#endif
- if (br_count)
- {
+ if (br_count) {
+ /* the configuration is no scatternet
+ * or AV connection exists and there are more than one ACL link */
+ if ((p_bta_dm_rm_cfg[0].cfg == BTA_DM_NO_SCATTERNET) ||
+ (bta_dm_cb.cur_av_count && br_count > 1)) {
+ L2CA_SetDesireRole(HCI_ROLE_MASTER);
+ set_master_role = true;
+ }
- /* the configuration is no scatternet
- * or AV connection exists and there are more than one ACL link */
- if ( (p_bta_dm_rm_cfg[0].cfg == BTA_DM_NO_SCATTERNET) ||
- (bta_dm_cb.cur_av_count && br_count > 1) )
- {
-
- L2CA_SetDesireRole (HCI_ROLE_MASTER);
- set_master_role = true;
-
- }
-
- for(i=0; i<bta_dm_cb.device_list.count; i++)
- {
- if (bta_dm_cb.device_list.peer_device[i].conn_state == BTA_DM_CONNECTED
+ for (i = 0; i < bta_dm_cb.device_list.count; i++) {
+ if (bta_dm_cb.device_list.peer_device[i].conn_state == BTA_DM_CONNECTED
#if (BLE_INCLUDED == TRUE)
- && bta_dm_cb.device_list.peer_device[i].transport == BT_TRANSPORT_BR_EDR
+ &&
+ bta_dm_cb.device_list.peer_device[i].transport == BT_TRANSPORT_BR_EDR
#endif
- )
- {
- if(!set_master_role && (bta_dm_cb.device_list.peer_device[i].pref_role != BTA_ANY_ROLE)
- && (p_bta_dm_rm_cfg[0].cfg == BTA_DM_PARTIAL_SCATTERNET))
- {
- L2CA_SetDesireRole (HCI_ROLE_MASTER);
- set_master_role = true;
- }
-
- if((bta_dm_cb.device_list.peer_device[i].pref_role == BTA_MASTER_ROLE_ONLY)
- || (br_count > 1))
- {
-
- /* Initiating immediate role switch with certain remote devices
- has caused issues due to role switch colliding with link encryption setup and
- causing encryption (and in turn the link) to fail . These device . Firmware
- versions are stored in a blacklist and role switch with these devices are
- delayed to avoid the collision with link encryption setup */
-
- if (bta_dm_cb.device_list.peer_device[i].pref_role != BTA_SLAVE_ROLE_ONLY &&
- delay_role_switch == false)
- {
- BTM_SwitchRole (bta_dm_cb.device_list.peer_device[i].peer_bdaddr,
- HCI_ROLE_MASTER, NULL);
- }
- else
- {
- alarm_set_on_queue(bta_dm_cb.switch_delay_timer,
- BTA_DM_SWITCH_DELAY_TIMER_MS,
- bta_dm_delay_role_switch_cback,
- NULL, btu_bta_alarm_queue);
- }
- }
- }
+ ) {
+ if (!set_master_role &&
+ (bta_dm_cb.device_list.peer_device[i].pref_role != BTA_ANY_ROLE) &&
+ (p_bta_dm_rm_cfg[0].cfg == BTA_DM_PARTIAL_SCATTERNET)) {
+ L2CA_SetDesireRole(HCI_ROLE_MASTER);
+ set_master_role = true;
}
+ if ((bta_dm_cb.device_list.peer_device[i].pref_role ==
+ BTA_MASTER_ROLE_ONLY) ||
+ (br_count > 1)) {
+ /* Initiating immediate role switch with certain remote devices
+ has caused issues due to role switch colliding with link encryption
+ setup and
+ causing encryption (and in turn the link) to fail . These device .
+ Firmware
+ versions are stored in a blacklist and role switch with these
+ devices are
+ delayed to avoid the collision with link encryption setup */
- if(!set_master_role)
- {
-
- L2CA_SetDesireRole (L2CAP_DESIRED_LINK_ROLE);
-
+ if (bta_dm_cb.device_list.peer_device[i].pref_role !=
+ BTA_SLAVE_ROLE_ONLY &&
+ delay_role_switch == false) {
+ BTM_SwitchRole(bta_dm_cb.device_list.peer_device[i].peer_bdaddr,
+ HCI_ROLE_MASTER, NULL);
+ } else {
+ alarm_set_on_queue(
+ bta_dm_cb.switch_delay_timer, BTA_DM_SWITCH_DELAY_TIMER_MS,
+ bta_dm_delay_role_switch_cback, NULL, btu_bta_alarm_queue);
+ }
}
-
- }
- else
- {
- L2CA_SetDesireRole (L2CAP_DESIRED_LINK_ROLE);
+ }
}
+ if (!set_master_role) {
+ L2CA_SetDesireRole(L2CAP_DESIRED_LINK_ROLE);
+ }
+ } else {
+ L2CA_SetDesireRole(L2CAP_DESIRED_LINK_ROLE);
+ }
}
/*******************************************************************************
*
* Function bta_dm_get_remname
*
- * Description Returns a pointer to the remote name stored in the DM control
+ * Description Returns a pointer to the remote name stored in the DM
+ *control
* block if it exists, or from the BTM memory.
*
* Returns char * - Pointer to the remote device name
******************************************************************************/
-static char *bta_dm_get_remname(void)
-{
- char *p_name = (char *)bta_dm_search_cb.peer_name;
- char *p_temp;
+static char* bta_dm_get_remname(void) {
+ char* p_name = (char*)bta_dm_search_cb.peer_name;
+ char* p_temp;
- /* If the name isn't already stored, try retrieving from BTM */
- if (*p_name == '\0')
- if ((p_temp = BTM_SecReadDevName(bta_dm_search_cb.peer_bdaddr)) != NULL)
- p_name = p_temp;
+ /* If the name isn't already stored, try retrieving from BTM */
+ if (*p_name == '\0')
+ if ((p_temp = BTM_SecReadDevName(bta_dm_search_cb.peer_bdaddr)) != NULL)
+ p_name = p_temp;
- return p_name;
+ return p_name;
}
/*******************************************************************************
@@ -3658,20 +3489,17 @@
* Returns void
*
******************************************************************************/
-static void bta_dm_bond_cancel_complete_cback(tBTM_STATUS result)
-{
+static void bta_dm_bond_cancel_complete_cback(tBTM_STATUS result) {
+ tBTA_DM_SEC sec_event;
- tBTA_DM_SEC sec_event;
+ if (result == BTM_SUCCESS)
+ sec_event.bond_cancel_cmpl.result = BTA_SUCCESS;
+ else
+ sec_event.bond_cancel_cmpl.result = BTA_FAILURE;
- if (result == BTM_SUCCESS)
- sec_event.bond_cancel_cmpl.result = BTA_SUCCESS;
- else
- sec_event.bond_cancel_cmpl.result = BTA_FAILURE;
-
- if(bta_dm_cb.p_sec_cback)
- {
- bta_dm_cb.p_sec_cback(BTA_DM_BOND_CANCEL_CMPL_EVT, &sec_event);
- }
+ if (bta_dm_cb.p_sec_cback) {
+ bta_dm_cb.p_sec_cback(BTA_DM_BOND_CANCEL_CMPL_EVT, &sec_event);
+ }
}
/*******************************************************************************
@@ -3685,304 +3513,274 @@
* Returns Offset of UTF8 character boundary
*
******************************************************************************/
-static size_t find_utf8_char_boundary(const char *utf8str, size_t offset)
-{
- assert(utf8str);
- assert(offset > 0);
+static size_t find_utf8_char_boundary(const char* utf8str, size_t offset) {
+ assert(utf8str);
+ assert(offset > 0);
- while (--offset)
- {
- uint8_t ch = (uint8_t)utf8str[offset];
- if ((ch & 0x80) == 0x00) // ASCII
- return offset + 1;
- if ((ch & 0xC0) == 0xC0) // Multi-byte sequence start
- return offset;
- }
+ while (--offset) {
+ uint8_t ch = (uint8_t)utf8str[offset];
+ if ((ch & 0x80) == 0x00) // ASCII
+ return offset + 1;
+ if ((ch & 0xC0) == 0xC0) // Multi-byte sequence start
+ return offset;
+ }
- return 0;
+ return 0;
}
/*******************************************************************************
*
* Function bta_dm_set_eir
*
- * Description This function creates EIR tagged data and writes it to controller.
+ * Description This function creates EIR tagged data and writes it to
+ *controller.
*
* Returns None
*
******************************************************************************/
-static void bta_dm_set_eir (char *local_name)
-{
- uint8_t *p;
- uint8_t *p_length;
+static void bta_dm_set_eir(char* local_name) {
+ uint8_t* p;
+ uint8_t* p_length;
#if (BTA_EIR_CANNED_UUID_LIST != TRUE)
- uint8_t *p_type;
- uint8_t max_num_uuid;
+ uint8_t* p_type;
+ uint8_t max_num_uuid;
#if (BTA_EIR_SERVER_NUM_CUSTOM_UUID > 0)
- uint8_t custom_uuid_idx;
+ uint8_t custom_uuid_idx;
#endif // BTA_EIR_SERVER_NUM_CUSTOM_UUID
#endif // BTA_EIR_CANNED_UUID_LIST
#if (BTM_EIR_DEFAULT_FEC_REQUIRED == FALSE)
- uint8_t free_eir_length = HCI_EXT_INQ_RESPONSE_LEN;
+ uint8_t free_eir_length = HCI_EXT_INQ_RESPONSE_LEN;
#else // BTM_EIR_DEFAULT_FEC_REQUIRED
- uint8_t free_eir_length = HCI_DM5_PACKET_SIZE;
+ uint8_t free_eir_length = HCI_DM5_PACKET_SIZE;
#endif // BTM_EIR_DEFAULT_FEC_REQUIRED
- uint8_t num_uuid;
- uint8_t data_type;
- uint8_t local_name_len;
+ uint8_t num_uuid;
+ uint8_t data_type;
+ uint8_t local_name_len;
- /* wait until complete to disable */
- if (alarm_is_scheduled(bta_dm_cb.disable_timer))
- return;
+ /* wait until complete to disable */
+ if (alarm_is_scheduled(bta_dm_cb.disable_timer)) return;
#if (BTA_EIR_CANNED_UUID_LIST != TRUE)
- /* if local name is not provided, get it from controller */
- if( local_name == NULL )
- {
- if( BTM_ReadLocalDeviceName( &local_name ) != BTM_SUCCESS )
- {
- APPL_TRACE_ERROR("Fail to read local device name for EIR");
- }
+ /* if local name is not provided, get it from controller */
+ if (local_name == NULL) {
+ if (BTM_ReadLocalDeviceName(&local_name) != BTM_SUCCESS) {
+ APPL_TRACE_ERROR("Fail to read local device name for EIR");
}
+ }
#endif // BTA_EIR_CANNED_UUID_LIST
- /* Allocate a buffer to hold HCI command */
- BT_HDR *p_buf = (BT_HDR *)osi_malloc(BTM_CMD_BUF_SIZE);
- p = (uint8_t *)p_buf + BTM_HCI_EIR_OFFSET;
+ /* Allocate a buffer to hold HCI command */
+ BT_HDR* p_buf = (BT_HDR*)osi_malloc(BTM_CMD_BUF_SIZE);
+ p = (uint8_t*)p_buf + BTM_HCI_EIR_OFFSET;
- memset(p, 0x00, HCI_EXT_INQ_RESPONSE_LEN );
+ memset(p, 0x00, HCI_EXT_INQ_RESPONSE_LEN);
- APPL_TRACE_DEBUG("BTA is generating EIR");
+ APPL_TRACE_DEBUG("BTA is generating EIR");
- if( local_name )
- local_name_len = strlen( local_name );
- else
- local_name_len = 0;
+ if (local_name)
+ local_name_len = strlen(local_name);
+ else
+ local_name_len = 0;
- data_type = BTM_EIR_COMPLETE_LOCAL_NAME_TYPE;
- /* if local name is longer than minimum length of shortened name */
- /* check whether it needs to be shortened or not */
- if( local_name_len > p_bta_dm_eir_cfg->bta_dm_eir_min_name_len )
- {
- /* get number of UUID 16-bit list */
+ data_type = BTM_EIR_COMPLETE_LOCAL_NAME_TYPE;
+ /* if local name is longer than minimum length of shortened name */
+ /* check whether it needs to be shortened or not */
+ if (local_name_len > p_bta_dm_eir_cfg->bta_dm_eir_min_name_len) {
+/* get number of UUID 16-bit list */
#if (BTA_EIR_CANNED_UUID_LIST == TRUE)
- num_uuid = p_bta_dm_eir_cfg->bta_dm_eir_uuid16_len/LEN_UUID_16;
-#else // BTA_EIR_CANNED_UUID_LIST
- max_num_uuid = (free_eir_length - 2)/LEN_UUID_16;
- data_type = BTM_GetEirSupportedServices( bta_dm_cb.eir_uuid, &p,
- max_num_uuid, &num_uuid );
- p = (uint8_t *)p_buf + BTM_HCI_EIR_OFFSET; /* reset p */
+ num_uuid = p_bta_dm_eir_cfg->bta_dm_eir_uuid16_len / LEN_UUID_16;
+#else // BTA_EIR_CANNED_UUID_LIST
+ max_num_uuid = (free_eir_length - 2) / LEN_UUID_16;
+ data_type = BTM_GetEirSupportedServices(bta_dm_cb.eir_uuid, &p,
+ max_num_uuid, &num_uuid);
+ p = (uint8_t*)p_buf + BTM_HCI_EIR_OFFSET; /* reset p */
#endif // BTA_EIR_CANNED_UUID_LIST
- /* if UUID doesn't fit remaing space, shorten local name */
- if (local_name_len > (free_eir_length - 4 - num_uuid*LEN_UUID_16))
- {
- local_name_len = find_utf8_char_boundary(local_name,
- p_bta_dm_eir_cfg->bta_dm_eir_min_name_len);
- APPL_TRACE_WARNING("%s local name is shortened (%d)", __func__, local_name_len);
- data_type = BTM_EIR_SHORTENED_LOCAL_NAME_TYPE;
- } else {
- data_type = BTM_EIR_COMPLETE_LOCAL_NAME_TYPE;
- }
+ /* if UUID doesn't fit remaing space, shorten local name */
+ if (local_name_len > (free_eir_length - 4 - num_uuid * LEN_UUID_16)) {
+ local_name_len = find_utf8_char_boundary(
+ local_name, p_bta_dm_eir_cfg->bta_dm_eir_min_name_len);
+ APPL_TRACE_WARNING("%s local name is shortened (%d)", __func__,
+ local_name_len);
+ data_type = BTM_EIR_SHORTENED_LOCAL_NAME_TYPE;
+ } else {
+ data_type = BTM_EIR_COMPLETE_LOCAL_NAME_TYPE;
}
+ }
- UINT8_TO_STREAM(p, local_name_len + 1);
- UINT8_TO_STREAM(p, data_type);
+ UINT8_TO_STREAM(p, local_name_len + 1);
+ UINT8_TO_STREAM(p, data_type);
- if (local_name != NULL)
- {
- memcpy(p, local_name, local_name_len);
- p += local_name_len;
- }
- free_eir_length -= local_name_len + 2;
+ if (local_name != NULL) {
+ memcpy(p, local_name, local_name_len);
+ p += local_name_len;
+ }
+ free_eir_length -= local_name_len + 2;
#if (BTA_EIR_CANNED_UUID_LIST == TRUE)
- /* if UUID list is provided as static data in configuration */
- if(( p_bta_dm_eir_cfg->bta_dm_eir_uuid16_len > 0 )
- &&(p_bta_dm_eir_cfg->bta_dm_eir_uuid16))
- {
- if( free_eir_length > LEN_UUID_16 + 2)
- {
- free_eir_length -= 2;
+ /* if UUID list is provided as static data in configuration */
+ if ((p_bta_dm_eir_cfg->bta_dm_eir_uuid16_len > 0) &&
+ (p_bta_dm_eir_cfg->bta_dm_eir_uuid16)) {
+ if (free_eir_length > LEN_UUID_16 + 2) {
+ free_eir_length -= 2;
- if( free_eir_length >= p_bta_dm_eir_cfg->bta_dm_eir_uuid16_len)
- {
- num_uuid = p_bta_dm_eir_cfg->bta_dm_eir_uuid16_len / LEN_UUID_16;
- data_type = BTM_EIR_COMPLETE_16BITS_UUID_TYPE;
- }
- else /* not enough room for all UUIDs */
- {
- APPL_TRACE_WARNING("BTA EIR: UUID 16-bit list is truncated");
- num_uuid = free_eir_length / LEN_UUID_16;
- data_type = BTM_EIR_MORE_16BITS_UUID_TYPE;
- }
- UINT8_TO_STREAM(p, num_uuid * LEN_UUID_16 + 1);
- UINT8_TO_STREAM(p, data_type);
- memcpy(p, p_bta_dm_eir_cfg->bta_dm_eir_uuid16, num_uuid * LEN_UUID_16 );
- p += num_uuid * LEN_UUID_16;
- free_eir_length -= num_uuid * LEN_UUID_16;
- }
+ if (free_eir_length >= p_bta_dm_eir_cfg->bta_dm_eir_uuid16_len) {
+ num_uuid = p_bta_dm_eir_cfg->bta_dm_eir_uuid16_len / LEN_UUID_16;
+ data_type = BTM_EIR_COMPLETE_16BITS_UUID_TYPE;
+ } else /* not enough room for all UUIDs */
+ {
+ APPL_TRACE_WARNING("BTA EIR: UUID 16-bit list is truncated");
+ num_uuid = free_eir_length / LEN_UUID_16;
+ data_type = BTM_EIR_MORE_16BITS_UUID_TYPE;
+ }
+ UINT8_TO_STREAM(p, num_uuid * LEN_UUID_16 + 1);
+ UINT8_TO_STREAM(p, data_type);
+ memcpy(p, p_bta_dm_eir_cfg->bta_dm_eir_uuid16, num_uuid * LEN_UUID_16);
+ p += num_uuid * LEN_UUID_16;
+ free_eir_length -= num_uuid * LEN_UUID_16;
}
+ }
#else /* (BTA_EIR_CANNED_UUID_LIST == TRUE) */
- /* if UUID list is dynamic */
- if ( free_eir_length >= 2)
- {
- p_length = p++;
- p_type = p++;
- num_uuid = 0;
+ /* if UUID list is dynamic */
+ if (free_eir_length >= 2) {
+ p_length = p++;
+ p_type = p++;
+ num_uuid = 0;
- max_num_uuid = (free_eir_length - 2)/LEN_UUID_16;
- data_type = BTM_GetEirSupportedServices( bta_dm_cb.eir_uuid, &p, max_num_uuid, &num_uuid );
+ max_num_uuid = (free_eir_length - 2) / LEN_UUID_16;
+ data_type = BTM_GetEirSupportedServices(bta_dm_cb.eir_uuid, &p,
+ max_num_uuid, &num_uuid);
- if( data_type == BTM_EIR_MORE_16BITS_UUID_TYPE )
- {
- APPL_TRACE_WARNING("BTA EIR: UUID 16-bit list is truncated");
- }
+ if (data_type == BTM_EIR_MORE_16BITS_UUID_TYPE) {
+ APPL_TRACE_WARNING("BTA EIR: UUID 16-bit list is truncated");
+ }
#if (BTA_EIR_SERVER_NUM_CUSTOM_UUID > 0)
- else
- {
- for (custom_uuid_idx = 0; custom_uuid_idx < BTA_EIR_SERVER_NUM_CUSTOM_UUID; custom_uuid_idx++)
- {
- if (bta_dm_cb.custom_uuid[custom_uuid_idx].len == LEN_UUID_16)
- {
- if ( num_uuid < max_num_uuid )
- {
- UINT16_TO_STREAM(p, bta_dm_cb.custom_uuid[custom_uuid_idx].uu.uuid16);
- num_uuid++;
- }
- else
- {
- data_type = BTM_EIR_MORE_16BITS_UUID_TYPE;
- APPL_TRACE_WARNING("BTA EIR: UUID 16-bit list is truncated");
- break;
- }
- }
- }
+ else {
+ for (custom_uuid_idx = 0;
+ custom_uuid_idx < BTA_EIR_SERVER_NUM_CUSTOM_UUID;
+ custom_uuid_idx++) {
+ if (bta_dm_cb.custom_uuid[custom_uuid_idx].len == LEN_UUID_16) {
+ if (num_uuid < max_num_uuid) {
+ UINT16_TO_STREAM(p,
+ bta_dm_cb.custom_uuid[custom_uuid_idx].uu.uuid16);
+ num_uuid++;
+ } else {
+ data_type = BTM_EIR_MORE_16BITS_UUID_TYPE;
+ APPL_TRACE_WARNING("BTA EIR: UUID 16-bit list is truncated");
+ break;
+ }
}
+ }
+ }
#endif /* (BTA_EIR_SERVER_NUM_CUSTOM_UUID > 0) */
- UINT8_TO_STREAM(p_length, num_uuid * LEN_UUID_16 + 1);
- UINT8_TO_STREAM(p_type, data_type);
- free_eir_length -= num_uuid * LEN_UUID_16 + 2;
- }
+ UINT8_TO_STREAM(p_length, num_uuid * LEN_UUID_16 + 1);
+ UINT8_TO_STREAM(p_type, data_type);
+ free_eir_length -= num_uuid * LEN_UUID_16 + 2;
+ }
#endif /* (BTA_EIR_CANNED_UUID_LIST == TRUE) */
#if (BTA_EIR_CANNED_UUID_LIST != TRUE && BTA_EIR_SERVER_NUM_CUSTOM_UUID > 0)
- /* Adding 32-bit UUID list */
- if ( free_eir_length >= 2)
- {
- p_length = p++;
- p_type = p++;
- num_uuid = 0;
- data_type = BTM_EIR_COMPLETE_32BITS_UUID_TYPE;
+ /* Adding 32-bit UUID list */
+ if (free_eir_length >= 2) {
+ p_length = p++;
+ p_type = p++;
+ num_uuid = 0;
+ data_type = BTM_EIR_COMPLETE_32BITS_UUID_TYPE;
- max_num_uuid = (free_eir_length - 2)/LEN_UUID_32;
+ max_num_uuid = (free_eir_length - 2) / LEN_UUID_32;
- for (custom_uuid_idx = 0; custom_uuid_idx < BTA_EIR_SERVER_NUM_CUSTOM_UUID; custom_uuid_idx++)
- {
- if (bta_dm_cb.custom_uuid[custom_uuid_idx].len == LEN_UUID_32)
- {
- if ( num_uuid < max_num_uuid )
- {
- UINT32_TO_STREAM(p, bta_dm_cb.custom_uuid[custom_uuid_idx].uu.uuid32);
- num_uuid++;
- }
- else
- {
- data_type = BTM_EIR_MORE_32BITS_UUID_TYPE;
- APPL_TRACE_WARNING("BTA EIR: UUID 32-bit list is truncated");
- break;
- }
- }
+ for (custom_uuid_idx = 0; custom_uuid_idx < BTA_EIR_SERVER_NUM_CUSTOM_UUID;
+ custom_uuid_idx++) {
+ if (bta_dm_cb.custom_uuid[custom_uuid_idx].len == LEN_UUID_32) {
+ if (num_uuid < max_num_uuid) {
+ UINT32_TO_STREAM(p, bta_dm_cb.custom_uuid[custom_uuid_idx].uu.uuid32);
+ num_uuid++;
+ } else {
+ data_type = BTM_EIR_MORE_32BITS_UUID_TYPE;
+ APPL_TRACE_WARNING("BTA EIR: UUID 32-bit list is truncated");
+ break;
}
-
- UINT8_TO_STREAM(p_length, num_uuid * LEN_UUID_32 + 1);
- UINT8_TO_STREAM(p_type, data_type);
- free_eir_length -= num_uuid * LEN_UUID_32 + 2;
+ }
}
- /* Adding 128-bit UUID list */
- if ( free_eir_length >= 2)
- {
- p_length = p++;
- p_type = p++;
- num_uuid = 0;
- data_type = BTM_EIR_COMPLETE_128BITS_UUID_TYPE;
+ UINT8_TO_STREAM(p_length, num_uuid * LEN_UUID_32 + 1);
+ UINT8_TO_STREAM(p_type, data_type);
+ free_eir_length -= num_uuid * LEN_UUID_32 + 2;
+ }
- max_num_uuid = (free_eir_length - 2)/LEN_UUID_128;
+ /* Adding 128-bit UUID list */
+ if (free_eir_length >= 2) {
+ p_length = p++;
+ p_type = p++;
+ num_uuid = 0;
+ data_type = BTM_EIR_COMPLETE_128BITS_UUID_TYPE;
- for (custom_uuid_idx = 0; custom_uuid_idx < BTA_EIR_SERVER_NUM_CUSTOM_UUID; custom_uuid_idx++)
- {
- if (bta_dm_cb.custom_uuid[custom_uuid_idx].len == LEN_UUID_128)
- {
- if ( num_uuid < max_num_uuid )
- {
- ARRAY16_TO_STREAM(p, bta_dm_cb.custom_uuid[custom_uuid_idx].uu.uuid128);
- num_uuid++;
- }
- else
- {
- data_type = BTM_EIR_MORE_128BITS_UUID_TYPE;
- APPL_TRACE_WARNING("BTA EIR: UUID 128-bit list is truncated");
- break;
- }
- }
+ max_num_uuid = (free_eir_length - 2) / LEN_UUID_128;
+
+ for (custom_uuid_idx = 0; custom_uuid_idx < BTA_EIR_SERVER_NUM_CUSTOM_UUID;
+ custom_uuid_idx++) {
+ if (bta_dm_cb.custom_uuid[custom_uuid_idx].len == LEN_UUID_128) {
+ if (num_uuid < max_num_uuid) {
+ ARRAY16_TO_STREAM(p,
+ bta_dm_cb.custom_uuid[custom_uuid_idx].uu.uuid128);
+ num_uuid++;
+ } else {
+ data_type = BTM_EIR_MORE_128BITS_UUID_TYPE;
+ APPL_TRACE_WARNING("BTA EIR: UUID 128-bit list is truncated");
+ break;
}
-
- UINT8_TO_STREAM(p_length, num_uuid * LEN_UUID_128 + 1);
- UINT8_TO_STREAM(p_type, data_type);
- free_eir_length -= num_uuid * LEN_UUID_128 + 2;
- }
-#endif /* ( BTA_EIR_CANNED_UUID_LIST != TRUE )&&(BTA_EIR_SERVER_NUM_CUSTOM_UUID > 0) */
-
- /* if Flags are provided in configuration */
- if(( p_bta_dm_eir_cfg->bta_dm_eir_flag_len > 0 )
- &&( p_bta_dm_eir_cfg->bta_dm_eir_flags )
- &&( free_eir_length >= p_bta_dm_eir_cfg->bta_dm_eir_flag_len + 2 ))
- {
- UINT8_TO_STREAM(p, p_bta_dm_eir_cfg->bta_dm_eir_flag_len + 1);
- UINT8_TO_STREAM(p, BTM_EIR_FLAGS_TYPE);
- memcpy(p, p_bta_dm_eir_cfg->bta_dm_eir_flags,
- p_bta_dm_eir_cfg->bta_dm_eir_flag_len);
- p += p_bta_dm_eir_cfg->bta_dm_eir_flag_len;
- free_eir_length -= p_bta_dm_eir_cfg->bta_dm_eir_flag_len + 2;
+ }
}
- /* if Manufacturer Specific are provided in configuration */
- if(( p_bta_dm_eir_cfg->bta_dm_eir_manufac_spec_len > 0 )
- &&( p_bta_dm_eir_cfg->bta_dm_eir_manufac_spec )
- &&( free_eir_length >= p_bta_dm_eir_cfg->bta_dm_eir_manufac_spec_len + 2 ))
- {
- p_length = p;
+ UINT8_TO_STREAM(p_length, num_uuid * LEN_UUID_128 + 1);
+ UINT8_TO_STREAM(p_type, data_type);
+ free_eir_length -= num_uuid * LEN_UUID_128 + 2;
+ }
+#endif /* ( BTA_EIR_CANNED_UUID_LIST != TRUE \
+ )&&(BTA_EIR_SERVER_NUM_CUSTOM_UUID > 0) */
- UINT8_TO_STREAM(p, p_bta_dm_eir_cfg->bta_dm_eir_manufac_spec_len + 1);
- UINT8_TO_STREAM(p, BTM_EIR_MANUFACTURER_SPECIFIC_TYPE);
- memcpy(p, p_bta_dm_eir_cfg->bta_dm_eir_manufac_spec,
- p_bta_dm_eir_cfg->bta_dm_eir_manufac_spec_len);
- p += p_bta_dm_eir_cfg->bta_dm_eir_manufac_spec_len;
- free_eir_length -= p_bta_dm_eir_cfg->bta_dm_eir_manufac_spec_len + 2;
+ /* if Flags are provided in configuration */
+ if ((p_bta_dm_eir_cfg->bta_dm_eir_flag_len > 0) &&
+ (p_bta_dm_eir_cfg->bta_dm_eir_flags) &&
+ (free_eir_length >= p_bta_dm_eir_cfg->bta_dm_eir_flag_len + 2)) {
+ UINT8_TO_STREAM(p, p_bta_dm_eir_cfg->bta_dm_eir_flag_len + 1);
+ UINT8_TO_STREAM(p, BTM_EIR_FLAGS_TYPE);
+ memcpy(p, p_bta_dm_eir_cfg->bta_dm_eir_flags,
+ p_bta_dm_eir_cfg->bta_dm_eir_flag_len);
+ p += p_bta_dm_eir_cfg->bta_dm_eir_flag_len;
+ free_eir_length -= p_bta_dm_eir_cfg->bta_dm_eir_flag_len + 2;
+ }
- }
- else
- {
- p_length = NULL;
- }
+ /* if Manufacturer Specific are provided in configuration */
+ if ((p_bta_dm_eir_cfg->bta_dm_eir_manufac_spec_len > 0) &&
+ (p_bta_dm_eir_cfg->bta_dm_eir_manufac_spec) &&
+ (free_eir_length >= p_bta_dm_eir_cfg->bta_dm_eir_manufac_spec_len + 2)) {
+ p_length = p;
- /* if Inquiry Tx Resp Power compiled */
- if ((p_bta_dm_eir_cfg->bta_dm_eir_inq_tx_power) &&
- (free_eir_length >= 3))
- {
- UINT8_TO_STREAM(p, 2); /* Length field */
- UINT8_TO_STREAM(p, BTM_EIR_TX_POWER_LEVEL_TYPE);
- UINT8_TO_STREAM(p, *(p_bta_dm_eir_cfg->bta_dm_eir_inq_tx_power));
- free_eir_length -= 3;
- }
+ UINT8_TO_STREAM(p, p_bta_dm_eir_cfg->bta_dm_eir_manufac_spec_len + 1);
+ UINT8_TO_STREAM(p, BTM_EIR_MANUFACTURER_SPECIFIC_TYPE);
+ memcpy(p, p_bta_dm_eir_cfg->bta_dm_eir_manufac_spec,
+ p_bta_dm_eir_cfg->bta_dm_eir_manufac_spec_len);
+ p += p_bta_dm_eir_cfg->bta_dm_eir_manufac_spec_len;
+ free_eir_length -= p_bta_dm_eir_cfg->bta_dm_eir_manufac_spec_len + 2;
- if( free_eir_length )
- UINT8_TO_STREAM(p, 0); /* terminator of significant part */
+ } else {
+ p_length = NULL;
+ }
- BTM_WriteEIR( p_buf );
+ /* if Inquiry Tx Resp Power compiled */
+ if ((p_bta_dm_eir_cfg->bta_dm_eir_inq_tx_power) && (free_eir_length >= 3)) {
+ UINT8_TO_STREAM(p, 2); /* Length field */
+ UINT8_TO_STREAM(p, BTM_EIR_TX_POWER_LEVEL_TYPE);
+ UINT8_TO_STREAM(p, *(p_bta_dm_eir_cfg->bta_dm_eir_inq_tx_power));
+ free_eir_length -= 3;
+ }
+ if (free_eir_length)
+ UINT8_TO_STREAM(p, 0); /* terminator of significant part */
+
+ BTM_WriteEIR(p_buf);
}
/*******************************************************************************
@@ -3994,69 +3792,65 @@
* Returns None
*
******************************************************************************/
-static void bta_dm_eir_search_services( tBTM_INQ_RESULTS *p_result,
- tBTA_SERVICE_MASK *p_services_to_search,
- tBTA_SERVICE_MASK *p_services_found)
-{
- tBTA_SERVICE_MASK service_index = 0;
- tBTM_EIR_SEARCH_RESULT result;
+static void bta_dm_eir_search_services(tBTM_INQ_RESULTS* p_result,
+ tBTA_SERVICE_MASK* p_services_to_search,
+ tBTA_SERVICE_MASK* p_services_found) {
+ tBTA_SERVICE_MASK service_index = 0;
+ tBTM_EIR_SEARCH_RESULT result;
- APPL_TRACE_DEBUG("BTA searching services in EIR of BDA:0x%02X%02X%02X%02X%02X%02X",
- p_result->remote_bd_addr[0],p_result->remote_bd_addr[1],
- p_result->remote_bd_addr[2],p_result->remote_bd_addr[3],
- p_result->remote_bd_addr[4],p_result->remote_bd_addr[5]);
+ APPL_TRACE_DEBUG(
+ "BTA searching services in EIR of BDA:0x%02X%02X%02X%02X%02X%02X",
+ p_result->remote_bd_addr[0], p_result->remote_bd_addr[1],
+ p_result->remote_bd_addr[2], p_result->remote_bd_addr[3],
+ p_result->remote_bd_addr[4], p_result->remote_bd_addr[5]);
- APPL_TRACE_DEBUG(" with services_to_search=0x%08X", *p_services_to_search);
+ APPL_TRACE_DEBUG(" with services_to_search=0x%08X", *p_services_to_search);
#if (BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE)
- /* always do GATT based service discovery by SDP instead of from EIR */
- /* if GATT based service is also to be put in EIR, need to modify this */
- while (service_index < (BTA_MAX_SERVICE_ID - 1))
+ /* always do GATT based service discovery by SDP instead of from EIR */
+ /* if GATT based service is also to be put in EIR, need to modify this */
+ while (service_index < (BTA_MAX_SERVICE_ID - 1))
#else
- while(service_index < BTA_MAX_SERVICE_ID)
+ while (service_index < BTA_MAX_SERVICE_ID)
#endif
- {
- if( *p_services_to_search
- & (tBTA_SERVICE_MASK)(BTA_SERVICE_ID_TO_SERVICE_MASK(service_index)))
- {
- result = BTM_HasInquiryEirService( p_result,
- bta_service_id_to_uuid_lkup_tbl[service_index] );
+ {
+ if (*p_services_to_search &
+ (tBTA_SERVICE_MASK)(BTA_SERVICE_ID_TO_SERVICE_MASK(service_index))) {
+ result = BTM_HasInquiryEirService(
+ p_result, bta_service_id_to_uuid_lkup_tbl[service_index]);
- /* Searching for HSP v1.2 only device */
- if ((result != BTM_EIR_FOUND) &&
- (bta_service_id_to_uuid_lkup_tbl[service_index] == UUID_SERVCLASS_HEADSET))
- {
- result = BTM_HasInquiryEirService (p_result, UUID_SERVCLASS_HEADSET_HS);
- }
+ /* Searching for HSP v1.2 only device */
+ if ((result != BTM_EIR_FOUND) &&
+ (bta_service_id_to_uuid_lkup_tbl[service_index] ==
+ UUID_SERVCLASS_HEADSET)) {
+ result = BTM_HasInquiryEirService(p_result, UUID_SERVCLASS_HEADSET_HS);
+ }
- if( result == BTM_EIR_FOUND )
- {
- /* If Plug and Play service record, need to check to see if Broadcom stack */
- /* However, EIR data doesn't have EXT_BRCM_VERSION so just skip it */
- if( bta_service_id_to_uuid_lkup_tbl[service_index]
- != UUID_SERVCLASS_PNP_INFORMATION )
- {
-
- *p_services_found |=
- (tBTA_SERVICE_MASK)(BTA_SERVICE_ID_TO_SERVICE_MASK(service_index));
- /* remove the service from services to be searched */
- *p_services_to_search &=
- (tBTA_SERVICE_MASK)(~(BTA_SERVICE_ID_TO_SERVICE_MASK(service_index)));
- }
- }
- else if( result == BTM_EIR_NOT_FOUND )
- {
- /* remove the service from services to be searched */
- *p_services_to_search &=
- (tBTA_SERVICE_MASK)(~(BTA_SERVICE_ID_TO_SERVICE_MASK(service_index)));
- }
+ if (result == BTM_EIR_FOUND) {
+ /* If Plug and Play service record, need to check to see if Broadcom
+ * stack */
+ /* However, EIR data doesn't have EXT_BRCM_VERSION so just skip it */
+ if (bta_service_id_to_uuid_lkup_tbl[service_index] !=
+ UUID_SERVCLASS_PNP_INFORMATION) {
+ *p_services_found |= (tBTA_SERVICE_MASK)(
+ BTA_SERVICE_ID_TO_SERVICE_MASK(service_index));
+ /* remove the service from services to be searched */
+ *p_services_to_search &= (tBTA_SERVICE_MASK)(
+ ~(BTA_SERVICE_ID_TO_SERVICE_MASK(service_index)));
}
-
- service_index++;
+ } else if (result == BTM_EIR_NOT_FOUND) {
+ /* remove the service from services to be searched */
+ *p_services_to_search &= (tBTA_SERVICE_MASK)(
+ ~(BTA_SERVICE_ID_TO_SERVICE_MASK(service_index)));
+ }
}
- APPL_TRACE_ERROR("BTA EIR search result, services_to_search=0x%08X, services_found=0x%08X",
- *p_services_to_search, *p_services_found);
+ service_index++;
+ }
+
+ APPL_TRACE_ERROR(
+ "BTA EIR search result, services_to_search=0x%08X, services_found=0x%08X",
+ *p_services_to_search, *p_services_found);
}
#if (BTA_EIR_CANNED_UUID_LIST != TRUE)
@@ -4069,29 +3863,24 @@
* Returns None
*
******************************************************************************/
-void bta_dm_eir_update_uuid(uint16_t uuid16, bool adding)
-{
- /* if this UUID is not advertised in EIR */
- if( !BTM_HasEirService( p_bta_dm_eir_cfg->uuid_mask, uuid16 ))
- return;
+void bta_dm_eir_update_uuid(uint16_t uuid16, bool adding) {
+ /* if this UUID is not advertised in EIR */
+ if (!BTM_HasEirService(p_bta_dm_eir_cfg->uuid_mask, uuid16)) return;
- if( adding )
- {
- APPL_TRACE_EVENT("Adding UUID=0x%04X into EIR", uuid16);
+ if (adding) {
+ APPL_TRACE_EVENT("Adding UUID=0x%04X into EIR", uuid16);
- BTM_AddEirService( bta_dm_cb.eir_uuid, uuid16 );
- }
- else
- {
- APPL_TRACE_EVENT("Removing UUID=0x%04X from EIR", uuid16);
+ BTM_AddEirService(bta_dm_cb.eir_uuid, uuid16);
+ } else {
+ APPL_TRACE_EVENT("Removing UUID=0x%04X from EIR", uuid16);
- BTM_RemoveEirService( bta_dm_cb.eir_uuid, uuid16 );
- }
+ BTM_RemoveEirService(bta_dm_cb.eir_uuid, uuid16);
+ }
- bta_dm_set_eir (NULL);
+ bta_dm_set_eir(NULL);
- APPL_TRACE_EVENT("bta_dm_eir_update_uuid UUID bit mask=0x%08X %08X",
- bta_dm_cb.eir_uuid[1], bta_dm_cb.eir_uuid[0] );
+ APPL_TRACE_EVENT("bta_dm_eir_update_uuid UUID bit mask=0x%08X %08X",
+ bta_dm_cb.eir_uuid[1], bta_dm_cb.eir_uuid[0]);
}
#endif
@@ -4105,9 +3894,8 @@
* Returns void
*
******************************************************************************/
-void bta_dm_enable_test_mode(UNUSED_ATTR tBTA_DM_MSG *p_data)
-{
- BTM_EnableTestMode();
+void bta_dm_enable_test_mode(UNUSED_ATTR tBTA_DM_MSG* p_data) {
+ BTM_EnableTestMode();
}
/*******************************************************************************
@@ -4120,30 +3908,28 @@
* Returns void
*
******************************************************************************/
-void bta_dm_disable_test_mode(UNUSED_ATTR tBTA_DM_MSG *p_data)
-{
- BTM_DeviceReset(NULL);
+void bta_dm_disable_test_mode(UNUSED_ATTR tBTA_DM_MSG* p_data) {
+ BTM_DeviceReset(NULL);
}
/*******************************************************************************
*
* Function bta_dm_execute_callback
*
- * Description Just execute a generic call back in the context of the BTU/BTA tack
+ * Description Just execute a generic call back in the context of the
+ *BTU/BTA tack
*
*
* Returns void
*
******************************************************************************/
-void bta_dm_execute_callback(tBTA_DM_MSG *p_data)
-{
- /* sanity check */
- if(p_data->exec_cback.p_exec_cback == NULL)
- {
- return;
- }
+void bta_dm_execute_callback(tBTA_DM_MSG* p_data) {
+ /* sanity check */
+ if (p_data->exec_cback.p_exec_cback == NULL) {
+ return;
+ }
- p_data->exec_cback.p_exec_cback(p_data->exec_cback.p_param);
+ p_data->exec_cback.p_exec_cback(p_data->exec_cback.p_param);
}
/*******************************************************************************
@@ -4156,49 +3942,45 @@
*
******************************************************************************/
void bta_dm_encrypt_cback(BD_ADDR bd_addr, tBT_TRANSPORT transport,
- UNUSED_ATTR void *p_ref_data, tBTM_STATUS result)
-{
- tBTA_STATUS bta_status = BTA_SUCCESS;
- tBTA_DM_ENCRYPT_CBACK *p_callback = NULL;
- uint8_t i ;
+ UNUSED_ATTR void* p_ref_data, tBTM_STATUS result) {
+ tBTA_STATUS bta_status = BTA_SUCCESS;
+ tBTA_DM_ENCRYPT_CBACK* p_callback = NULL;
+ uint8_t i;
- for (i=0; i<bta_dm_cb.device_list.count; i++)
- {
- if (bdcmp( bta_dm_cb.device_list.peer_device[i].peer_bdaddr, bd_addr) == 0 &&
- bta_dm_cb.device_list.peer_device[i].conn_state == BTA_DM_CONNECTED)
- break;
- }
+ for (i = 0; i < bta_dm_cb.device_list.count; i++) {
+ if (bdcmp(bta_dm_cb.device_list.peer_device[i].peer_bdaddr, bd_addr) == 0 &&
+ bta_dm_cb.device_list.peer_device[i].conn_state == BTA_DM_CONNECTED)
+ break;
+ }
- if (i < bta_dm_cb.device_list.count)
- {
- p_callback = bta_dm_cb.device_list.peer_device[i].p_encrypt_cback;
- bta_dm_cb.device_list.peer_device[i].p_encrypt_cback = NULL;
- }
+ if (i < bta_dm_cb.device_list.count) {
+ p_callback = bta_dm_cb.device_list.peer_device[i].p_encrypt_cback;
+ bta_dm_cb.device_list.peer_device[i].p_encrypt_cback = NULL;
+ }
- switch (result)
- {
- case BTM_SUCCESS:
- break;
- case BTM_WRONG_MODE:
- bta_status = BTA_WRONG_MODE;
- break;
- case BTM_NO_RESOURCES:
- bta_status = BTA_NO_RESOURCES;
- break;
- case BTM_BUSY:
- bta_status = BTA_BUSY;
- break;
- default:
- bta_status = BTA_FAILURE;
- break;
- }
+ switch (result) {
+ case BTM_SUCCESS:
+ break;
+ case BTM_WRONG_MODE:
+ bta_status = BTA_WRONG_MODE;
+ break;
+ case BTM_NO_RESOURCES:
+ bta_status = BTA_NO_RESOURCES;
+ break;
+ case BTM_BUSY:
+ bta_status = BTA_BUSY;
+ break;
+ default:
+ bta_status = BTA_FAILURE;
+ break;
+ }
- APPL_TRACE_DEBUG("bta_dm_encrypt_cback status =%d p_callback=0x%x", bta_status, p_callback);
+ APPL_TRACE_DEBUG("bta_dm_encrypt_cback status =%d p_callback=0x%x",
+ bta_status, p_callback);
- if (p_callback)
- {
- (*p_callback)(bd_addr, transport, bta_status);
- }
+ if (p_callback) {
+ (*p_callback)(bd_addr, transport, bta_status);
+ }
}
/*******************************************************************************
@@ -4210,40 +3992,37 @@
* Returns None
*
******************************************************************************/
-void bta_dm_set_encryption (tBTA_DM_MSG *p_data)
-{
- uint8_t i ;
+void bta_dm_set_encryption(tBTA_DM_MSG* p_data) {
+ uint8_t i;
- APPL_TRACE_DEBUG("bta_dm_set_encryption"); //todo
- if (!p_data->set_encryption.p_callback)
- {
- APPL_TRACE_ERROR("bta_dm_set_encryption callback is not provided");
- return;
+ APPL_TRACE_DEBUG("bta_dm_set_encryption"); // todo
+ if (!p_data->set_encryption.p_callback) {
+ APPL_TRACE_ERROR("bta_dm_set_encryption callback is not provided");
+ return;
+ }
+ for (i = 0; i < bta_dm_cb.device_list.count; i++) {
+ if (bdcmp(bta_dm_cb.device_list.peer_device[i].peer_bdaddr,
+ p_data->set_encryption.bd_addr) == 0 &&
+ bta_dm_cb.device_list.peer_device[i].conn_state == BTA_DM_CONNECTED)
+ break;
+ }
+ if (i < bta_dm_cb.device_list.count) {
+ if (bta_dm_cb.device_list.peer_device[i].p_encrypt_cback) {
+ APPL_TRACE_ERROR("earlier enc was not done for same device");
+ (*p_data->set_encryption.p_callback)(p_data->set_encryption.bd_addr,
+ p_data->set_encryption.transport,
+ BTA_BUSY);
+ return;
}
- for (i=0; i<bta_dm_cb.device_list.count; i++)
- {
- if (bdcmp( bta_dm_cb.device_list.peer_device[i].peer_bdaddr, p_data->set_encryption.bd_addr) == 0 &&
- bta_dm_cb.device_list.peer_device[i].conn_state == BTA_DM_CONNECTED)
- break;
- }
- if (i < bta_dm_cb.device_list.count)
- {
- if (bta_dm_cb.device_list.peer_device[i].p_encrypt_cback)
- {
- APPL_TRACE_ERROR("earlier enc was not done for same device");
- (*p_data->set_encryption.p_callback)(p_data->set_encryption.bd_addr,
- p_data->set_encryption.transport,
- BTA_BUSY);
- return;
- }
- if (BTM_SetEncryption(p_data->set_encryption.bd_addr, p_data->set_encryption.transport,
- bta_dm_encrypt_cback, NULL, p_data->set_encryption.sec_act)
- == BTM_CMD_STARTED)
- {
- bta_dm_cb.device_list.peer_device[i].p_encrypt_cback = p_data->set_encryption.p_callback;
- }
+ if (BTM_SetEncryption(p_data->set_encryption.bd_addr,
+ p_data->set_encryption.transport,
+ bta_dm_encrypt_cback, NULL,
+ p_data->set_encryption.sec_act) == BTM_CMD_STARTED) {
+ bta_dm_cb.device_list.peer_device[i].p_encrypt_cback =
+ p_data->set_encryption.p_callback;
}
+ }
}
#if (BLE_INCLUDED == TRUE)
@@ -4257,39 +4036,37 @@
* Returns void
*
******************************************************************************/
-static void bta_dm_observe_results_cb (tBTM_INQ_RESULTS *p_inq, uint8_t *p_eir)
-{
-;
- tBTA_DM_SEARCH result;
- tBTM_INQ_INFO *p_inq_info;
- APPL_TRACE_DEBUG("bta_dm_observe_results_cb")
+static void bta_dm_observe_results_cb(tBTM_INQ_RESULTS* p_inq, uint8_t* p_eir) {
+ ;
+ tBTA_DM_SEARCH result;
+ tBTM_INQ_INFO* p_inq_info;
+ APPL_TRACE_DEBUG("bta_dm_observe_results_cb")
- bdcpy(result.inq_res.bd_addr, p_inq->remote_bd_addr);
- result.inq_res.rssi = p_inq->rssi;
- result.inq_res.ble_addr_type = p_inq->ble_addr_type;
- result.inq_res.inq_result_type = p_inq->inq_result_type;
- result.inq_res.device_type = p_inq->device_type;
- result.inq_res.flag = p_inq->flag;
+ bdcpy(result.inq_res.bd_addr, p_inq->remote_bd_addr);
+ result.inq_res.rssi = p_inq->rssi;
+ result.inq_res.ble_addr_type = p_inq->ble_addr_type;
+ result.inq_res.inq_result_type = p_inq->inq_result_type;
+ result.inq_res.device_type = p_inq->device_type;
+ result.inq_res.flag = p_inq->flag;
- /* application will parse EIR to find out remote device name */
- result.inq_res.p_eir = p_eir;
+ /* application will parse EIR to find out remote device name */
+ result.inq_res.p_eir = p_eir;
- if((p_inq_info = BTM_InqDbRead(p_inq->remote_bd_addr)) != NULL)
- {
- /* initialize remt_name_not_required to false so that we get the name by default */
- result.inq_res.remt_name_not_required = false;
- }
+ if ((p_inq_info = BTM_InqDbRead(p_inq->remote_bd_addr)) != NULL) {
+ /* initialize remt_name_not_required to false so that we get the name by
+ * default */
+ result.inq_res.remt_name_not_required = false;
+ }
- if(bta_dm_search_cb.p_scan_cback)
- bta_dm_search_cb.p_scan_cback(BTA_DM_INQ_RES_EVT, &result);
+ if (bta_dm_search_cb.p_scan_cback)
+ bta_dm_search_cb.p_scan_cback(BTA_DM_INQ_RES_EVT, &result);
- if(p_inq_info)
- {
- /* application indicates if it knows the remote name, inside the callback
- copy that to the inquiry data base*/
- if(result.inq_res.remt_name_not_required)
- p_inq_info->appl_knows_rem_name = true;
- }
+ if (p_inq_info) {
+ /* application indicates if it knows the remote name, inside the callback
+ copy that to the inquiry data base*/
+ if (result.inq_res.remt_name_not_required)
+ p_inq_info->appl_knows_rem_name = true;
+ }
}
/*******************************************************************************
@@ -4302,17 +4079,15 @@
* Returns void
*
******************************************************************************/
-static void bta_dm_observe_cmpl_cb (void * p_result)
-{
- tBTA_DM_SEARCH data;
+static void bta_dm_observe_cmpl_cb(void* p_result) {
+ tBTA_DM_SEARCH data;
- APPL_TRACE_DEBUG("bta_dm_observe_cmpl_cb");
+ APPL_TRACE_DEBUG("bta_dm_observe_cmpl_cb");
- data.inq_cmpl.num_resps = ((tBTM_INQUIRY_CMPL *)p_result)->num_resp;
- if (bta_dm_search_cb.p_scan_cback)
- {
- bta_dm_search_cb.p_scan_cback(BTA_DM_INQ_CMPL_EVT, &data);
- }
+ data.inq_cmpl.num_resps = ((tBTM_INQUIRY_CMPL*)p_result)->num_resp;
+ if (bta_dm_search_cb.p_scan_cback) {
+ bta_dm_search_cb.p_scan_cback(BTA_DM_INQ_CMPL_EVT, &data);
+ }
}
#if (SMP_INCLUDED == TRUE)
@@ -4326,119 +4101,114 @@
* Returns void
*
******************************************************************************/
-static uint8_t bta_dm_ble_smp_cback (tBTM_LE_EVT event, BD_ADDR bda, tBTM_LE_EVT_DATA *p_data)
-{
- tBTM_STATUS status = BTM_SUCCESS;
- tBTA_DM_SEC sec_event;
- char *p_name = NULL;
+static uint8_t bta_dm_ble_smp_cback(tBTM_LE_EVT event, BD_ADDR bda,
+ tBTM_LE_EVT_DATA* p_data) {
+ tBTM_STATUS status = BTM_SUCCESS;
+ tBTA_DM_SEC sec_event;
+ char* p_name = NULL;
- if (!bta_dm_cb.p_sec_cback)
- return BTM_NOT_AUTHORIZED;
+ if (!bta_dm_cb.p_sec_cback) return BTM_NOT_AUTHORIZED;
- memset(&sec_event, 0, sizeof(tBTA_DM_SEC));
- switch (event)
- {
- case BTM_LE_IO_REQ_EVT:
+ memset(&sec_event, 0, sizeof(tBTA_DM_SEC));
+ switch (event) {
+ case BTM_LE_IO_REQ_EVT:
#if (BTM_LOCAL_IO_CAPS != BTM_IO_CAP_NONE)
- bta_dm_co_ble_io_req(bda,
- &p_data->io_req.io_cap,
- &p_data->io_req.oob_data,
- &p_data->io_req.auth_req,
- &p_data->io_req.max_key_size,
- &p_data->io_req.init_keys,
- &p_data->io_req.resp_keys);
+ bta_dm_co_ble_io_req(
+ bda, &p_data->io_req.io_cap, &p_data->io_req.oob_data,
+ &p_data->io_req.auth_req, &p_data->io_req.max_key_size,
+ &p_data->io_req.init_keys, &p_data->io_req.resp_keys);
#endif
- APPL_TRACE_EVENT("io mitm: %d oob_data:%d", p_data->io_req.auth_req, p_data->io_req.oob_data);
+ APPL_TRACE_EVENT("io mitm: %d oob_data:%d", p_data->io_req.auth_req,
+ p_data->io_req.oob_data);
- break;
+ break;
- case BTM_LE_SEC_REQUEST_EVT:
- bdcpy(sec_event.ble_req.bd_addr, bda);
- p_name = BTM_SecReadDevName(bda);
- if (p_name != NULL)
- strlcpy((char*)sec_event.ble_req.bd_name, p_name, BD_NAME_LEN);
- else
- sec_event.ble_req.bd_name[0] = 0;
- bta_dm_cb.p_sec_cback(BTA_DM_BLE_SEC_REQ_EVT, &sec_event);
- break;
+ case BTM_LE_SEC_REQUEST_EVT:
+ bdcpy(sec_event.ble_req.bd_addr, bda);
+ p_name = BTM_SecReadDevName(bda);
+ if (p_name != NULL)
+ strlcpy((char*)sec_event.ble_req.bd_name, p_name, BD_NAME_LEN);
+ else
+ sec_event.ble_req.bd_name[0] = 0;
+ bta_dm_cb.p_sec_cback(BTA_DM_BLE_SEC_REQ_EVT, &sec_event);
+ break;
- case BTM_LE_KEY_NOTIF_EVT:
- bdcpy(sec_event.key_notif.bd_addr, bda);
- p_name = BTM_SecReadDevName(bda);
- if (p_name != NULL)
- strlcpy((char*)sec_event.key_notif.bd_name, p_name, BD_NAME_LEN);
- else
- sec_event.key_notif.bd_name[0] = 0;
- sec_event.key_notif.passkey = p_data->key_notif;
- bta_dm_cb.p_sec_cback(BTA_DM_BLE_PASSKEY_NOTIF_EVT, &sec_event);
- break;
+ case BTM_LE_KEY_NOTIF_EVT:
+ bdcpy(sec_event.key_notif.bd_addr, bda);
+ p_name = BTM_SecReadDevName(bda);
+ if (p_name != NULL)
+ strlcpy((char*)sec_event.key_notif.bd_name, p_name, BD_NAME_LEN);
+ else
+ sec_event.key_notif.bd_name[0] = 0;
+ sec_event.key_notif.passkey = p_data->key_notif;
+ bta_dm_cb.p_sec_cback(BTA_DM_BLE_PASSKEY_NOTIF_EVT, &sec_event);
+ break;
- case BTM_LE_KEY_REQ_EVT:
- bdcpy(sec_event.ble_req.bd_addr, bda);
- bta_dm_cb.p_sec_cback(BTA_DM_BLE_PASSKEY_REQ_EVT, &sec_event);
- break;
+ case BTM_LE_KEY_REQ_EVT:
+ bdcpy(sec_event.ble_req.bd_addr, bda);
+ bta_dm_cb.p_sec_cback(BTA_DM_BLE_PASSKEY_REQ_EVT, &sec_event);
+ break;
- case BTM_LE_OOB_REQ_EVT:
- bdcpy(sec_event.ble_req.bd_addr, bda);
- bta_dm_cb.p_sec_cback(BTA_DM_BLE_OOB_REQ_EVT, &sec_event);
- break;
+ case BTM_LE_OOB_REQ_EVT:
+ bdcpy(sec_event.ble_req.bd_addr, bda);
+ bta_dm_cb.p_sec_cback(BTA_DM_BLE_OOB_REQ_EVT, &sec_event);
+ break;
- case BTM_LE_NC_REQ_EVT:
- bdcpy(sec_event.key_notif.bd_addr, bda);
- strlcpy((char*)sec_event.key_notif.bd_name, bta_dm_get_remname(), (BD_NAME_LEN));
- sec_event.key_notif.passkey = p_data->key_notif;
- bta_dm_cb.p_sec_cback(BTA_DM_BLE_NC_REQ_EVT, &sec_event);
- break;
+ case BTM_LE_NC_REQ_EVT:
+ bdcpy(sec_event.key_notif.bd_addr, bda);
+ strlcpy((char*)sec_event.key_notif.bd_name, bta_dm_get_remname(),
+ (BD_NAME_LEN));
+ sec_event.key_notif.passkey = p_data->key_notif;
+ bta_dm_cb.p_sec_cback(BTA_DM_BLE_NC_REQ_EVT, &sec_event);
+ break;
- case BTM_LE_SC_OOB_REQ_EVT:
- bdcpy(sec_event.ble_req.bd_addr, bda);
- bta_dm_cb.p_sec_cback(BTA_DM_BLE_SC_OOB_REQ_EVT, &sec_event);
- break;
+ case BTM_LE_SC_OOB_REQ_EVT:
+ bdcpy(sec_event.ble_req.bd_addr, bda);
+ bta_dm_cb.p_sec_cback(BTA_DM_BLE_SC_OOB_REQ_EVT, &sec_event);
+ break;
- case BTM_LE_KEY_EVT:
- bdcpy(sec_event.ble_key.bd_addr, bda);
- sec_event.ble_key.key_type = p_data->key.key_type;
- sec_event.ble_key.p_key_value = p_data->key.p_key_value;
- bta_dm_cb.p_sec_cback(BTA_DM_BLE_KEY_EVT, &sec_event);
- break;
+ case BTM_LE_KEY_EVT:
+ bdcpy(sec_event.ble_key.bd_addr, bda);
+ sec_event.ble_key.key_type = p_data->key.key_type;
+ sec_event.ble_key.p_key_value = p_data->key.p_key_value;
+ bta_dm_cb.p_sec_cback(BTA_DM_BLE_KEY_EVT, &sec_event);
+ break;
- case BTM_LE_COMPLT_EVT:
- bdcpy(sec_event.auth_cmpl.bd_addr, bda);
+ case BTM_LE_COMPLT_EVT:
+ bdcpy(sec_event.auth_cmpl.bd_addr, bda);
#if (BLE_INCLUDED == TRUE)
- BTM_ReadDevInfo(bda, &sec_event.auth_cmpl.dev_type, &sec_event.auth_cmpl.addr_type);
+ BTM_ReadDevInfo(bda, &sec_event.auth_cmpl.dev_type,
+ &sec_event.auth_cmpl.addr_type);
#endif
- p_name = BTM_SecReadDevName(bda);
- if (p_name != NULL)
- strlcpy((char*)sec_event.auth_cmpl.bd_name, p_name, (BD_NAME_LEN));
- else
- sec_event.auth_cmpl.bd_name[0] = 0;
+ p_name = BTM_SecReadDevName(bda);
+ if (p_name != NULL)
+ strlcpy((char*)sec_event.auth_cmpl.bd_name, p_name, (BD_NAME_LEN));
+ else
+ sec_event.auth_cmpl.bd_name[0] = 0;
- if (p_data->complt.reason != 0)
- {
- sec_event.auth_cmpl.fail_reason = BTA_DM_AUTH_CONVERT_SMP_CODE(((uint8_t)p_data->complt.reason));
- /* delete this device entry from Sec Dev DB */
- bta_dm_remove_sec_dev_entry (bda);
- }
- else
- {
- sec_event.auth_cmpl.success = true;
- }
+ if (p_data->complt.reason != 0) {
+ sec_event.auth_cmpl.fail_reason =
+ BTA_DM_AUTH_CONVERT_SMP_CODE(((uint8_t)p_data->complt.reason));
+ /* delete this device entry from Sec Dev DB */
+ bta_dm_remove_sec_dev_entry(bda);
+ } else {
+ sec_event.auth_cmpl.success = true;
+ }
- if (bta_dm_cb.p_sec_cback)
- {
- //bta_dm_cb.p_sec_cback(BTA_DM_AUTH_CMPL_EVT, &sec_event);
- bta_dm_cb.p_sec_cback(BTA_DM_BLE_AUTH_CMPL_EVT, &sec_event);
- }
- break;
+ if (bta_dm_cb.p_sec_cback) {
+ // bta_dm_cb.p_sec_cback(BTA_DM_AUTH_CMPL_EVT, &sec_event);
+ bta_dm_cb.p_sec_cback(BTA_DM_BLE_AUTH_CMPL_EVT, &sec_event);
+ }
+ break;
- default:
- status = BTM_NOT_AUTHORIZED;
- break;
- }
- return status;
+ default:
+ status = BTM_NOT_AUTHORIZED;
+ break;
+ }
+ return status;
}
-#endif /* SMP_INCLUDED == TRUE */
+#endif /* SMP_INCLUDED == TRUE */
/*******************************************************************************
*
@@ -4450,31 +4220,28 @@
* Returns void
*
******************************************************************************/
-static void bta_dm_ble_id_key_cback (uint8_t key_type, tBTM_BLE_LOCAL_KEYS *p_key)
-{
- uint8_t evt;
- tBTA_DM_SEC dm_key;
+static void bta_dm_ble_id_key_cback(uint8_t key_type,
+ tBTM_BLE_LOCAL_KEYS* p_key) {
+ uint8_t evt;
+ tBTA_DM_SEC dm_key;
- switch (key_type)
- {
- case BTM_BLE_KEY_TYPE_ID:
- case BTM_BLE_KEY_TYPE_ER:
- if (bta_dm_cb.p_sec_cback)
- {
- memcpy(&dm_key.ble_id_keys, p_key, sizeof(tBTM_BLE_LOCAL_KEYS));
+ switch (key_type) {
+ case BTM_BLE_KEY_TYPE_ID:
+ case BTM_BLE_KEY_TYPE_ER:
+ if (bta_dm_cb.p_sec_cback) {
+ memcpy(&dm_key.ble_id_keys, p_key, sizeof(tBTM_BLE_LOCAL_KEYS));
- evt = (key_type == BTM_BLE_KEY_TYPE_ID) ? BTA_DM_BLE_LOCAL_IR_EVT :\
- BTA_DM_BLE_LOCAL_ER_EVT;
- bta_dm_cb.p_sec_cback(evt, &dm_key);
- }
- break;
+ evt = (key_type == BTM_BLE_KEY_TYPE_ID) ? BTA_DM_BLE_LOCAL_IR_EVT
+ : BTA_DM_BLE_LOCAL_ER_EVT;
+ bta_dm_cb.p_sec_cback(evt, &dm_key);
+ }
+ break;
- default:
- APPL_TRACE_DEBUG("Unknown key type %d", key_type);
- break;
- }
- return;
-
+ default:
+ APPL_TRACE_DEBUG("Unknown key type %d", key_type);
+ break;
+ }
+ return;
}
/*******************************************************************************
@@ -4482,72 +4249,77 @@
* Function bta_dm_add_blekey
*
* Description This function adds an BLE Key to an security database entry.
- * This function shall only be called AFTER BTA_DmAddBleDevice has been called.
- * It is normally called during host startup to restore all required information
+ * This function shall only be called AFTER BTA_DmAddBleDevice
+ *has been called.
+ * It is normally called during host startup to restore all
+ *required information
* stored in the NVRAM.
*
* Parameters:
*
******************************************************************************/
-void bta_dm_add_blekey (tBTA_DM_MSG *p_data)
-{
- if (!BTM_SecAddBleKey (p_data->add_ble_key.bd_addr,
- (tBTM_LE_KEY_VALUE *)&p_data->add_ble_key.blekey,
- p_data->add_ble_key.key_type))
- {
- APPL_TRACE_ERROR ("BTA_DM: Error adding BLE Key for device %08x%04x",
- (p_data->add_ble_key.bd_addr[0]<<24)+(p_data->add_ble_key.bd_addr[1]<<16)+\
- (p_data->add_ble_key.bd_addr[2]<<8)+p_data->add_ble_key.bd_addr[3],
- (p_data->add_ble_key.bd_addr[4]<<8)+p_data->add_ble_key.bd_addr[5]);
- }
+void bta_dm_add_blekey(tBTA_DM_MSG* p_data) {
+ if (!BTM_SecAddBleKey(p_data->add_ble_key.bd_addr,
+ (tBTM_LE_KEY_VALUE*)&p_data->add_ble_key.blekey,
+ p_data->add_ble_key.key_type)) {
+ APPL_TRACE_ERROR(
+ "BTA_DM: Error adding BLE Key for device %08x%04x",
+ (p_data->add_ble_key.bd_addr[0] << 24) +
+ (p_data->add_ble_key.bd_addr[1] << 16) +
+ (p_data->add_ble_key.bd_addr[2] << 8) +
+ p_data->add_ble_key.bd_addr[3],
+ (p_data->add_ble_key.bd_addr[4] << 8) + p_data->add_ble_key.bd_addr[5]);
+ }
}
/*******************************************************************************
*
* Function bta_dm_add_ble_device
*
- * Description This function adds an BLE device to an security database entry.
- * It is normally called during host startup to restore all required information
+ * Description This function adds an BLE device to an security database
+ *entry.
+ * It is normally called during host startup to restore all
+ *required information
* stored in the NVRAM.
*
* Parameters:
*
******************************************************************************/
-void bta_dm_add_ble_device (tBTA_DM_MSG *p_data)
-{
- if (!BTM_SecAddBleDevice (p_data->add_ble_device.bd_addr, NULL,
- p_data->add_ble_device.dev_type ,
- p_data->add_ble_device.addr_type))
- {
- APPL_TRACE_ERROR ("BTA_DM: Error adding BLE Device for device %08x%04x",
- (p_data->add_ble_device.bd_addr[0]<<24)+(p_data->add_ble_device.bd_addr[1]<<16)+ \
- (p_data->add_ble_device.bd_addr[2]<<8)+p_data->add_ble_device.bd_addr[3],
- (p_data->add_ble_device.bd_addr[4]<<8)+p_data->add_ble_device.bd_addr[5]);
- }
+void bta_dm_add_ble_device(tBTA_DM_MSG* p_data) {
+ if (!BTM_SecAddBleDevice(p_data->add_ble_device.bd_addr, NULL,
+ p_data->add_ble_device.dev_type,
+ p_data->add_ble_device.addr_type)) {
+ APPL_TRACE_ERROR("BTA_DM: Error adding BLE Device for device %08x%04x",
+ (p_data->add_ble_device.bd_addr[0] << 24) +
+ (p_data->add_ble_device.bd_addr[1] << 16) +
+ (p_data->add_ble_device.bd_addr[2] << 8) +
+ p_data->add_ble_device.bd_addr[3],
+ (p_data->add_ble_device.bd_addr[4] << 8) +
+ p_data->add_ble_device.bd_addr[5]);
+ }
}
/*******************************************************************************
*
* Function bta_dm_add_ble_device
*
- * Description This function adds an BLE device to an security database entry.
- * It is normally called during host startup to restore all required information
+ * Description This function adds an BLE device to an security database
+ *entry.
+ * It is normally called during host startup to restore all
+ *required information
* stored in the NVRAM.
*
* Parameters:
*
******************************************************************************/
-void bta_dm_ble_passkey_reply (tBTA_DM_MSG *p_data)
-{
- if (p_data->pin_reply.accept)
- {
- BTM_BlePasskeyReply(p_data->ble_passkey_reply.bd_addr, BTM_SUCCESS, p_data->ble_passkey_reply.passkey);
- }
- else
- {
- BTM_BlePasskeyReply(p_data->ble_passkey_reply.bd_addr, BTM_NOT_AUTHORIZED, p_data->ble_passkey_reply.passkey);
- }
-
+void bta_dm_ble_passkey_reply(tBTA_DM_MSG* p_data) {
+ if (p_data->pin_reply.accept) {
+ BTM_BlePasskeyReply(p_data->ble_passkey_reply.bd_addr, BTM_SUCCESS,
+ p_data->ble_passkey_reply.passkey);
+ } else {
+ BTM_BlePasskeyReply(p_data->ble_passkey_reply.bd_addr, BTM_NOT_AUTHORIZED,
+ p_data->ble_passkey_reply.passkey);
+ }
}
/*******************************************************************************
@@ -4560,16 +4332,12 @@
* Parameters:
*
******************************************************************************/
-void bta_dm_ble_confirm_reply (tBTA_DM_MSG *p_data)
-{
- if (p_data->confirm.accept)
- {
- BTM_BleConfirmReply(p_data->confirm.bd_addr, BTM_SUCCESS);
- }
- else
- {
- BTM_BleConfirmReply(p_data->ble_passkey_reply.bd_addr, BTM_NOT_AUTHORIZED);
- }
+void bta_dm_ble_confirm_reply(tBTA_DM_MSG* p_data) {
+ if (p_data->confirm.accept) {
+ BTM_BleConfirmReply(p_data->confirm.bd_addr, BTM_SUCCESS);
+ } else {
+ BTM_BleConfirmReply(p_data->ble_passkey_reply.bd_addr, BTM_NOT_AUTHORIZED);
+ }
}
/*******************************************************************************
@@ -4581,9 +4349,8 @@
* Parameters:
*
******************************************************************************/
-void bta_dm_security_grant (tBTA_DM_MSG *p_data)
-{
- BTM_SecurityGrant(p_data->ble_sec_grant.bd_addr, p_data->ble_sec_grant.res);
+void bta_dm_security_grant(tBTA_DM_MSG* p_data) {
+ BTM_SecurityGrant(p_data->ble_sec_grant.bd_addr, p_data->ble_sec_grant.res);
}
/*******************************************************************************
@@ -4595,10 +4362,9 @@
* Parameters:
*
******************************************************************************/
-void bta_dm_ble_set_bg_conn_type (tBTA_DM_MSG *p_data)
-{
- BTM_BleSetBgConnType(p_data->ble_set_bd_conn_type.bg_conn_type,
- p_data->ble_set_bd_conn_type.p_select_cback);
+void bta_dm_ble_set_bg_conn_type(tBTA_DM_MSG* p_data) {
+ BTM_BleSetBgConnType(p_data->ble_set_bd_conn_type.bg_conn_type,
+ p_data->ble_set_bd_conn_type.p_select_cback);
}
/*******************************************************************************
@@ -4610,13 +4376,12 @@
* Parameters:
*
******************************************************************************/
-void bta_dm_ble_set_conn_params (tBTA_DM_MSG *p_data)
-{
- BTM_BleSetPrefConnParams(p_data->ble_set_conn_params.peer_bda,
- p_data->ble_set_conn_params.conn_int_min,
- p_data->ble_set_conn_params.conn_int_max,
- p_data->ble_set_conn_params.slave_latency,
- p_data->ble_set_conn_params.supervision_tout);
+void bta_dm_ble_set_conn_params(tBTA_DM_MSG* p_data) {
+ BTM_BleSetPrefConnParams(p_data->ble_set_conn_params.peer_bda,
+ p_data->ble_set_conn_params.conn_int_min,
+ p_data->ble_set_conn_params.conn_int_max,
+ p_data->ble_set_conn_params.slave_latency,
+ p_data->ble_set_conn_params.supervision_tout);
}
/*******************************************************************************
@@ -4628,13 +4393,12 @@
* Parameters:
*
******************************************************************************/
-void bta_dm_ble_set_scan_params(tBTA_DM_MSG *p_data)
-{
- BTM_BleSetScanParams(p_data->ble_set_scan_params.client_if,
- p_data->ble_set_scan_params.scan_int,
- p_data->ble_set_scan_params.scan_window,
- p_data->ble_set_scan_params.scan_mode,
- p_data->ble_set_scan_params.scan_param_setup_cback);
+void bta_dm_ble_set_scan_params(tBTA_DM_MSG* p_data) {
+ BTM_BleSetScanParams(p_data->ble_set_scan_params.client_if,
+ p_data->ble_set_scan_params.scan_int,
+ p_data->ble_set_scan_params.scan_window,
+ p_data->ble_set_scan_params.scan_mode,
+ p_data->ble_set_scan_params.scan_param_setup_cback);
}
/*******************************************************************************
@@ -4646,10 +4410,9 @@
* Parameters:
*
******************************************************************************/
-void bta_dm_ble_set_conn_scan_params (tBTA_DM_MSG *p_data)
-{
- BTM_BleSetConnScanParams(p_data->ble_set_conn_scan_params.scan_int,
- p_data->ble_set_conn_scan_params.scan_window);
+void bta_dm_ble_set_conn_scan_params(tBTA_DM_MSG* p_data) {
+ BTM_BleSetConnScanParams(p_data->ble_set_conn_scan_params.scan_int,
+ p_data->ble_set_conn_scan_params.scan_window);
}
/*******************************************************************************
*
@@ -4660,16 +4423,14 @@
* Parameters:
*
******************************************************************************/
-void bta_dm_ble_update_conn_params (tBTA_DM_MSG *p_data)
-{
- if (!L2CA_UpdateBleConnParams(p_data->ble_update_conn_params.bd_addr,
- p_data->ble_update_conn_params.min_int,
- p_data->ble_update_conn_params.max_int,
- p_data->ble_update_conn_params.latency,
- p_data->ble_update_conn_params.timeout))
- {
- APPL_TRACE_ERROR("Update connection parameters failed!");
- }
+void bta_dm_ble_update_conn_params(tBTA_DM_MSG* p_data) {
+ if (!L2CA_UpdateBleConnParams(p_data->ble_update_conn_params.bd_addr,
+ p_data->ble_update_conn_params.min_int,
+ p_data->ble_update_conn_params.max_int,
+ p_data->ble_update_conn_params.latency,
+ p_data->ble_update_conn_params.timeout)) {
+ APPL_TRACE_ERROR("Update connection parameters failed!");
+ }
}
#if (BLE_PRIVACY_SPT == TRUE)
@@ -4682,9 +4443,8 @@
* Parameters:
*
******************************************************************************/
-void bta_dm_ble_config_local_privacy (tBTA_DM_MSG *p_data)
-{
- BTM_BleConfigPrivacy (p_data->ble_local_privacy.privacy_enable);
+void bta_dm_ble_config_local_privacy(tBTA_DM_MSG* p_data) {
+ BTM_BleConfigPrivacy(p_data->ble_local_privacy.privacy_enable);
}
#endif
@@ -4697,30 +4457,26 @@
* Parameters:
*
******************************************************************************/
-void bta_dm_ble_observe (tBTA_DM_MSG *p_data)
-{
- tBTM_STATUS status;
- if (p_data->ble_observe.start)
- {
- /*Save the callback to be called when a scan results are available */
- bta_dm_search_cb.p_scan_cback = p_data->ble_observe.p_cback;
- if ((status = BTM_BleObserve(true, p_data->ble_observe.duration,
- bta_dm_observe_results_cb, bta_dm_observe_cmpl_cb))!= BTM_CMD_STARTED)
- {
- tBTA_DM_SEARCH data;
- APPL_TRACE_WARNING(" %s BTM_BleObserve failed. status %d",__func__,status);
- data.inq_cmpl.num_resps = 0;
- if (bta_dm_search_cb.p_scan_cback)
- {
- bta_dm_search_cb.p_scan_cback(BTA_DM_INQ_CMPL_EVT, &data);
- }
- }
+void bta_dm_ble_observe(tBTA_DM_MSG* p_data) {
+ tBTM_STATUS status;
+ if (p_data->ble_observe.start) {
+ /*Save the callback to be called when a scan results are available */
+ bta_dm_search_cb.p_scan_cback = p_data->ble_observe.p_cback;
+ if ((status = BTM_BleObserve(true, p_data->ble_observe.duration,
+ bta_dm_observe_results_cb,
+ bta_dm_observe_cmpl_cb)) != BTM_CMD_STARTED) {
+ tBTA_DM_SEARCH data;
+ APPL_TRACE_WARNING(" %s BTM_BleObserve failed. status %d", __func__,
+ status);
+ data.inq_cmpl.num_resps = 0;
+ if (bta_dm_search_cb.p_scan_cback) {
+ bta_dm_search_cb.p_scan_cback(BTA_DM_INQ_CMPL_EVT, &data);
+ }
}
- else
- {
- bta_dm_search_cb.p_scan_cback = NULL;
- BTM_BleObserve(false, 0, NULL,NULL );
- }
+ } else {
+ bta_dm_search_cb.p_scan_cback = NULL;
+ BTM_BleObserve(false, 0, NULL, NULL);
+ }
}
/*******************************************************************************
*
@@ -4731,10 +4487,10 @@
* Parameters:
*
******************************************************************************/
-void bta_dm_ble_set_adv_params (uint16_t adv_int_min, uint16_t adv_int_max,
- tBLE_BD_ADDR *p_dir_bda)
-{
- BTM_BleSetAdvParams(adv_int_min, adv_int_max, p_dir_bda, BTA_DM_BLE_ADV_CHNL_MAP);
+void bta_dm_ble_set_adv_params(uint16_t adv_int_min, uint16_t adv_int_max,
+ tBLE_BD_ADDR* p_dir_bda) {
+ BTM_BleSetAdvParams(adv_int_min, adv_int_max, p_dir_bda,
+ BTA_DM_BLE_ADV_CHNL_MAP);
}
/*******************************************************************************
@@ -4746,45 +4502,44 @@
* Parameters
*
******************************************************************************/
-void bta_dm_ble_set_data_length(tBTA_DM_MSG *p_data)
-{
- if (BTM_SetBleDataLength(p_data->ble_set_data_length.remote_bda,
- p_data->ble_set_data_length.tx_data_length) != BTM_SUCCESS)
- {
- APPL_TRACE_ERROR("%s failed", __func__);
- }
+void bta_dm_ble_set_data_length(tBTA_DM_MSG* p_data) {
+ if (BTM_SetBleDataLength(p_data->ble_set_data_length.remote_bda,
+ p_data->ble_set_data_length.tx_data_length) !=
+ BTM_SUCCESS) {
+ APPL_TRACE_ERROR("%s failed", __func__);
+ }
}
/*******************************************************************************
*
* Function bta_dm_ble_setup_storage
*
- * Description This function configures up the storage parameters for ADV batch scanning
+ * Description This function configures up the storage parameters for ADV
+ *batch scanning
*
* Parameters:
*
******************************************************************************/
-void bta_dm_ble_setup_storage (tBTA_DM_MSG *p_data)
-{
- tBTM_STATUS btm_status = 0;
- tBTM_BLE_VSC_CB cmn_ble_vsc_cb;
+void bta_dm_ble_setup_storage(tBTA_DM_MSG* p_data) {
+ tBTM_STATUS btm_status = 0;
+ tBTM_BLE_VSC_CB cmn_ble_vsc_cb;
- BTM_BleGetVendorCapabilities(&cmn_ble_vsc_cb);
+ BTM_BleGetVendorCapabilities(&cmn_ble_vsc_cb);
- if (0 != cmn_ble_vsc_cb.tot_scan_results_strg)
- {
- btm_status = BTM_BleSetStorageConfig(p_data->ble_set_storage.batch_scan_full_max,
- p_data->ble_set_storage.batch_scan_trunc_max,
- p_data->ble_set_storage.batch_scan_notify_threshold,
- p_data->ble_set_storage.p_setup_cback,
- p_data->ble_set_storage.p_thres_cback,
- p_data->ble_set_storage.p_read_rep_cback,
- p_data->ble_set_storage.ref_value);
- }
+ if (0 != cmn_ble_vsc_cb.tot_scan_results_strg) {
+ btm_status = BTM_BleSetStorageConfig(
+ p_data->ble_set_storage.batch_scan_full_max,
+ p_data->ble_set_storage.batch_scan_trunc_max,
+ p_data->ble_set_storage.batch_scan_notify_threshold,
+ p_data->ble_set_storage.p_setup_cback,
+ p_data->ble_set_storage.p_thres_cback,
+ p_data->ble_set_storage.p_read_rep_cback,
+ p_data->ble_set_storage.ref_value);
+ }
- if(BTM_CMD_STARTED != btm_status)
- bta_ble_scan_setup_cb(BTM_BLE_BATCH_SCAN_CFG_STRG_EVT, p_data->ble_set_storage.ref_value,
- btm_status);
+ if (BTM_CMD_STARTED != btm_status)
+ bta_ble_scan_setup_cb(BTM_BLE_BATCH_SCAN_CFG_STRG_EVT,
+ p_data->ble_set_storage.ref_value, btm_status);
}
/*******************************************************************************
@@ -4796,26 +4551,23 @@
* Parameters:
*
******************************************************************************/
-void bta_dm_ble_enable_batch_scan (tBTA_DM_MSG *p_data)
-{
- tBTM_STATUS btm_status = 0;
- tBTM_BLE_VSC_CB cmn_ble_vsc_cb;
+void bta_dm_ble_enable_batch_scan(tBTA_DM_MSG* p_data) {
+ tBTM_STATUS btm_status = 0;
+ tBTM_BLE_VSC_CB cmn_ble_vsc_cb;
- BTM_BleGetVendorCapabilities(&cmn_ble_vsc_cb);
+ BTM_BleGetVendorCapabilities(&cmn_ble_vsc_cb);
- if (0 != cmn_ble_vsc_cb.tot_scan_results_strg)
- {
- btm_status = BTM_BleEnableBatchScan(p_data->ble_enable_scan.scan_mode,
- p_data->ble_enable_scan.scan_int,
- p_data->ble_enable_scan.scan_window,
- p_data->ble_enable_scan.discard_rule,
- p_data->ble_enable_scan.addr_type,
- p_data->ble_enable_scan.ref_value);
- }
+ if (0 != cmn_ble_vsc_cb.tot_scan_results_strg) {
+ btm_status = BTM_BleEnableBatchScan(
+ p_data->ble_enable_scan.scan_mode, p_data->ble_enable_scan.scan_int,
+ p_data->ble_enable_scan.scan_window,
+ p_data->ble_enable_scan.discard_rule, p_data->ble_enable_scan.addr_type,
+ p_data->ble_enable_scan.ref_value);
+ }
- if(BTM_CMD_STARTED != btm_status)
- bta_ble_scan_setup_cb(BTM_BLE_BATCH_SCAN_ENABLE_EVT, p_data->ble_enable_scan.ref_value,
- btm_status);
+ if (BTM_CMD_STARTED != btm_status)
+ bta_ble_scan_setup_cb(BTM_BLE_BATCH_SCAN_ENABLE_EVT,
+ p_data->ble_enable_scan.ref_value, btm_status);
}
/*******************************************************************************
@@ -4827,22 +4579,19 @@
* Parameters:
*
******************************************************************************/
-void bta_dm_ble_disable_batch_scan (UNUSED_ATTR tBTA_DM_MSG *p_data)
-{
+void bta_dm_ble_disable_batch_scan(UNUSED_ATTR tBTA_DM_MSG* p_data) {
+ tBTM_STATUS btm_status = 0;
+ tBTM_BLE_VSC_CB cmn_ble_vsc_cb;
- tBTM_STATUS btm_status = 0;
- tBTM_BLE_VSC_CB cmn_ble_vsc_cb;
+ BTM_BleGetVendorCapabilities(&cmn_ble_vsc_cb);
- BTM_BleGetVendorCapabilities(&cmn_ble_vsc_cb);
+ if (0 != cmn_ble_vsc_cb.tot_scan_results_strg) {
+ btm_status = BTM_BleDisableBatchScan(p_data->ble_disable_scan.ref_value);
+ }
- if (0 != cmn_ble_vsc_cb.tot_scan_results_strg)
- {
- btm_status = BTM_BleDisableBatchScan(p_data->ble_disable_scan.ref_value);
- }
-
- if(BTM_CMD_STARTED != btm_status)
- bta_ble_scan_setup_cb(BTM_BLE_BATCH_SCAN_DISABLE_EVT, p_data->ble_enable_scan.ref_value,
- btm_status);
+ if (BTM_CMD_STARTED != btm_status)
+ bta_ble_scan_setup_cb(BTM_BLE_BATCH_SCAN_DISABLE_EVT,
+ p_data->ble_enable_scan.ref_value, btm_status);
}
/*******************************************************************************
@@ -4854,22 +4603,20 @@
* Parameters:
*
******************************************************************************/
-void bta_dm_ble_read_scan_reports(tBTA_DM_MSG *p_data)
-{
- tBTM_STATUS btm_status = 0;
- tBTM_BLE_VSC_CB cmn_ble_vsc_cb;
+void bta_dm_ble_read_scan_reports(tBTA_DM_MSG* p_data) {
+ tBTM_STATUS btm_status = 0;
+ tBTM_BLE_VSC_CB cmn_ble_vsc_cb;
- BTM_BleGetVendorCapabilities(&cmn_ble_vsc_cb);
+ BTM_BleGetVendorCapabilities(&cmn_ble_vsc_cb);
- if (0 != cmn_ble_vsc_cb.tot_scan_results_strg)
- {
- btm_status = BTM_BleReadScanReports(p_data->ble_read_reports.scan_type,
- p_data->ble_read_reports.ref_value);
- }
+ if (0 != cmn_ble_vsc_cb.tot_scan_results_strg) {
+ btm_status = BTM_BleReadScanReports(p_data->ble_read_reports.scan_type,
+ p_data->ble_read_reports.ref_value);
+ }
- if(BTM_CMD_STARTED != btm_status)
- bta_ble_scan_setup_cb(BTM_BLE_BATCH_SCAN_READ_REPTS_EVT, p_data->ble_enable_scan.ref_value,
- btm_status);
+ if (BTM_CMD_STARTED != btm_status)
+ bta_ble_scan_setup_cb(BTM_BLE_BATCH_SCAN_READ_REPTS_EVT,
+ p_data->ble_enable_scan.ref_value, btm_status);
}
/*******************************************************************************
@@ -4881,72 +4628,68 @@
* Parameters:
*
******************************************************************************/
-void bta_dm_ble_track_advertiser(tBTA_DM_MSG *p_data)
-{
- tBTM_STATUS btm_status = 0;
- BD_ADDR bda;
- memset(&bda, 0 , sizeof(BD_ADDR));
- tBTM_BLE_VSC_CB cmn_ble_vsc_cb;
- tBTA_DM_BLE_TRACK_ADV_DATA track_adv_data;
+void bta_dm_ble_track_advertiser(tBTA_DM_MSG* p_data) {
+ tBTM_STATUS btm_status = 0;
+ BD_ADDR bda;
+ memset(&bda, 0, sizeof(BD_ADDR));
+ tBTM_BLE_VSC_CB cmn_ble_vsc_cb;
+ tBTA_DM_BLE_TRACK_ADV_DATA track_adv_data;
- BTM_BleGetVendorCapabilities(&cmn_ble_vsc_cb);
+ BTM_BleGetVendorCapabilities(&cmn_ble_vsc_cb);
- if (0 != cmn_ble_vsc_cb.tot_scan_results_strg)
- {
- btm_status = BTM_BleTrackAdvertiser((tBTM_BLE_TRACK_ADV_CBACK *)
- p_data->ble_track_advert.p_track_adv_cback,
- p_data->ble_track_advert.ref_value);
- }
+ if (0 != cmn_ble_vsc_cb.tot_scan_results_strg) {
+ btm_status = BTM_BleTrackAdvertiser(
+ (tBTM_BLE_TRACK_ADV_CBACK*)p_data->ble_track_advert.p_track_adv_cback,
+ p_data->ble_track_advert.ref_value);
+ }
- if(BTM_CMD_STARTED != btm_status)
- {
- memset(&track_adv_data, 0, sizeof(tBTA_DM_BLE_TRACK_ADV_DATA));
- track_adv_data.advertiser_info_present = NO_ADV_INFO_PRESENT; /* Indicates failure */
- track_adv_data.client_if = (uint8_t)p_data->ble_track_advert.ref_value;
- p_data->ble_track_advert.p_track_adv_cback(&track_adv_data);
- }
+ if (BTM_CMD_STARTED != btm_status) {
+ memset(&track_adv_data, 0, sizeof(tBTA_DM_BLE_TRACK_ADV_DATA));
+ track_adv_data.advertiser_info_present =
+ NO_ADV_INFO_PRESENT; /* Indicates failure */
+ track_adv_data.client_if = (uint8_t)p_data->ble_track_advert.ref_value;
+ p_data->ble_track_advert.p_track_adv_cback(&track_adv_data);
+ }
}
/*******************************************************************************
*
* Function bta_ble_scan_setup_cb
*
- * Description Handle the setup callback from BTM layer and forward it to app layer
+ * Description Handle the setup callback from BTM layer and forward it to
+ *app layer
*
* Parameters:
*
******************************************************************************/
-void bta_ble_scan_setup_cb(tBTM_BLE_BATCH_SCAN_EVT evt, tBTM_BLE_REF_VALUE ref_value,
- tBTM_STATUS status)
-{
- tBTA_BLE_BATCH_SCAN_EVT bta_evt = 0;
+void bta_ble_scan_setup_cb(tBTM_BLE_BATCH_SCAN_EVT evt,
+ tBTM_BLE_REF_VALUE ref_value, tBTM_STATUS status) {
+ tBTA_BLE_BATCH_SCAN_EVT bta_evt = 0;
- APPL_TRACE_DEBUG("bta_ble_scan_setup_cb : evt: %d, ref_value: %d, status:%d", evt,
- ref_value, status);
+ APPL_TRACE_DEBUG("bta_ble_scan_setup_cb : evt: %d, ref_value: %d, status:%d",
+ evt, ref_value, status);
- switch(evt)
- {
- case BTM_BLE_BATCH_SCAN_ENABLE_EVT:
- bta_evt = BTA_BLE_BATCH_SCAN_ENB_EVT;
- break;
- case BTM_BLE_BATCH_SCAN_CFG_STRG_EVT:
- bta_evt = BTA_BLE_BATCH_SCAN_CFG_STRG_EVT;
- break;
- case BTM_BLE_BATCH_SCAN_DISABLE_EVT:
- bta_evt = BTA_BLE_BATCH_SCAN_DIS_EVT;
- break;
- case BTM_BLE_BATCH_SCAN_PARAM_EVT:
- bta_evt = BTA_BLE_BATCH_SCAN_PARAM_EVT;
- break;
- default:
- break;
- }
+ switch (evt) {
+ case BTM_BLE_BATCH_SCAN_ENABLE_EVT:
+ bta_evt = BTA_BLE_BATCH_SCAN_ENB_EVT;
+ break;
+ case BTM_BLE_BATCH_SCAN_CFG_STRG_EVT:
+ bta_evt = BTA_BLE_BATCH_SCAN_CFG_STRG_EVT;
+ break;
+ case BTM_BLE_BATCH_SCAN_DISABLE_EVT:
+ bta_evt = BTA_BLE_BATCH_SCAN_DIS_EVT;
+ break;
+ case BTM_BLE_BATCH_SCAN_PARAM_EVT:
+ bta_evt = BTA_BLE_BATCH_SCAN_PARAM_EVT;
+ break;
+ default:
+ break;
+ }
- if(NULL != bta_dm_cb.p_setup_cback)
- bta_dm_cb.p_setup_cback(bta_evt, ref_value, status);
+ if (NULL != bta_dm_cb.p_setup_cback)
+ bta_dm_cb.p_setup_cback(bta_evt, ref_value, status);
}
-
#if (BLE_ANDROID_CONTROLLER_SCAN_FILTER == TRUE)
/*******************************************************************************
*
@@ -4958,16 +4701,18 @@
* Returns true if handled, otherwise false.
*
******************************************************************************/
-static void bta_ble_scan_cfg_cmpl(tBTM_BLE_PF_ACTION action, tBTM_BLE_SCAN_COND_OP cfg_op,
- tBTM_BLE_PF_AVBL_SPACE avbl_space, tBTM_STATUS status,
- tBTM_BLE_REF_VALUE ref_value)
-{
- tBTA_STATUS st = (status == BTM_SUCCESS) ? BTA_SUCCESS: BTA_FAILURE;
+static void bta_ble_scan_cfg_cmpl(tBTM_BLE_PF_ACTION action,
+ tBTM_BLE_SCAN_COND_OP cfg_op,
+ tBTM_BLE_PF_AVBL_SPACE avbl_space,
+ tBTM_STATUS status,
+ tBTM_BLE_REF_VALUE ref_value) {
+ tBTA_STATUS st = (status == BTM_SUCCESS) ? BTA_SUCCESS : BTA_FAILURE;
- APPL_TRACE_DEBUG("bta_ble_scan_cfg_cmpl: %d, %d, %d, %d", action, cfg_op, avbl_space, status);
+ APPL_TRACE_DEBUG("bta_ble_scan_cfg_cmpl: %d, %d, %d, %d", action, cfg_op,
+ avbl_space, status);
- if(bta_dm_cb.p_scan_filt_cfg_cback)
- bta_dm_cb.p_scan_filt_cfg_cback(action, cfg_op, avbl_space, st, ref_value);
+ if (bta_dm_cb.p_scan_filt_cfg_cback)
+ bta_dm_cb.p_scan_filt_cfg_cback(action, cfg_op, avbl_space, st, ref_value);
}
/*******************************************************************************
@@ -4979,34 +4724,33 @@
* Parameters:
*
******************************************************************************/
-void bta_dm_cfg_filter_cond (tBTA_DM_MSG *p_data)
-{
- tBTM_STATUS st = BTM_MODE_UNSUPPORTED;
- tBTA_STATUS status = BTA_FAILURE;
+void bta_dm_cfg_filter_cond(tBTA_DM_MSG* p_data) {
+ tBTM_STATUS st = BTM_MODE_UNSUPPORTED;
+ tBTA_STATUS status = BTA_FAILURE;
- tBTM_BLE_VSC_CB cmn_vsc_cb;
+ tBTM_BLE_VSC_CB cmn_vsc_cb;
- APPL_TRACE_DEBUG("bta_dm_cfg_filter_cond");
- BTM_BleGetVendorCapabilities(&cmn_vsc_cb);
- if(0 != cmn_vsc_cb.filter_support)
- {
- if ((st = BTM_BleCfgFilterCondition(p_data->ble_cfg_filter_cond.action,
- p_data->ble_cfg_filter_cond.cond_type,
- (tBTM_BLE_PF_FILT_INDEX)p_data->ble_cfg_filter_cond.filt_index,
- (tBTM_BLE_PF_COND_PARAM *)p_data->ble_cfg_filter_cond.p_cond_param,
- bta_ble_scan_cfg_cmpl, p_data->ble_cfg_filter_cond.ref_value))
- == BTM_CMD_STARTED)
- {
- bta_dm_cb.p_scan_filt_cfg_cback = p_data->ble_cfg_filter_cond.p_filt_cfg_cback;
- return;
- }
+ APPL_TRACE_DEBUG("bta_dm_cfg_filter_cond");
+ BTM_BleGetVendorCapabilities(&cmn_vsc_cb);
+ if (0 != cmn_vsc_cb.filter_support) {
+ if ((st = BTM_BleCfgFilterCondition(
+ p_data->ble_cfg_filter_cond.action,
+ p_data->ble_cfg_filter_cond.cond_type,
+ (tBTM_BLE_PF_FILT_INDEX)p_data->ble_cfg_filter_cond.filt_index,
+ (tBTM_BLE_PF_COND_PARAM*)p_data->ble_cfg_filter_cond.p_cond_param,
+ bta_ble_scan_cfg_cmpl, p_data->ble_cfg_filter_cond.ref_value)) ==
+ BTM_CMD_STARTED) {
+ bta_dm_cb.p_scan_filt_cfg_cback =
+ p_data->ble_cfg_filter_cond.p_filt_cfg_cback;
+ return;
}
+ }
- if (p_data->ble_cfg_filter_cond.p_filt_cfg_cback)
- p_data->ble_cfg_filter_cond.p_filt_cfg_cback(BTA_DM_BLE_PF_CONFIG_EVT,
- p_data->ble_cfg_filter_cond.cond_type, 0, status,
- p_data->ble_cfg_filter_cond.ref_value);
- return;
+ if (p_data->ble_cfg_filter_cond.p_filt_cfg_cback)
+ p_data->ble_cfg_filter_cond.p_filt_cfg_cback(
+ BTA_DM_BLE_PF_CONFIG_EVT, p_data->ble_cfg_filter_cond.cond_type, 0,
+ status, p_data->ble_cfg_filter_cond.ref_value);
+ return;
}
/*******************************************************************************
@@ -5018,28 +4762,29 @@
* Parameters:
*
******************************************************************************/
-void bta_dm_enable_scan_filter(tBTA_DM_MSG *p_data)
-{
- tBTM_STATUS st = BTM_MODE_UNSUPPORTED;
- tBTA_STATUS status = BTA_FAILURE;
+void bta_dm_enable_scan_filter(tBTA_DM_MSG* p_data) {
+ tBTM_STATUS st = BTM_MODE_UNSUPPORTED;
+ tBTA_STATUS status = BTA_FAILURE;
- tBTM_BLE_VSC_CB cmn_vsc_cb;
- APPL_TRACE_DEBUG("bta_dm_enable_scan_filter");
- BTM_BleGetVendorCapabilities(&cmn_vsc_cb);
+ tBTM_BLE_VSC_CB cmn_vsc_cb;
+ APPL_TRACE_DEBUG("bta_dm_enable_scan_filter");
+ BTM_BleGetVendorCapabilities(&cmn_vsc_cb);
- if(0 != cmn_vsc_cb.filter_support)
- {
- if((st = BTM_BleEnableDisableFilterFeature(p_data->ble_enable_scan_filt.action,
- p_data->ble_enable_scan_filt.p_filt_status_cback,
- (tBTM_BLE_REF_VALUE)p_data->ble_enable_scan_filt.ref_value)) == BTM_CMD_STARTED)
- bta_dm_cb.p_scan_filt_status_cback = p_data->ble_enable_scan_filt.p_filt_status_cback;
- return;
- }
+ if (0 != cmn_vsc_cb.filter_support) {
+ if ((st = BTM_BleEnableDisableFilterFeature(
+ p_data->ble_enable_scan_filt.action,
+ p_data->ble_enable_scan_filt.p_filt_status_cback,
+ (tBTM_BLE_REF_VALUE)p_data->ble_enable_scan_filt.ref_value)) ==
+ BTM_CMD_STARTED)
+ bta_dm_cb.p_scan_filt_status_cback =
+ p_data->ble_enable_scan_filt.p_filt_status_cback;
+ return;
+ }
- if (p_data->ble_enable_scan_filt.p_filt_status_cback)
- p_data->ble_enable_scan_filt.p_filt_status_cback (BTA_DM_BLE_PF_ENABLE_EVT,
- p_data->ble_enable_scan_filt.ref_value, status);
-
+ if (p_data->ble_enable_scan_filt.p_filt_status_cback)
+ p_data->ble_enable_scan_filt.p_filt_status_cback(
+ BTA_DM_BLE_PF_ENABLE_EVT, p_data->ble_enable_scan_filt.ref_value,
+ status);
}
/*******************************************************************************
@@ -5051,34 +4796,35 @@
* Parameters:
*
******************************************************************************/
-void bta_dm_scan_filter_param_setup (tBTA_DM_MSG *p_data)
-{
- tBTM_STATUS st = BTM_MODE_UNSUPPORTED;
- tBTA_STATUS status = BTA_FAILURE;
+void bta_dm_scan_filter_param_setup(tBTA_DM_MSG* p_data) {
+ tBTM_STATUS st = BTM_MODE_UNSUPPORTED;
+ tBTA_STATUS status = BTA_FAILURE;
- tBTM_BLE_VSC_CB cmn_vsc_cb;
+ tBTM_BLE_VSC_CB cmn_vsc_cb;
- APPL_TRACE_DEBUG("bta_dm_scan_filter_param_setup");
- BTM_BleGetVendorCapabilities(&cmn_vsc_cb);
- if(0 != cmn_vsc_cb.filter_support)
- {
- if ((st = BTM_BleAdvFilterParamSetup(p_data->ble_scan_filt_param_setup.action,
- p_data->ble_scan_filt_param_setup.filt_index,
- (tBTM_BLE_PF_FILT_PARAMS *)&p_data->ble_scan_filt_param_setup.filt_params,
- p_data->ble_scan_filt_param_setup.p_target,
- p_data->ble_scan_filt_param_setup.p_filt_param_cback,
- p_data->ble_scan_filt_param_setup.ref_value)) == BTM_CMD_STARTED)
- {
- bta_dm_cb.p_scan_filt_param_cback = p_data->ble_scan_filt_param_setup.p_filt_param_cback;
- return;
- }
+ APPL_TRACE_DEBUG("bta_dm_scan_filter_param_setup");
+ BTM_BleGetVendorCapabilities(&cmn_vsc_cb);
+ if (0 != cmn_vsc_cb.filter_support) {
+ if ((st = BTM_BleAdvFilterParamSetup(
+ p_data->ble_scan_filt_param_setup.action,
+ p_data->ble_scan_filt_param_setup.filt_index,
+ (tBTM_BLE_PF_FILT_PARAMS*)&p_data->ble_scan_filt_param_setup
+ .filt_params,
+ p_data->ble_scan_filt_param_setup.p_target,
+ p_data->ble_scan_filt_param_setup.p_filt_param_cback,
+ p_data->ble_scan_filt_param_setup.ref_value)) == BTM_CMD_STARTED) {
+ bta_dm_cb.p_scan_filt_param_cback =
+ p_data->ble_scan_filt_param_setup.p_filt_param_cback;
+ return;
}
+ }
- if (p_data->ble_scan_filt_param_setup.p_filt_param_cback)
- p_data->ble_scan_filt_param_setup.p_filt_param_cback (BTA_DM_BLE_PF_ENABLE_EVT, 0,
- p_data->ble_scan_filt_param_setup.ref_value, status);
+ if (p_data->ble_scan_filt_param_setup.p_filt_param_cback)
+ p_data->ble_scan_filt_param_setup.p_filt_param_cback(
+ BTA_DM_BLE_PF_ENABLE_EVT, 0,
+ p_data->ble_scan_filt_param_setup.ref_value, status);
- return;
+ return;
}
#endif
@@ -5093,19 +4839,18 @@
*
******************************************************************************/
static void bta_ble_energy_info_cmpl(tBTM_BLE_TX_TIME_MS tx_time,
- tBTM_BLE_RX_TIME_MS rx_time,
- tBTM_BLE_IDLE_TIME_MS idle_time,
- tBTM_BLE_ENERGY_USED energy_used,
- tBTM_STATUS status)
-{
- tBTA_STATUS st = (status == BTM_SUCCESS) ? BTA_SUCCESS: BTA_FAILURE;
- tBTA_DM_CONTRL_STATE ctrl_state = 0;
+ tBTM_BLE_RX_TIME_MS rx_time,
+ tBTM_BLE_IDLE_TIME_MS idle_time,
+ tBTM_BLE_ENERGY_USED energy_used,
+ tBTM_STATUS status) {
+ tBTA_STATUS st = (status == BTM_SUCCESS) ? BTA_SUCCESS : BTA_FAILURE;
+ tBTA_DM_CONTRL_STATE ctrl_state = 0;
- if (BTA_SUCCESS == st)
- ctrl_state = bta_dm_pm_obtain_controller_state();
+ if (BTA_SUCCESS == st) ctrl_state = bta_dm_pm_obtain_controller_state();
- if (bta_dm_cb.p_energy_info_cback)
- bta_dm_cb.p_energy_info_cback(tx_time, rx_time, idle_time, energy_used, ctrl_state, st);
+ if (bta_dm_cb.p_energy_info_cback)
+ bta_dm_cb.p_energy_info_cback(tx_time, rx_time, idle_time, energy_used,
+ ctrl_state, st);
}
/*******************************************************************************
@@ -5117,19 +4862,18 @@
* Parameters:
*
******************************************************************************/
-void bta_dm_ble_get_energy_info(tBTA_DM_MSG *p_data)
-{
- tBTM_STATUS btm_status = 0;
+void bta_dm_ble_get_energy_info(tBTA_DM_MSG* p_data) {
+ tBTM_STATUS btm_status = 0;
- bta_dm_cb.p_energy_info_cback = p_data->ble_energy_info.p_energy_info_cback;
- btm_status = BTM_BleGetEnergyInfo(bta_ble_energy_info_cmpl);
- if (BTM_CMD_STARTED != btm_status)
- bta_ble_energy_info_cmpl(0, 0, 0, 0, btm_status);
+ bta_dm_cb.p_energy_info_cback = p_data->ble_energy_info.p_energy_info_cback;
+ btm_status = BTM_BleGetEnergyInfo(bta_ble_energy_info_cmpl);
+ if (BTM_CMD_STARTED != btm_status)
+ bta_ble_energy_info_cmpl(0, 0, 0, 0, btm_status);
}
#if (BTA_GATT_INCLUDED == TRUE)
#ifndef BTA_DM_GATT_CLOSE_DELAY_TOUT
-#define BTA_DM_GATT_CLOSE_DELAY_TOUT 1000
+#define BTA_DM_GATT_CLOSE_DELAY_TOUT 1000
#endif
/*******************************************************************************
@@ -5142,15 +4886,13 @@
* Returns void
*
******************************************************************************/
-static void bta_dm_gattc_register(void)
-{
- tBT_UUID app_uuid = {LEN_UUID_128,{0}};
+static void bta_dm_gattc_register(void) {
+ tBT_UUID app_uuid = {LEN_UUID_128, {0}};
- if (bta_dm_search_cb.client_if == BTA_GATTS_INVALID_IF)
- {
- memset (&app_uuid.uu.uuid128, 0x87, LEN_UUID_128);
- BTA_GATTC_AppRegister(&app_uuid, bta_dm_gattc_callback);
- }
+ if (bta_dm_search_cb.client_if == BTA_GATTS_INVALID_IF) {
+ memset(&app_uuid.uu.uuid128, 0x87, LEN_UUID_128);
+ BTA_GATTC_AppRegister(&app_uuid, bta_dm_gattc_callback);
+ }
}
/*******************************************************************************
@@ -5162,16 +4904,15 @@
* Parameters:
*
******************************************************************************/
-static void btm_dm_start_disc_gatt_services (uint16_t conn_id)
-{
- tBT_UUID *p_uuid = bta_dm_search_cb.p_srvc_uuid +
- bta_dm_search_cb.num_uuid - bta_dm_search_cb.uuid_to_search;
+static void btm_dm_start_disc_gatt_services(uint16_t conn_id) {
+ tBT_UUID* p_uuid = bta_dm_search_cb.p_srvc_uuid + bta_dm_search_cb.num_uuid -
+ bta_dm_search_cb.uuid_to_search;
- p_uuid = bta_dm_search_cb.p_srvc_uuid +
- bta_dm_search_cb.num_uuid - bta_dm_search_cb.uuid_to_search;
+ p_uuid = bta_dm_search_cb.p_srvc_uuid + bta_dm_search_cb.num_uuid -
+ bta_dm_search_cb.uuid_to_search;
- /* always search for all services */
- BTA_GATTC_ServiceSearchRequest(conn_id, p_uuid);
+ /* always search for all services */
+ BTA_GATTC_ServiceSearchRequest(conn_id, p_uuid);
}
/*******************************************************************************
@@ -5183,50 +4924,49 @@
* Parameters:
*
******************************************************************************/
-static void bta_dm_gatt_disc_result(tBTA_GATT_ID service_id)
-{
- tBTA_DM_SEARCH result;
+static void bta_dm_gatt_disc_result(tBTA_GATT_ID service_id) {
+ tBTA_DM_SEARCH result;
- /*
- * This logic will not work for gatt case. We are checking against the bluetooth profiles here
- * just copy the GATTID in raw data field and send it across.
- */
+ /*
+ * This logic will not work for gatt case. We are checking against the
+ * bluetooth profiles here
+ * just copy the GATTID in raw data field and send it across.
+ */
+ if (bta_dm_search_cb.ble_raw_used + sizeof(tBTA_GATT_ID) <
+ bta_dm_search_cb.ble_raw_size) {
+ APPL_TRACE_DEBUG(
+ "ADDING BLE SERVICE uuid=0x%x, ble_ptr = 0x%x, ble_raw_used = 0x%x",
+ service_id.uuid.uu.uuid16, bta_dm_search_cb.p_ble_rawdata,
+ bta_dm_search_cb.ble_raw_used);
- if ( bta_dm_search_cb.ble_raw_used + sizeof(tBTA_GATT_ID) < bta_dm_search_cb.ble_raw_size )
- {
- APPL_TRACE_DEBUG("ADDING BLE SERVICE uuid=0x%x, ble_ptr = 0x%x, ble_raw_used = 0x%x",
- service_id.uuid.uu.uuid16,bta_dm_search_cb.p_ble_rawdata,bta_dm_search_cb.ble_raw_used);
+ if (bta_dm_search_cb.p_ble_rawdata) {
+ memcpy((bta_dm_search_cb.p_ble_rawdata + bta_dm_search_cb.ble_raw_used),
+ &service_id, sizeof(service_id));
- if(bta_dm_search_cb.p_ble_rawdata)
- {
- memcpy((bta_dm_search_cb.p_ble_rawdata + bta_dm_search_cb.ble_raw_used), &service_id,
- sizeof(service_id) );
-
- bta_dm_search_cb.ble_raw_used += sizeof(service_id);
- }
- else
- {
- APPL_TRACE_ERROR("p_ble_rawdata is NULL");
- }
-
- }
- else
- {
- APPL_TRACE_ERROR("%s out of room to accomodate more service ids ble_raw_size = %d ble_raw_used = %d", __func__,bta_dm_search_cb.ble_raw_size, bta_dm_search_cb.ble_raw_used );
+ bta_dm_search_cb.ble_raw_used += sizeof(service_id);
+ } else {
+ APPL_TRACE_ERROR("p_ble_rawdata is NULL");
}
- LOG_INFO(LOG_TAG, "%s service_id_uuid_len=%d ", __func__, service_id.uuid.len);
- if ( bta_dm_search_cb.state != BTA_DM_SEARCH_IDLE)
- {
+ } else {
+ APPL_TRACE_ERROR(
+ "%s out of room to accomodate more service ids ble_raw_size = %d "
+ "ble_raw_used = %d",
+ __func__, bta_dm_search_cb.ble_raw_size, bta_dm_search_cb.ble_raw_used);
+ }
- /* send result back to app now, one by one */
- bdcpy (result.disc_ble_res.bd_addr, bta_dm_search_cb.peer_bdaddr);
- strlcpy((char*)result.disc_ble_res.bd_name, bta_dm_get_remname(), BD_NAME_LEN);
- memcpy(&result.disc_ble_res.service, &service_id.uuid, sizeof(tBT_UUID));
+ LOG_INFO(LOG_TAG, "%s service_id_uuid_len=%d ", __func__,
+ service_id.uuid.len);
+ if (bta_dm_search_cb.state != BTA_DM_SEARCH_IDLE) {
+ /* send result back to app now, one by one */
+ bdcpy(result.disc_ble_res.bd_addr, bta_dm_search_cb.peer_bdaddr);
+ strlcpy((char*)result.disc_ble_res.bd_name, bta_dm_get_remname(),
+ BD_NAME_LEN);
+ memcpy(&result.disc_ble_res.service, &service_id.uuid, sizeof(tBT_UUID));
- bta_dm_search_cb.p_search_cback(BTA_DM_DISC_BLE_RES_EVT, &result);
- }
+ bta_dm_search_cb.p_search_cback(BTA_DM_DISC_BLE_RES_EVT, &result);
+ }
}
/*******************************************************************************
@@ -5238,62 +4978,60 @@
* Parameters:
*
******************************************************************************/
-static void bta_dm_gatt_disc_complete(uint16_t conn_id, tBTA_GATT_STATUS status)
-{
- APPL_TRACE_DEBUG("%s conn_id = %d", __func__, conn_id);
+static void bta_dm_gatt_disc_complete(uint16_t conn_id,
+ tBTA_GATT_STATUS status) {
+ APPL_TRACE_DEBUG("%s conn_id = %d", __func__, conn_id);
- if (bta_dm_search_cb.uuid_to_search > 0)
- bta_dm_search_cb.uuid_to_search --;
+ if (bta_dm_search_cb.uuid_to_search > 0) bta_dm_search_cb.uuid_to_search--;
- if (status == BTA_GATT_OK && bta_dm_search_cb.uuid_to_search > 0) {
- btm_dm_start_disc_gatt_services(conn_id);
+ if (status == BTA_GATT_OK && bta_dm_search_cb.uuid_to_search > 0) {
+ btm_dm_start_disc_gatt_services(conn_id);
+ } else {
+ tBTA_DM_MSG* p_msg = (tBTA_DM_MSG*)osi_malloc(sizeof(tBTA_DM_MSG));
+
+ bta_dm_search_cb.uuid_to_search = 0;
+
+ /* no more services to be discovered */
+ p_msg->hdr.event = BTA_DM_DISCOVERY_RESULT_EVT;
+ p_msg->disc_result.result.disc_res.result =
+ (status == BTA_GATT_OK) ? BTA_SUCCESS : BTA_FAILURE;
+ APPL_TRACE_DEBUG("%s service found: 0x%08x", __func__,
+ bta_dm_search_cb.services_found);
+ p_msg->disc_result.result.disc_res.services =
+ bta_dm_search_cb.services_found;
+ p_msg->disc_result.result.disc_res.num_uuids = 0;
+ p_msg->disc_result.result.disc_res.p_uuid_list = NULL;
+ bdcpy(p_msg->disc_result.result.disc_res.bd_addr,
+ bta_dm_search_cb.peer_bdaddr);
+ strlcpy((char*)p_msg->disc_result.result.disc_res.bd_name,
+ bta_dm_get_remname(), BD_NAME_LEN);
+
+ p_msg->disc_result.result.disc_res.device_type |= BT_DEVICE_TYPE_BLE;
+ if (bta_dm_search_cb.ble_raw_used > 0) {
+ p_msg->disc_result.result.disc_res.p_raw_data =
+ (uint8_t*)osi_malloc(bta_dm_search_cb.ble_raw_used);
+
+ memcpy(p_msg->disc_result.result.disc_res.p_raw_data,
+ bta_dm_search_cb.p_ble_rawdata, bta_dm_search_cb.ble_raw_used);
+
+ p_msg->disc_result.result.disc_res.raw_data_size =
+ bta_dm_search_cb.ble_raw_used;
} else {
- tBTA_DM_MSG *p_msg = (tBTA_DM_MSG *)osi_malloc(sizeof(tBTA_DM_MSG));
-
- bta_dm_search_cb.uuid_to_search = 0;
-
- /* no more services to be discovered */
- p_msg->hdr.event = BTA_DM_DISCOVERY_RESULT_EVT;
- p_msg->disc_result.result.disc_res.result = (status == BTA_GATT_OK) ? BTA_SUCCESS :BTA_FAILURE;
- APPL_TRACE_DEBUG("%s service found: 0x%08x", __func__,
- bta_dm_search_cb.services_found);
- p_msg->disc_result.result.disc_res.services = bta_dm_search_cb.services_found;
- p_msg->disc_result.result.disc_res.num_uuids = 0;
- p_msg->disc_result.result.disc_res.p_uuid_list = NULL;
- bdcpy(p_msg->disc_result.result.disc_res.bd_addr,
- bta_dm_search_cb.peer_bdaddr);
- strlcpy((char*)p_msg->disc_result.result.disc_res.bd_name,
- bta_dm_get_remname(), BD_NAME_LEN);
-
- p_msg->disc_result.result.disc_res.device_type |= BT_DEVICE_TYPE_BLE;
- if (bta_dm_search_cb.ble_raw_used > 0) {
- p_msg->disc_result.result.disc_res.p_raw_data =
- (uint8_t*) osi_malloc(bta_dm_search_cb.ble_raw_used);
-
- memcpy(p_msg->disc_result.result.disc_res.p_raw_data,
- bta_dm_search_cb.p_ble_rawdata,
- bta_dm_search_cb.ble_raw_used);
-
- p_msg->disc_result.result.disc_res.raw_data_size =
- bta_dm_search_cb.ble_raw_used;
- } else {
- p_msg->disc_result.result.disc_res.p_raw_data = NULL;
- bta_dm_search_cb.p_ble_rawdata = 0;
- }
-
- bta_sys_sendmsg(p_msg);
-
- if (conn_id != BTA_GATT_INVALID_CONN_ID)
- {
- /* start a GATT channel close delay timer */
- bta_sys_start_timer(bta_dm_search_cb.gatt_close_timer,
- BTA_DM_GATT_CLOSE_DELAY_TOUT,
- BTA_DM_DISC_CLOSE_TOUT_EVT, 0);
- bdcpy(bta_dm_search_cb.pending_close_bda,
- bta_dm_search_cb.peer_bdaddr);
- }
- bta_dm_search_cb.gatt_disc_active = false;
+ p_msg->disc_result.result.disc_res.p_raw_data = NULL;
+ bta_dm_search_cb.p_ble_rawdata = 0;
}
+
+ bta_sys_sendmsg(p_msg);
+
+ if (conn_id != BTA_GATT_INVALID_CONN_ID) {
+ /* start a GATT channel close delay timer */
+ bta_sys_start_timer(bta_dm_search_cb.gatt_close_timer,
+ BTA_DM_GATT_CLOSE_DELAY_TOUT,
+ BTA_DM_DISC_CLOSE_TOUT_EVT, 0);
+ bdcpy(bta_dm_search_cb.pending_close_bda, bta_dm_search_cb.peer_bdaddr);
+ }
+ bta_dm_search_cb.gatt_disc_active = false;
+ }
}
/*******************************************************************************
@@ -5305,38 +5043,36 @@
* Parameters:
*
******************************************************************************/
-void bta_dm_close_gatt_conn(UNUSED_ATTR tBTA_DM_MSG *p_data)
-{
- if (bta_dm_search_cb.conn_id != BTA_GATT_INVALID_CONN_ID)
- BTA_GATTC_Close(bta_dm_search_cb.conn_id);
+void bta_dm_close_gatt_conn(UNUSED_ATTR tBTA_DM_MSG* p_data) {
+ if (bta_dm_search_cb.conn_id != BTA_GATT_INVALID_CONN_ID)
+ BTA_GATTC_Close(bta_dm_search_cb.conn_id);
- memset(bta_dm_search_cb.pending_close_bda, 0, BD_ADDR_LEN);
- bta_dm_search_cb.conn_id = BTA_GATT_INVALID_CONN_ID;
+ memset(bta_dm_search_cb.pending_close_bda, 0, BD_ADDR_LEN);
+ bta_dm_search_cb.conn_id = BTA_GATT_INVALID_CONN_ID;
}
/*******************************************************************************
*
* Function btm_dm_start_gatt_discovery
*
- * Description This is GATT initiate the service search by open a GATT connection
+ * Description This is GATT initiate the service search by open a GATT
+ *connection
* first.
*
* Parameters:
*
******************************************************************************/
-void btm_dm_start_gatt_discovery (BD_ADDR bd_addr)
-{
- bta_dm_search_cb.gatt_disc_active = true;
+void btm_dm_start_gatt_discovery(BD_ADDR bd_addr) {
+ bta_dm_search_cb.gatt_disc_active = true;
- /* connection is already open */
- if (bdcmp(bta_dm_search_cb.pending_close_bda, bd_addr) == 0 &&
- bta_dm_search_cb.conn_id != BTA_GATT_INVALID_CONN_ID)
- {
- memset(bta_dm_search_cb.pending_close_bda, 0, BD_ADDR_LEN);
- alarm_cancel(bta_dm_search_cb.gatt_close_timer);
- btm_dm_start_disc_gatt_services(bta_dm_search_cb.conn_id);
- }
- else
- BTA_GATTC_Open(bta_dm_search_cb.client_if, bd_addr, true, BTA_GATT_TRANSPORT_LE);
+ /* connection is already open */
+ if (bdcmp(bta_dm_search_cb.pending_close_bda, bd_addr) == 0 &&
+ bta_dm_search_cb.conn_id != BTA_GATT_INVALID_CONN_ID) {
+ memset(bta_dm_search_cb.pending_close_bda, 0, BD_ADDR_LEN);
+ alarm_cancel(bta_dm_search_cb.gatt_close_timer);
+ btm_dm_start_disc_gatt_services(bta_dm_search_cb.conn_id);
+ } else
+ BTA_GATTC_Open(bta_dm_search_cb.client_if, bd_addr, true,
+ BTA_GATT_TRANSPORT_LE);
}
/*******************************************************************************
@@ -5348,14 +5084,13 @@
* Parameters:
*
******************************************************************************/
-static void bta_dm_cancel_gatt_discovery(BD_ADDR bd_addr)
-{
- if (bta_dm_search_cb.conn_id == BTA_GATT_INVALID_CONN_ID)
- {
- BTA_GATTC_CancelOpen(bta_dm_search_cb.client_if, bd_addr, true);
- }
+static void bta_dm_cancel_gatt_discovery(BD_ADDR bd_addr) {
+ if (bta_dm_search_cb.conn_id == BTA_GATT_INVALID_CONN_ID) {
+ BTA_GATTC_CancelOpen(bta_dm_search_cb.client_if, bd_addr, true);
+ }
- bta_dm_gatt_disc_complete(bta_dm_search_cb.conn_id, (tBTA_GATT_STATUS) BTA_GATT_ERROR);
+ bta_dm_gatt_disc_complete(bta_dm_search_cb.conn_id,
+ (tBTA_GATT_STATUS)BTA_GATT_ERROR);
}
/*******************************************************************************
@@ -5367,36 +5102,32 @@
* Parameters:
*
******************************************************************************/
-void bta_dm_proc_open_evt(tBTA_GATTC_OPEN *p_data)
-{
- uint8_t *p1;
- uint8_t *p2;
+void bta_dm_proc_open_evt(tBTA_GATTC_OPEN* p_data) {
+ uint8_t* p1;
+ uint8_t* p2;
- p1 = bta_dm_search_cb.peer_bdaddr;
- p2 = p_data->remote_bda;
+ p1 = bta_dm_search_cb.peer_bdaddr;
+ p2 = p_data->remote_bda;
- APPL_TRACE_DEBUG("DM Search state= %d search_cb.peer_dbaddr: [%08x%04x] connected_bda= [%08x%04x] ",
- bta_dm_search_cb.state,
- ((p1[0])<<24)+((p1[1])<<16)+((p1[2])<<8)+(p1[3]),
- ((p1[4])<<8)+ p1[5],
- ((p2[0])<<24)+((p2[1])<<16)+((p2[2])<<8)+(p2[3]),
- ((p2[4])<<8)+ p2[5]);
+ APPL_TRACE_DEBUG(
+ "DM Search state= %d search_cb.peer_dbaddr: [%08x%04x] connected_bda= "
+ "[%08x%04x] ",
+ bta_dm_search_cb.state,
+ ((p1[0]) << 24) + ((p1[1]) << 16) + ((p1[2]) << 8) + (p1[3]),
+ ((p1[4]) << 8) + p1[5],
+ ((p2[0]) << 24) + ((p2[1]) << 16) + ((p2[2]) << 8) + (p2[3]),
+ ((p2[4]) << 8) + p2[5]);
- APPL_TRACE_DEBUG("BTA_GATTC_OPEN_EVT conn_id = %d client_if=%d status = %d" ,
- p_data->conn_id,
- p_data->client_if,
- p_data->status);
+ APPL_TRACE_DEBUG("BTA_GATTC_OPEN_EVT conn_id = %d client_if=%d status = %d",
+ p_data->conn_id, p_data->client_if, p_data->status);
- bta_dm_search_cb.conn_id = p_data->conn_id;
+ bta_dm_search_cb.conn_id = p_data->conn_id;
- if (p_data->status == BTA_GATT_OK)
- {
- btm_dm_start_disc_gatt_services(p_data->conn_id);
- }
- else
- {
- bta_dm_gatt_disc_complete(BTA_GATT_INVALID_CONN_ID, p_data->status);
- }
+ if (p_data->status == BTA_GATT_OK) {
+ btm_dm_start_disc_gatt_services(p_data->conn_id);
+ } else {
+ bta_dm_gatt_disc_complete(BTA_GATT_INVALID_CONN_ID, p_data->status);
+ }
}
/*******************************************************************************
@@ -5408,47 +5139,48 @@
* Parameters:
*
******************************************************************************/
-static void bta_dm_gattc_callback(tBTA_GATTC_EVT event, tBTA_GATTC *p_data)
-{
- APPL_TRACE_DEBUG("bta_dm_gattc_callback event = %d", event);
+static void bta_dm_gattc_callback(tBTA_GATTC_EVT event, tBTA_GATTC* p_data) {
+ APPL_TRACE_DEBUG("bta_dm_gattc_callback event = %d", event);
- switch (event)
- {
- case BTA_GATTC_REG_EVT:
- APPL_TRACE_DEBUG("BTA_GATTC_REG_EVT client_if = %d", p_data->reg_oper.client_if);
- if (p_data->reg_oper.status == BTA_GATT_OK)
- bta_dm_search_cb.client_if = p_data->reg_oper.client_if;
- else
- bta_dm_search_cb.client_if = BTA_GATTS_INVALID_IF;
- break;
+ switch (event) {
+ case BTA_GATTC_REG_EVT:
+ APPL_TRACE_DEBUG("BTA_GATTC_REG_EVT client_if = %d",
+ p_data->reg_oper.client_if);
+ if (p_data->reg_oper.status == BTA_GATT_OK)
+ bta_dm_search_cb.client_if = p_data->reg_oper.client_if;
+ else
+ bta_dm_search_cb.client_if = BTA_GATTS_INVALID_IF;
+ break;
- case BTA_GATTC_OPEN_EVT:
- bta_dm_proc_open_evt(&p_data->open);
- break;
+ case BTA_GATTC_OPEN_EVT:
+ bta_dm_proc_open_evt(&p_data->open);
+ break;
- case BTA_GATTC_SEARCH_RES_EVT:
- bta_dm_gatt_disc_result(p_data->srvc_res.service_uuid);
- break;
+ case BTA_GATTC_SEARCH_RES_EVT:
+ bta_dm_gatt_disc_result(p_data->srvc_res.service_uuid);
+ break;
- case BTA_GATTC_SEARCH_CMPL_EVT:
- if ( bta_dm_search_cb.state != BTA_DM_SEARCH_IDLE)
- bta_dm_gatt_disc_complete(p_data->search_cmpl.conn_id, p_data->search_cmpl.status);
- break;
+ case BTA_GATTC_SEARCH_CMPL_EVT:
+ if (bta_dm_search_cb.state != BTA_DM_SEARCH_IDLE)
+ bta_dm_gatt_disc_complete(p_data->search_cmpl.conn_id,
+ p_data->search_cmpl.status);
+ break;
- case BTA_GATTC_CLOSE_EVT:
- APPL_TRACE_DEBUG("BTA_GATTC_CLOSE_EVT reason = %d", p_data->close.reason);
- /* in case of disconnect before search is completed */
- if ( (bta_dm_search_cb.state != BTA_DM_SEARCH_IDLE) &&
- (bta_dm_search_cb.state != BTA_DM_SEARCH_ACTIVE) &&
- !memcmp(p_data->close.remote_bda, bta_dm_search_cb.peer_bdaddr, BD_ADDR_LEN))
- {
- bta_dm_gatt_disc_complete((uint16_t)BTA_GATT_INVALID_CONN_ID, (tBTA_GATT_STATUS) BTA_GATT_ERROR);
- }
- break;
+ case BTA_GATTC_CLOSE_EVT:
+ APPL_TRACE_DEBUG("BTA_GATTC_CLOSE_EVT reason = %d", p_data->close.reason);
+ /* in case of disconnect before search is completed */
+ if ((bta_dm_search_cb.state != BTA_DM_SEARCH_IDLE) &&
+ (bta_dm_search_cb.state != BTA_DM_SEARCH_ACTIVE) &&
+ !memcmp(p_data->close.remote_bda, bta_dm_search_cb.peer_bdaddr,
+ BD_ADDR_LEN)) {
+ bta_dm_gatt_disc_complete((uint16_t)BTA_GATT_INVALID_CONN_ID,
+ (tBTA_GATT_STATUS)BTA_GATT_ERROR);
+ }
+ break;
- default:
- break;
- }
+ default:
+ break;
+ }
}
#endif /* BTA_GATT_INCLUDED */
@@ -5463,20 +5195,16 @@
* Parameters:
*
******************************************************************************/
-static void bta_dm_ctrl_features_rd_cmpl_cback(tBTM_STATUS result)
-{
- APPL_TRACE_DEBUG("%s status = %d ", __func__, result);
- if (result == BTM_SUCCESS)
- {
- if(bta_dm_cb.p_sec_cback)
- bta_dm_cb.p_sec_cback(BTA_DM_LE_FEATURES_READ, NULL);
- }
- else
- {
- APPL_TRACE_ERROR("%s Ctrl BLE feature read failed: status :%d",__func__, result);
- }
-
+static void bta_dm_ctrl_features_rd_cmpl_cback(tBTM_STATUS result) {
+ APPL_TRACE_DEBUG("%s status = %d ", __func__, result);
+ if (result == BTM_SUCCESS) {
+ if (bta_dm_cb.p_sec_cback)
+ bta_dm_cb.p_sec_cback(BTA_DM_LE_FEATURES_READ, NULL);
+ } else {
+ APPL_TRACE_ERROR("%s Ctrl BLE feature read failed: status :%d", __func__,
+ result);
+ }
}
#endif /* BLE_VND_INCLUDED */
-#endif /* BLE_INCLUDED */
+#endif /* BLE_INCLUDED */
diff --git a/bta/dm/bta_dm_api.cc b/bta/dm/bta_dm_api.cc
index efbfe81..c21647a 100644
--- a/bta/dm/bta_dm_api.cc
+++ b/bta/dm/bta_dm_api.cc
@@ -24,10 +24,10 @@
#include <string.h>
#include "bt_common.h"
-#include "bta_sys.h"
#include "bta_api.h"
#include "bta_closure_api.h"
#include "bta_dm_int.h"
+#include "bta_sys.h"
#include "bta_sys_int.h"
#include "btm_api.h"
#include "btm_int.h"
@@ -38,17 +38,10 @@
* Constants
****************************************************************************/
-static const tBTA_SYS_REG bta_dm_reg =
-{
- bta_dm_sm_execute,
- bta_dm_sm_disable
-};
+static const tBTA_SYS_REG bta_dm_reg = {bta_dm_sm_execute, bta_dm_sm_disable};
-static const tBTA_SYS_REG bta_dm_search_reg =
-{
- bta_dm_search_sm_execute,
- bta_dm_search_sm_disable
-};
+static const tBTA_SYS_REG bta_dm_search_reg = {bta_dm_search_sm_execute,
+ bta_dm_search_sm_disable};
/*******************************************************************************
*
@@ -61,26 +54,24 @@
* Returns tBTA_STATUS
*
******************************************************************************/
-tBTA_STATUS BTA_EnableBluetooth(tBTA_DM_SEC_CBACK *p_cback)
-{
- /* Bluetooth disabling is in progress */
- if (bta_dm_cb.disabling)
- return BTA_FAILURE;
+tBTA_STATUS BTA_EnableBluetooth(tBTA_DM_SEC_CBACK* p_cback) {
+ /* Bluetooth disabling is in progress */
+ if (bta_dm_cb.disabling) return BTA_FAILURE;
- bta_sys_register(BTA_ID_DM, &bta_dm_reg );
- bta_sys_register(BTA_ID_DM_SEARCH, &bta_dm_search_reg );
+ bta_sys_register(BTA_ID_DM, &bta_dm_reg);
+ bta_sys_register(BTA_ID_DM_SEARCH, &bta_dm_search_reg);
- /* if UUID list is not provided as static data */
- bta_sys_eir_register(bta_dm_eir_update_uuid);
+ /* if UUID list is not provided as static data */
+ bta_sys_eir_register(bta_dm_eir_update_uuid);
- tBTA_DM_API_ENABLE *p_msg =
- (tBTA_DM_API_ENABLE *)osi_malloc(sizeof(tBTA_DM_API_ENABLE));
- p_msg->hdr.event = BTA_DM_API_ENABLE_EVT;
- p_msg->p_sec_cback = p_cback;
+ tBTA_DM_API_ENABLE* p_msg =
+ (tBTA_DM_API_ENABLE*)osi_malloc(sizeof(tBTA_DM_API_ENABLE));
+ p_msg->hdr.event = BTA_DM_API_ENABLE_EVT;
+ p_msg->p_sec_cback = p_cback;
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
- return BTA_SUCCESS;
+ return BTA_SUCCESS;
}
/*******************************************************************************
@@ -93,15 +84,14 @@
* Returns void
*
******************************************************************************/
-tBTA_STATUS BTA_DisableBluetooth(void)
-{
- BT_HDR *p_msg = (BT_HDR *)osi_malloc(sizeof(BT_HDR));
+tBTA_STATUS BTA_DisableBluetooth(void) {
+ BT_HDR* p_msg = (BT_HDR*)osi_malloc(sizeof(BT_HDR));
- p_msg->event = BTA_DM_API_DISABLE_EVT;
+ p_msg->event = BTA_DM_API_DISABLE_EVT;
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
- return BTA_SUCCESS;
+ return BTA_SUCCESS;
}
/*******************************************************************************
@@ -114,16 +104,15 @@
* Returns tBTA_STATUS
*
******************************************************************************/
-tBTA_STATUS BTA_EnableTestMode(void)
-{
- BT_HDR *p_msg = (BT_HDR *)osi_malloc(sizeof(BT_HDR));
+tBTA_STATUS BTA_EnableTestMode(void) {
+ BT_HDR* p_msg = (BT_HDR*)osi_malloc(sizeof(BT_HDR));
- APPL_TRACE_API("%s", __func__);
+ APPL_TRACE_API("%s", __func__);
- p_msg->event = BTA_DM_API_ENABLE_TEST_MODE_EVT;
- bta_sys_sendmsg(p_msg);
+ p_msg->event = BTA_DM_API_ENABLE_TEST_MODE_EVT;
+ bta_sys_sendmsg(p_msg);
- return BTA_SUCCESS;
+ return BTA_SUCCESS;
}
/*******************************************************************************
@@ -136,14 +125,13 @@
* Returns None
*
******************************************************************************/
-void BTA_DisableTestMode(void)
-{
- BT_HDR *p_msg = (BT_HDR *)osi_malloc(sizeof(BT_HDR));
+void BTA_DisableTestMode(void) {
+ BT_HDR* p_msg = (BT_HDR*)osi_malloc(sizeof(BT_HDR));
- APPL_TRACE_API("%s", __func__);
+ APPL_TRACE_API("%s", __func__);
- p_msg->event = BTA_DM_API_DISABLE_TEST_MODE_EVT;
- bta_sys_sendmsg(p_msg);
+ p_msg->event = BTA_DM_API_DISABLE_TEST_MODE_EVT;
+ bta_sys_sendmsg(p_msg);
}
/*******************************************************************************
@@ -156,15 +144,14 @@
* Returns void
*
******************************************************************************/
-void BTA_DmSetDeviceName(char *p_name)
-{
- tBTA_DM_API_SET_NAME *p_msg =
- (tBTA_DM_API_SET_NAME *)osi_malloc(sizeof(tBTA_DM_API_SET_NAME));
+void BTA_DmSetDeviceName(char* p_name) {
+ tBTA_DM_API_SET_NAME* p_msg =
+ (tBTA_DM_API_SET_NAME*)osi_malloc(sizeof(tBTA_DM_API_SET_NAME));
- p_msg->hdr.event = BTA_DM_API_SET_NAME_EVT;
- strlcpy((char*)p_msg->name, p_name, BD_NAME_LEN);
+ p_msg->hdr.event = BTA_DM_API_SET_NAME_EVT;
+ strlcpy((char*)p_msg->name, p_name, BD_NAME_LEN);
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
}
/*******************************************************************************
@@ -172,31 +159,33 @@
* Function BTA_DmSetVisibility
*
* Description This function sets the Bluetooth connectable,
- * discoverable, pairable and conn paired only modes of local device
+ * discoverable, pairable and conn paired only modes of local
+ *device
*
*
* Returns void
*
******************************************************************************/
-void BTA_DmSetVisibility(tBTA_DM_DISC disc_mode, tBTA_DM_CONN conn_mode, uint8_t pairable_mode, uint8_t conn_filter )
-{
- tBTA_DM_API_SET_VISIBILITY *p_msg =
- (tBTA_DM_API_SET_VISIBILITY *)osi_malloc(sizeof(tBTA_DM_MSG));
+void BTA_DmSetVisibility(tBTA_DM_DISC disc_mode, tBTA_DM_CONN conn_mode,
+ uint8_t pairable_mode, uint8_t conn_filter) {
+ tBTA_DM_API_SET_VISIBILITY* p_msg =
+ (tBTA_DM_API_SET_VISIBILITY*)osi_malloc(sizeof(tBTA_DM_MSG));
- p_msg->hdr.event = BTA_DM_API_SET_VISIBILITY_EVT;
- p_msg->disc_mode = disc_mode;
- p_msg->conn_mode = conn_mode;
- p_msg->pair_mode = pairable_mode;
- p_msg->conn_paired_only = conn_filter;
+ p_msg->hdr.event = BTA_DM_API_SET_VISIBILITY_EVT;
+ p_msg->disc_mode = disc_mode;
+ p_msg->conn_mode = conn_mode;
+ p_msg->pair_mode = pairable_mode;
+ p_msg->conn_paired_only = conn_filter;
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
}
/*******************************************************************************
*
* Function BTA_DmSearch
*
- * Description This function searches for peer Bluetooth devices. It performs
+ * Description This function searches for peer Bluetooth devices. It
+ *performs
* an inquiry and gets the remote name for devices. Service
* discovery is done if services is non zero
*
@@ -204,18 +193,18 @@
* Returns void
*
******************************************************************************/
-void BTA_DmSearch(tBTA_DM_INQ *p_dm_inq, tBTA_SERVICE_MASK services, tBTA_DM_SEARCH_CBACK *p_cback)
-{
- tBTA_DM_API_SEARCH *p_msg =
- (tBTA_DM_API_SEARCH *)osi_calloc(sizeof(tBTA_DM_API_SEARCH));
+void BTA_DmSearch(tBTA_DM_INQ* p_dm_inq, tBTA_SERVICE_MASK services,
+ tBTA_DM_SEARCH_CBACK* p_cback) {
+ tBTA_DM_API_SEARCH* p_msg =
+ (tBTA_DM_API_SEARCH*)osi_calloc(sizeof(tBTA_DM_API_SEARCH));
- p_msg->hdr.event = BTA_DM_API_SEARCH_EVT;
- memcpy(&p_msg->inq_params, p_dm_inq, sizeof(tBTA_DM_INQ));
- p_msg->services = services;
- p_msg->p_cback = p_cback;
- p_msg->rs_res = BTA_DM_RS_NONE;
+ p_msg->hdr.event = BTA_DM_API_SEARCH_EVT;
+ memcpy(&p_msg->inq_params, p_dm_inq, sizeof(tBTA_DM_INQ));
+ p_msg->services = services;
+ p_msg->p_cback = p_cback;
+ p_msg->rs_res = BTA_DM_RS_NONE;
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
}
/*******************************************************************************
@@ -228,12 +217,11 @@
* Returns void
*
******************************************************************************/
-void BTA_DmSearchCancel(void)
-{
- BT_HDR *p_msg = (BT_HDR *)osi_malloc(sizeof(BT_HDR));
+void BTA_DmSearchCancel(void) {
+ BT_HDR* p_msg = (BT_HDR*)osi_malloc(sizeof(BT_HDR));
- p_msg->event = BTA_DM_API_SEARCH_CANCEL_EVT;
- bta_sys_sendmsg(p_msg);
+ p_msg->event = BTA_DM_API_SEARCH_CANCEL_EVT;
+ bta_sys_sendmsg(p_msg);
}
/*******************************************************************************
@@ -248,18 +236,17 @@
*
******************************************************************************/
void BTA_DmDiscover(BD_ADDR bd_addr, tBTA_SERVICE_MASK services,
- tBTA_DM_SEARCH_CBACK *p_cback, bool sdp_search)
-{
- tBTA_DM_API_DISCOVER *p_msg =
- (tBTA_DM_API_DISCOVER *)osi_calloc(sizeof(tBTA_DM_API_DISCOVER));
+ tBTA_DM_SEARCH_CBACK* p_cback, bool sdp_search) {
+ tBTA_DM_API_DISCOVER* p_msg =
+ (tBTA_DM_API_DISCOVER*)osi_calloc(sizeof(tBTA_DM_API_DISCOVER));
- p_msg->hdr.event = BTA_DM_API_DISCOVER_EVT;
- bdcpy(p_msg->bd_addr, bd_addr);
- p_msg->services = services;
- p_msg->p_cback = p_cback;
- p_msg->sdp_search = sdp_search;
+ p_msg->hdr.event = BTA_DM_API_DISCOVER_EVT;
+ bdcpy(p_msg->bd_addr, bd_addr);
+ p_msg->services = services;
+ p_msg->p_cback = p_cback;
+ p_msg->sdp_search = sdp_search;
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
}
/*******************************************************************************
@@ -273,25 +260,24 @@
* Returns void
*
******************************************************************************/
-void BTA_DmDiscoverUUID(BD_ADDR bd_addr, tSDP_UUID *uuid,
- tBTA_DM_SEARCH_CBACK *p_cback, bool sdp_search)
-{
- tBTA_DM_API_DISCOVER *p_msg =
- (tBTA_DM_API_DISCOVER *)osi_malloc(sizeof(tBTA_DM_API_DISCOVER));
+void BTA_DmDiscoverUUID(BD_ADDR bd_addr, tSDP_UUID* uuid,
+ tBTA_DM_SEARCH_CBACK* p_cback, bool sdp_search) {
+ tBTA_DM_API_DISCOVER* p_msg =
+ (tBTA_DM_API_DISCOVER*)osi_malloc(sizeof(tBTA_DM_API_DISCOVER));
- p_msg->hdr.event = BTA_DM_API_DISCOVER_EVT;
- bdcpy(p_msg->bd_addr, bd_addr);
- p_msg->services = BTA_USER_SERVICE_MASK; //Not exposed at API level
- p_msg->p_cback = p_cback;
- p_msg->sdp_search = sdp_search;
+ p_msg->hdr.event = BTA_DM_API_DISCOVER_EVT;
+ bdcpy(p_msg->bd_addr, bd_addr);
+ p_msg->services = BTA_USER_SERVICE_MASK; // Not exposed at API level
+ p_msg->p_cback = p_cback;
+ p_msg->sdp_search = sdp_search;
#if (BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE)
- p_msg->num_uuid = 0;
- p_msg->p_uuid = NULL;
+ p_msg->num_uuid = 0;
+ p_msg->p_uuid = NULL;
#endif
- memcpy(&p_msg->uuid, uuid, sizeof(tSDP_UUID) );
+ memcpy(&p_msg->uuid, uuid, sizeof(tSDP_UUID));
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
}
/*******************************************************************************
@@ -305,16 +291,15 @@
* Returns void
*
******************************************************************************/
-void BTA_DmBond(BD_ADDR bd_addr)
-{
- tBTA_DM_API_BOND *p_msg =
- (tBTA_DM_API_BOND *)osi_malloc(sizeof(tBTA_DM_API_BOND));
+void BTA_DmBond(BD_ADDR bd_addr) {
+ tBTA_DM_API_BOND* p_msg =
+ (tBTA_DM_API_BOND*)osi_malloc(sizeof(tBTA_DM_API_BOND));
- p_msg->hdr.event = BTA_DM_API_BOND_EVT;
- bdcpy(p_msg->bd_addr, bd_addr);
- p_msg->transport = BTA_TRANSPORT_UNKNOWN;
+ p_msg->hdr.event = BTA_DM_API_BOND_EVT;
+ bdcpy(p_msg->bd_addr, bd_addr);
+ p_msg->transport = BTA_TRANSPORT_UNKNOWN;
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
}
/*******************************************************************************
@@ -328,16 +313,15 @@
* Returns void
*
******************************************************************************/
-void BTA_DmBondByTransport(BD_ADDR bd_addr, tBTA_TRANSPORT transport)
-{
- tBTA_DM_API_BOND *p_msg =
- (tBTA_DM_API_BOND *)osi_malloc(sizeof(tBTA_DM_API_BOND));
+void BTA_DmBondByTransport(BD_ADDR bd_addr, tBTA_TRANSPORT transport) {
+ tBTA_DM_API_BOND* p_msg =
+ (tBTA_DM_API_BOND*)osi_malloc(sizeof(tBTA_DM_API_BOND));
- p_msg->hdr.event = BTA_DM_API_BOND_EVT;
- bdcpy(p_msg->bd_addr, bd_addr);
- p_msg->transport = transport;
+ p_msg->hdr.event = BTA_DM_API_BOND_EVT;
+ bdcpy(p_msg->bd_addr, bd_addr);
+ p_msg->transport = transport;
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
}
/*******************************************************************************
@@ -351,15 +335,14 @@
* Returns void
*
******************************************************************************/
-void BTA_DmBondCancel(BD_ADDR bd_addr)
-{
- tBTA_DM_API_BOND_CANCEL *p_msg =
- (tBTA_DM_API_BOND_CANCEL *)osi_malloc(sizeof(tBTA_DM_API_BOND_CANCEL));
+void BTA_DmBondCancel(BD_ADDR bd_addr) {
+ tBTA_DM_API_BOND_CANCEL* p_msg =
+ (tBTA_DM_API_BOND_CANCEL*)osi_malloc(sizeof(tBTA_DM_API_BOND_CANCEL));
- p_msg->hdr.event = BTA_DM_API_BOND_CANCEL_EVT;
- bdcpy(p_msg->bd_addr, bd_addr);
+ p_msg->hdr.event = BTA_DM_API_BOND_CANCEL_EVT;
+ bdcpy(p_msg->bd_addr, bd_addr);
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
}
/*******************************************************************************
@@ -373,21 +356,22 @@
* Returns void
*
******************************************************************************/
-void BTA_DmPinReply(BD_ADDR bd_addr, bool accept, uint8_t pin_len, uint8_t *p_pin)
+void BTA_DmPinReply(BD_ADDR bd_addr, bool accept, uint8_t pin_len,
+ uint8_t* p_pin)
{
- tBTA_DM_API_PIN_REPLY *p_msg =
- (tBTA_DM_API_PIN_REPLY *)osi_malloc(sizeof(tBTA_DM_API_PIN_REPLY));
+ tBTA_DM_API_PIN_REPLY* p_msg =
+ (tBTA_DM_API_PIN_REPLY*)osi_malloc(sizeof(tBTA_DM_API_PIN_REPLY));
- p_msg->hdr.event = BTA_DM_API_PIN_REPLY_EVT;
- bdcpy(p_msg->bd_addr, bd_addr);
- p_msg->accept = accept;
- if (accept) {
- p_msg->pin_len = pin_len;
- memcpy(p_msg->p_pin, p_pin, pin_len);
- }
+ p_msg->hdr.event = BTA_DM_API_PIN_REPLY_EVT;
+ bdcpy(p_msg->bd_addr, bd_addr);
+ p_msg->accept = accept;
+ if (accept) {
+ p_msg->pin_len = pin_len;
+ memcpy(p_msg->p_pin, p_pin, pin_len);
+ }
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
}
/*******************************************************************************
@@ -403,13 +387,12 @@
* Returns void
*
******************************************************************************/
-void BTA_DmLocalOob(void)
-{
- tBTA_DM_API_LOC_OOB *p_msg =
- (tBTA_DM_API_LOC_OOB *)osi_malloc(sizeof(tBTA_DM_API_LOC_OOB));
+void BTA_DmLocalOob(void) {
+ tBTA_DM_API_LOC_OOB* p_msg =
+ (tBTA_DM_API_LOC_OOB*)osi_malloc(sizeof(tBTA_DM_API_LOC_OOB));
- p_msg->hdr.event = BTA_DM_API_LOC_OOB_EVT;
- bta_sys_sendmsg(p_msg);
+ p_msg->hdr.event = BTA_DM_API_LOC_OOB_EVT;
+ bta_sys_sendmsg(p_msg);
}
/*******************************************************************************
@@ -422,16 +405,15 @@
* Returns void
*
******************************************************************************/
-void BTA_DmConfirm(BD_ADDR bd_addr, bool accept)
-{
- tBTA_DM_API_CONFIRM *p_msg =
- (tBTA_DM_API_CONFIRM *)osi_malloc(sizeof(tBTA_DM_API_CONFIRM));
+void BTA_DmConfirm(BD_ADDR bd_addr, bool accept) {
+ tBTA_DM_API_CONFIRM* p_msg =
+ (tBTA_DM_API_CONFIRM*)osi_malloc(sizeof(tBTA_DM_API_CONFIRM));
- p_msg->hdr.event = BTA_DM_API_CONFIRM_EVT;
- bdcpy(p_msg->bd_addr, bd_addr);
- p_msg->accept = accept;
+ p_msg->hdr.event = BTA_DM_API_CONFIRM_EVT;
+ bdcpy(p_msg->bd_addr, bd_addr);
+ p_msg->accept = accept;
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
}
/*******************************************************************************
@@ -447,58 +429,57 @@
******************************************************************************/
void BTA_DmAddDevice(BD_ADDR bd_addr, DEV_CLASS dev_class, LINK_KEY link_key,
tBTA_SERVICE_MASK trusted_mask, bool is_trusted,
- uint8_t key_type, tBTA_IO_CAP io_cap, uint8_t pin_length)
-{
- tBTA_DM_API_ADD_DEVICE *p_msg =
- (tBTA_DM_API_ADD_DEVICE *)osi_calloc(sizeof(tBTA_DM_API_ADD_DEVICE));
+ uint8_t key_type, tBTA_IO_CAP io_cap, uint8_t pin_length) {
+ tBTA_DM_API_ADD_DEVICE* p_msg =
+ (tBTA_DM_API_ADD_DEVICE*)osi_calloc(sizeof(tBTA_DM_API_ADD_DEVICE));
- p_msg->hdr.event = BTA_DM_API_ADD_DEVICE_EVT;
- bdcpy(p_msg->bd_addr, bd_addr);
- p_msg->tm = trusted_mask;
- p_msg->is_trusted = is_trusted;
- p_msg->io_cap = io_cap;
+ p_msg->hdr.event = BTA_DM_API_ADD_DEVICE_EVT;
+ bdcpy(p_msg->bd_addr, bd_addr);
+ p_msg->tm = trusted_mask;
+ p_msg->is_trusted = is_trusted;
+ p_msg->io_cap = io_cap;
- if (link_key) {
- p_msg->link_key_known = true;
- p_msg->key_type = key_type;
- memcpy(p_msg->link_key, link_key, LINK_KEY_LEN);
- }
+ if (link_key) {
+ p_msg->link_key_known = true;
+ p_msg->key_type = key_type;
+ memcpy(p_msg->link_key, link_key, LINK_KEY_LEN);
+ }
- /* Load device class if specified */
- if (dev_class) {
- p_msg->dc_known = true;
- memcpy(p_msg->dc, dev_class, DEV_CLASS_LEN);
- }
+ /* Load device class if specified */
+ if (dev_class) {
+ p_msg->dc_known = true;
+ memcpy(p_msg->dc, dev_class, DEV_CLASS_LEN);
+ }
- memset(p_msg->bd_name, 0, BD_NAME_LEN + 1);
- memset(p_msg->features, 0, sizeof (p_msg->features));
- p_msg->pin_length = pin_length;
+ memset(p_msg->bd_name, 0, BD_NAME_LEN + 1);
+ memset(p_msg->features, 0, sizeof(p_msg->features));
+ p_msg->pin_length = pin_length;
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
}
/*******************************************************************************
*
* Function BTA_DmRemoveDevice
*
- * Description This function removes a device fromthe security database list of
+ * Description This function removes a device fromthe security database
+ *list of
* peer device. It manages unpairing even while connected.
*
*
* Returns void
*
******************************************************************************/
-tBTA_STATUS BTA_DmRemoveDevice(BD_ADDR bd_addr)
-{
- tBTA_DM_API_REMOVE_DEVICE *p_msg =
- (tBTA_DM_API_REMOVE_DEVICE *)osi_calloc(sizeof(tBTA_DM_API_REMOVE_DEVICE));
+tBTA_STATUS BTA_DmRemoveDevice(BD_ADDR bd_addr) {
+ tBTA_DM_API_REMOVE_DEVICE* p_msg =
+ (tBTA_DM_API_REMOVE_DEVICE*)osi_calloc(sizeof(tBTA_DM_API_REMOVE_DEVICE));
- p_msg->hdr.event = BTA_DM_API_REMOVE_DEVICE_EVT;
- bdcpy(p_msg->bd_addr, bd_addr);
+ p_msg->hdr.event = BTA_DM_API_REMOVE_DEVICE_EVT;
+ bdcpy(p_msg->bd_addr, bd_addr);
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
- return BTA_SUCCESS;
+ return BTA_SUCCESS;
}
/*******************************************************************************
@@ -513,39 +494,35 @@
* Returns None
*
******************************************************************************/
-extern const uint16_t bta_service_id_to_uuid_lkup_tbl [];
-void BTA_GetEirService( uint8_t *p_eir, tBTA_SERVICE_MASK *p_services )
-{
- uint8_t xx, yy;
- uint8_t num_uuid, max_num_uuid = 32;
- uint8_t uuid_list[32*LEN_UUID_16];
- uint16_t *p_uuid16 = (uint16_t *)uuid_list;
- tBTA_SERVICE_MASK mask;
+extern const uint16_t bta_service_id_to_uuid_lkup_tbl[];
+void BTA_GetEirService(uint8_t* p_eir, tBTA_SERVICE_MASK* p_services) {
+ uint8_t xx, yy;
+ uint8_t num_uuid, max_num_uuid = 32;
+ uint8_t uuid_list[32 * LEN_UUID_16];
+ uint16_t* p_uuid16 = (uint16_t*)uuid_list;
+ tBTA_SERVICE_MASK mask;
- BTM_GetEirUuidList( p_eir, LEN_UUID_16, &num_uuid, uuid_list, max_num_uuid);
- for( xx = 0; xx < num_uuid; xx++ )
- {
- mask = 1;
- for( yy = 0; yy < BTA_MAX_SERVICE_ID; yy++ )
- {
- if( *(p_uuid16 + xx) == bta_service_id_to_uuid_lkup_tbl[yy] )
- {
- *p_services |= mask;
- break;
- }
- mask <<= 1;
- }
-
- /* for HSP v1.2 only device */
- if (*(p_uuid16 + xx) == UUID_SERVCLASS_HEADSET_HS)
- *p_services |= BTA_HSP_SERVICE_MASK;
-
- if (*(p_uuid16 + xx) == UUID_SERVCLASS_HDP_SOURCE)
- *p_services |= BTA_HL_SERVICE_MASK;
-
- if (*(p_uuid16 + xx) == UUID_SERVCLASS_HDP_SINK)
- *p_services |= BTA_HL_SERVICE_MASK;
+ BTM_GetEirUuidList(p_eir, LEN_UUID_16, &num_uuid, uuid_list, max_num_uuid);
+ for (xx = 0; xx < num_uuid; xx++) {
+ mask = 1;
+ for (yy = 0; yy < BTA_MAX_SERVICE_ID; yy++) {
+ if (*(p_uuid16 + xx) == bta_service_id_to_uuid_lkup_tbl[yy]) {
+ *p_services |= mask;
+ break;
+ }
+ mask <<= 1;
}
+
+ /* for HSP v1.2 only device */
+ if (*(p_uuid16 + xx) == UUID_SERVCLASS_HEADSET_HS)
+ *p_services |= BTA_HSP_SERVICE_MASK;
+
+ if (*(p_uuid16 + xx) == UUID_SERVCLASS_HDP_SOURCE)
+ *p_services |= BTA_HL_SERVICE_MASK;
+
+ if (*(p_uuid16 + xx) == UUID_SERVCLASS_HDP_SINK)
+ *p_services |= BTA_HL_SERVICE_MASK;
+ }
}
/*******************************************************************************
@@ -557,13 +534,11 @@
* Returns 0 if the device is NOT connected.
*
******************************************************************************/
-uint16_t BTA_DmGetConnectionState(const BD_ADDR bd_addr )
-{
- tBTA_DM_PEER_DEVICE * p_dev = bta_dm_find_peer_device(bd_addr);
- return (p_dev && p_dev->conn_state == BTA_DM_CONNECTED);
+uint16_t BTA_DmGetConnectionState(const BD_ADDR bd_addr) {
+ tBTA_DM_PEER_DEVICE* p_dev = bta_dm_find_peer_device(bd_addr);
+ return (p_dev && p_dev->conn_state == BTA_DM_CONNECTED);
}
-
/*******************************************************************************
* Device Identification (DI) Server Functions
******************************************************************************/
@@ -576,50 +551,47 @@
* Returns BTA_SUCCESS if record set sucessfully, otherwise error code.
*
******************************************************************************/
-tBTA_STATUS BTA_DmSetLocalDiRecord( tBTA_DI_RECORD *p_device_info,
- uint32_t *p_handle )
-{
- tBTA_STATUS status = BTA_FAILURE;
+tBTA_STATUS BTA_DmSetLocalDiRecord(tBTA_DI_RECORD* p_device_info,
+ uint32_t* p_handle) {
+ tBTA_STATUS status = BTA_FAILURE;
- if(bta_dm_di_cb.di_num < BTA_DI_NUM_MAX)
- {
- if(SDP_SetLocalDiRecord((tSDP_DI_RECORD *)p_device_info, p_handle) == SDP_SUCCESS)
- {
- if(!p_device_info->primary_record)
- {
- bta_dm_di_cb.di_handle[bta_dm_di_cb.di_num] = *p_handle;
- bta_dm_di_cb.di_num ++;
- }
+ if (bta_dm_di_cb.di_num < BTA_DI_NUM_MAX) {
+ if (SDP_SetLocalDiRecord((tSDP_DI_RECORD*)p_device_info, p_handle) ==
+ SDP_SUCCESS) {
+ if (!p_device_info->primary_record) {
+ bta_dm_di_cb.di_handle[bta_dm_di_cb.di_num] = *p_handle;
+ bta_dm_di_cb.di_num++;
+ }
- bta_sys_add_uuid(UUID_SERVCLASS_PNP_INFORMATION);
- status = BTA_SUCCESS;
- }
+ bta_sys_add_uuid(UUID_SERVCLASS_PNP_INFORMATION);
+ status = BTA_SUCCESS;
}
+ }
- return status;
+ return status;
}
/*******************************************************************************
*
* Function bta_dmexecutecallback
*
- * Description This function will request BTA to execute a call back in the context of BTU task
+ * Description This function will request BTA to execute a call back in the
+ *context of BTU task
* This API was named in lower case because it is only intended
* for the internal customers(like BTIF).
*
* Returns void
*
******************************************************************************/
-void bta_dmexecutecallback (tBTA_DM_EXEC_CBACK* p_callback, void * p_param)
-{
- tBTA_DM_API_EXECUTE_CBACK *p_msg =
- (tBTA_DM_API_EXECUTE_CBACK *)osi_malloc(sizeof(tBTA_DM_MSG));
+void bta_dmexecutecallback(tBTA_DM_EXEC_CBACK* p_callback, void* p_param) {
+ tBTA_DM_API_EXECUTE_CBACK* p_msg =
+ (tBTA_DM_API_EXECUTE_CBACK*)osi_malloc(sizeof(tBTA_DM_MSG));
- p_msg->hdr.event = BTA_DM_API_EXECUTE_CBACK_EVT;
- p_msg->p_param= p_param;
- p_msg->p_exec_cback= p_callback;
+ p_msg->hdr.event = BTA_DM_API_EXECUTE_CBACK_EVT;
+ p_msg->p_param = p_param;
+ p_msg->p_exec_cback = p_callback;
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
}
/*******************************************************************************
@@ -638,19 +610,19 @@
* BTA_FAIL if operation failed.
*
******************************************************************************/
-void BTA_DmAddBleKey (BD_ADDR bd_addr, tBTA_LE_KEY_VALUE *p_le_key, tBTA_LE_KEY_TYPE key_type)
-{
+void BTA_DmAddBleKey(BD_ADDR bd_addr, tBTA_LE_KEY_VALUE* p_le_key,
+ tBTA_LE_KEY_TYPE key_type) {
#if (BLE_INCLUDED == TRUE)
- tBTA_DM_API_ADD_BLEKEY *p_msg =
- (tBTA_DM_API_ADD_BLEKEY *)osi_calloc(sizeof(tBTA_DM_API_ADD_BLEKEY));
+ tBTA_DM_API_ADD_BLEKEY* p_msg =
+ (tBTA_DM_API_ADD_BLEKEY*)osi_calloc(sizeof(tBTA_DM_API_ADD_BLEKEY));
- p_msg->hdr.event = BTA_DM_API_ADD_BLEKEY_EVT;
- p_msg->key_type = key_type;
- bdcpy(p_msg->bd_addr, bd_addr);
- memcpy(&p_msg->blekey, p_le_key, sizeof(tBTA_LE_KEY_VALUE));
+ p_msg->hdr.event = BTA_DM_API_ADD_BLEKEY_EVT;
+ p_msg->key_type = key_type;
+ bdcpy(p_msg->bd_addr, bd_addr);
+ memcpy(&p_msg->blekey, p_le_key, sizeof(tBTA_LE_KEY_VALUE));
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
#endif
}
@@ -669,18 +641,18 @@
* Returns void
*
******************************************************************************/
-void BTA_DmAddBleDevice(BD_ADDR bd_addr, tBLE_ADDR_TYPE addr_type, tBT_DEVICE_TYPE dev_type)
-{
+void BTA_DmAddBleDevice(BD_ADDR bd_addr, tBLE_ADDR_TYPE addr_type,
+ tBT_DEVICE_TYPE dev_type) {
#if (BLE_INCLUDED == TRUE)
- tBTA_DM_API_ADD_BLE_DEVICE *p_msg =
- (tBTA_DM_API_ADD_BLE_DEVICE *)osi_calloc(sizeof(tBTA_DM_API_ADD_BLE_DEVICE));
+ tBTA_DM_API_ADD_BLE_DEVICE* p_msg = (tBTA_DM_API_ADD_BLE_DEVICE*)osi_calloc(
+ sizeof(tBTA_DM_API_ADD_BLE_DEVICE));
- p_msg->hdr.event = BTA_DM_API_ADD_BLEDEVICE_EVT;
- bdcpy(p_msg->bd_addr, bd_addr);
- p_msg->addr_type = addr_type;
- p_msg->dev_type = dev_type;
+ p_msg->hdr.event = BTA_DM_API_ADD_BLEDEVICE_EVT;
+ bdcpy(p_msg->bd_addr, bd_addr);
+ p_msg->addr_type = addr_type;
+ p_msg->dev_type = dev_type;
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
#endif
}
@@ -698,20 +670,18 @@
* Returns void
*
******************************************************************************/
-void BTA_DmBlePasskeyReply(BD_ADDR bd_addr, bool accept, uint32_t passkey)
-{
+void BTA_DmBlePasskeyReply(BD_ADDR bd_addr, bool accept, uint32_t passkey) {
#if (BLE_INCLUDED == TRUE)
- tBTA_DM_API_PASSKEY_REPLY *p_msg =
- (tBTA_DM_API_PASSKEY_REPLY *)osi_calloc(sizeof(tBTA_DM_API_PASSKEY_REPLY));
+ tBTA_DM_API_PASSKEY_REPLY* p_msg =
+ (tBTA_DM_API_PASSKEY_REPLY*)osi_calloc(sizeof(tBTA_DM_API_PASSKEY_REPLY));
- p_msg->hdr.event = BTA_DM_API_BLE_PASSKEY_REPLY_EVT;
- bdcpy(p_msg->bd_addr, bd_addr);
- p_msg->accept = accept;
+ p_msg->hdr.event = BTA_DM_API_BLE_PASSKEY_REPLY_EVT;
+ bdcpy(p_msg->bd_addr, bd_addr);
+ p_msg->accept = accept;
- if (accept)
- p_msg->passkey = passkey;
+ if (accept) p_msg->passkey = passkey;
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
#endif
}
@@ -722,22 +692,22 @@
* Description Send BLE SMP SC user confirmation reply.
*
* Parameters: bd_addr - BD address of the peer
- * accept - numbers to compare are the same or different.
+ * accept - numbers to compare are the same or
+ *different.
*
* Returns void
*
******************************************************************************/
-void BTA_DmBleConfirmReply(BD_ADDR bd_addr, bool accept)
-{
+void BTA_DmBleConfirmReply(BD_ADDR bd_addr, bool accept) {
#if (BLE_INCLUDED == TRUE)
- tBTA_DM_API_CONFIRM *p_msg =
- (tBTA_DM_API_CONFIRM *)osi_calloc(sizeof(tBTA_DM_API_CONFIRM));
+ tBTA_DM_API_CONFIRM* p_msg =
+ (tBTA_DM_API_CONFIRM*)osi_calloc(sizeof(tBTA_DM_API_CONFIRM));
- p_msg->hdr.event = BTA_DM_API_BLE_CONFIRM_REPLY_EVT;
- bdcpy(p_msg->bd_addr, bd_addr);
- p_msg->accept = accept;
+ p_msg->hdr.event = BTA_DM_API_BLE_CONFIRM_REPLY_EVT;
+ bdcpy(p_msg->bd_addr, bd_addr);
+ p_msg->accept = accept;
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
#endif
}
@@ -753,17 +723,16 @@
* Returns void
*
******************************************************************************/
-void BTA_DmBleSecurityGrant(BD_ADDR bd_addr, tBTA_DM_BLE_SEC_GRANT res)
-{
+void BTA_DmBleSecurityGrant(BD_ADDR bd_addr, tBTA_DM_BLE_SEC_GRANT res) {
#if (BLE_INCLUDED == TRUE)
- tBTA_DM_API_BLE_SEC_GRANT *p_msg =
- (tBTA_DM_API_BLE_SEC_GRANT *)osi_calloc(sizeof(tBTA_DM_API_BLE_SEC_GRANT));
+ tBTA_DM_API_BLE_SEC_GRANT* p_msg =
+ (tBTA_DM_API_BLE_SEC_GRANT*)osi_calloc(sizeof(tBTA_DM_API_BLE_SEC_GRANT));
- p_msg->hdr.event = BTA_DM_API_BLE_SEC_GRANT_EVT;
- bdcpy(p_msg->bd_addr, bd_addr);
- p_msg->res = res;
+ p_msg->hdr.event = BTA_DM_API_BLE_SEC_GRANT_EVT;
+ bdcpy(p_msg->bd_addr, bd_addr);
+ p_msg->res = res;
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
#endif
}
@@ -786,22 +755,21 @@
* Returns void
*
******************************************************************************/
-void BTA_DmSetBlePrefConnParams(const BD_ADDR bd_addr,
- uint16_t min_conn_int, uint16_t max_conn_int,
- uint16_t slave_latency, uint16_t supervision_tout )
-{
+void BTA_DmSetBlePrefConnParams(const BD_ADDR bd_addr, uint16_t min_conn_int,
+ uint16_t max_conn_int, uint16_t slave_latency,
+ uint16_t supervision_tout) {
#if (BLE_INCLUDED == TRUE)
- tBTA_DM_API_BLE_CONN_PARAMS *p_msg =
- (tBTA_DM_API_BLE_CONN_PARAMS *)osi_calloc(sizeof(tBTA_DM_API_BLE_CONN_PARAMS));
+ tBTA_DM_API_BLE_CONN_PARAMS* p_msg = (tBTA_DM_API_BLE_CONN_PARAMS*)osi_calloc(
+ sizeof(tBTA_DM_API_BLE_CONN_PARAMS));
- p_msg->hdr.event = BTA_DM_API_BLE_CONN_PARAM_EVT;
- memcpy(p_msg->peer_bda, bd_addr, BD_ADDR_LEN);
- p_msg->conn_int_max = max_conn_int;
- p_msg->conn_int_min = min_conn_int;
- p_msg->slave_latency = slave_latency;
- p_msg->supervision_tout = supervision_tout;
+ p_msg->hdr.event = BTA_DM_API_BLE_CONN_PARAM_EVT;
+ memcpy(p_msg->peer_bda, bd_addr, BD_ADDR_LEN);
+ p_msg->conn_int_max = max_conn_int;
+ p_msg->conn_int_min = min_conn_int;
+ p_msg->slave_latency = slave_latency;
+ p_msg->supervision_tout = supervision_tout;
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
#endif
}
@@ -818,17 +786,16 @@
* Returns void
*
******************************************************************************/
-void BTA_DmSetBleConnScanParams(uint32_t scan_interval, uint32_t scan_window)
-{
+void BTA_DmSetBleConnScanParams(uint32_t scan_interval, uint32_t scan_window) {
#if (BLE_INCLUDED == TRUE)
- tBTA_DM_API_BLE_SCAN_PARAMS *p_msg =
- (tBTA_DM_API_BLE_SCAN_PARAMS *)osi_calloc(sizeof(tBTA_DM_API_BLE_SCAN_PARAMS));
+ tBTA_DM_API_BLE_SCAN_PARAMS* p_msg = (tBTA_DM_API_BLE_SCAN_PARAMS*)osi_calloc(
+ sizeof(tBTA_DM_API_BLE_SCAN_PARAMS));
- p_msg->hdr.event = BTA_DM_API_BLE_CONN_SCAN_PARAM_EVT;
- p_msg->scan_int = scan_interval;
- p_msg->scan_window = scan_window;
+ p_msg->hdr.event = BTA_DM_API_BLE_CONN_SCAN_PARAM_EVT;
+ p_msg->scan_int = scan_interval;
+ p_msg->scan_window = scan_window;
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
#endif // BLE_INCLUDED == true
}
@@ -842,28 +809,29 @@
* scan_interval - scan interval
* scan_window - scan window
* scan_mode - scan mode
- * scan_param_setup_status_cback - Set scan param status callback
+ * scan_param_setup_status_cback - Set scan param status
+ *callback
*
* Returns void
*
******************************************************************************/
#if (BLE_INCLUDED == TRUE)
-void BTA_DmSetBleScanParams(tGATT_IF client_if, uint32_t scan_interval,
- uint32_t scan_window, tBLE_SCAN_MODE scan_mode,
- tBLE_SCAN_PARAM_SETUP_CBACK scan_param_setup_cback)
-{
- tBTA_DM_API_BLE_SCAN_PARAMS *p_msg =
- (tBTA_DM_API_BLE_SCAN_PARAMS *)osi_calloc(sizeof(tBTA_DM_API_BLE_SCAN_PARAMS));
+void BTA_DmSetBleScanParams(
+ tGATT_IF client_if, uint32_t scan_interval, uint32_t scan_window,
+ tBLE_SCAN_MODE scan_mode,
+ tBLE_SCAN_PARAM_SETUP_CBACK scan_param_setup_cback) {
+ tBTA_DM_API_BLE_SCAN_PARAMS* p_msg = (tBTA_DM_API_BLE_SCAN_PARAMS*)osi_calloc(
+ sizeof(tBTA_DM_API_BLE_SCAN_PARAMS));
- p_msg->hdr.event = BTA_DM_API_BLE_SCAN_PARAM_EVT;
- p_msg->client_if = client_if;
- p_msg->scan_int = scan_interval;
- p_msg->scan_window = scan_window;
- p_msg->scan_mode = scan_mode;
- p_msg->scan_param_setup_cback = scan_param_setup_cback;
+ p_msg->hdr.event = BTA_DM_API_BLE_SCAN_PARAM_EVT;
+ p_msg->client_if = client_if;
+ p_msg->scan_int = scan_interval;
+ p_msg->scan_window = scan_window;
+ p_msg->scan_mode = scan_mode;
+ p_msg->scan_param_setup_cback = scan_param_setup_cback;
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
}
#endif // BLE_INCLUDED == true
@@ -871,8 +839,10 @@
*
* Function BTA_DmSetBleAdvParams
*
- * Description This function sets the advertising parameters BLE functionality.
- * It is to be called when device act in peripheral or broadcaster
+ * Description This function sets the advertising parameters BLE
+ *functionality.
+ * It is to be called when device act in peripheral or
+ *broadcaster
* role.
*
*
@@ -880,18 +850,18 @@
*
******************************************************************************/
void BTA_DmSetBleAdvParams(uint16_t adv_int_min, uint16_t adv_int_max,
- tBLE_BD_ADDR *p_dir_bda)
-{
+ tBLE_BD_ADDR* p_dir_bda) {
#if (BLE_INCLUDED == TRUE)
- if (p_dir_bda != NULL) {
- tBLE_BD_ADDR *bda = new tBLE_BD_ADDR;
- memcpy(bda, p_dir_bda, sizeof(tBLE_BD_ADDR));
- do_in_bta_thread(FROM_HERE,
- base::Bind(&bta_dm_ble_set_adv_params, adv_int_min, adv_int_max, base::Owned(bda)));
- }
-
+ if (p_dir_bda != NULL) {
+ tBLE_BD_ADDR* bda = new tBLE_BD_ADDR;
+ memcpy(bda, p_dir_bda, sizeof(tBLE_BD_ADDR));
do_in_bta_thread(FROM_HERE,
- base::Bind(&bta_dm_ble_set_adv_params, adv_int_min, adv_int_max, nullptr));
+ base::Bind(&bta_dm_ble_set_adv_params, adv_int_min,
+ adv_int_max, base::Owned(bda)));
+ }
+
+ do_in_bta_thread(FROM_HERE, base::Bind(&bta_dm_ble_set_adv_params,
+ adv_int_min, adv_int_max, nullptr));
#endif
}
@@ -907,9 +877,12 @@
*
* Description This function is called to override the BTA scan response.
*
- * Parameters batch_scan_full_max -Max storage space (in %) allocated to full scanning
- * batch_scan_trunc_max -Max storage space (in %) allocated to truncated scanning
- * batch_scan_notify_threshold -Setup notification level based on total space
+ * Parameters batch_scan_full_max -Max storage space (in %) allocated to
+ *full scanning
+ * batch_scan_trunc_max -Max storage space (in %) allocated to
+ *truncated scanning
+ * batch_scan_notify_threshold -Setup notification level based
+ *on total space
* p_setup_cback - Setup callback pointer
* p_thres_cback - Threshold callback pointer
* p_rep_cback - Reports callback pointer
@@ -918,29 +891,28 @@
* Returns None
*
******************************************************************************/
-extern void BTA_DmBleSetStorageParams(uint8_t batch_scan_full_max,
- uint8_t batch_scan_trunc_max,
- uint8_t batch_scan_notify_threshold,
- tBTA_BLE_SCAN_SETUP_CBACK *p_setup_cback,
- tBTA_BLE_SCAN_THRESHOLD_CBACK *p_thres_cback,
- tBTA_BLE_SCAN_REP_CBACK* p_rep_cback,
- tBTA_DM_BLE_REF_VALUE ref_value)
-{
- tBTA_DM_API_SET_STORAGE_CONFIG *p_msg =
- (tBTA_DM_API_SET_STORAGE_CONFIG *)osi_malloc(sizeof(tBTA_DM_API_SET_STORAGE_CONFIG));
+extern void BTA_DmBleSetStorageParams(
+ uint8_t batch_scan_full_max, uint8_t batch_scan_trunc_max,
+ uint8_t batch_scan_notify_threshold,
+ tBTA_BLE_SCAN_SETUP_CBACK* p_setup_cback,
+ tBTA_BLE_SCAN_THRESHOLD_CBACK* p_thres_cback,
+ tBTA_BLE_SCAN_REP_CBACK* p_rep_cback, tBTA_DM_BLE_REF_VALUE ref_value) {
+ tBTA_DM_API_SET_STORAGE_CONFIG* p_msg =
+ (tBTA_DM_API_SET_STORAGE_CONFIG*)osi_malloc(
+ sizeof(tBTA_DM_API_SET_STORAGE_CONFIG));
- bta_dm_cb.p_setup_cback = p_setup_cback;
+ bta_dm_cb.p_setup_cback = p_setup_cback;
- p_msg->hdr.event = BTA_DM_API_BLE_SETUP_STORAGE_EVT;
- p_msg->p_setup_cback=bta_ble_scan_setup_cb;
- p_msg->p_thres_cback=p_thres_cback;
- p_msg->p_read_rep_cback=p_rep_cback;
- p_msg->ref_value = ref_value;
- p_msg->batch_scan_full_max = batch_scan_full_max;
- p_msg->batch_scan_trunc_max = batch_scan_trunc_max;
- p_msg->batch_scan_notify_threshold = batch_scan_notify_threshold;
+ p_msg->hdr.event = BTA_DM_API_BLE_SETUP_STORAGE_EVT;
+ p_msg->p_setup_cback = bta_ble_scan_setup_cb;
+ p_msg->p_thres_cback = p_thres_cback;
+ p_msg->p_read_rep_cback = p_rep_cback;
+ p_msg->ref_value = ref_value;
+ p_msg->batch_scan_full_max = batch_scan_full_max;
+ p_msg->batch_scan_trunc_max = batch_scan_trunc_max;
+ p_msg->batch_scan_notify_threshold = batch_scan_notify_threshold;
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
}
/*******************************************************************************
@@ -960,23 +932,23 @@
*
******************************************************************************/
extern void BTA_DmBleEnableBatchScan(tBTA_BLE_BATCH_SCAN_MODE scan_mode,
- uint32_t scan_interval, uint32_t scan_window,
- tBTA_BLE_DISCARD_RULE discard_rule,
- tBLE_ADDR_TYPE addr_type,
- tBTA_DM_BLE_REF_VALUE ref_value)
-{
- tBTA_DM_API_ENABLE_SCAN *p_msg =
- (tBTA_DM_API_ENABLE_SCAN *)osi_malloc(sizeof(tBTA_DM_API_ENABLE_SCAN));
+ uint32_t scan_interval,
+ uint32_t scan_window,
+ tBTA_BLE_DISCARD_RULE discard_rule,
+ tBLE_ADDR_TYPE addr_type,
+ tBTA_DM_BLE_REF_VALUE ref_value) {
+ tBTA_DM_API_ENABLE_SCAN* p_msg =
+ (tBTA_DM_API_ENABLE_SCAN*)osi_malloc(sizeof(tBTA_DM_API_ENABLE_SCAN));
- p_msg->hdr.event = BTA_DM_API_BLE_ENABLE_BATCH_SCAN_EVT;
- p_msg->scan_mode = scan_mode;
- p_msg->scan_int = scan_interval;
- p_msg->scan_window = scan_window;
- p_msg->discard_rule = discard_rule;
- p_msg->addr_type = addr_type;
- p_msg->ref_value = ref_value;
+ p_msg->hdr.event = BTA_DM_API_BLE_ENABLE_BATCH_SCAN_EVT;
+ p_msg->scan_mode = scan_mode;
+ p_msg->scan_int = scan_interval;
+ p_msg->scan_window = scan_window;
+ p_msg->discard_rule = discard_rule;
+ p_msg->addr_type = addr_type;
+ p_msg->ref_value = ref_value;
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
}
/*******************************************************************************
@@ -990,15 +962,14 @@
* Returns None
*
******************************************************************************/
-extern void BTA_DmBleDisableBatchScan(tBTA_DM_BLE_REF_VALUE ref_value)
-{
- tBTA_DM_API_DISABLE_SCAN *p_msg =
- (tBTA_DM_API_DISABLE_SCAN *)osi_malloc(sizeof(tBTA_DM_API_DISABLE_SCAN));
+extern void BTA_DmBleDisableBatchScan(tBTA_DM_BLE_REF_VALUE ref_value) {
+ tBTA_DM_API_DISABLE_SCAN* p_msg =
+ (tBTA_DM_API_DISABLE_SCAN*)osi_malloc(sizeof(tBTA_DM_API_DISABLE_SCAN));
- p_msg->hdr.event = BTA_DM_API_BLE_DISABLE_BATCH_SCAN_EVT;
- p_msg->ref_value = ref_value;
+ p_msg->hdr.event = BTA_DM_API_BLE_DISABLE_BATCH_SCAN_EVT;
+ p_msg->ref_value = ref_value;
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
}
/*******************************************************************************
@@ -1014,16 +985,16 @@
*
******************************************************************************/
extern void BTA_DmBleReadScanReports(tBTA_BLE_BATCH_SCAN_MODE scan_type,
- tBTA_DM_BLE_REF_VALUE ref_value)
-{
- tBTA_DM_API_READ_SCAN_REPORTS *p_msg =
- (tBTA_DM_API_READ_SCAN_REPORTS *)osi_malloc(sizeof(tBTA_DM_API_READ_SCAN_REPORTS));
+ tBTA_DM_BLE_REF_VALUE ref_value) {
+ tBTA_DM_API_READ_SCAN_REPORTS* p_msg =
+ (tBTA_DM_API_READ_SCAN_REPORTS*)osi_malloc(
+ sizeof(tBTA_DM_API_READ_SCAN_REPORTS));
- p_msg->hdr.event = BTA_DM_API_BLE_READ_SCAN_REPORTS_EVT;
- p_msg->scan_type = scan_type;
- p_msg->ref_value = ref_value;
+ p_msg->hdr.event = BTA_DM_API_BLE_READ_SCAN_REPORTS_EVT;
+ p_msg->scan_type = scan_type;
+ p_msg->ref_value = ref_value;
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
}
/*******************************************************************************
@@ -1038,17 +1009,18 @@
* Returns None
*
******************************************************************************/
-extern void BTA_DmBleTrackAdvertiser(tBTA_DM_BLE_REF_VALUE ref_value,
- tBTA_BLE_TRACK_ADV_CBACK *p_track_adv_cback)
-{
- tBTA_DM_API_TRACK_ADVERTISER *p_msg =
- (tBTA_DM_API_TRACK_ADVERTISER *)osi_malloc(sizeof(tBTA_DM_API_TRACK_ADVERTISER));
+extern void BTA_DmBleTrackAdvertiser(
+ tBTA_DM_BLE_REF_VALUE ref_value,
+ tBTA_BLE_TRACK_ADV_CBACK* p_track_adv_cback) {
+ tBTA_DM_API_TRACK_ADVERTISER* p_msg =
+ (tBTA_DM_API_TRACK_ADVERTISER*)osi_malloc(
+ sizeof(tBTA_DM_API_TRACK_ADVERTISER));
- p_msg->hdr.event = BTA_DM_API_BLE_TRACK_ADVERTISER_EVT;
- p_msg->p_track_adv_cback = p_track_adv_cback;
- p_msg->ref_value = ref_value;
+ p_msg->hdr.event = BTA_DM_API_BLE_TRACK_ADVERTISER_EVT;
+ p_msg->p_track_adv_cback = p_track_adv_cback;
+ p_msg->ref_value = ref_value;
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
}
#endif
@@ -1064,24 +1036,27 @@
* Description This function is called to set BLE connectable mode for a
* peripheral device.
*
- * Parameters bg_conn_type: it can be auto connection, or selective connection.
- * p_select_cback: callback function when selective connection procedure
+ * Parameters bg_conn_type: it can be auto connection, or selective
+ *connection.
+ * p_select_cback: callback function when selective connection
+ *procedure
* is being used.
*
* Returns void
*
******************************************************************************/
-void BTA_DmBleSetBgConnType(tBTA_DM_BLE_CONN_TYPE bg_conn_type, tBTA_DM_BLE_SEL_CBACK *p_select_cback)
-{
+void BTA_DmBleSetBgConnType(tBTA_DM_BLE_CONN_TYPE bg_conn_type,
+ tBTA_DM_BLE_SEL_CBACK* p_select_cback) {
#if (BLE_INCLUDED == TRUE)
- tBTA_DM_API_BLE_SET_BG_CONN_TYPE *p_msg =
- (tBTA_DM_API_BLE_SET_BG_CONN_TYPE *)osi_calloc(sizeof(tBTA_DM_API_BLE_SET_BG_CONN_TYPE));
+ tBTA_DM_API_BLE_SET_BG_CONN_TYPE* p_msg =
+ (tBTA_DM_API_BLE_SET_BG_CONN_TYPE*)osi_calloc(
+ sizeof(tBTA_DM_API_BLE_SET_BG_CONN_TYPE));
- p_msg->hdr.event = BTA_DM_API_BLE_SET_BG_CONN_TYPE;
- p_msg->bg_conn_type = bg_conn_type;
- p_msg->p_select_cback = p_select_cback;
+ p_msg->hdr.event = BTA_DM_API_BLE_SET_BG_CONN_TYPE;
+ p_msg->bg_conn_type = bg_conn_type;
+ p_msg->p_select_cback = p_select_cback;
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
#endif
}
@@ -1095,34 +1070,35 @@
*
******************************************************************************/
#if (BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE)
-static void bta_dm_discover_send_msg(BD_ADDR bd_addr, tBTA_SERVICE_MASK_EXT *p_services,
- tBTA_DM_SEARCH_CBACK *p_cback, bool sdp_search,
- tBTA_TRANSPORT transport)
-{
- const size_t len = p_services ?
- (sizeof(tBTA_DM_API_DISCOVER) + sizeof(tBT_UUID) * p_services->num_uuid)
- : sizeof(tBTA_DM_API_DISCOVER);
- tBTA_DM_API_DISCOVER *p_msg = (tBTA_DM_API_DISCOVER *)osi_calloc(len);
+static void bta_dm_discover_send_msg(BD_ADDR bd_addr,
+ tBTA_SERVICE_MASK_EXT* p_services,
+ tBTA_DM_SEARCH_CBACK* p_cback,
+ bool sdp_search,
+ tBTA_TRANSPORT transport) {
+ const size_t len = p_services ? (sizeof(tBTA_DM_API_DISCOVER) +
+ sizeof(tBT_UUID) * p_services->num_uuid)
+ : sizeof(tBTA_DM_API_DISCOVER);
+ tBTA_DM_API_DISCOVER* p_msg = (tBTA_DM_API_DISCOVER*)osi_calloc(len);
- p_msg->hdr.event = BTA_DM_API_DISCOVER_EVT;
- bdcpy(p_msg->bd_addr, bd_addr);
- p_msg->p_cback = p_cback;
- p_msg->sdp_search = sdp_search;
- p_msg->transport = transport;
+ p_msg->hdr.event = BTA_DM_API_DISCOVER_EVT;
+ bdcpy(p_msg->bd_addr, bd_addr);
+ p_msg->p_cback = p_cback;
+ p_msg->sdp_search = sdp_search;
+ p_msg->transport = transport;
- if (p_services != NULL) {
+ if (p_services != NULL) {
#if (BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE)
- p_msg->services = p_services->srvc_mask;
- p_msg->num_uuid = p_services->num_uuid;
- if (p_services->num_uuid != 0) {
- p_msg->p_uuid = (tBT_UUID *)(p_msg + 1);
- memcpy(p_msg->p_uuid, p_services->p_uuid,
- sizeof(tBT_UUID) * p_services->num_uuid);
- }
-#endif
+ p_msg->services = p_services->srvc_mask;
+ p_msg->num_uuid = p_services->num_uuid;
+ if (p_services->num_uuid != 0) {
+ p_msg->p_uuid = (tBT_UUID*)(p_msg + 1);
+ memcpy(p_msg->p_uuid, p_services->p_uuid,
+ sizeof(tBT_UUID) * p_services->num_uuid);
}
+#endif
+ }
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
}
#endif
@@ -1142,16 +1118,15 @@
* Returns void
*
******************************************************************************/
-void BTA_DmDiscoverByTransport(BD_ADDR bd_addr, tBTA_SERVICE_MASK_EXT *p_services,
- tBTA_DM_SEARCH_CBACK *p_cback, bool sdp_search,
- tBTA_TRANSPORT transport)
-{
+void BTA_DmDiscoverByTransport(BD_ADDR bd_addr,
+ tBTA_SERVICE_MASK_EXT* p_services,
+ tBTA_DM_SEARCH_CBACK* p_cback, bool sdp_search,
+ tBTA_TRANSPORT transport) {
#if (BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE)
- bta_dm_discover_send_msg(bd_addr, p_services, p_cback, sdp_search, transport);
+ bta_dm_discover_send_msg(bd_addr, p_services, p_cback, sdp_search, transport);
#endif
}
-
/*******************************************************************************
*
* Function BTA_DmDiscoverExt
@@ -1167,26 +1142,28 @@
* Returns void
*
******************************************************************************/
-void BTA_DmDiscoverExt(BD_ADDR bd_addr, tBTA_SERVICE_MASK_EXT *p_services,
- tBTA_DM_SEARCH_CBACK *p_cback, bool sdp_search)
-{
+void BTA_DmDiscoverExt(BD_ADDR bd_addr, tBTA_SERVICE_MASK_EXT* p_services,
+ tBTA_DM_SEARCH_CBACK* p_cback, bool sdp_search) {
#if (BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE)
- bta_dm_discover_send_msg(bd_addr, p_services, p_cback, sdp_search, BTA_TRANSPORT_UNKNOWN);
+ bta_dm_discover_send_msg(bd_addr, p_services, p_cback, sdp_search,
+ BTA_TRANSPORT_UNKNOWN);
#endif
-
}
/*******************************************************************************
*
* Function BTA_DmSearchExt
*
- * Description This function searches for peer Bluetooth devices. It performs
+ * Description This function searches for peer Bluetooth devices. It
+ *performs
* an inquiry and gets the remote name for devices. Service
* discovery is done if services is non zero
*
* Parameters p_dm_inq: inquiry conditions
- * p_services: if service is not empty, service discovery will be done.
- * for all GATT based service condition, put num_uuid, and
+ * p_services: if service is not empty, service discovery will
+ *be done.
+ * for all GATT based service condition, put
+ *num_uuid, and
* p_uuid is the pointer to the list of UUID values.
* p_cback: callback functino when search is completed.
*
@@ -1196,49 +1173,50 @@
*
******************************************************************************/
#if (BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE)
-void BTA_DmSearchExt(tBTA_DM_INQ *p_dm_inq, tBTA_SERVICE_MASK_EXT *p_services, tBTA_DM_SEARCH_CBACK *p_cback)
-{
- const size_t len = p_services ?
- (sizeof(tBTA_DM_API_SEARCH) + sizeof(tBT_UUID) * p_services->num_uuid)
- : sizeof(tBTA_DM_API_SEARCH);
- tBTA_DM_API_SEARCH *p_msg = (tBTA_DM_API_SEARCH *)osi_calloc(len);
+void BTA_DmSearchExt(tBTA_DM_INQ* p_dm_inq, tBTA_SERVICE_MASK_EXT* p_services,
+ tBTA_DM_SEARCH_CBACK* p_cback) {
+ const size_t len = p_services ? (sizeof(tBTA_DM_API_SEARCH) +
+ sizeof(tBT_UUID) * p_services->num_uuid)
+ : sizeof(tBTA_DM_API_SEARCH);
+ tBTA_DM_API_SEARCH* p_msg = (tBTA_DM_API_SEARCH*)osi_calloc(len);
- p_msg->hdr.event = BTA_DM_API_SEARCH_EVT;
- memcpy(&p_msg->inq_params, p_dm_inq, sizeof(tBTA_DM_INQ));
- p_msg->p_cback = p_cback;
- p_msg->rs_res = BTA_DM_RS_NONE;
+ p_msg->hdr.event = BTA_DM_API_SEARCH_EVT;
+ memcpy(&p_msg->inq_params, p_dm_inq, sizeof(tBTA_DM_INQ));
+ p_msg->p_cback = p_cback;
+ p_msg->rs_res = BTA_DM_RS_NONE;
- if (p_services != NULL) {
- p_msg->services = p_services->srvc_mask;
- p_msg->num_uuid = p_services->num_uuid;
+ if (p_services != NULL) {
+ p_msg->services = p_services->srvc_mask;
+ p_msg->num_uuid = p_services->num_uuid;
- if (p_services->num_uuid != 0) {
- p_msg->p_uuid = (tBT_UUID *)(p_msg + 1);
- memcpy(p_msg->p_uuid, p_services->p_uuid,
- sizeof(tBT_UUID) * p_services->num_uuid);
- } else {
- p_msg->p_uuid = NULL;
- }
+ if (p_services->num_uuid != 0) {
+ p_msg->p_uuid = (tBT_UUID*)(p_msg + 1);
+ memcpy(p_msg->p_uuid, p_services->p_uuid,
+ sizeof(tBT_UUID) * p_services->num_uuid);
+ } else {
+ p_msg->p_uuid = NULL;
}
+ }
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
}
#else
-void BTA_DmSearchExt(UNUSED_ATTR tBTA_DM_INQ *p_dm_inq,
- UNUSED_ATTR tBTA_SERVICE_MASK_EXT *p_services,
- UNUSED_ATTR tBTA_DM_SEARCH_CBACK *p_cback)
-{
-}
+void BTA_DmSearchExt(UNUSED_ATTR tBTA_DM_INQ* p_dm_inq,
+ UNUSED_ATTR tBTA_SERVICE_MASK_EXT* p_services,
+ UNUSED_ATTR tBTA_DM_SEARCH_CBACK* p_cback) {}
#endif
/*******************************************************************************
*
* Function BTA_DmBleUpdateConnectionParam
*
- * Description Update connection parameters, can only be used when connection is up.
+ * Description Update connection parameters, can only be used when
+ *connection is up.
*
* Parameters: bd_addr - BD address of the peer
- * min_int - minimum connection interval, [0x0004~ 0x4000]
- * max_int - maximum connection interval, [0x0004~ 0x4000]
+ * min_int - minimum connection interval, [0x0004~
+ *0x4000]
+ * max_int - maximum connection interval, [0x0004~
+ *0x4000]
* latency - slave latency [0 ~ 500]
* timeout - supervision timeout [0x000a ~ 0xc80]
*
@@ -1247,20 +1225,20 @@
******************************************************************************/
void BTA_DmBleUpdateConnectionParam(BD_ADDR bd_addr, uint16_t min_int,
uint16_t max_int, uint16_t latency,
- uint16_t timeout)
-{
+ uint16_t timeout) {
#if (BLE_INCLUDED == TRUE)
- tBTA_DM_API_UPDATE_CONN_PARAM *p_msg =
- (tBTA_DM_API_UPDATE_CONN_PARAM *)osi_calloc(sizeof(tBTA_DM_API_UPDATE_CONN_PARAM));
+ tBTA_DM_API_UPDATE_CONN_PARAM* p_msg =
+ (tBTA_DM_API_UPDATE_CONN_PARAM*)osi_calloc(
+ sizeof(tBTA_DM_API_UPDATE_CONN_PARAM));
- p_msg->hdr.event = BTA_DM_API_UPDATE_CONN_PARAM_EVT;
- bdcpy(p_msg->bd_addr, bd_addr);
- p_msg->min_int = min_int;
- p_msg->max_int = max_int;
- p_msg->latency = latency;
- p_msg->timeout = timeout;
+ p_msg->hdr.event = BTA_DM_API_UPDATE_CONN_PARAM_EVT;
+ bdcpy(p_msg->bd_addr, bd_addr);
+ p_msg->min_int = min_int;
+ p_msg->max_int = max_int;
+ p_msg->latency = latency;
+ p_msg->timeout = timeout;
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
#endif
}
@@ -1275,18 +1253,17 @@
* Returns void
*
******************************************************************************/
-void BTA_DmBleConfigLocalPrivacy(bool privacy_enable)
-{
+void BTA_DmBleConfigLocalPrivacy(bool privacy_enable) {
#if (BLE_INCLUDED == TRUE && BLE_PRIVACY_SPT == TRUE)
- tBTA_DM_API_LOCAL_PRIVACY *p_msg =
- (tBTA_DM_API_LOCAL_PRIVACY *)osi_calloc(sizeof(tBTA_DM_API_ENABLE_PRIVACY));
+ tBTA_DM_API_LOCAL_PRIVACY* p_msg = (tBTA_DM_API_LOCAL_PRIVACY*)osi_calloc(
+ sizeof(tBTA_DM_API_ENABLE_PRIVACY));
- p_msg->hdr.event = BTA_DM_API_LOCAL_PRIVACY_EVT;
- p_msg->privacy_enable = privacy_enable;
+ p_msg->hdr.event = BTA_DM_API_LOCAL_PRIVACY_EVT;
+ p_msg->privacy_enable = privacy_enable;
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
#else
- UNUSED (privacy_enable);
+ UNUSED(privacy_enable);
#endif
}
@@ -1295,7 +1272,8 @@
*
* Function BTA_DmBleCfgFilterCondition
*
- * Description This function is called to configure the adv data payload filter
+ * Description This function is called to configure the adv data payload
+ *filter
* condition.
*
* Parameters action: to read/write/clear
@@ -1312,120 +1290,115 @@
void BTA_DmBleCfgFilterCondition(tBTA_DM_BLE_SCAN_COND_OP action,
tBTA_DM_BLE_PF_COND_TYPE cond_type,
tBTA_DM_BLE_PF_FILT_INDEX filt_index,
- tBTA_DM_BLE_PF_COND_PARAM *p_cond,
- tBTA_DM_BLE_PF_CFG_CBACK *p_cmpl_cback,
- tBTA_DM_BLE_REF_VALUE ref_value)
-{
- tBTA_DM_API_CFG_FILTER_COND *p_msg;
- APPL_TRACE_API ("BTA_DmBleCfgFilterCondition: %d, %d", action, cond_type);
+ tBTA_DM_BLE_PF_COND_PARAM* p_cond,
+ tBTA_DM_BLE_PF_CFG_CBACK* p_cmpl_cback,
+ tBTA_DM_BLE_REF_VALUE ref_value) {
+ tBTA_DM_API_CFG_FILTER_COND* p_msg;
+ APPL_TRACE_API("BTA_DmBleCfgFilterCondition: %d, %d", action, cond_type);
- uint16_t len = sizeof(tBTA_DM_API_CFG_FILTER_COND) +
- sizeof(tBTA_DM_BLE_PF_COND_PARAM);
- uint8_t *p;
+ uint16_t len =
+ sizeof(tBTA_DM_API_CFG_FILTER_COND) + sizeof(tBTA_DM_BLE_PF_COND_PARAM);
+ uint8_t* p;
- if (NULL != p_cond)
- {
- switch(cond_type)
- {
- case BTA_DM_BLE_PF_SRVC_DATA_PATTERN:
- case BTA_DM_BLE_PF_MANU_DATA:
- /* Length of pattern and pattern mask and other elements in */
- /* tBTA_DM_BLE_PF_MANU_COND */
- len += ((p_cond->manu_data.data_len) * 2) +
- sizeof(uint16_t) + sizeof(uint16_t) + sizeof(uint8_t);
- break;
+ if (NULL != p_cond) {
+ switch (cond_type) {
+ case BTA_DM_BLE_PF_SRVC_DATA_PATTERN:
+ case BTA_DM_BLE_PF_MANU_DATA:
+ /* Length of pattern and pattern mask and other elements in */
+ /* tBTA_DM_BLE_PF_MANU_COND */
+ len += ((p_cond->manu_data.data_len) * 2) + sizeof(uint16_t) +
+ sizeof(uint16_t) + sizeof(uint8_t);
+ break;
- case BTA_DM_BLE_PF_LOCAL_NAME:
- len += ((p_cond->local_name.data_len) + sizeof(uint8_t));
- break;
+ case BTA_DM_BLE_PF_LOCAL_NAME:
+ len += ((p_cond->local_name.data_len) + sizeof(uint8_t));
+ break;
- case BTM_BLE_PF_SRVC_UUID:
- case BTM_BLE_PF_SRVC_SOL_UUID:
- len += sizeof(tBLE_BD_ADDR) + sizeof(tBTA_DM_BLE_PF_COND_MASK);
- break;
+ case BTM_BLE_PF_SRVC_UUID:
+ case BTM_BLE_PF_SRVC_SOL_UUID:
+ len += sizeof(tBLE_BD_ADDR) + sizeof(tBTA_DM_BLE_PF_COND_MASK);
+ break;
- default:
- break;
- }
+ default:
+ break;
}
+ }
- p_msg = (tBTA_DM_API_CFG_FILTER_COND *)osi_calloc(len);
- p_msg->hdr.event = BTA_DM_API_CFG_FILTER_COND_EVT;
- p_msg->action = action;
- p_msg->cond_type = cond_type;
- p_msg->filt_index = filt_index;
- p_msg->p_filt_cfg_cback = p_cmpl_cback;
- p_msg->ref_value = ref_value;
- if (p_cond) {
- p_msg->p_cond_param = (tBTA_DM_BLE_PF_COND_PARAM *)(p_msg + 1);
- memcpy(p_msg->p_cond_param, p_cond, sizeof(tBTA_DM_BLE_PF_COND_PARAM));
+ p_msg = (tBTA_DM_API_CFG_FILTER_COND*)osi_calloc(len);
+ p_msg->hdr.event = BTA_DM_API_CFG_FILTER_COND_EVT;
+ p_msg->action = action;
+ p_msg->cond_type = cond_type;
+ p_msg->filt_index = filt_index;
+ p_msg->p_filt_cfg_cback = p_cmpl_cback;
+ p_msg->ref_value = ref_value;
+ if (p_cond) {
+ p_msg->p_cond_param = (tBTA_DM_BLE_PF_COND_PARAM*)(p_msg + 1);
+ memcpy(p_msg->p_cond_param, p_cond, sizeof(tBTA_DM_BLE_PF_COND_PARAM));
- p = (uint8_t *)(p_msg->p_cond_param + 1);
+ p = (uint8_t*)(p_msg->p_cond_param + 1);
- if (cond_type == BTA_DM_BLE_PF_SRVC_DATA_PATTERN ||
- cond_type == BTA_DM_BLE_PF_MANU_DATA) {
- p_msg->p_cond_param->manu_data.p_pattern = p;
- p_msg->p_cond_param->manu_data.data_len = p_cond->manu_data.data_len;
- memcpy(p_msg->p_cond_param->manu_data.p_pattern, p_cond->manu_data.p_pattern,
- p_cond->manu_data.data_len);
- p += p_cond->manu_data.data_len;
+ if (cond_type == BTA_DM_BLE_PF_SRVC_DATA_PATTERN ||
+ cond_type == BTA_DM_BLE_PF_MANU_DATA) {
+ p_msg->p_cond_param->manu_data.p_pattern = p;
+ p_msg->p_cond_param->manu_data.data_len = p_cond->manu_data.data_len;
+ memcpy(p_msg->p_cond_param->manu_data.p_pattern,
+ p_cond->manu_data.p_pattern, p_cond->manu_data.data_len);
+ p += p_cond->manu_data.data_len;
- if (cond_type == BTA_DM_BLE_PF_MANU_DATA) {
- p_msg->p_cond_param->manu_data.company_id_mask =
- p_cond->manu_data.company_id_mask;
- if ( p_cond->manu_data.p_pattern_mask != NULL) {
- p_msg->p_cond_param->manu_data.p_pattern_mask = p;
- memcpy(p_msg->p_cond_param->manu_data.p_pattern_mask,
- p_cond->manu_data.p_pattern_mask,
- p_cond->manu_data.data_len);
- }
- }
- } else if (cond_type == BTA_DM_BLE_PF_LOCAL_NAME) {
- p_msg->p_cond_param->local_name.p_data = p;
- p_msg->p_cond_param->local_name.data_len =
- p_cond->local_name.data_len;
- memcpy(p_msg->p_cond_param->local_name.p_data,
- p_cond->local_name.p_data, p_cond->local_name.data_len);
- } else if (cond_type == BTM_BLE_PF_SRVC_UUID ||
- cond_type == BTM_BLE_PF_SRVC_SOL_UUID) {
- if (p_cond->srvc_uuid.p_target_addr != NULL) {
- p_msg->p_cond_param->srvc_uuid.p_target_addr = (tBLE_BD_ADDR *)(p);
- p_msg->p_cond_param->srvc_uuid.p_target_addr->type =
- p_cond->srvc_uuid.p_target_addr->type;
- memcpy(p_msg->p_cond_param->srvc_uuid.p_target_addr->bda,
- p_cond->srvc_uuid.p_target_addr->bda, BD_ADDR_LEN);
- p = (uint8_t *)(p_msg->p_cond_param->srvc_uuid.p_target_addr + 1);
- }
- if (p_cond->srvc_uuid.p_uuid_mask) {
- p_msg->p_cond_param->srvc_uuid.p_uuid_mask = (tBTA_DM_BLE_PF_COND_MASK *)p;
- memcpy(p_msg->p_cond_param->srvc_uuid.p_uuid_mask,
- p_cond->srvc_uuid.p_uuid_mask,
- sizeof(tBTA_DM_BLE_PF_COND_MASK));
- }
+ if (cond_type == BTA_DM_BLE_PF_MANU_DATA) {
+ p_msg->p_cond_param->manu_data.company_id_mask =
+ p_cond->manu_data.company_id_mask;
+ if (p_cond->manu_data.p_pattern_mask != NULL) {
+ p_msg->p_cond_param->manu_data.p_pattern_mask = p;
+ memcpy(p_msg->p_cond_param->manu_data.p_pattern_mask,
+ p_cond->manu_data.p_pattern_mask, p_cond->manu_data.data_len);
}
+ }
+ } else if (cond_type == BTA_DM_BLE_PF_LOCAL_NAME) {
+ p_msg->p_cond_param->local_name.p_data = p;
+ p_msg->p_cond_param->local_name.data_len = p_cond->local_name.data_len;
+ memcpy(p_msg->p_cond_param->local_name.p_data, p_cond->local_name.p_data,
+ p_cond->local_name.data_len);
+ } else if (cond_type == BTM_BLE_PF_SRVC_UUID ||
+ cond_type == BTM_BLE_PF_SRVC_SOL_UUID) {
+ if (p_cond->srvc_uuid.p_target_addr != NULL) {
+ p_msg->p_cond_param->srvc_uuid.p_target_addr = (tBLE_BD_ADDR*)(p);
+ p_msg->p_cond_param->srvc_uuid.p_target_addr->type =
+ p_cond->srvc_uuid.p_target_addr->type;
+ memcpy(p_msg->p_cond_param->srvc_uuid.p_target_addr->bda,
+ p_cond->srvc_uuid.p_target_addr->bda, BD_ADDR_LEN);
+ p = (uint8_t*)(p_msg->p_cond_param->srvc_uuid.p_target_addr + 1);
+ }
+ if (p_cond->srvc_uuid.p_uuid_mask) {
+ p_msg->p_cond_param->srvc_uuid.p_uuid_mask =
+ (tBTA_DM_BLE_PF_COND_MASK*)p;
+ memcpy(p_msg->p_cond_param->srvc_uuid.p_uuid_mask,
+ p_cond->srvc_uuid.p_uuid_mask, sizeof(tBTA_DM_BLE_PF_COND_MASK));
+ }
}
+ }
- bta_sys_sendmsg(p_msg);
-
+ bta_sys_sendmsg(p_msg);
}
#else
-void BTA_DmBleCfgFilterCondition(UNUSED_ATTR tBTA_DM_BLE_SCAN_COND_OP action,
- UNUSED_ATTR tBTA_DM_BLE_PF_COND_TYPE cond_type,
- UNUSED_ATTR tBTA_DM_BLE_PF_FILT_INDEX filt_index,
- UNUSED_ATTR tBTA_DM_BLE_PF_COND_PARAM *p_cond,
- UNUSED_ATTR tBTA_DM_BLE_PF_CFG_CBACK *p_cmpl_cback,
- UNUSED_ATTR tBTA_DM_BLE_REF_VALUE ref_value)
-{
-}
+void BTA_DmBleCfgFilterCondition(
+ UNUSED_ATTR tBTA_DM_BLE_SCAN_COND_OP action,
+ UNUSED_ATTR tBTA_DM_BLE_PF_COND_TYPE cond_type,
+ UNUSED_ATTR tBTA_DM_BLE_PF_FILT_INDEX filt_index,
+ UNUSED_ATTR tBTA_DM_BLE_PF_COND_PARAM* p_cond,
+ UNUSED_ATTR tBTA_DM_BLE_PF_CFG_CBACK* p_cmpl_cback,
+ UNUSED_ATTR tBTA_DM_BLE_REF_VALUE ref_value) {}
#endif
/*******************************************************************************
*
* Function BTA_DmBleScanFilterSetup
*
- * Description This function is called to setup the adv data payload filter param
+ * Description This function is called to setup the adv data payload filter
+ *param
*
- * Parameters p_target: enable the filter condition on a target device; if NULL
+ * Parameters p_target: enable the filter condition on a target device; if
+ *NULL
* filt_index - Filter index
* p_filt_params -Filter parameters
* ref_value - Reference value
@@ -1438,42 +1411,42 @@
#if (BLE_ANDROID_CONTROLLER_SCAN_FILTER == TRUE)
void BTA_DmBleScanFilterSetup(uint8_t action,
tBTA_DM_BLE_PF_FILT_INDEX filt_index,
- tBTA_DM_BLE_PF_FILT_PARAMS *p_filt_params,
- tBLE_BD_ADDR *p_target,
- tBTA_DM_BLE_PF_PARAM_CBACK *p_cmpl_cback,
- tBTA_DM_BLE_REF_VALUE ref_value)
-{
- const size_t len = sizeof(tBTA_DM_API_SCAN_FILTER_PARAM_SETUP) +
- sizeof(tBLE_BD_ADDR);
- tBTA_DM_API_SCAN_FILTER_PARAM_SETUP *p_msg =
- (tBTA_DM_API_SCAN_FILTER_PARAM_SETUP *)osi_calloc(len);
+ tBTA_DM_BLE_PF_FILT_PARAMS* p_filt_params,
+ tBLE_BD_ADDR* p_target,
+ tBTA_DM_BLE_PF_PARAM_CBACK* p_cmpl_cback,
+ tBTA_DM_BLE_REF_VALUE ref_value) {
+ const size_t len =
+ sizeof(tBTA_DM_API_SCAN_FILTER_PARAM_SETUP) + sizeof(tBLE_BD_ADDR);
+ tBTA_DM_API_SCAN_FILTER_PARAM_SETUP* p_msg =
+ (tBTA_DM_API_SCAN_FILTER_PARAM_SETUP*)osi_calloc(len);
- APPL_TRACE_API("%s: %d", __func__, action);
+ APPL_TRACE_API("%s: %d", __func__, action);
- p_msg->hdr.event = BTA_DM_API_SCAN_FILTER_SETUP_EVT;
- p_msg->action = action;
- p_msg->filt_index = filt_index;
- if (p_filt_params) {
- memcpy(&p_msg->filt_params, p_filt_params,
- sizeof(tBTA_DM_BLE_PF_FILT_PARAMS));
- }
- p_msg->p_filt_param_cback = p_cmpl_cback;
- p_msg->ref_value = ref_value;
+ p_msg->hdr.event = BTA_DM_API_SCAN_FILTER_SETUP_EVT;
+ p_msg->action = action;
+ p_msg->filt_index = filt_index;
+ if (p_filt_params) {
+ memcpy(&p_msg->filt_params, p_filt_params,
+ sizeof(tBTA_DM_BLE_PF_FILT_PARAMS));
+ }
+ p_msg->p_filt_param_cback = p_cmpl_cback;
+ p_msg->ref_value = ref_value;
- if (p_target) {
- p_msg->p_target = (tBLE_BD_ADDR *)(p_msg + 1);
- memcpy(p_msg->p_target, p_target, sizeof(tBLE_BD_ADDR));
- }
+ if (p_target) {
+ p_msg->p_target = (tBLE_BD_ADDR*)(p_msg + 1);
+ memcpy(p_msg->p_target, p_target, sizeof(tBLE_BD_ADDR));
+ }
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
}
#else
-void BTA_DmBleScanFilterSetup(UNUSED_ATTR uint8_t action,
- UNUSED_ATTR tBTA_DM_BLE_PF_FILT_INDEX filt_index,
- UNUSED_ATTR tBTA_DM_BLE_PF_FILT_PARAMS *p_filt_params,
- UNUSED_ATTR tBLE_BD_ADDR *p_target,
- UNUSED_ATTR tBTA_DM_BLE_PF_PARAM_CBACK *p_cmpl_cback,
- UNUSED_ATTR tBTA_DM_BLE_REF_VALUE ref_value)
+void BTA_DmBleScanFilterSetup(
+ UNUSED_ATTR uint8_t action,
+ UNUSED_ATTR tBTA_DM_BLE_PF_FILT_INDEX filt_index,
+ UNUSED_ATTR tBTA_DM_BLE_PF_FILT_PARAMS* p_filt_params,
+ UNUSED_ATTR tBLE_BD_ADDR* p_target,
+ UNUSED_ATTR tBTA_DM_BLE_PF_PARAM_CBACK* p_cmpl_cback,
+ UNUSED_ATTR tBTA_DM_BLE_REF_VALUE ref_value)
}
#endif
@@ -1488,24 +1461,24 @@
* Returns void
*
******************************************************************************/
-void BTA_DmBleGetEnergyInfo(tBTA_BLE_ENERGY_INFO_CBACK *p_cmpl_cback)
-{
- const size_t len = sizeof(tBTA_DM_API_ENERGY_INFO) + sizeof(tBLE_BD_ADDR);
- tBTA_DM_API_ENERGY_INFO *p_msg = (tBTA_DM_API_ENERGY_INFO *)osi_calloc(len);
+void BTA_DmBleGetEnergyInfo(tBTA_BLE_ENERGY_INFO_CBACK* p_cmpl_cback) {
+ const size_t len = sizeof(tBTA_DM_API_ENERGY_INFO) + sizeof(tBLE_BD_ADDR);
+ tBTA_DM_API_ENERGY_INFO* p_msg = (tBTA_DM_API_ENERGY_INFO*)osi_calloc(len);
- APPL_TRACE_API("%s", __func__);
+ APPL_TRACE_API("%s", __func__);
- p_msg->hdr.event = BTA_DM_API_BLE_ENERGY_INFO_EVT;
- p_msg->p_energy_info_cback = p_cmpl_cback;
+ p_msg->hdr.event = BTA_DM_API_BLE_ENERGY_INFO_EVT;
+ p_msg->p_energy_info_cback = p_cmpl_cback;
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
}
/*******************************************************************************
*
* Function BTA_DmEnableScanFilter
*
- * Description This function is called to enable the adv data payload filter
+ * Description This function is called to enable the adv data payload
+ *filter
*
* Parameters action - enable or disable the APCF feature
* p_cmpl_cback - Command completed callback
@@ -1515,61 +1488,63 @@
*
******************************************************************************/
#if (BLE_ANDROID_CONTROLLER_SCAN_FILTER == TRUE)
-void BTA_DmEnableScanFilter(uint8_t action, tBTA_DM_BLE_PF_STATUS_CBACK *p_cmpl_cback,
- tBTA_DM_BLE_REF_VALUE ref_value)
-{
- const size_t len = sizeof(tBTA_DM_API_ENABLE_SCAN_FILTER) +
- sizeof(tBLE_BD_ADDR);
- tBTA_DM_API_ENABLE_SCAN_FILTER *p_msg =
- (tBTA_DM_API_ENABLE_SCAN_FILTER *)osi_calloc(len);
+void BTA_DmEnableScanFilter(uint8_t action,
+ tBTA_DM_BLE_PF_STATUS_CBACK* p_cmpl_cback,
+ tBTA_DM_BLE_REF_VALUE ref_value) {
+ const size_t len =
+ sizeof(tBTA_DM_API_ENABLE_SCAN_FILTER) + sizeof(tBLE_BD_ADDR);
+ tBTA_DM_API_ENABLE_SCAN_FILTER* p_msg =
+ (tBTA_DM_API_ENABLE_SCAN_FILTER*)osi_calloc(len);
- APPL_TRACE_API("%s: %d", __func__, action);
+ APPL_TRACE_API("%s: %d", __func__, action);
- p_msg->hdr.event = BTA_DM_API_SCAN_FILTER_ENABLE_EVT;
- p_msg->action = action;
- p_msg->ref_value = ref_value;
- p_msg->p_filt_status_cback = p_cmpl_cback;
+ p_msg->hdr.event = BTA_DM_API_SCAN_FILTER_ENABLE_EVT;
+ p_msg->action = action;
+ p_msg->ref_value = ref_value;
+ p_msg->p_filt_status_cback = p_cmpl_cback;
- bta_sys_sendmsg(p_msg);
-
+ bta_sys_sendmsg(p_msg);
}
#else
-void BTA_DmEnableScanFilter(UNUSED_ATTR uint8_t action,
- UNUSED_ATTR tBTA_DM_BLE_PF_STATUS_CBACK *p_cmpl_cback,
- UNUSED_ATTR tBTA_DM_BLE_REF_VALUE ref_value)
-{
-}
+void BTA_DmEnableScanFilter(
+ UNUSED_ATTR uint8_t action,
+ UNUSED_ATTR tBTA_DM_BLE_PF_STATUS_CBACK* p_cmpl_cback,
+ UNUSED_ATTR tBTA_DM_BLE_REF_VALUE ref_value) {}
#endif
/*******************************************************************************
*
* Function BTA_DmBleUpdateConnectionParams
*
- * Description Update connection parameters, can only be used when connection is up.
+ * Description Update connection parameters, can only be used when
+ *connection is up.
*
* Parameters: bd_addr - BD address of the peer
- * min_int - minimum connection interval, [0x0004~ 0x4000]
- * max_int - maximum connection interval, [0x0004~ 0x4000]
+ * min_int - minimum connection interval, [0x0004~
+ *0x4000]
+ * max_int - maximum connection interval, [0x0004~
+ *0x4000]
* latency - slave latency [0 ~ 500]
* timeout - supervision timeout [0x000a ~ 0xc80]
*
* Returns void
*
******************************************************************************/
-void BTA_DmBleUpdateConnectionParams(const BD_ADDR bd_addr, uint16_t min_int, uint16_t max_int,
- uint16_t latency, uint16_t timeout)
-{
- tBTA_DM_API_UPDATE_CONN_PARAM *p_msg =
- (tBTA_DM_API_UPDATE_CONN_PARAM *)osi_calloc(sizeof(tBTA_DM_API_UPDATE_CONN_PARAM));
+void BTA_DmBleUpdateConnectionParams(const BD_ADDR bd_addr, uint16_t min_int,
+ uint16_t max_int, uint16_t latency,
+ uint16_t timeout) {
+ tBTA_DM_API_UPDATE_CONN_PARAM* p_msg =
+ (tBTA_DM_API_UPDATE_CONN_PARAM*)osi_calloc(
+ sizeof(tBTA_DM_API_UPDATE_CONN_PARAM));
- p_msg->hdr.event = BTA_DM_API_UPDATE_CONN_PARAM_EVT;
- bdcpy(p_msg->bd_addr, bd_addr);
- p_msg->min_int = min_int;
- p_msg->max_int = max_int;
- p_msg->latency = latency;
- p_msg->timeout = timeout;
+ p_msg->hdr.event = BTA_DM_API_UPDATE_CONN_PARAM_EVT;
+ bdcpy(p_msg->bd_addr, bd_addr);
+ p_msg->min_int = min_int;
+ p_msg->max_int = max_int;
+ p_msg->latency = latency;
+ p_msg->timeout = timeout;
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
}
/*******************************************************************************
@@ -1582,16 +1557,16 @@
*
*
******************************************************************************/
-void BTA_DmBleSetDataLength(BD_ADDR remote_device, uint16_t tx_data_length)
-{
- tBTA_DM_API_BLE_SET_DATA_LENGTH *p_msg =
- (tBTA_DM_API_BLE_SET_DATA_LENGTH *)osi_malloc(sizeof(tBTA_DM_API_BLE_SET_DATA_LENGTH));
+void BTA_DmBleSetDataLength(BD_ADDR remote_device, uint16_t tx_data_length) {
+ tBTA_DM_API_BLE_SET_DATA_LENGTH* p_msg =
+ (tBTA_DM_API_BLE_SET_DATA_LENGTH*)osi_malloc(
+ sizeof(tBTA_DM_API_BLE_SET_DATA_LENGTH));
- bdcpy(p_msg->remote_bda, remote_device);
- p_msg->hdr.event = BTA_DM_API_SET_DATA_LENGTH_EVT;
- p_msg->tx_data_length = tx_data_length;
+ bdcpy(p_msg->remote_bda, remote_device);
+ p_msg->hdr.event = BTA_DM_API_SET_DATA_LENGTH_EVT;
+ p_msg->tx_data_length = tx_data_length;
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
}
#endif
@@ -1610,35 +1585,39 @@
* p_callback - Pointer to callback function to indicat the
* link encryption status
* sec_act - This is the security action to indicate
- * what knid of BLE security level is required for
+ * what knid of BLE security level is required
+ *for
* the BLE link if the BLE is supported
- * Note: This parameter is ignored for the BR/EDR link
+ * Note: This parameter is ignored for the
+ *BR/EDR link
* or the BLE is not supported
*
* Returns void
*
******************************************************************************/
-void BTA_DmSetEncryption(BD_ADDR bd_addr, tBTA_TRANSPORT transport, tBTA_DM_ENCRYPT_CBACK *p_callback,
- tBTA_DM_BLE_SEC_ACT sec_act)
-{
- tBTA_DM_API_SET_ENCRYPTION *p_msg = (tBTA_DM_API_SET_ENCRYPTION *)osi_calloc(sizeof(tBTA_DM_API_SET_ENCRYPTION));
+void BTA_DmSetEncryption(BD_ADDR bd_addr, tBTA_TRANSPORT transport,
+ tBTA_DM_ENCRYPT_CBACK* p_callback,
+ tBTA_DM_BLE_SEC_ACT sec_act) {
+ tBTA_DM_API_SET_ENCRYPTION* p_msg = (tBTA_DM_API_SET_ENCRYPTION*)osi_calloc(
+ sizeof(tBTA_DM_API_SET_ENCRYPTION));
- APPL_TRACE_API("%s", __func__);
+ APPL_TRACE_API("%s", __func__);
- p_msg->hdr.event = BTA_DM_API_SET_ENCRYPTION_EVT;
- memcpy(p_msg->bd_addr, bd_addr, BD_ADDR_LEN);
- p_msg->transport = transport;
- p_msg->p_callback = p_callback;
- p_msg->sec_act = sec_act;
+ p_msg->hdr.event = BTA_DM_API_SET_ENCRYPTION_EVT;
+ memcpy(p_msg->bd_addr, bd_addr, BD_ADDR_LEN);
+ p_msg->transport = transport;
+ p_msg->p_callback = p_callback;
+ p_msg->sec_act = sec_act;
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
}
/*******************************************************************************
*
* Function BTA_DmCloseACL
*
- * Description This function force to close an ACL connection and remove the
+ * Description This function force to close an ACL connection and remove
+ *the
* device from the security database list of known devices.
*
* Parameters: bd_addr - Address of the peer device
@@ -1647,19 +1626,19 @@
* Returns void
*
******************************************************************************/
-void BTA_DmCloseACL(BD_ADDR bd_addr, bool remove_dev, tBTA_TRANSPORT transport)
-{
- tBTA_DM_API_REMOVE_ACL *p_msg =
- (tBTA_DM_API_REMOVE_ACL *)osi_calloc(sizeof(tBTA_DM_API_REMOVE_ACL));
+void BTA_DmCloseACL(BD_ADDR bd_addr, bool remove_dev,
+ tBTA_TRANSPORT transport) {
+ tBTA_DM_API_REMOVE_ACL* p_msg =
+ (tBTA_DM_API_REMOVE_ACL*)osi_calloc(sizeof(tBTA_DM_API_REMOVE_ACL));
- APPL_TRACE_API("%s", __func__);
+ APPL_TRACE_API("%s", __func__);
- p_msg->hdr.event = BTA_DM_API_REMOVE_ACL_EVT;
- memcpy(p_msg->bd_addr, bd_addr, BD_ADDR_LEN);
- p_msg->remove_dev = remove_dev;
- p_msg->transport = transport;
+ p_msg->hdr.event = BTA_DM_API_REMOVE_ACL_EVT;
+ memcpy(p_msg->bd_addr, bd_addr, BD_ADDR_LEN);
+ p_msg->remove_dev = remove_dev;
+ p_msg->transport = transport;
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
}
#if (BLE_INCLUDED == TRUE)
@@ -1679,19 +1658,18 @@
*
******************************************************************************/
extern void BTA_DmBleObserve(bool start, uint8_t duration,
- tBTA_DM_SEARCH_CBACK *p_results_cb)
-{
- tBTA_DM_API_BLE_OBSERVE *p_msg =
- (tBTA_DM_API_BLE_OBSERVE *)osi_calloc(sizeof(tBTA_DM_API_BLE_OBSERVE));
+ tBTA_DM_SEARCH_CBACK* p_results_cb) {
+ tBTA_DM_API_BLE_OBSERVE* p_msg =
+ (tBTA_DM_API_BLE_OBSERVE*)osi_calloc(sizeof(tBTA_DM_API_BLE_OBSERVE));
- APPL_TRACE_API("%s:start = %d ", __func__, start);
+ APPL_TRACE_API("%s:start = %d ", __func__, start);
- p_msg->hdr.event = BTA_DM_API_BLE_OBSERVE_EVT;
- p_msg->start = start;
- p_msg->duration = duration;
- p_msg->p_cback = p_results_cb;
+ p_msg->hdr.event = BTA_DM_API_BLE_OBSERVE_EVT;
+ p_msg->start = start;
+ p_msg->duration = duration;
+ p_msg->p_cback = p_results_cb;
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
}
/*******************************************************************************
@@ -1703,40 +1681,34 @@
* Returns void
*
******************************************************************************/
-void BTA_VendorInit (void)
-{
- APPL_TRACE_API("BTA_VendorInit");
-}
+void BTA_VendorInit(void) { APPL_TRACE_API("BTA_VendorInit"); }
/*******************************************************************************
*
* Function BTA_VendorCleanup
*
- * Description This function frees up Broadcom specific VS specific dynamic memory
+ * Description This function frees up Broadcom specific VS specific dynamic
+ *memory
*
* Returns void
*
******************************************************************************/
-void BTA_VendorCleanup (void)
-{
- tBTM_BLE_VSC_CB cmn_ble_vsc_cb;
- BTM_BleGetVendorCapabilities(&cmn_ble_vsc_cb);
+void BTA_VendorCleanup(void) {
+ tBTM_BLE_VSC_CB cmn_ble_vsc_cb;
+ BTM_BleGetVendorCapabilities(&cmn_ble_vsc_cb);
#if (BLE_INCLUDED == TRUE && BLE_ANDROID_CONTROLLER_SCAN_FILTER == TRUE)
- if (cmn_ble_vsc_cb.max_filter > 0)
- {
- btm_ble_adv_filter_cleanup();
+ if (cmn_ble_vsc_cb.max_filter > 0) {
+ btm_ble_adv_filter_cleanup();
#if (BLE_PRIVACY_SPT == TRUE)
- btm_ble_resolving_list_cleanup ();
+ btm_ble_resolving_list_cleanup();
#endif
- }
+ }
- if (cmn_ble_vsc_cb.tot_scan_results_strg > 0)
- btm_ble_batchscan_cleanup();
+ if (cmn_ble_vsc_cb.tot_scan_results_strg > 0) btm_ble_batchscan_cleanup();
#endif
- if(cmn_ble_vsc_cb.adv_inst_max > 0)
- btm_ble_multi_adv_cleanup();
+ if (cmn_ble_vsc_cb.adv_inst_max > 0) btm_ble_multi_adv_cleanup();
}
#endif
diff --git a/bta/dm/bta_dm_cfg.cc b/bta/dm/bta_dm_cfg.cc
index 2e7f5ec..37d9383 100644
--- a/bta/dm/bta_dm_cfg.cc
+++ b/bta/dm/bta_dm_cfg.cc
@@ -26,40 +26,41 @@
#include <stddef.h>
#include "bt_target.h"
-#include "bta_sys.h"
#include "bta_api.h"
#include "bta_dm_int.h"
#include "bta_jv_api.h"
+#include "bta_sys.h"
#ifndef BTA_DM_LINK_POLICY_SETTINGS
-#define BTA_DM_LINK_POLICY_SETTINGS (HCI_ENABLE_MASTER_SLAVE_SWITCH | HCI_ENABLE_HOLD_MODE | HCI_ENABLE_SNIFF_MODE | HCI_ENABLE_PARK_MODE)
+#define BTA_DM_LINK_POLICY_SETTINGS \
+ (HCI_ENABLE_MASTER_SLAVE_SWITCH | HCI_ENABLE_HOLD_MODE | \
+ HCI_ENABLE_SNIFF_MODE | HCI_ENABLE_PARK_MODE)
#endif
/* page timeout in 625uS */
#ifndef BTA_DM_PAGE_TIMEOUT
-#define BTA_DM_PAGE_TIMEOUT 8192
+#define BTA_DM_PAGE_TIMEOUT 8192
#endif
/* link supervision timeout in 625uS (5 secs) */
#ifndef BTA_DM_LINK_TIMEOUT
-#define BTA_DM_LINK_TIMEOUT 8000
+#define BTA_DM_LINK_TIMEOUT 8000
#endif
/* TRUE to avoid scatternet when av is streaming (be the master) */
#ifndef BTA_DM_AVOID_SCATTER_A2DP
-#define BTA_DM_AVOID_SCATTER_A2DP TRUE
+#define BTA_DM_AVOID_SCATTER_A2DP TRUE
#endif
-/* For Insight, PM cfg lookup tables are runtime configurable (to allow tweaking of params for power consumption measurements) */
+/* For Insight, PM cfg lookup tables are runtime configurable (to allow tweaking
+ * of params for power consumption measurements) */
#ifndef BTE_SIM_APP
-#define tBTA_DM_PM_TYPE_QUALIFIER const
+#define tBTA_DM_PM_TYPE_QUALIFIER const
#else
#define tBTA_DM_PM_TYPE_QUALIFIER
#endif
-
-const tBTA_DM_CFG bta_dm_cfg =
-{
+const tBTA_DM_CFG bta_dm_cfg = {
/* mobile phone COD */
BTA_DM_COD,
/* link policy settings */
@@ -69,8 +70,7 @@
/* link supervision timeout in 625uS*/
BTA_DM_LINK_TIMEOUT,
/* true to avoid scatternet when av is streaming (be the master) */
- BTA_DM_AVOID_SCATTER_A2DP
-};
+ BTA_DM_AVOID_SCATTER_A2DP};
#ifndef BTA_DM_SCATTERNET
/* By default, allow partial scatternet */
@@ -91,448 +91,499 @@
/* By default, AV role (backward BTA_MASTER_ROLE_PREF) */
#define BTA_PANU_ROLE BTA_SLAVE_ROLE_ONLY
#endif
-#define BTA_DM_NUM_RM_ENTRY 6
+#define BTA_DM_NUM_RM_ENTRY 6
/* appids for PAN used by insight sample application
these have to be same as defined in btui_int.h */
-#define BTUI_PAN_ID_PANU 0
-#define BTUI_PAN_ID_NAP 1
-#define BTUI_PAN_ID_GN 2
+#define BTUI_PAN_ID_PANU 0
+#define BTUI_PAN_ID_NAP 1
+#define BTUI_PAN_ID_GN 2
/* First element is always for SYS:
app_id = # of entries table, cfg is
device scatternet support */
-const tBTA_DM_RM bta_dm_rm_cfg[] =
-{
+const tBTA_DM_RM bta_dm_rm_cfg[] = {
{BTA_ID_SYS, BTA_DM_NUM_RM_ENTRY, BTA_DM_SCATTERNET},
{BTA_ID_PAN, BTUI_PAN_ID_NAP, BTA_ANY_ROLE},
{BTA_ID_PAN, BTUI_PAN_ID_GN, BTA_ANY_ROLE},
{BTA_ID_PAN, BTA_APP_ID_PAN_MULTI, BTA_MASTER_ROLE_ONLY},
{BTA_ID_PAN, BTUI_PAN_ID_PANU, BTA_PANU_ROLE},
- {BTA_ID_HH, BTA_ALL_APP_ID, BTA_HH_ROLE},
- {BTA_ID_AV, BTA_ALL_APP_ID, BTA_AV_ROLE}
-};
+ {BTA_ID_HH, BTA_ALL_APP_ID, BTA_HH_ROLE},
+ {BTA_ID_AV, BTA_ALL_APP_ID, BTA_AV_ROLE}};
+tBTA_DM_CFG* p_bta_dm_cfg = (tBTA_DM_CFG*)&bta_dm_cfg;
-tBTA_DM_CFG *p_bta_dm_cfg = (tBTA_DM_CFG *)&bta_dm_cfg;
-
-tBTA_DM_RM *p_bta_dm_rm_cfg = (tBTA_DM_RM *)&bta_dm_rm_cfg;
+tBTA_DM_RM* p_bta_dm_rm_cfg = (tBTA_DM_RM*)&bta_dm_rm_cfg;
#if (BLE_INCLUDED == TRUE)
-# define BTA_DM_NUM_PM_ENTRY 23 /* number of entries in bta_dm_pm_cfg except the first */
-# define BTA_DM_NUM_PM_SPEC 15 /* number of entries in bta_dm_pm_spec */
+#define BTA_DM_NUM_PM_ENTRY \
+ 23 /* number of entries in bta_dm_pm_cfg except the first */
+#define BTA_DM_NUM_PM_SPEC 15 /* number of entries in bta_dm_pm_spec */
#else
-# define BTA_DM_NUM_PM_ENTRY 21 /* number of entries in bta_dm_pm_cfg except the first */
-# define BTA_DM_NUM_PM_SPEC 13 /* number of entries in bta_dm_pm_spec */
+#define BTA_DM_NUM_PM_ENTRY \
+ 21 /* number of entries in bta_dm_pm_cfg except the first */
+#define BTA_DM_NUM_PM_SPEC 13 /* number of entries in bta_dm_pm_spec */
#endif
-tBTA_DM_PM_TYPE_QUALIFIER tBTA_DM_PM_CFG bta_dm_pm_cfg[BTA_DM_NUM_PM_ENTRY + 1] =
-{
- {BTA_ID_SYS, BTA_DM_NUM_PM_ENTRY, 0}, /* reserved: specifies length of this table. */
- {BTA_ID_AG, BTA_ALL_APP_ID, 0}, /* ag uses first spec table for app id 0 */
- {BTA_ID_CT, 1, 1}, /* ct (BTA_ID_CT,APP ID=1) spec table */
- {BTA_ID_CG, BTA_ALL_APP_ID, 1}, /* cg resue ct spec table */
- {BTA_ID_DG, BTA_ALL_APP_ID, 2}, /* dg spec table */
- {BTA_ID_AV, BTA_ALL_APP_ID, 4}, /* av spec table */
- {BTA_ID_AVK, BTA_ALL_APP_ID, 12}, /* avk spec table */
- {BTA_ID_FTC, BTA_ALL_APP_ID, 6}, /* ftc spec table */
- {BTA_ID_FTS, BTA_ALL_APP_ID, 7}, /* fts spec table */
- {BTA_ID_HD, BTA_ALL_APP_ID, 3}, /* hd spec table */
- {BTA_ID_HH, BTA_ALL_APP_ID, 5}, /* hh spec table */
- {BTA_ID_PBC, BTA_ALL_APP_ID, 2}, /* reuse dg spec table */
- {BTA_ID_PBS, BTA_ALL_APP_ID, 7}, /* reuse fts spec table */
- {BTA_ID_OPC, BTA_ALL_APP_ID, 6}, /* reuse ftc spec table */
- {BTA_ID_OPS, BTA_ALL_APP_ID, 7}, /* reuse fts spec table */
- {BTA_ID_MSE, BTA_ALL_APP_ID, 7}, /* reuse fts spec table */
- {BTA_ID_JV, BTA_JV_PM_ID_1, 6}, /* app BTA_JV_PM_ID_1, reuse ftc spec table */
- {BTA_ID_JV, BTA_ALL_APP_ID, 7}, /* reuse fts spec table */
- {BTA_ID_HL, BTA_ALL_APP_ID, 8}, /* reuse fts spec table */
- {BTA_ID_PAN, BTUI_PAN_ID_PANU, 9}, /* PANU spec table */
- {BTA_ID_PAN, BTUI_PAN_ID_NAP, 10}, /* NAP spec table */
- {BTA_ID_HS, BTA_ALL_APP_ID, 11} /* HS spec table */
+tBTA_DM_PM_TYPE_QUALIFIER tBTA_DM_PM_CFG
+ bta_dm_pm_cfg[BTA_DM_NUM_PM_ENTRY + 1] = {
+ {BTA_ID_SYS, BTA_DM_NUM_PM_ENTRY,
+ 0}, /* reserved: specifies length of this table. */
+ {BTA_ID_AG, BTA_ALL_APP_ID,
+ 0}, /* ag uses first spec table for app id 0 */
+ {BTA_ID_CT, 1, 1}, /* ct (BTA_ID_CT,APP ID=1) spec table */
+ {BTA_ID_CG, BTA_ALL_APP_ID, 1}, /* cg resue ct spec table */
+ {BTA_ID_DG, BTA_ALL_APP_ID, 2}, /* dg spec table */
+ {BTA_ID_AV, BTA_ALL_APP_ID, 4}, /* av spec table */
+ {BTA_ID_AVK, BTA_ALL_APP_ID, 12}, /* avk spec table */
+ {BTA_ID_FTC, BTA_ALL_APP_ID, 6}, /* ftc spec table */
+ {BTA_ID_FTS, BTA_ALL_APP_ID, 7}, /* fts spec table */
+ {BTA_ID_HD, BTA_ALL_APP_ID, 3}, /* hd spec table */
+ {BTA_ID_HH, BTA_ALL_APP_ID, 5}, /* hh spec table */
+ {BTA_ID_PBC, BTA_ALL_APP_ID, 2}, /* reuse dg spec table */
+ {BTA_ID_PBS, BTA_ALL_APP_ID, 7}, /* reuse fts spec table */
+ {BTA_ID_OPC, BTA_ALL_APP_ID, 6}, /* reuse ftc spec table */
+ {BTA_ID_OPS, BTA_ALL_APP_ID, 7}, /* reuse fts spec table */
+ {BTA_ID_MSE, BTA_ALL_APP_ID, 7}, /* reuse fts spec table */
+ {BTA_ID_JV, BTA_JV_PM_ID_1,
+ 6}, /* app BTA_JV_PM_ID_1, reuse ftc spec table */
+ {BTA_ID_JV, BTA_ALL_APP_ID, 7}, /* reuse fts spec table */
+ {BTA_ID_HL, BTA_ALL_APP_ID, 8}, /* reuse fts spec table */
+ {BTA_ID_PAN, BTUI_PAN_ID_PANU, 9}, /* PANU spec table */
+ {BTA_ID_PAN, BTUI_PAN_ID_NAP, 10}, /* NAP spec table */
+ {BTA_ID_HS, BTA_ALL_APP_ID, 11} /* HS spec table */
#if (BLE_INCLUDED == TRUE)
- ,{BTA_ID_GATTC, BTA_ALL_APP_ID, 13} /* gattc spec table */
- ,{BTA_ID_GATTS, BTA_ALL_APP_ID, 14} /* gatts spec table */
+ ,
+ {BTA_ID_GATTC, BTA_ALL_APP_ID, 13} /* gattc spec table */
+ ,
+ {BTA_ID_GATTS, BTA_ALL_APP_ID, 14} /* gatts spec table */
#endif
};
-tBTA_DM_PM_TYPE_QUALIFIER tBTA_DM_PM_SPEC bta_dm_pm_spec[BTA_DM_NUM_PM_SPEC] =
-{
- /* AG : 0 */
- {
- (BTA_DM_PM_SNIFF | BTA_DM_PM_PARK), /* allow park & sniff */
+tBTA_DM_PM_TYPE_QUALIFIER tBTA_DM_PM_SPEC bta_dm_pm_spec[BTA_DM_NUM_PM_SPEC] = {
+ /* AG : 0 */
+ {(BTA_DM_PM_SNIFF | BTA_DM_PM_PARK), /* allow park & sniff */
#if (BTM_SSR_INCLUDED == TRUE)
- (BTA_DM_PM_SSR2), /* the SSR entry */
+ (BTA_DM_PM_SSR2), /* the SSR entry */
#endif
- {
- {{BTA_DM_PM_SNIFF_A2DP_IDX, 7000}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn open sniff */
- {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */
- {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */
- {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
- {{BTA_DM_PM_SNIFF_SCO_OPEN_IDX, 7000}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open, active */
- {{BTA_DM_PM_SNIFF_A2DP_IDX, 7000}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close sniff */
- {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* idle */
- {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */
- {{BTA_DM_PM_RETRY, 7000}, {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */
- }
- },
+ {
+ {{BTA_DM_PM_SNIFF_A2DP_IDX, 7000},
+ {BTA_DM_PM_NO_ACTION, 0}}, /* conn open sniff */
+ {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */
+ {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */
+ {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
+ {{BTA_DM_PM_SNIFF_SCO_OPEN_IDX, 7000},
+ {BTA_DM_PM_NO_ACTION, 0}}, /* sco open, active */
+ {{BTA_DM_PM_SNIFF_A2DP_IDX, 7000},
+ {BTA_DM_PM_NO_ACTION, 0}}, /* sco close sniff */
+ {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* idle */
+ {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */
+ {{BTA_DM_PM_RETRY, 7000},
+ {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */
+ }},
- /* CT, CG : 1 */
- {
- (BTA_DM_PM_SNIFF | BTA_DM_PM_PARK), /* allow park & sniff */
+ /* CT, CG : 1 */
+ {(BTA_DM_PM_SNIFF | BTA_DM_PM_PARK), /* allow park & sniff */
#if (BTM_SSR_INCLUDED == TRUE)
- (BTA_DM_PM_SSR2), /* the SSR entry */
+ (BTA_DM_PM_SSR2), /* the SSR entry */
#endif
- {
- {{BTA_DM_PM_PARK, 5000}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn open park */
- {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */
- {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */
- {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
- {{BTA_DM_PM_SNIFF_A2DP_IDX, 5000}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open sniff */
- {{BTA_DM_PM_PARK, 5000}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close park */
- {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* idle */
- {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */
- {{BTA_DM_PM_RETRY, 5000}, {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */
- }
- },
+ {
+ {{BTA_DM_PM_PARK, 5000},
+ {BTA_DM_PM_NO_ACTION, 0}}, /* conn open park */
+ {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */
+ {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */
+ {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
+ {{BTA_DM_PM_SNIFF_A2DP_IDX, 5000},
+ {BTA_DM_PM_NO_ACTION, 0}}, /* sco open sniff */
+ {{BTA_DM_PM_PARK, 5000},
+ {BTA_DM_PM_NO_ACTION, 0}}, /* sco close park */
+ {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* idle */
+ {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */
+ {{BTA_DM_PM_RETRY, 5000},
+ {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */
+ }},
- /* DG, PBC : 2 */
- {
- (BTA_DM_PM_ACTIVE), /* no power saving mode allowed */
+ /* DG, PBC : 2 */
+ {(BTA_DM_PM_ACTIVE), /* no power saving mode allowed */
#if (BTM_SSR_INCLUDED == TRUE)
- (BTA_DM_PM_SSR2), /* the SSR entry */
+ (BTA_DM_PM_SSR2), /* the SSR entry */
#endif
- {
- {{BTA_DM_PM_SNIFF, 5000}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn open active */
- {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */
- {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */
- {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
- {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open */
- {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close */
- {{BTA_DM_PM_SNIFF, 1000}, {BTA_DM_PM_NO_ACTION, 0}}, /* idle */
- {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */
- {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */
- }
- },
+ {
+ {{BTA_DM_PM_SNIFF, 5000},
+ {BTA_DM_PM_NO_ACTION, 0}}, /* conn open active */
+ {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */
+ {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */
+ {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
+ {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open */
+ {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close */
+ {{BTA_DM_PM_SNIFF, 1000}, {BTA_DM_PM_NO_ACTION, 0}}, /* idle */
+ {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */
+ {{BTA_DM_PM_NO_ACTION, 0},
+ {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */
+ }},
- /* HD : 3 */
- {
- (BTA_DM_PM_SNIFF | BTA_DM_PM_PARK), /* allow park & sniff */
+ /* HD : 3 */
+ {(BTA_DM_PM_SNIFF | BTA_DM_PM_PARK), /* allow park & sniff */
#if (BTM_SSR_INCLUDED == TRUE)
- (BTA_DM_PM_SSR3), /* the SSR entry */
+ (BTA_DM_PM_SSR3), /* the SSR entry */
#endif
- {
- {{BTA_DM_PM_SNIFF_HD_ACTIVE_IDX, 5000}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn open sniff */
- {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */
- {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */
- {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
- {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open */
- {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close */
- {{BTA_DM_PM_SNIFF_HD_IDLE_IDX, 5000}, {BTA_DM_PM_NO_ACTION, 0}}, /* idle */
- {{BTA_DM_PM_SNIFF_HD_ACTIVE_IDX, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */
- {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */
- }
- },
+ {
+ {{BTA_DM_PM_SNIFF_HD_ACTIVE_IDX, 5000},
+ {BTA_DM_PM_NO_ACTION, 0}}, /* conn open sniff */
+ {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */
+ {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */
+ {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
+ {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open */
+ {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close */
+ {{BTA_DM_PM_SNIFF_HD_IDLE_IDX, 5000},
+ {BTA_DM_PM_NO_ACTION, 0}}, /* idle */
+ {{BTA_DM_PM_SNIFF_HD_ACTIVE_IDX, 0},
+ {BTA_DM_PM_NO_ACTION, 0}}, /* busy */
+ {{BTA_DM_PM_NO_ACTION, 0},
+ {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */
+ }},
- /* AV : 4 */
- {
- (BTA_DM_PM_SNIFF), /* allow sniff */
+ /* AV : 4 */
+ {(BTA_DM_PM_SNIFF), /* allow sniff */
#if (BTM_SSR_INCLUDED == TRUE)
- (BTA_DM_PM_SSR2), /* the SSR entry */
+ (BTA_DM_PM_SSR2), /* the SSR entry */
#endif
- {
- {{BTA_DM_PM_SNIFF_A2DP_IDX, 7000}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn open sniff */
- {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */
- {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */
- {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
- {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open */
- {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close */
- {{BTA_DM_PM_SNIFF_A2DP_IDX, 7000}, {BTA_DM_PM_NO_ACTION, 0}}, /* idle */
- {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */
- {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */
- }
- },
+ {
+ {{BTA_DM_PM_SNIFF_A2DP_IDX, 7000},
+ {BTA_DM_PM_NO_ACTION, 0}}, /* conn open sniff */
+ {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */
+ {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */
+ {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
+ {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open */
+ {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close */
+ {{BTA_DM_PM_SNIFF_A2DP_IDX, 7000},
+ {BTA_DM_PM_NO_ACTION, 0}}, /* idle */
+ {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */
+ {{BTA_DM_PM_NO_ACTION, 0},
+ {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */
+ }},
- /* HH : 5 */
- {
- (BTA_DM_PM_SNIFF | BTA_DM_PM_PARK), /* allow park & sniff */
+ /* HH : 5 */
+ {(BTA_DM_PM_SNIFF | BTA_DM_PM_PARK), /* allow park & sniff */
#if (BTM_SSR_INCLUDED == TRUE)
- (BTA_DM_PM_SSR1), /* the SSR entry */
+ (BTA_DM_PM_SSR1), /* the SSR entry */
#endif
- {
- {{BTA_DM_PM_SNIFF_HH_OPEN_IDX, BTA_DM_PM_HH_OPEN_DELAY},{BTA_DM_PM_NO_ACTION, 0}}, /* conn open sniff */
- {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */
- {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */
- {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
- {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open */
- {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close, used for HH suspend */
- {{BTA_DM_PM_SNIFF_HH_IDLE_IDX, BTA_DM_PM_HH_IDLE_DELAY}, {BTA_DM_PM_NO_ACTION, 0}}, /* idle */
- {{BTA_DM_PM_SNIFF_HH_ACTIVE_IDX, BTA_DM_PM_HH_ACTIVE_DELAY}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */
- {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */
- }
- },
+ {
+ {{BTA_DM_PM_SNIFF_HH_OPEN_IDX, BTA_DM_PM_HH_OPEN_DELAY},
+ {BTA_DM_PM_NO_ACTION, 0}}, /* conn open sniff */
+ {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */
+ {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */
+ {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
+ {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open */
+ {{BTA_DM_PM_NO_ACTION, 0},
+ {BTA_DM_PM_NO_ACTION, 0}}, /* sco close, used for HH suspend */
+ {{BTA_DM_PM_SNIFF_HH_IDLE_IDX, BTA_DM_PM_HH_IDLE_DELAY},
+ {BTA_DM_PM_NO_ACTION, 0}}, /* idle */
+ {{BTA_DM_PM_SNIFF_HH_ACTIVE_IDX, BTA_DM_PM_HH_ACTIVE_DELAY},
+ {BTA_DM_PM_NO_ACTION, 0}}, /* busy */
+ {{BTA_DM_PM_NO_ACTION, 0},
+ {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */
+ }},
- /* FTC, OPC, JV : 6 */
- {
- (BTA_DM_PM_SNIFF), /* allow sniff */
+ /* FTC, OPC, JV : 6 */
+ {(BTA_DM_PM_SNIFF), /* allow sniff */
#if (BTM_SSR_INCLUDED == TRUE)
- (BTA_DM_PM_SSR2), /* the SSR entry */
+ (BTA_DM_PM_SSR2), /* the SSR entry */
#endif
- {
- {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn open active */
- {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */
- {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */
- {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
- {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open */
- {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close */
- {{BTA_DM_PM_SNIFF_A2DP_IDX, 5000}, {BTA_DM_PM_NO_ACTION, 0}}, /* idle */
- {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */
- {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */
- }
- },
+ {
+ {{BTA_DM_PM_ACTIVE, 0},
+ {BTA_DM_PM_NO_ACTION, 0}}, /* conn open active */
+ {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */
+ {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */
+ {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
+ {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open */
+ {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close */
+ {{BTA_DM_PM_SNIFF_A2DP_IDX, 5000},
+ {BTA_DM_PM_NO_ACTION, 0}}, /* idle */
+ {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */
+ {{BTA_DM_PM_NO_ACTION, 0},
+ {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */
+ }},
- /* FTS, PBS, OPS, MSE, BTA_JV_PM_ID_1 : 7 */
- {
- (BTA_DM_PM_SNIFF), /* allow sniff */
+ /* FTS, PBS, OPS, MSE, BTA_JV_PM_ID_1 : 7 */
+ {(BTA_DM_PM_SNIFF), /* allow sniff */
#if (BTM_SSR_INCLUDED == TRUE)
- (BTA_DM_PM_SSR2), /* the SSR entry */
+ (BTA_DM_PM_SSR2), /* the SSR entry */
#endif
- {
- {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn open active */
- {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */
- {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */
- {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
- {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open */
- {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close */
- {{BTA_DM_PM_SNIFF_A2DP_IDX, BTA_FTS_OPS_IDLE_TO_SNIFF_DELAY_MS}, {BTA_DM_PM_NO_ACTION, 0}}, /* idle */
- {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */
- {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */
- }
- },
+ {
+ {{BTA_DM_PM_ACTIVE, 0},
+ {BTA_DM_PM_NO_ACTION, 0}}, /* conn open active */
+ {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */
+ {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */
+ {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
+ {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open */
+ {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close */
+ {{BTA_DM_PM_SNIFF_A2DP_IDX, BTA_FTS_OPS_IDLE_TO_SNIFF_DELAY_MS},
+ {BTA_DM_PM_NO_ACTION, 0}}, /* idle */
+ {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */
+ {{BTA_DM_PM_NO_ACTION, 0},
+ {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */
+ }},
- /* HL : 8 */
- {
- (BTA_DM_PM_SNIFF), /* allow sniff */
+ /* HL : 8 */
+ {(BTA_DM_PM_SNIFF), /* allow sniff */
#if (BTM_SSR_INCLUDED == TRUE)
- (BTA_DM_PM_SSR2), /* the SSR entry */
+ (BTA_DM_PM_SSR2), /* the SSR entry */
#endif
- {
- {{BTA_DM_PM_SNIFF_A2DP_IDX, 5000}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn open sniff */
- {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */
- {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */
- {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
- {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open, active */
- {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close sniff */
- {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* idle */
- {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */
- {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */
- }
- },
+ {
+ {{BTA_DM_PM_SNIFF_A2DP_IDX, 5000},
+ {BTA_DM_PM_NO_ACTION, 0}}, /* conn open sniff */
+ {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */
+ {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */
+ {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
+ {{BTA_DM_PM_NO_ACTION, 0},
+ {BTA_DM_PM_NO_ACTION, 0}}, /* sco open, active */
+ {{BTA_DM_PM_NO_ACTION, 0},
+ {BTA_DM_PM_NO_ACTION, 0}}, /* sco close sniff */
+ {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* idle */
+ {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */
+ {{BTA_DM_PM_NO_ACTION, 0},
+ {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */
+ }},
- /* PANU : 9 */
- {
- (BTA_DM_PM_SNIFF), /* allow sniff */
+ /* PANU : 9 */
+ {(BTA_DM_PM_SNIFF), /* allow sniff */
#if (BTM_SSR_INCLUDED == TRUE)
- (BTA_DM_PM_SSR2), /* the SSR entry */
+ (BTA_DM_PM_SSR2), /* the SSR entry */
#endif
- {
- {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn open active */
- {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */
- {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */
- {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
- {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open */
- {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close */
- {{BTA_DM_PM_SNIFF_A2DP_IDX, 5000}, {BTA_DM_PM_NO_ACTION, 0}}, /* idle */
- {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */
- {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */
- }
- },
+ {
+ {{BTA_DM_PM_ACTIVE, 0},
+ {BTA_DM_PM_NO_ACTION, 0}}, /* conn open active */
+ {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */
+ {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */
+ {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
+ {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open */
+ {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close */
+ {{BTA_DM_PM_SNIFF_A2DP_IDX, 5000},
+ {BTA_DM_PM_NO_ACTION, 0}}, /* idle */
+ {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */
+ {{BTA_DM_PM_NO_ACTION, 0},
+ {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */
+ }},
- /* NAP : 10 */
- {
- (BTA_DM_PM_SNIFF), /* allow sniff */
+ /* NAP : 10 */
+ {(BTA_DM_PM_SNIFF), /* allow sniff */
#if (BTM_SSR_INCLUDED == TRUE)
- (BTA_DM_PM_SSR2), /* the SSR entry */
+ (BTA_DM_PM_SSR2), /* the SSR entry */
#endif
- {
- {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn open active */
- {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */
- {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */
- {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
- {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open */
- {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close */
- {{BTA_DM_PM_SNIFF_A2DP_IDX, 5000}, {BTA_DM_PM_NO_ACTION, 0}}, /* idle */
- {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */
+ {
+ {{BTA_DM_PM_ACTIVE, 0},
+ {BTA_DM_PM_NO_ACTION, 0}}, /* conn open active */
+ {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */
+ {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */
+ {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
+ {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open */
+ {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close */
+ {{BTA_DM_PM_SNIFF_A2DP_IDX, 5000},
+ {BTA_DM_PM_NO_ACTION, 0}}, /* idle */
+ {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */
- {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */
- }
- },
+ {{BTA_DM_PM_NO_ACTION, 0},
+ {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */
+ }},
- /* HS : 11 */
- {
- (BTA_DM_PM_SNIFF | BTA_DM_PM_PARK), /* allow park & sniff */
+ /* HS : 11 */
+ {(BTA_DM_PM_SNIFF | BTA_DM_PM_PARK), /* allow park & sniff */
#if (BTM_SSR_INCLUDED == TRUE)
- (BTA_DM_PM_SSR2), /* the SSR entry */
+ (BTA_DM_PM_SSR2), /* the SSR entry */
#endif
- {
- {{BTA_DM_PM_SNIFF, 7000}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn open sniff */
- {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */
- {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */
- {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
- {{BTA_DM_PM_SNIFF3, 7000}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open, active */
- {{BTA_DM_PM_SNIFF, 7000}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close sniff */
- {{BTA_DM_PM_SNIFF, 7000}, {BTA_DM_PM_NO_ACTION, 0}}, /* idle */
- {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */
- {{BTA_DM_PM_RETRY, 7000}, {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */
- }
- },
+ {
+ {{BTA_DM_PM_SNIFF, 7000},
+ {BTA_DM_PM_NO_ACTION, 0}}, /* conn open sniff */
+ {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */
+ {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */
+ {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
+ {{BTA_DM_PM_SNIFF3, 7000},
+ {BTA_DM_PM_NO_ACTION, 0}}, /* sco open, active */
+ {{BTA_DM_PM_SNIFF, 7000},
+ {BTA_DM_PM_NO_ACTION, 0}}, /* sco close sniff */
+ {{BTA_DM_PM_SNIFF, 7000}, {BTA_DM_PM_NO_ACTION, 0}}, /* idle */
+ {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */
+ {{BTA_DM_PM_RETRY, 7000},
+ {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */
+ }},
- /* AVK : 12 */
- {
- (BTA_DM_PM_SNIFF), /* allow sniff */
+ /* AVK : 12 */
+ {(BTA_DM_PM_SNIFF), /* allow sniff */
#if (BTM_SSR_INCLUDED == TRUE)
- (BTA_DM_PM_SSR2), /* the SSR entry */
+ (BTA_DM_PM_SSR2), /* the SSR entry */
#endif
- {
- {{BTA_DM_PM_SNIFF, 3000}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn open sniff */
- {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */
- {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */
- {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
- {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open */
- {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close */
- {{BTA_DM_PM_SNIFF4, 3000}, {BTA_DM_PM_NO_ACTION, 0}}, /* idle */
- {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */
- {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */
- }
- }
+ {
+ {{BTA_DM_PM_SNIFF, 3000},
+ {BTA_DM_PM_NO_ACTION, 0}}, /* conn open sniff */
+ {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */
+ {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */
+ {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
+ {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open */
+ {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close */
+ {{BTA_DM_PM_SNIFF4, 3000}, {BTA_DM_PM_NO_ACTION, 0}}, /* idle */
+ {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */
+ {{BTA_DM_PM_NO_ACTION, 0},
+ {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */
+ }}
#if (BLE_INCLUDED == TRUE)
/* GATTC : 13 */
- ,{
- (BTA_DM_PM_SNIFF | BTA_DM_PM_PARK), /* allow park & sniff */
+ ,
+ {(BTA_DM_PM_SNIFF | BTA_DM_PM_PARK), /* allow park & sniff */
#if (BTM_SSR_INCLUDED == TRUE)
- (BTA_DM_PM_SSR2), /* the SSR entry */
+ (BTA_DM_PM_SSR2), /* the SSR entry */
#endif
- {
- {{BTA_DM_PM_SNIFF_A2DP_IDX, 10000}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn open active */
- {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */
- {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */
- {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
- {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open */
- {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close */
- {{BTA_DM_PM_SNIFF_A2DP_IDX, 10000}, {BTA_DM_PM_NO_ACTION, 0}}, /* idle */
- {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */
+ {
+ {{BTA_DM_PM_SNIFF_A2DP_IDX, 10000},
+ {BTA_DM_PM_NO_ACTION, 0}}, /* conn open active */
+ {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */
+ {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */
+ {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
+ {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open */
+ {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close */
+ {{BTA_DM_PM_SNIFF_A2DP_IDX, 10000},
+ {BTA_DM_PM_NO_ACTION, 0}}, /* idle */
+ {{BTA_DM_PM_ACTIVE, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */
#if (AMP_INCLUDED == TRUE)
- {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* amp */
+ {{BTA_DM_PM_NO_ACTION, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* amp */
#endif
- {{BTA_DM_PM_RETRY, 5000}, {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */
- }
- }
+ {{BTA_DM_PM_RETRY, 5000},
+ {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */
+ }}
/* GATTS : 14 */
- ,{
- (BTA_DM_PM_SNIFF | BTA_DM_PM_PARK), /* allow park & sniff */
+ ,
+ {(BTA_DM_PM_SNIFF | BTA_DM_PM_PARK), /* allow park & sniff */
#if (BTM_SSR_INCLUDED == TRUE)
- (BTA_DM_PM_SSR2), /* the SSR entry */
+ (BTA_DM_PM_SSR2), /* the SSR entry */
#endif
- {
- {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn open active */
- {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */
- {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */
- {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
- {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open */
- {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close */
- {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* idle */
- {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */
+ {
+ {{BTA_DM_PM_NO_PREF, 0},
+ {BTA_DM_PM_NO_ACTION, 0}}, /* conn open active */
+ {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* conn close */
+ {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app open */
+ {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* app close */
+ {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco open */
+ {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* sco close */
+ {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* idle */
+ {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* busy */
#if (AMP_INCLUDED == TRUE)
- {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* amp */
+ {{BTA_DM_PM_NO_PREF, 0}, {BTA_DM_PM_NO_ACTION, 0}}, /* amp */
#endif
- {{BTA_DM_PM_RETRY, 5000}, {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */
- }
- }
+ {{BTA_DM_PM_RETRY, 5000},
+ {BTA_DM_PM_NO_ACTION, 0}} /* mode change retry */
+ }}
#endif
-#ifdef BTE_SIM_APP /* For Insight builds only */
- /* Entries at the end of the pm_spec table are user-defined (runtime configurable),
- for power consumption experiments.
- Insight finds the first user-defined entry by looking for the first BTA_DM_PM_NO_PREF.
- The number of user_defined specs is defined by BTA_SWRAP_UD_PM_SPEC_COUNT */
- ,
- {BTA_DM_PM_NO_PREF}, /* pm_spec USER_DEFINED_0 */
- {BTA_DM_PM_NO_PREF} /* pm_spec USER_DEFINED_1 */
-#endif /* BTE_SIM_APP */
+#ifdef BTE_SIM_APP /* For Insight builds only */
+ /* Entries at the end of the pm_spec table are user-defined (runtime
+ configurable),
+ for power consumption experiments.
+ Insight finds the first user-defined entry by looking for the first
+ BTA_DM_PM_NO_PREF.
+ The number of user_defined specs is defined by
+ BTA_SWRAP_UD_PM_SPEC_COUNT */
+ ,
+ {BTA_DM_PM_NO_PREF}, /* pm_spec USER_DEFINED_0 */
+ {BTA_DM_PM_NO_PREF} /* pm_spec USER_DEFINED_1 */
+#endif /* BTE_SIM_APP */
};
/* Please refer to the SNIFF table definitions in bta_api.h.
*
* Adding to or Modifying the Table
- * Additional sniff parameter entries can be added for BTA_DM_PM_SNIFF5 - BTA_DM_PM_SNIFF7.
- * Overrides of additional table entries can be specified in bdroid_buildcfg.h. If additional
- * sniff parameter entries are added or an override of an existing entry is specified in
- * bdroid_buildcfg.h then the BTA_DM_PM_*_IDX defines in bta_api.h will need to be match the new
+ * Additional sniff parameter entries can be added for BTA_DM_PM_SNIFF5 -
+ * BTA_DM_PM_SNIFF7.
+ * Overrides of additional table entries can be specified in bdroid_buildcfg.h.
+ * If additional
+ * sniff parameter entries are added or an override of an existing entry is
+ * specified in
+ * bdroid_buildcfg.h then the BTA_DM_PM_*_IDX defines in bta_api.h will need to
+ * be match the new
* ordering.
*
* Table Ordering
- * Sniff Table entries must be ordered from highest latency (biggest interval) to lowest latency.
- * If there is a conflict among the connected services the setting with the lowest latency will
+ * Sniff Table entries must be ordered from highest latency (biggest interval)
+ * to lowest latency.
+ * If there is a conflict among the connected services the setting with the
+ * lowest latency will
* be selected.
*/
-tBTA_DM_PM_TYPE_QUALIFIER tBTM_PM_PWR_MD bta_dm_pm_md[] =
-{
-/*
- * More sniff parameter entries can be added for
- * BTA_DM_PM_SNIFF3 - BTA_DM_PM_SNIFF7, if needed. When entries are added or
- * removed, BTA_DM_PM_PARK_IDX needs to be updated to reflect the actual index
- * BTA_DM_PM_PARK_IDX is defined in bta_api.h and can be override by the
- * bdroid_buildcfg.h settings.
- * The SNIFF table entries must be in the order from highest latency (biggest
- * interval) to lowest latency. If there's a conflict among the connected
- * services, the setting with lowest latency wins.
- */
-/* sniff modes: max interval, min interval, attempt, timeout */
- {BTA_DM_PM_SNIFF_MAX, BTA_DM_PM_SNIFF_MIN, BTA_DM_PM_SNIFF_ATTEMPT, BTA_DM_PM_SNIFF_TIMEOUT, BTM_PM_MD_SNIFF}, /* for BTA_DM_PM_SNIFF - A2DP */
- {BTA_DM_PM_SNIFF1_MAX, BTA_DM_PM_SNIFF1_MIN, BTA_DM_PM_SNIFF1_ATTEMPT, BTA_DM_PM_SNIFF1_TIMEOUT, BTM_PM_MD_SNIFF}, /* for BTA_DM_PM_SNIFF1 */
- {BTA_DM_PM_SNIFF2_MAX, BTA_DM_PM_SNIFF2_MIN, BTA_DM_PM_SNIFF2_ATTEMPT, BTA_DM_PM_SNIFF2_TIMEOUT, BTM_PM_MD_SNIFF}, /* for BTA_DM_PM_SNIFF2- HD idle */
- {BTA_DM_PM_SNIFF3_MAX, BTA_DM_PM_SNIFF3_MIN, BTA_DM_PM_SNIFF3_ATTEMPT, BTA_DM_PM_SNIFF3_TIMEOUT, BTM_PM_MD_SNIFF}, /* for BTA_DM_PM_SNIFF3- SCO open */
- {BTA_DM_PM_SNIFF4_MAX, BTA_DM_PM_SNIFF4_MIN, BTA_DM_PM_SNIFF4_ATTEMPT, BTA_DM_PM_SNIFF4_TIMEOUT, BTM_PM_MD_SNIFF}, /* for BTA_DM_PM_SNIFF4- HD active */
- {BTA_DM_PM_SNIFF5_MAX, BTA_DM_PM_SNIFF5_MIN, BTA_DM_PM_SNIFF5_ATTEMPT, BTA_DM_PM_SNIFF5_TIMEOUT, BTM_PM_MD_SNIFF}, /* for BTA_DM_PM_SNIFF5- HD active */
- {BTA_DM_PM_PARK_MAX, BTA_DM_PM_PARK_MIN, BTA_DM_PM_PARK_ATTEMPT, BTA_DM_PM_PARK_TIMEOUT, BTM_PM_MD_PARK}
+tBTA_DM_PM_TYPE_QUALIFIER tBTM_PM_PWR_MD bta_dm_pm_md[] = {
+ /*
+ * More sniff parameter entries can be added for
+ * BTA_DM_PM_SNIFF3 - BTA_DM_PM_SNIFF7, if needed. When entries are added or
+ * removed, BTA_DM_PM_PARK_IDX needs to be updated to reflect the actual
+ * index
+ * BTA_DM_PM_PARK_IDX is defined in bta_api.h and can be override by the
+ * bdroid_buildcfg.h settings.
+ * The SNIFF table entries must be in the order from highest latency
+ * (biggest
+ * interval) to lowest latency. If there's a conflict among the connected
+ * services, the setting with lowest latency wins.
+ */
+ /* sniff modes: max interval, min interval, attempt, timeout */
+ {BTA_DM_PM_SNIFF_MAX, BTA_DM_PM_SNIFF_MIN, BTA_DM_PM_SNIFF_ATTEMPT,
+ BTA_DM_PM_SNIFF_TIMEOUT, BTM_PM_MD_SNIFF}, /* for BTA_DM_PM_SNIFF - A2DP */
+ {BTA_DM_PM_SNIFF1_MAX, BTA_DM_PM_SNIFF1_MIN, BTA_DM_PM_SNIFF1_ATTEMPT,
+ BTA_DM_PM_SNIFF1_TIMEOUT, BTM_PM_MD_SNIFF}, /* for BTA_DM_PM_SNIFF1 */
+ {BTA_DM_PM_SNIFF2_MAX, BTA_DM_PM_SNIFF2_MIN, BTA_DM_PM_SNIFF2_ATTEMPT,
+ BTA_DM_PM_SNIFF2_TIMEOUT,
+ BTM_PM_MD_SNIFF}, /* for BTA_DM_PM_SNIFF2- HD idle */
+ {BTA_DM_PM_SNIFF3_MAX, BTA_DM_PM_SNIFF3_MIN, BTA_DM_PM_SNIFF3_ATTEMPT,
+ BTA_DM_PM_SNIFF3_TIMEOUT,
+ BTM_PM_MD_SNIFF}, /* for BTA_DM_PM_SNIFF3- SCO open */
+ {BTA_DM_PM_SNIFF4_MAX, BTA_DM_PM_SNIFF4_MIN, BTA_DM_PM_SNIFF4_ATTEMPT,
+ BTA_DM_PM_SNIFF4_TIMEOUT,
+ BTM_PM_MD_SNIFF}, /* for BTA_DM_PM_SNIFF4- HD active */
+ {BTA_DM_PM_SNIFF5_MAX, BTA_DM_PM_SNIFF5_MIN, BTA_DM_PM_SNIFF5_ATTEMPT,
+ BTA_DM_PM_SNIFF5_TIMEOUT,
+ BTM_PM_MD_SNIFF}, /* for BTA_DM_PM_SNIFF5- HD active */
+ {BTA_DM_PM_PARK_MAX, BTA_DM_PM_PARK_MIN, BTA_DM_PM_PARK_ATTEMPT,
+ BTA_DM_PM_PARK_TIMEOUT, BTM_PM_MD_PARK}
-#ifdef BTE_SIM_APP /* For Insight builds only */
- /* Entries at the end of the bta_dm_pm_md table are user-defined (runtime configurable),
- for power consumption experiments.
- Insight finds the first user-defined entry by looking for the first 'max=0'.
- The number of user_defined specs is defined by BTA_SWRAP_UD_PM_DM_COUNT */
- ,
- {0}, /* CONN_OPEN/SCO_CLOSE power mode settings for pm_spec USER_DEFINED_0 */
- {0}, /* SCO_OPEN power mode settings for pm_spec USER_DEFINED_0 */
+#ifdef BTE_SIM_APP /* For Insight builds only */
+ /* Entries at the end of the bta_dm_pm_md table are user-defined (runtime
+ configurable),
+ for power consumption experiments.
+ Insight finds the first user-defined entry by looking for the first
+ 'max=0'.
+ The number of user_defined specs is defined by BTA_SWRAP_UD_PM_DM_COUNT
+ */
+ ,
+ {0}, /* CONN_OPEN/SCO_CLOSE power mode settings for pm_spec USER_DEFINED_0
+ */
+ {0}, /* SCO_OPEN power mode settings for pm_spec USER_DEFINED_0 */
- {0}, /* CONN_OPEN/SCO_CLOSE power mode settings for pm_spec USER_DEFINED_1 */
- {0} /* SCO_OPEN power mode settings for pm_spec USER_DEFINED_1 */
-#endif /* BTE_SIM_APP */
+ {0}, /* CONN_OPEN/SCO_CLOSE power mode settings for pm_spec USER_DEFINED_1
+ */
+ {0} /* SCO_OPEN power mode settings for pm_spec USER_DEFINED_1 */
+#endif /* BTE_SIM_APP */
};
/* 0=max_lat -> no SSR */
/* the smaller of the SSR max latency wins.
- * the entries in this table must be from highest latency (biggest interval) to lowest latency */
+ * the entries in this table must be from highest latency (biggest interval) to
+ * lowest latency */
#if (BTM_SSR_INCLUDED == TRUE)
-tBTA_DM_SSR_SPEC bta_dm_ssr_spec[] =
-{
+tBTA_DM_SSR_SPEC bta_dm_ssr_spec[] = {
/*max_lat, min_rmt_to, min_loc_to*/
- {0, 0, 0}, /* BTA_DM_PM_SSR0 - do not use SSR */
- {0, 0, 2}, /* BTA_DM_PM_SSR1 - HH, can NOT share entry with any other profile,
- seting default max latency and min remote timeout as 0,
- and always read individual device preference from HH module */
- {1200, 2, 2}, /* BTA_DM_PM_SSR2 - others (as long as sniff is allowed)*/
- {360, 160, 2} /* BTA_DM_PM_SSR3 - HD */
+ {0, 0, 0}, /* BTA_DM_PM_SSR0 - do not use SSR */
+ {0, 0,
+ 2}, /* BTA_DM_PM_SSR1 - HH, can NOT share entry with any other profile,
+ seting default max latency and min remote timeout as 0,
+ and always read individual device preference from HH module */
+ {1200, 2, 2}, /* BTA_DM_PM_SSR2 - others (as long as sniff is allowed)*/
+ {360, 160, 2} /* BTA_DM_PM_SSR3 - HD */
};
-tBTA_DM_SSR_SPEC *p_bta_dm_ssr_spec = (tBTA_DM_SSR_SPEC *)&bta_dm_ssr_spec;
+tBTA_DM_SSR_SPEC* p_bta_dm_ssr_spec = (tBTA_DM_SSR_SPEC*)&bta_dm_ssr_spec;
#endif
-tBTA_DM_PM_CFG *p_bta_dm_pm_cfg = (tBTA_DM_PM_CFG *)&bta_dm_pm_cfg;
-tBTA_DM_PM_SPEC *p_bta_dm_pm_spec = (tBTA_DM_PM_SPEC *)&bta_dm_pm_spec;
-tBTM_PM_PWR_MD *p_bta_dm_pm_md = (tBTM_PM_PWR_MD *)&bta_dm_pm_md;
+tBTA_DM_PM_CFG* p_bta_dm_pm_cfg = (tBTA_DM_PM_CFG*)&bta_dm_pm_cfg;
+tBTA_DM_PM_SPEC* p_bta_dm_pm_spec = (tBTA_DM_PM_SPEC*)&bta_dm_pm_spec;
+tBTM_PM_PWR_MD* p_bta_dm_pm_md = (tBTM_PM_PWR_MD*)&bta_dm_pm_md;
/* The performance impact of EIR packet size
*
@@ -547,42 +598,45 @@
*
* When BTM_EIR_DEFAULT_FEC_REQUIRED is false,
* 1 to 27 bytes, DH1 is used but only robust at short range.
- * 28 to 183 bytes, DH3 is used but only robust at short range and impacts inquiry
+ * 28 to 183 bytes, DH3 is used but only robust at short range and impacts
+ * inquiry
* scan time with large number of devices.
* 184 to 240 bytes, DH5 is used but it not recommended.
*/
#if (BTA_EIR_CANNED_UUID_LIST == TRUE)
- /* for example */
-const uint8_t bta_dm_eir_uuid16_list[] = { 0x08, 0x11, /* Headset */
- 0x1E, 0x11, /* Handsfree */
- 0x0E, 0x11, /* AV Remote Control */
- 0x0B, 0x11, /* Audio Sink */
+/* for example */
+const uint8_t bta_dm_eir_uuid16_list[] = {
+ 0x08, 0x11, /* Headset */
+ 0x1E, 0x11, /* Handsfree */
+ 0x0E, 0x11, /* AV Remote Control */
+ 0x0B, 0x11, /* Audio Sink */
};
#endif // BTA_EIR_CANNED_UUID_LIST
/* Extended Inquiry Response */
-const tBTA_DM_EIR_CONF bta_dm_eir_cfg =
-{
- 50, /* minimum length of local name when it is shortened */
- /* if length of local name is longer than this and EIR has not enough */
- /* room for all UUID list then local name is shortened to this length */
+const tBTA_DM_EIR_CONF bta_dm_eir_cfg = {
+ 50, /* minimum length of local name when it is shortened */
+ /* if length of local name is longer than this and EIR has not enough */
+ /* room for all UUID list then local name is shortened to this length */
#if (BTA_EIR_CANNED_UUID_LIST == TRUE)
- 8,
- (uint8_t *)bta_dm_eir_uuid16_list,
-#else // BTA_EIR_CANNED_UUID_LIST
- { /* mask of UUID list in EIR */
- 0xFFFFFFFF, /* LSB is the first UUID of the first 32 UUIDs in BTM_EIR_UUID_LKUP_TBL */
- 0xFFFFFFFF /* LSB is the first UUID of the next 32 UUIDs in BTM_EIR_UUID_LKUP_TBL */
+ 8, (uint8_t*)bta_dm_eir_uuid16_list,
+#else // BTA_EIR_CANNED_UUID_LIST
+ {
+ /* mask of UUID list in EIR */
+ 0xFFFFFFFF, /* LSB is the first UUID of the first 32 UUIDs in
+ BTM_EIR_UUID_LKUP_TBL */
+ 0xFFFFFFFF /* LSB is the first UUID of the next 32 UUIDs in
+ BTM_EIR_UUID_LKUP_TBL */
/* BTM_EIR_UUID_LKUP_TBL can be overrided */
},
-#endif // BTA_EIR_CANNED_UUID_LIST
- NULL, /* Inquiry TX power */
- 0, /* length of flags in bytes */
- NULL, /* flags for EIR */
- 0, /* length of manufacturer specific in bytes */
- NULL, /* manufacturer specific */
- 0, /* length of additional data in bytes */
- NULL /* additional data */
+#endif // BTA_EIR_CANNED_UUID_LIST
+ NULL, /* Inquiry TX power */
+ 0, /* length of flags in bytes */
+ NULL, /* flags for EIR */
+ 0, /* length of manufacturer specific in bytes */
+ NULL, /* manufacturer specific */
+ 0, /* length of additional data in bytes */
+ NULL /* additional data */
};
-tBTA_DM_EIR_CONF *p_bta_dm_eir_cfg = (tBTA_DM_EIR_CONF*)&bta_dm_eir_cfg;
+tBTA_DM_EIR_CONF* p_bta_dm_eir_cfg = (tBTA_DM_EIR_CONF*)&bta_dm_eir_cfg;
diff --git a/bta/dm/bta_dm_ci.cc b/bta/dm/bta_dm_ci.cc
index e0fe286..d3616d4 100644
--- a/bta/dm/bta_dm_ci.cc
+++ b/bta/dm/bta_dm_ci.cc
@@ -24,11 +24,10 @@
#include <string.h>
#include "bt_common.h"
-#include "bta_sys.h"
#include "bta_api.h"
-#include "bta_dm_int.h"
#include "bta_dm_ci.h"
-
+#include "bta_dm_int.h"
+#include "bta_sys.h"
/*******************************************************************************
*
@@ -41,20 +40,20 @@
* Returns void
*
******************************************************************************/
-void bta_dm_ci_io_req(BD_ADDR bd_addr, tBTA_IO_CAP io_cap, tBTA_OOB_DATA oob_data,
- tBTA_AUTH_REQ auth_req)
+void bta_dm_ci_io_req(BD_ADDR bd_addr, tBTA_IO_CAP io_cap,
+ tBTA_OOB_DATA oob_data, tBTA_AUTH_REQ auth_req)
{
- tBTA_DM_CI_IO_REQ *p_msg =
- (tBTA_DM_CI_IO_REQ *)osi_malloc(sizeof(tBTA_DM_CI_IO_REQ));
+ tBTA_DM_CI_IO_REQ* p_msg =
+ (tBTA_DM_CI_IO_REQ*)osi_malloc(sizeof(tBTA_DM_CI_IO_REQ));
- p_msg->hdr.event = BTA_DM_CI_IO_REQ_EVT;
- bdcpy(p_msg->bd_addr, bd_addr);
- p_msg->io_cap = io_cap;
- p_msg->oob_data = oob_data;
- p_msg->auth_req = auth_req;
+ p_msg->hdr.event = BTA_DM_CI_IO_REQ_EVT;
+ bdcpy(p_msg->bd_addr, bd_addr);
+ p_msg->io_cap = io_cap;
+ p_msg->oob_data = oob_data;
+ p_msg->auth_req = auth_req;
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
}
/*******************************************************************************
@@ -68,18 +67,18 @@
* Returns void
*
******************************************************************************/
-void bta_dm_ci_rmt_oob(bool accept, BD_ADDR bd_addr, BT_OCTET16 c, BT_OCTET16 r)
-{
- tBTA_DM_CI_RMT_OOB *p_msg =
- (tBTA_DM_CI_RMT_OOB *)osi_malloc(sizeof(tBTA_DM_CI_RMT_OOB));
+void bta_dm_ci_rmt_oob(bool accept, BD_ADDR bd_addr, BT_OCTET16 c,
+ BT_OCTET16 r) {
+ tBTA_DM_CI_RMT_OOB* p_msg =
+ (tBTA_DM_CI_RMT_OOB*)osi_malloc(sizeof(tBTA_DM_CI_RMT_OOB));
- p_msg->hdr.event = BTA_DM_CI_RMT_OOB_EVT;
- bdcpy(p_msg->bd_addr, bd_addr);
- p_msg->accept = accept;
- memcpy(p_msg->c, c, BT_OCTET16_LEN);
- memcpy(p_msg->r, r, BT_OCTET16_LEN);
+ p_msg->hdr.event = BTA_DM_CI_RMT_OOB_EVT;
+ bdcpy(p_msg->bd_addr, bd_addr);
+ p_msg->accept = accept;
+ memcpy(p_msg->c, c, BT_OCTET16_LEN);
+ memcpy(p_msg->r, r, BT_OCTET16_LEN);
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
}
#if (BTM_SCO_HCI_INCLUDED == TRUE)
@@ -98,13 +97,12 @@
* Returns void
*
******************************************************************************/
-void bta_dm_sco_ci_data_ready(uint16_t event, uint16_t sco_handle)
-{
- BT_HDR *p_buf = (BT_HDR *)osi_malloc(sizeof(BT_HDR));
+void bta_dm_sco_ci_data_ready(uint16_t event, uint16_t sco_handle) {
+ BT_HDR* p_buf = (BT_HDR*)osi_malloc(sizeof(BT_HDR));
- p_buf->event = event;
- p_buf->layer_specific = sco_handle;
+ p_buf->event = event;
+ p_buf->layer_specific = sco_handle;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
#endif
diff --git a/bta/dm/bta_dm_int.h b/bta/dm/bta_dm_int.h
index be691bd..3d8b85d 100644
--- a/bta/dm/bta_dm_int.h
+++ b/bta/dm/bta_dm_int.h
@@ -31,757 +31,689 @@
#include "bta_gatt_api.h"
#endif
-
-
/*****************************************************************************
* Constants and data types
****************************************************************************/
-
-#define BTA_COPY_DEVICE_CLASS(coddst, codsrc) {((uint8_t *)(coddst))[0] = ((uint8_t *)(codsrc))[0]; \
- ((uint8_t *)(coddst))[1] = ((uint8_t *)(codsrc))[1]; \
- ((uint8_t *)(coddst))[2] = ((uint8_t *)(codsrc))[2];}
-
+#define BTA_COPY_DEVICE_CLASS(coddst, codsrc) \
+ { \
+ ((uint8_t*)(coddst))[0] = ((uint8_t*)(codsrc))[0]; \
+ ((uint8_t*)(coddst))[1] = ((uint8_t*)(codsrc))[1]; \
+ ((uint8_t*)(coddst))[2] = ((uint8_t*)(codsrc))[2]; \
+ }
#define BTA_DM_MSG_LEN 50
-#define BTA_SERVICE_ID_TO_SERVICE_MASK(id) (1 << (id))
+#define BTA_SERVICE_ID_TO_SERVICE_MASK(id) (1 << (id))
/* DM events */
-enum
-{
- /* device manager local device API events */
- BTA_DM_API_ENABLE_EVT = BTA_SYS_EVT_START(BTA_ID_DM),
- BTA_DM_API_DISABLE_EVT,
- BTA_DM_API_SET_NAME_EVT,
- BTA_DM_API_SET_VISIBILITY_EVT,
+enum {
+ /* device manager local device API events */
+ BTA_DM_API_ENABLE_EVT = BTA_SYS_EVT_START(BTA_ID_DM),
+ BTA_DM_API_DISABLE_EVT,
+ BTA_DM_API_SET_NAME_EVT,
+ BTA_DM_API_SET_VISIBILITY_EVT,
- BTA_DM_ACL_CHANGE_EVT,
- BTA_DM_API_ADD_DEVICE_EVT,
- BTA_DM_API_REMOVE_ACL_EVT,
+ BTA_DM_ACL_CHANGE_EVT,
+ BTA_DM_API_ADD_DEVICE_EVT,
+ BTA_DM_API_REMOVE_ACL_EVT,
- /* security API events */
- BTA_DM_API_BOND_EVT,
- BTA_DM_API_BOND_CANCEL_EVT,
- BTA_DM_API_PIN_REPLY_EVT,
+ /* security API events */
+ BTA_DM_API_BOND_EVT,
+ BTA_DM_API_BOND_CANCEL_EVT,
+ BTA_DM_API_PIN_REPLY_EVT,
- /* power manger events */
- BTA_DM_PM_BTM_STATUS_EVT,
- BTA_DM_PM_TIMER_EVT,
+ /* power manger events */
+ BTA_DM_PM_BTM_STATUS_EVT,
+ BTA_DM_PM_TIMER_EVT,
- /* simple pairing events */
- BTA_DM_API_CONFIRM_EVT,
+ /* simple pairing events */
+ BTA_DM_API_CONFIRM_EVT,
- BTA_DM_API_SET_ENCRYPTION_EVT,
+ BTA_DM_API_SET_ENCRYPTION_EVT,
- BTA_DM_API_LOC_OOB_EVT,
- BTA_DM_CI_IO_REQ_EVT,
- BTA_DM_CI_RMT_OOB_EVT,
-
+ BTA_DM_API_LOC_OOB_EVT,
+ BTA_DM_CI_IO_REQ_EVT,
+ BTA_DM_CI_RMT_OOB_EVT,
#if (BLE_INCLUDED == TRUE)
- BTA_DM_API_ADD_BLEKEY_EVT,
- BTA_DM_API_ADD_BLEDEVICE_EVT,
- BTA_DM_API_BLE_PASSKEY_REPLY_EVT,
- BTA_DM_API_BLE_CONFIRM_REPLY_EVT,
- BTA_DM_API_BLE_SEC_GRANT_EVT,
- BTA_DM_API_BLE_SET_BG_CONN_TYPE,
- BTA_DM_API_BLE_CONN_PARAM_EVT,
- BTA_DM_API_BLE_CONN_SCAN_PARAM_EVT,
- BTA_DM_API_BLE_SCAN_PARAM_EVT,
- BTA_DM_API_BLE_OBSERVE_EVT,
- BTA_DM_API_UPDATE_CONN_PARAM_EVT,
+ BTA_DM_API_ADD_BLEKEY_EVT,
+ BTA_DM_API_ADD_BLEDEVICE_EVT,
+ BTA_DM_API_BLE_PASSKEY_REPLY_EVT,
+ BTA_DM_API_BLE_CONFIRM_REPLY_EVT,
+ BTA_DM_API_BLE_SEC_GRANT_EVT,
+ BTA_DM_API_BLE_SET_BG_CONN_TYPE,
+ BTA_DM_API_BLE_CONN_PARAM_EVT,
+ BTA_DM_API_BLE_CONN_SCAN_PARAM_EVT,
+ BTA_DM_API_BLE_SCAN_PARAM_EVT,
+ BTA_DM_API_BLE_OBSERVE_EVT,
+ BTA_DM_API_UPDATE_CONN_PARAM_EVT,
#if (BLE_PRIVACY_SPT == TRUE)
- BTA_DM_API_LOCAL_PRIVACY_EVT,
+ BTA_DM_API_LOCAL_PRIVACY_EVT,
#endif
- BTA_DM_API_SET_DATA_LENGTH_EVT,
+ BTA_DM_API_SET_DATA_LENGTH_EVT,
#if (BLE_ANDROID_CONTROLLER_SCAN_FILTER == TRUE)
- BTA_DM_API_CFG_FILTER_COND_EVT,
- BTA_DM_API_SCAN_FILTER_SETUP_EVT,
- BTA_DM_API_SCAN_FILTER_ENABLE_EVT,
+ BTA_DM_API_CFG_FILTER_COND_EVT,
+ BTA_DM_API_SCAN_FILTER_SETUP_EVT,
+ BTA_DM_API_SCAN_FILTER_ENABLE_EVT,
#endif
- BTA_DM_API_BLE_SETUP_STORAGE_EVT,
- BTA_DM_API_BLE_ENABLE_BATCH_SCAN_EVT,
- BTA_DM_API_BLE_DISABLE_BATCH_SCAN_EVT,
- BTA_DM_API_BLE_READ_SCAN_REPORTS_EVT,
- BTA_DM_API_BLE_TRACK_ADVERTISER_EVT,
- BTA_DM_API_BLE_ENERGY_INFO_EVT,
+ BTA_DM_API_BLE_SETUP_STORAGE_EVT,
+ BTA_DM_API_BLE_ENABLE_BATCH_SCAN_EVT,
+ BTA_DM_API_BLE_DISABLE_BATCH_SCAN_EVT,
+ BTA_DM_API_BLE_READ_SCAN_REPORTS_EVT,
+ BTA_DM_API_BLE_TRACK_ADVERTISER_EVT,
+ BTA_DM_API_BLE_ENERGY_INFO_EVT,
#endif
- BTA_DM_API_ENABLE_TEST_MODE_EVT,
- BTA_DM_API_DISABLE_TEST_MODE_EVT,
- BTA_DM_API_EXECUTE_CBACK_EVT,
- BTA_DM_API_REMOVE_ALL_ACL_EVT,
- BTA_DM_API_REMOVE_DEVICE_EVT,
- BTA_DM_MAX_EVT
+ BTA_DM_API_ENABLE_TEST_MODE_EVT,
+ BTA_DM_API_DISABLE_TEST_MODE_EVT,
+ BTA_DM_API_EXECUTE_CBACK_EVT,
+ BTA_DM_API_REMOVE_ALL_ACL_EVT,
+ BTA_DM_API_REMOVE_DEVICE_EVT,
+ BTA_DM_MAX_EVT
};
-
/* DM search events */
-enum
-{
- /* DM search API events */
- BTA_DM_API_SEARCH_EVT = BTA_SYS_EVT_START(BTA_ID_DM_SEARCH),
- BTA_DM_API_SEARCH_CANCEL_EVT,
- BTA_DM_API_DISCOVER_EVT,
- BTA_DM_INQUIRY_CMPL_EVT,
- BTA_DM_REMT_NAME_EVT,
- BTA_DM_SDP_RESULT_EVT,
- BTA_DM_SEARCH_CMPL_EVT,
- BTA_DM_DISCOVERY_RESULT_EVT,
- BTA_DM_API_DI_DISCOVER_EVT,
- BTA_DM_DISC_CLOSE_TOUT_EVT
+enum {
+ /* DM search API events */
+ BTA_DM_API_SEARCH_EVT = BTA_SYS_EVT_START(BTA_ID_DM_SEARCH),
+ BTA_DM_API_SEARCH_CANCEL_EVT,
+ BTA_DM_API_DISCOVER_EVT,
+ BTA_DM_INQUIRY_CMPL_EVT,
+ BTA_DM_REMT_NAME_EVT,
+ BTA_DM_SDP_RESULT_EVT,
+ BTA_DM_SEARCH_CMPL_EVT,
+ BTA_DM_DISCOVERY_RESULT_EVT,
+ BTA_DM_API_DI_DISCOVER_EVT,
+ BTA_DM_DISC_CLOSE_TOUT_EVT
};
/* data type for BTA_DM_API_ENABLE_EVT */
-typedef struct
-{
- BT_HDR hdr;
- tBTA_DM_SEC_CBACK *p_sec_cback;
+typedef struct {
+ BT_HDR hdr;
+ tBTA_DM_SEC_CBACK* p_sec_cback;
} tBTA_DM_API_ENABLE;
/* data type for BTA_DM_API_SET_NAME_EVT */
-typedef struct
-{
- BT_HDR hdr;
- BD_NAME name; /* max 248 bytes name, plus must be Null terminated */
+typedef struct {
+ BT_HDR hdr;
+ BD_NAME name; /* max 248 bytes name, plus must be Null terminated */
} tBTA_DM_API_SET_NAME;
/* data type for BTA_DM_API_SET_VISIBILITY_EVT */
-typedef struct
-{
- BT_HDR hdr;
- tBTA_DM_DISC disc_mode;
- tBTA_DM_CONN conn_mode;
- uint8_t pair_mode;
- uint8_t conn_paired_only;
+typedef struct {
+ BT_HDR hdr;
+ tBTA_DM_DISC disc_mode;
+ tBTA_DM_CONN conn_mode;
+ uint8_t pair_mode;
+ uint8_t conn_paired_only;
} tBTA_DM_API_SET_VISIBILITY;
-enum
-{
- BTA_DM_RS_NONE, /* straight API call */
- BTA_DM_RS_OK, /* the role switch result - successful */
- BTA_DM_RS_FAIL /* the role switch result - failed */
+enum {
+ BTA_DM_RS_NONE, /* straight API call */
+ BTA_DM_RS_OK, /* the role switch result - successful */
+ BTA_DM_RS_FAIL /* the role switch result - failed */
};
typedef uint8_t tBTA_DM_RS_RES;
/* data type for BTA_DM_API_SEARCH_EVT */
-typedef struct
-{
- BT_HDR hdr;
- tBTA_DM_INQ inq_params;
- tBTA_SERVICE_MASK services;
- tBTA_DM_SEARCH_CBACK * p_cback;
- tBTA_DM_RS_RES rs_res;
+typedef struct {
+ BT_HDR hdr;
+ tBTA_DM_INQ inq_params;
+ tBTA_SERVICE_MASK services;
+ tBTA_DM_SEARCH_CBACK* p_cback;
+ tBTA_DM_RS_RES rs_res;
#if (BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE)
- uint8_t num_uuid;
- tBT_UUID *p_uuid;
+ uint8_t num_uuid;
+ tBT_UUID* p_uuid;
#endif
} tBTA_DM_API_SEARCH;
/* data type for BTA_DM_API_DISCOVER_EVT */
-typedef struct
-{
- BT_HDR hdr;
- BD_ADDR bd_addr;
- tBTA_SERVICE_MASK services;
- tBTA_DM_SEARCH_CBACK * p_cback;
- bool sdp_search;
- tBTA_TRANSPORT transport;
+typedef struct {
+ BT_HDR hdr;
+ BD_ADDR bd_addr;
+ tBTA_SERVICE_MASK services;
+ tBTA_DM_SEARCH_CBACK* p_cback;
+ bool sdp_search;
+ tBTA_TRANSPORT transport;
#if (BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE)
- uint8_t num_uuid;
- tBT_UUID *p_uuid;
+ uint8_t num_uuid;
+ tBT_UUID* p_uuid;
#endif
- tSDP_UUID uuid;
+ tSDP_UUID uuid;
} tBTA_DM_API_DISCOVER;
/* data type for BTA_DM_API_DI_DISC_EVT */
-typedef struct
-{
- BT_HDR hdr;
- BD_ADDR bd_addr;
- tBTA_DISCOVERY_DB *p_sdp_db;
- uint32_t len;
- tBTA_DM_SEARCH_CBACK * p_cback;
-}tBTA_DM_API_DI_DISC;
+typedef struct {
+ BT_HDR hdr;
+ BD_ADDR bd_addr;
+ tBTA_DISCOVERY_DB* p_sdp_db;
+ uint32_t len;
+ tBTA_DM_SEARCH_CBACK* p_cback;
+} tBTA_DM_API_DI_DISC;
/* data type for BTA_DM_API_BOND_EVT */
-typedef struct
-{
- BT_HDR hdr;
- BD_ADDR bd_addr;
- tBTA_TRANSPORT transport;
+typedef struct {
+ BT_HDR hdr;
+ BD_ADDR bd_addr;
+ tBTA_TRANSPORT transport;
} tBTA_DM_API_BOND;
/* data type for BTA_DM_API_BOND_CANCEL_EVT */
-typedef struct
-{
- BT_HDR hdr;
- BD_ADDR bd_addr;
- tBTA_TRANSPORT transport;
+typedef struct {
+ BT_HDR hdr;
+ BD_ADDR bd_addr;
+ tBTA_TRANSPORT transport;
} tBTA_DM_API_BOND_CANCEL;
/* data type for BTA_DM_API_PIN_REPLY_EVT */
-typedef struct
-{
- BT_HDR hdr;
- BD_ADDR bd_addr;
- bool accept;
- uint8_t pin_len;
- uint8_t p_pin[PIN_CODE_LEN];
+typedef struct {
+ BT_HDR hdr;
+ BD_ADDR bd_addr;
+ bool accept;
+ uint8_t pin_len;
+ uint8_t p_pin[PIN_CODE_LEN];
} tBTA_DM_API_PIN_REPLY;
/* data type for BTA_DM_API_LOC_OOB_EVT */
-typedef struct
-{
- BT_HDR hdr;
-} tBTA_DM_API_LOC_OOB;
+typedef struct { BT_HDR hdr; } tBTA_DM_API_LOC_OOB;
/* data type for BTA_DM_API_CONFIRM_EVT */
-typedef struct
-{
- BT_HDR hdr;
- BD_ADDR bd_addr;
- bool accept;
+typedef struct {
+ BT_HDR hdr;
+ BD_ADDR bd_addr;
+ bool accept;
} tBTA_DM_API_CONFIRM;
/* data type for BTA_DM_CI_IO_REQ_EVT */
-typedef struct
-{
- BT_HDR hdr;
- BD_ADDR bd_addr;
- tBTA_IO_CAP io_cap;
- tBTA_OOB_DATA oob_data;
- tBTA_AUTH_REQ auth_req;
+typedef struct {
+ BT_HDR hdr;
+ BD_ADDR bd_addr;
+ tBTA_IO_CAP io_cap;
+ tBTA_OOB_DATA oob_data;
+ tBTA_AUTH_REQ auth_req;
} tBTA_DM_CI_IO_REQ;
/* data type for BTA_DM_CI_RMT_OOB_EVT */
-typedef struct
-{
- BT_HDR hdr;
- BD_ADDR bd_addr;
- BT_OCTET16 c;
- BT_OCTET16 r;
- bool accept;
+typedef struct {
+ BT_HDR hdr;
+ BD_ADDR bd_addr;
+ BT_OCTET16 c;
+ BT_OCTET16 r;
+ bool accept;
} tBTA_DM_CI_RMT_OOB;
/* data type for BTA_DM_REMT_NAME_EVT */
-typedef struct
-{
- BT_HDR hdr;
- tBTA_DM_SEARCH result;
+typedef struct {
+ BT_HDR hdr;
+ tBTA_DM_SEARCH result;
} tBTA_DM_REM_NAME;
/* data type for tBTA_DM_DISC_RESULT */
-typedef struct
-{
- BT_HDR hdr;
- tBTA_DM_SEARCH result;
+typedef struct {
+ BT_HDR hdr;
+ tBTA_DM_SEARCH result;
} tBTA_DM_DISC_RESULT;
-
/* data type for BTA_DM_INQUIRY_CMPL_EVT */
-typedef struct
-{
- BT_HDR hdr;
- uint8_t num;
+typedef struct {
+ BT_HDR hdr;
+ uint8_t num;
} tBTA_DM_INQUIRY_CMPL;
/* data type for BTA_DM_SDP_RESULT_EVT */
-typedef struct
-{
- BT_HDR hdr;
- uint16_t sdp_result;
+typedef struct {
+ BT_HDR hdr;
+ uint16_t sdp_result;
} tBTA_DM_SDP_RESULT;
/* data type for BTA_DM_ACL_CHANGE_EVT */
-typedef struct
-{
- BT_HDR hdr;
- tBTM_BL_EVENT event;
- uint8_t busy_level;
- uint8_t busy_level_flags;
- bool is_new;
- uint8_t new_role;
- BD_ADDR bd_addr;
- uint8_t hci_status;
+typedef struct {
+ BT_HDR hdr;
+ tBTM_BL_EVENT event;
+ uint8_t busy_level;
+ uint8_t busy_level_flags;
+ bool is_new;
+ uint8_t new_role;
+ BD_ADDR bd_addr;
+ uint8_t hci_status;
#if (BLE_INCLUDED == TRUE)
- uint16_t handle;
- tBT_TRANSPORT transport;
+ uint16_t handle;
+ tBT_TRANSPORT transport;
#endif
} tBTA_DM_ACL_CHANGE;
/* data type for BTA_DM_PM_BTM_STATUS_EVT */
-typedef struct
-{
-
- BT_HDR hdr;
- BD_ADDR bd_addr;
- tBTM_PM_STATUS status;
- uint16_t value;
- uint8_t hci_status;
+typedef struct {
+ BT_HDR hdr;
+ BD_ADDR bd_addr;
+ tBTM_PM_STATUS status;
+ uint16_t value;
+ uint8_t hci_status;
} tBTA_DM_PM_BTM_STATUS;
/* data type for BTA_DM_PM_TIMER_EVT */
-typedef struct
-{
- BT_HDR hdr;
- BD_ADDR bd_addr;
- tBTA_DM_PM_ACTION pm_request;
+typedef struct {
+ BT_HDR hdr;
+ BD_ADDR bd_addr;
+ tBTA_DM_PM_ACTION pm_request;
} tBTA_DM_PM_TIMER;
-
/* data type for BTA_DM_API_ADD_DEVICE_EVT */
-typedef struct
-{
- BT_HDR hdr;
- BD_ADDR bd_addr;
- DEV_CLASS dc;
- LINK_KEY link_key;
- tBTA_SERVICE_MASK tm;
- bool is_trusted;
- uint8_t key_type;
- tBTA_IO_CAP io_cap;
- bool link_key_known;
- bool dc_known;
- BD_NAME bd_name;
- uint8_t features[BTA_FEATURE_BYTES_PER_PAGE * (BTA_EXT_FEATURES_PAGE_MAX + 1)];
- uint8_t pin_length;
+typedef struct {
+ BT_HDR hdr;
+ BD_ADDR bd_addr;
+ DEV_CLASS dc;
+ LINK_KEY link_key;
+ tBTA_SERVICE_MASK tm;
+ bool is_trusted;
+ uint8_t key_type;
+ tBTA_IO_CAP io_cap;
+ bool link_key_known;
+ bool dc_known;
+ BD_NAME bd_name;
+ uint8_t
+ features[BTA_FEATURE_BYTES_PER_PAGE * (BTA_EXT_FEATURES_PAGE_MAX + 1)];
+ uint8_t pin_length;
} tBTA_DM_API_ADD_DEVICE;
/* data type for BTA_DM_API_REMOVE_ACL_EVT */
-typedef struct
-{
- BT_HDR hdr;
- BD_ADDR bd_addr;
+typedef struct {
+ BT_HDR hdr;
+ BD_ADDR bd_addr;
} tBTA_DM_API_REMOVE_DEVICE;
/* data type for BTA_DM_API_EXECUTE_CBACK_EVT */
-typedef struct
-{
- BT_HDR hdr;
- void * p_param;
- tBTA_DM_EXEC_CBACK *p_exec_cback;
+typedef struct {
+ BT_HDR hdr;
+ void* p_param;
+ tBTA_DM_EXEC_CBACK* p_exec_cback;
} tBTA_DM_API_EXECUTE_CBACK;
/* data type for tBTA_DM_API_SET_ENCRYPTION */
-typedef struct
-{
- BT_HDR hdr;
- tBTA_TRANSPORT transport;
- tBTA_DM_ENCRYPT_CBACK *p_callback;
- tBTA_DM_BLE_SEC_ACT sec_act;
- BD_ADDR bd_addr;
+typedef struct {
+ BT_HDR hdr;
+ tBTA_TRANSPORT transport;
+ tBTA_DM_ENCRYPT_CBACK* p_callback;
+ tBTA_DM_BLE_SEC_ACT sec_act;
+ BD_ADDR bd_addr;
} tBTA_DM_API_SET_ENCRYPTION;
#if (BLE_INCLUDED == TRUE)
-typedef struct
-{
- BT_HDR hdr;
- BD_ADDR bd_addr;
- tBTA_LE_KEY_VALUE blekey;
- tBTA_LE_KEY_TYPE key_type;
+typedef struct {
+ BT_HDR hdr;
+ BD_ADDR bd_addr;
+ tBTA_LE_KEY_VALUE blekey;
+ tBTA_LE_KEY_TYPE key_type;
-}tBTA_DM_API_ADD_BLEKEY;
+} tBTA_DM_API_ADD_BLEKEY;
-typedef struct
-{
- BT_HDR hdr;
- BD_ADDR bd_addr;
- tBT_DEVICE_TYPE dev_type ;
- tBLE_ADDR_TYPE addr_type;
+typedef struct {
+ BT_HDR hdr;
+ BD_ADDR bd_addr;
+ tBT_DEVICE_TYPE dev_type;
+ tBLE_ADDR_TYPE addr_type;
-}tBTA_DM_API_ADD_BLE_DEVICE;
+} tBTA_DM_API_ADD_BLE_DEVICE;
-typedef struct
-{
- BT_HDR hdr;
- BD_ADDR bd_addr;
- bool accept;
- uint32_t passkey;
-}tBTA_DM_API_PASSKEY_REPLY;
+typedef struct {
+ BT_HDR hdr;
+ BD_ADDR bd_addr;
+ bool accept;
+ uint32_t passkey;
+} tBTA_DM_API_PASSKEY_REPLY;
-typedef struct
-{
- BT_HDR hdr;
- BD_ADDR bd_addr;
- tBTA_DM_BLE_SEC_GRANT res;
-}tBTA_DM_API_BLE_SEC_GRANT;
+typedef struct {
+ BT_HDR hdr;
+ BD_ADDR bd_addr;
+ tBTA_DM_BLE_SEC_GRANT res;
+} tBTA_DM_API_BLE_SEC_GRANT;
-
-typedef struct
-{
- BT_HDR hdr;
- tBTA_DM_BLE_CONN_TYPE bg_conn_type;
- tBTA_DM_BLE_SEL_CBACK *p_select_cback;
-}tBTA_DM_API_BLE_SET_BG_CONN_TYPE;
+typedef struct {
+ BT_HDR hdr;
+ tBTA_DM_BLE_CONN_TYPE bg_conn_type;
+ tBTA_DM_BLE_SEL_CBACK* p_select_cback;
+} tBTA_DM_API_BLE_SET_BG_CONN_TYPE;
/* set prefered BLE connection parameters for a device */
-typedef struct
-{
- BT_HDR hdr;
- BD_ADDR peer_bda;
- uint16_t conn_int_min;
- uint16_t conn_int_max;
- uint16_t supervision_tout;
- uint16_t slave_latency;
+typedef struct {
+ BT_HDR hdr;
+ BD_ADDR peer_bda;
+ uint16_t conn_int_min;
+ uint16_t conn_int_max;
+ uint16_t supervision_tout;
+ uint16_t slave_latency;
-}tBTA_DM_API_BLE_CONN_PARAMS;
+} tBTA_DM_API_BLE_CONN_PARAMS;
-typedef struct
-{
- BT_HDR hdr;
- BD_ADDR peer_bda;
- bool privacy_enable;
+typedef struct {
+ BT_HDR hdr;
+ BD_ADDR peer_bda;
+ bool privacy_enable;
-}tBTA_DM_API_ENABLE_PRIVACY;
+} tBTA_DM_API_ENABLE_PRIVACY;
-typedef struct
-{
- BT_HDR hdr;
- bool privacy_enable;
-}tBTA_DM_API_LOCAL_PRIVACY;
+typedef struct {
+ BT_HDR hdr;
+ bool privacy_enable;
+} tBTA_DM_API_LOCAL_PRIVACY;
/* set scan parameter for BLE connections */
-typedef struct
-{
- BT_HDR hdr;
- tBTA_GATTC_IF client_if;
- uint32_t scan_int;
- uint32_t scan_window;
- tBLE_SCAN_MODE scan_mode;
- tBLE_SCAN_PARAM_SETUP_CBACK scan_param_setup_cback;
-}tBTA_DM_API_BLE_SCAN_PARAMS;
+typedef struct {
+ BT_HDR hdr;
+ tBTA_GATTC_IF client_if;
+ uint32_t scan_int;
+ uint32_t scan_window;
+ tBLE_SCAN_MODE scan_mode;
+ tBLE_SCAN_PARAM_SETUP_CBACK scan_param_setup_cback;
+} tBTA_DM_API_BLE_SCAN_PARAMS;
/* set scan parameter for BLE connections */
-typedef struct
-{
- BT_HDR hdr;
- uint16_t scan_int;
- uint16_t scan_window;
+typedef struct {
+ BT_HDR hdr;
+ uint16_t scan_int;
+ uint16_t scan_window;
} tBTA_DM_API_BLE_CONN_SCAN_PARAMS;
/* Data type for start/stop observe */
-typedef struct
-{
- BT_HDR hdr;
- bool start;
- uint16_t duration;
- tBTA_DM_SEARCH_CBACK * p_cback;
-}tBTA_DM_API_BLE_OBSERVE;
+typedef struct {
+ BT_HDR hdr;
+ bool start;
+ uint16_t duration;
+ tBTA_DM_SEARCH_CBACK* p_cback;
+} tBTA_DM_API_BLE_OBSERVE;
-typedef struct
-{
- BT_HDR hdr;
- BD_ADDR remote_bda;
- uint16_t tx_data_length;
-}tBTA_DM_API_BLE_SET_DATA_LENGTH;
+typedef struct {
+ BT_HDR hdr;
+ BD_ADDR remote_bda;
+ uint16_t tx_data_length;
+} tBTA_DM_API_BLE_SET_DATA_LENGTH;
/* set adv parameter for BLE advertising */
-typedef struct
-{
- BT_HDR hdr;
- bool enable;
+typedef struct {
+ BT_HDR hdr;
+ bool enable;
-}tBTA_DM_API_BLE_FEATURE;
+} tBTA_DM_API_BLE_FEATURE;
/* adv data structure */
-typedef struct
-{
- BT_HDR hdr;
- uint8_t batch_scan_full_max;
- uint8_t batch_scan_trunc_max;
- uint8_t batch_scan_notify_threshold;
- tBTA_BLE_SCAN_SETUP_CBACK *p_setup_cback;
- tBTA_BLE_SCAN_THRESHOLD_CBACK *p_thres_cback;
- tBTA_BLE_SCAN_REP_CBACK *p_read_rep_cback;
- tBTA_DM_BLE_REF_VALUE ref_value;
+typedef struct {
+ BT_HDR hdr;
+ uint8_t batch_scan_full_max;
+ uint8_t batch_scan_trunc_max;
+ uint8_t batch_scan_notify_threshold;
+ tBTA_BLE_SCAN_SETUP_CBACK* p_setup_cback;
+ tBTA_BLE_SCAN_THRESHOLD_CBACK* p_thres_cback;
+ tBTA_BLE_SCAN_REP_CBACK* p_read_rep_cback;
+ tBTA_DM_BLE_REF_VALUE ref_value;
} tBTA_DM_API_SET_STORAGE_CONFIG;
-typedef struct
-{
- BT_HDR hdr;
- tBTA_BLE_BATCH_SCAN_MODE scan_mode;
- uint32_t scan_int;
- uint32_t scan_window;
- tBTA_BLE_DISCARD_RULE discard_rule;
- tBLE_ADDR_TYPE addr_type;
- tBTA_DM_BLE_REF_VALUE ref_value;
+typedef struct {
+ BT_HDR hdr;
+ tBTA_BLE_BATCH_SCAN_MODE scan_mode;
+ uint32_t scan_int;
+ uint32_t scan_window;
+ tBTA_BLE_DISCARD_RULE discard_rule;
+ tBLE_ADDR_TYPE addr_type;
+ tBTA_DM_BLE_REF_VALUE ref_value;
} tBTA_DM_API_ENABLE_SCAN;
-typedef struct
-{
- BT_HDR hdr;
- tBTA_DM_BLE_REF_VALUE ref_value;
+typedef struct {
+ BT_HDR hdr;
+ tBTA_DM_BLE_REF_VALUE ref_value;
} tBTA_DM_API_DISABLE_SCAN;
-typedef struct
-{
- BT_HDR hdr;
- tBTA_BLE_BATCH_SCAN_MODE scan_type;
- tBTA_DM_BLE_REF_VALUE ref_value;
+typedef struct {
+ BT_HDR hdr;
+ tBTA_BLE_BATCH_SCAN_MODE scan_type;
+ tBTA_DM_BLE_REF_VALUE ref_value;
} tBTA_DM_API_READ_SCAN_REPORTS;
-typedef struct
-{
- BT_HDR hdr;
- tBTA_DM_BLE_REF_VALUE ref_value;
- tBTA_BLE_TRACK_ADV_CBACK *p_track_adv_cback;
+typedef struct {
+ BT_HDR hdr;
+ tBTA_DM_BLE_REF_VALUE ref_value;
+ tBTA_BLE_TRACK_ADV_CBACK* p_track_adv_cback;
} tBTA_DM_API_TRACK_ADVERTISER;
-typedef struct
-{
- BT_HDR hdr;
- tBTA_BLE_ENERGY_INFO_CBACK *p_energy_info_cback;
+typedef struct {
+ BT_HDR hdr;
+ tBTA_BLE_ENERGY_INFO_CBACK* p_energy_info_cback;
} tBTA_DM_API_ENERGY_INFO;
#endif /* BLE_INCLUDED */
/* data type for BTA_DM_API_REMOVE_ACL_EVT */
-typedef struct
-{
- BT_HDR hdr;
- BD_ADDR bd_addr;
- bool remove_dev;
- tBTA_TRANSPORT transport;
+typedef struct {
+ BT_HDR hdr;
+ BD_ADDR bd_addr;
+ bool remove_dev;
+ tBTA_TRANSPORT transport;
-}tBTA_DM_API_REMOVE_ACL;
+} tBTA_DM_API_REMOVE_ACL;
/* data type for BTA_DM_API_REMOVE_ALL_ACL_EVT */
-typedef struct
-{
- BT_HDR hdr;
- tBTA_DM_LINK_TYPE link_type;
+typedef struct {
+ BT_HDR hdr;
+ tBTA_DM_LINK_TYPE link_type;
} tBTA_DM_API_REMOVE_ALL_ACL;
-typedef struct
-{
- BT_HDR hdr;
- BD_ADDR bd_addr;
- uint16_t min_int;
- uint16_t max_int;
- uint16_t latency;
- uint16_t timeout;
-}tBTA_DM_API_UPDATE_CONN_PARAM;
+typedef struct {
+ BT_HDR hdr;
+ BD_ADDR bd_addr;
+ uint16_t min_int;
+ uint16_t max_int;
+ uint16_t latency;
+ uint16_t timeout;
+} tBTA_DM_API_UPDATE_CONN_PARAM;
#if (BLE_ANDROID_CONTROLLER_SCAN_FILTER == TRUE)
-typedef struct
-{
- BT_HDR hdr;
- tBTA_DM_BLE_SCAN_COND_OP action;
- tBTA_DM_BLE_PF_COND_TYPE cond_type;
- tBTA_DM_BLE_PF_FILT_INDEX filt_index;
- tBTA_DM_BLE_PF_COND_PARAM *p_cond_param;
- tBTA_DM_BLE_PF_CFG_CBACK *p_filt_cfg_cback;
- tBTA_DM_BLE_REF_VALUE ref_value;
-}tBTA_DM_API_CFG_FILTER_COND;
+typedef struct {
+ BT_HDR hdr;
+ tBTA_DM_BLE_SCAN_COND_OP action;
+ tBTA_DM_BLE_PF_COND_TYPE cond_type;
+ tBTA_DM_BLE_PF_FILT_INDEX filt_index;
+ tBTA_DM_BLE_PF_COND_PARAM* p_cond_param;
+ tBTA_DM_BLE_PF_CFG_CBACK* p_filt_cfg_cback;
+ tBTA_DM_BLE_REF_VALUE ref_value;
+} tBTA_DM_API_CFG_FILTER_COND;
-typedef struct
-{
- BT_HDR hdr;
- uint8_t action;
- tBTA_DM_BLE_PF_STATUS_CBACK *p_filt_status_cback;
- tBTA_DM_BLE_REF_VALUE ref_value;
-}tBTA_DM_API_ENABLE_SCAN_FILTER;
+typedef struct {
+ BT_HDR hdr;
+ uint8_t action;
+ tBTA_DM_BLE_PF_STATUS_CBACK* p_filt_status_cback;
+ tBTA_DM_BLE_REF_VALUE ref_value;
+} tBTA_DM_API_ENABLE_SCAN_FILTER;
-typedef struct
-{
- BT_HDR hdr;
- uint8_t action;
- tBTA_DM_BLE_PF_FILT_INDEX filt_index;
- tBTA_DM_BLE_PF_FILT_PARAMS filt_params;
- tBLE_BD_ADDR *p_target;
- tBTA_DM_BLE_PF_PARAM_CBACK *p_filt_param_cback;
- tBTA_DM_BLE_REF_VALUE ref_value;
-}tBTA_DM_API_SCAN_FILTER_PARAM_SETUP;
+typedef struct {
+ BT_HDR hdr;
+ uint8_t action;
+ tBTA_DM_BLE_PF_FILT_INDEX filt_index;
+ tBTA_DM_BLE_PF_FILT_PARAMS filt_params;
+ tBLE_BD_ADDR* p_target;
+ tBTA_DM_BLE_PF_PARAM_CBACK* p_filt_param_cback;
+ tBTA_DM_BLE_REF_VALUE ref_value;
+} tBTA_DM_API_SCAN_FILTER_PARAM_SETUP;
#endif
/* union of all data types */
-typedef union
-{
- /* GKI event buffer header */
- BT_HDR hdr;
- tBTA_DM_API_ENABLE enable;
+typedef union {
+ /* GKI event buffer header */
+ BT_HDR hdr;
+ tBTA_DM_API_ENABLE enable;
- tBTA_DM_API_SET_NAME set_name;
+ tBTA_DM_API_SET_NAME set_name;
- tBTA_DM_API_SET_VISIBILITY set_visibility;
+ tBTA_DM_API_SET_VISIBILITY set_visibility;
- tBTA_DM_API_ADD_DEVICE add_dev;
+ tBTA_DM_API_ADD_DEVICE add_dev;
- tBTA_DM_API_REMOVE_DEVICE remove_dev;
+ tBTA_DM_API_REMOVE_DEVICE remove_dev;
- tBTA_DM_API_SEARCH search;
+ tBTA_DM_API_SEARCH search;
- tBTA_DM_API_DISCOVER discover;
+ tBTA_DM_API_DISCOVER discover;
- tBTA_DM_API_BOND bond;
+ tBTA_DM_API_BOND bond;
- tBTA_DM_API_BOND_CANCEL bond_cancel;
+ tBTA_DM_API_BOND_CANCEL bond_cancel;
- tBTA_DM_API_PIN_REPLY pin_reply;
+ tBTA_DM_API_PIN_REPLY pin_reply;
- tBTA_DM_API_LOC_OOB loc_oob;
- tBTA_DM_API_CONFIRM confirm;
- tBTA_DM_CI_IO_REQ ci_io_req;
- tBTA_DM_CI_RMT_OOB ci_rmt_oob;
+ tBTA_DM_API_LOC_OOB loc_oob;
+ tBTA_DM_API_CONFIRM confirm;
+ tBTA_DM_CI_IO_REQ ci_io_req;
+ tBTA_DM_CI_RMT_OOB ci_rmt_oob;
- tBTA_DM_REM_NAME rem_name;
+ tBTA_DM_REM_NAME rem_name;
- tBTA_DM_DISC_RESULT disc_result;
+ tBTA_DM_DISC_RESULT disc_result;
- tBTA_DM_INQUIRY_CMPL inq_cmpl;
+ tBTA_DM_INQUIRY_CMPL inq_cmpl;
- tBTA_DM_SDP_RESULT sdp_event;
+ tBTA_DM_SDP_RESULT sdp_event;
- tBTA_DM_ACL_CHANGE acl_change;
+ tBTA_DM_ACL_CHANGE acl_change;
- tBTA_DM_PM_BTM_STATUS pm_status;
+ tBTA_DM_PM_BTM_STATUS pm_status;
- tBTA_DM_PM_TIMER pm_timer;
+ tBTA_DM_PM_TIMER pm_timer;
- tBTA_DM_API_DI_DISC di_disc;
+ tBTA_DM_API_DI_DISC di_disc;
- tBTA_DM_API_EXECUTE_CBACK exec_cback;
+ tBTA_DM_API_EXECUTE_CBACK exec_cback;
- tBTA_DM_API_SET_ENCRYPTION set_encryption;
+ tBTA_DM_API_SET_ENCRYPTION set_encryption;
#if (BLE_INCLUDED == TRUE)
- tBTA_DM_API_ADD_BLEKEY add_ble_key;
- tBTA_DM_API_ADD_BLE_DEVICE add_ble_device;
- tBTA_DM_API_PASSKEY_REPLY ble_passkey_reply;
- tBTA_DM_API_BLE_SEC_GRANT ble_sec_grant;
- tBTA_DM_API_BLE_SET_BG_CONN_TYPE ble_set_bd_conn_type;
- tBTA_DM_API_BLE_CONN_PARAMS ble_set_conn_params;
- tBTA_DM_API_BLE_CONN_SCAN_PARAMS ble_set_conn_scan_params;
- tBTA_DM_API_BLE_SCAN_PARAMS ble_set_scan_params;
- tBTA_DM_API_BLE_OBSERVE ble_observe;
- tBTA_DM_API_ENABLE_PRIVACY ble_remote_privacy;
- tBTA_DM_API_LOCAL_PRIVACY ble_local_privacy;
+ tBTA_DM_API_ADD_BLEKEY add_ble_key;
+ tBTA_DM_API_ADD_BLE_DEVICE add_ble_device;
+ tBTA_DM_API_PASSKEY_REPLY ble_passkey_reply;
+ tBTA_DM_API_BLE_SEC_GRANT ble_sec_grant;
+ tBTA_DM_API_BLE_SET_BG_CONN_TYPE ble_set_bd_conn_type;
+ tBTA_DM_API_BLE_CONN_PARAMS ble_set_conn_params;
+ tBTA_DM_API_BLE_CONN_SCAN_PARAMS ble_set_conn_scan_params;
+ tBTA_DM_API_BLE_SCAN_PARAMS ble_set_scan_params;
+ tBTA_DM_API_BLE_OBSERVE ble_observe;
+ tBTA_DM_API_ENABLE_PRIVACY ble_remote_privacy;
+ tBTA_DM_API_LOCAL_PRIVACY ble_local_privacy;
#if (BLE_ANDROID_CONTROLLER_SCAN_FILTER == TRUE)
- tBTA_DM_API_SCAN_FILTER_PARAM_SETUP ble_scan_filt_param_setup;
- tBTA_DM_API_CFG_FILTER_COND ble_cfg_filter_cond;
- tBTA_DM_API_ENABLE_SCAN_FILTER ble_enable_scan_filt;
+ tBTA_DM_API_SCAN_FILTER_PARAM_SETUP ble_scan_filt_param_setup;
+ tBTA_DM_API_CFG_FILTER_COND ble_cfg_filter_cond;
+ tBTA_DM_API_ENABLE_SCAN_FILTER ble_enable_scan_filt;
#endif
- tBTA_DM_API_UPDATE_CONN_PARAM ble_update_conn_params;
- tBTA_DM_API_BLE_SET_DATA_LENGTH ble_set_data_length;
+ tBTA_DM_API_UPDATE_CONN_PARAM ble_update_conn_params;
+ tBTA_DM_API_BLE_SET_DATA_LENGTH ble_set_data_length;
- tBTA_DM_API_SET_STORAGE_CONFIG ble_set_storage;
- tBTA_DM_API_ENABLE_SCAN ble_enable_scan;
- tBTA_DM_API_READ_SCAN_REPORTS ble_read_reports;
- tBTA_DM_API_DISABLE_SCAN ble_disable_scan;
- tBTA_DM_API_TRACK_ADVERTISER ble_track_advert;
- tBTA_DM_API_ENERGY_INFO ble_energy_info;
+ tBTA_DM_API_SET_STORAGE_CONFIG ble_set_storage;
+ tBTA_DM_API_ENABLE_SCAN ble_enable_scan;
+ tBTA_DM_API_READ_SCAN_REPORTS ble_read_reports;
+ tBTA_DM_API_DISABLE_SCAN ble_disable_scan;
+ tBTA_DM_API_TRACK_ADVERTISER ble_track_advert;
+ tBTA_DM_API_ENERGY_INFO ble_energy_info;
#endif
- tBTA_DM_API_REMOVE_ACL remove_acl;
- tBTA_DM_API_REMOVE_ALL_ACL remove_all_acl;
+ tBTA_DM_API_REMOVE_ACL remove_acl;
+ tBTA_DM_API_REMOVE_ALL_ACL remove_all_acl;
} tBTA_DM_MSG;
-
#define BTA_DM_NUM_PEER_DEVICE 7
-#define BTA_DM_NOT_CONNECTED 0
-#define BTA_DM_CONNECTED 1
-#define BTA_DM_UNPAIRING 2
+#define BTA_DM_NOT_CONNECTED 0
+#define BTA_DM_CONNECTED 1
+#define BTA_DM_UNPAIRING 2
typedef uint8_t tBTA_DM_CONN_STATE;
-
-#define BTA_DM_DI_NONE 0x00 /* nothing special */
-#define BTA_DM_DI_USE_SSR 0x10 /* set this bit if ssr is supported for this link */
-#define BTA_DM_DI_AV_ACTIVE 0x20 /* set this bit if AV is active for this link */
-#define BTA_DM_DI_SET_SNIFF 0x01 /* set this bit if call BTM_SetPowerMode(sniff) */
-#define BTA_DM_DI_INT_SNIFF 0x02 /* set this bit if call BTM_SetPowerMode(sniff) & enter sniff mode */
-#define BTA_DM_DI_ACP_SNIFF 0x04 /* set this bit if peer init sniff */
+#define BTA_DM_DI_NONE 0x00 /* nothing special */
+#define BTA_DM_DI_USE_SSR \
+ 0x10 /* set this bit if ssr is supported for this link */
+#define BTA_DM_DI_AV_ACTIVE \
+ 0x20 /* set this bit if AV is active for this link */
+#define BTA_DM_DI_SET_SNIFF \
+ 0x01 /* set this bit if call BTM_SetPowerMode(sniff) */
+#define BTA_DM_DI_INT_SNIFF \
+ 0x02 /* set this bit if call BTM_SetPowerMode(sniff) & enter sniff mode */
+#define BTA_DM_DI_ACP_SNIFF 0x04 /* set this bit if peer init sniff */
typedef uint8_t tBTA_DM_DEV_INFO;
/* set power mode request type */
-#define BTA_DM_PM_RESTART 1
-#define BTA_DM_PM_NEW_REQ 2
-#define BTA_DM_PM_EXECUTE 3
-typedef uint8_t tBTA_DM_PM_REQ;
+#define BTA_DM_PM_RESTART 1
+#define BTA_DM_PM_NEW_REQ 2
+#define BTA_DM_PM_EXECUTE 3
+typedef uint8_t tBTA_DM_PM_REQ;
-typedef struct
-{
- BD_ADDR peer_bdaddr;
- uint16_t link_policy;
- tBTA_DM_CONN_STATE conn_state;
- tBTA_PREF_ROLES pref_role;
- bool in_use;
- tBTA_DM_DEV_INFO info;
- tBTA_DM_ENCRYPT_CBACK *p_encrypt_cback;
+typedef struct {
+ BD_ADDR peer_bdaddr;
+ uint16_t link_policy;
+ tBTA_DM_CONN_STATE conn_state;
+ tBTA_PREF_ROLES pref_role;
+ bool in_use;
+ tBTA_DM_DEV_INFO info;
+ tBTA_DM_ENCRYPT_CBACK* p_encrypt_cback;
#if (BTM_SSR_INCLUDED == TRUE)
- tBTM_PM_STATUS prev_low; /* previous low power mode used */
+ tBTM_PM_STATUS prev_low; /* previous low power mode used */
#endif
- tBTA_DM_PM_ACTION pm_mode_attempted;
- tBTA_DM_PM_ACTION pm_mode_failed;
- bool remove_dev_pending;
+ tBTA_DM_PM_ACTION pm_mode_attempted;
+ tBTA_DM_PM_ACTION pm_mode_failed;
+ bool remove_dev_pending;
#if (BLE_INCLUDED == TRUE)
- uint16_t conn_handle;
- tBT_TRANSPORT transport;
+ uint16_t conn_handle;
+ tBT_TRANSPORT transport;
#endif
} tBTA_DM_PEER_DEVICE;
-
-
/* structure to store list of
active connections */
-typedef struct
-{
- tBTA_DM_PEER_DEVICE peer_device[BTA_DM_NUM_PEER_DEVICE];
- uint8_t count;
+typedef struct {
+ tBTA_DM_PEER_DEVICE peer_device[BTA_DM_NUM_PEER_DEVICE];
+ uint8_t count;
#if (BLE_INCLUDED == TRUE)
- uint8_t le_count;
+ uint8_t le_count;
#endif
} tBTA_DM_ACTIVE_LINK;
-
-typedef struct
-{
- BD_ADDR peer_bdaddr;
- tBTA_SYS_ID id;
- uint8_t app_id;
- tBTA_SYS_CONN_STATUS state;
- bool new_request;
+typedef struct {
+ BD_ADDR peer_bdaddr;
+ tBTA_SYS_ID id;
+ uint8_t app_id;
+ tBTA_SYS_CONN_STATUS state;
+ bool new_request;
} tBTA_DM_SRVCS;
#ifndef BTA_DM_NUM_CONN_SRVS
-#define BTA_DM_NUM_CONN_SRVS 10
+#define BTA_DM_NUM_CONN_SRVS 10
#endif
-typedef struct
-{
+typedef struct {
+ uint8_t count;
+ tBTA_DM_SRVCS conn_srvc[BTA_DM_NUM_CONN_SRVS];
- uint8_t count;
- tBTA_DM_SRVCS conn_srvc[BTA_DM_NUM_CONN_SRVS];
+} tBTA_DM_CONNECTED_SRVCS;
-} tBTA_DM_CONNECTED_SRVCS;
-
-typedef struct
-{
-#define BTA_DM_PM_SNIFF_TIMER_IDX 0
-#define BTA_DM_PM_PARK_TIMER_IDX 1
+typedef struct {
+#define BTA_DM_PM_SNIFF_TIMER_IDX 0
+#define BTA_DM_PM_PARK_TIMER_IDX 1
#define BTA_DM_PM_SUSPEND_TIMER_IDX 2
-#define BTA_DM_PM_MODE_TIMER_MAX 3
- /*
- * Keep three different timers for PARK, SNIFF and SUSPEND if TBFC is
- * supported.
- */
- alarm_t * timer[BTA_DM_PM_MODE_TIMER_MAX];
+#define BTA_DM_PM_MODE_TIMER_MAX 3
+ /*
+ * Keep three different timers for PARK, SNIFF and SUSPEND if TBFC is
+ * supported.
+ */
+ alarm_t* timer[BTA_DM_PM_MODE_TIMER_MAX];
- uint8_t srvc_id[BTA_DM_PM_MODE_TIMER_MAX];
- uint8_t pm_action[BTA_DM_PM_MODE_TIMER_MAX];
- uint8_t active; /* number of active timer */
+ uint8_t srvc_id[BTA_DM_PM_MODE_TIMER_MAX];
+ uint8_t pm_action[BTA_DM_PM_MODE_TIMER_MAX];
+ uint8_t active; /* number of active timer */
- BD_ADDR peer_bdaddr;
- bool in_use;
+ BD_ADDR peer_bdaddr;
+ bool in_use;
} tBTA_PM_TIMER;
extern tBTA_DM_CONNECTED_SRVCS bta_dm_conn_srvcs;
@@ -789,310 +721,294 @@
#define BTA_DM_NUM_PM_TIMER 7
/* DM control block */
-typedef struct
-{
- bool is_bta_dm_active;
- tBTA_DM_ACTIVE_LINK device_list;
- tBTA_DM_SEC_CBACK *p_sec_cback;
+typedef struct {
+ bool is_bta_dm_active;
+ tBTA_DM_ACTIVE_LINK device_list;
+ tBTA_DM_SEC_CBACK* p_sec_cback;
#if (BLE_INCLUDED == TRUE)
- tBTA_BLE_SCAN_SETUP_CBACK *p_setup_cback;
- tBTA_DM_BLE_PF_CFG_CBACK *p_scan_filt_cfg_cback;
- tBTA_DM_BLE_PF_STATUS_CBACK *p_scan_filt_status_cback;
- tBTA_DM_BLE_PF_PARAM_CBACK *p_scan_filt_param_cback;
- tBTA_BLE_ENERGY_INFO_CBACK *p_energy_info_cback;
+ tBTA_BLE_SCAN_SETUP_CBACK* p_setup_cback;
+ tBTA_DM_BLE_PF_CFG_CBACK* p_scan_filt_cfg_cback;
+ tBTA_DM_BLE_PF_STATUS_CBACK* p_scan_filt_status_cback;
+ tBTA_DM_BLE_PF_PARAM_CBACK* p_scan_filt_param_cback;
+ tBTA_BLE_ENERGY_INFO_CBACK* p_energy_info_cback;
#endif
- uint16_t state;
- bool disabling;
- alarm_t *disable_timer;
- uint32_t wbt_sdp_handle; /* WIDCOMM Extensions SDP record handle */
- uint8_t wbt_scn; /* WIDCOMM Extensions SCN */
- uint8_t num_master_only;
- uint8_t pm_id;
- tBTA_PM_TIMER pm_timer[BTA_DM_NUM_PM_TIMER];
- uint32_t role_policy_mask; /* the bits set indicates the modules that wants to remove role switch from the default link policy */
- uint16_t cur_policy; /* current default link policy */
- uint16_t rs_event; /* the event waiting for role switch */
- uint8_t cur_av_count; /* current AV connecions */
- bool disable_pair_mode; /* disable pair mode or not */
- bool conn_paired_only; /* allow connectable to paired device only or not */
- tBTA_DM_API_SEARCH search_msg;
- uint16_t page_scan_interval;
- uint16_t page_scan_window;
- uint16_t inquiry_scan_interval;
- uint16_t inquiry_scan_window;
+ uint16_t state;
+ bool disabling;
+ alarm_t* disable_timer;
+ uint32_t wbt_sdp_handle; /* WIDCOMM Extensions SDP record handle */
+ uint8_t wbt_scn; /* WIDCOMM Extensions SCN */
+ uint8_t num_master_only;
+ uint8_t pm_id;
+ tBTA_PM_TIMER pm_timer[BTA_DM_NUM_PM_TIMER];
+ uint32_t
+ role_policy_mask; /* the bits set indicates the modules that wants to
+ remove role switch from the default link policy */
+ uint16_t cur_policy; /* current default link policy */
+ uint16_t rs_event; /* the event waiting for role switch */
+ uint8_t cur_av_count; /* current AV connecions */
+ bool disable_pair_mode; /* disable pair mode or not */
+ bool conn_paired_only; /* allow connectable to paired device only or not */
+ tBTA_DM_API_SEARCH search_msg;
+ uint16_t page_scan_interval;
+ uint16_t page_scan_window;
+ uint16_t inquiry_scan_interval;
+ uint16_t inquiry_scan_window;
- /* Storage for pin code request parameters */
- BD_ADDR pin_bd_addr;
- DEV_CLASS pin_dev_class;
- tBTA_DM_SEC_EVT pin_evt;
- uint32_t num_val; /* the numeric value for comparison. If just_works, do not show this number to UI */
- bool just_works; /* true, if "Just Works" association model */
+ /* Storage for pin code request parameters */
+ BD_ADDR pin_bd_addr;
+ DEV_CLASS pin_dev_class;
+ tBTA_DM_SEC_EVT pin_evt;
+ uint32_t num_val; /* the numeric value for comparison. If just_works, do not
+ show this number to UI */
+ bool just_works; /* true, if "Just Works" association model */
#if (BTA_EIR_CANNED_UUID_LIST != TRUE)
- /* store UUID list for EIR */
- uint32_t eir_uuid[BTM_EIR_SERVICE_ARRAY_SIZE];
+ /* store UUID list for EIR */
+ uint32_t eir_uuid[BTM_EIR_SERVICE_ARRAY_SIZE];
#if (BTA_EIR_SERVER_NUM_CUSTOM_UUID > 0)
- tBT_UUID custom_uuid[BTA_EIR_SERVER_NUM_CUSTOM_UUID];
+ tBT_UUID custom_uuid[BTA_EIR_SERVER_NUM_CUSTOM_UUID];
#endif
#endif
-
- tBTA_DM_ENCRYPT_CBACK *p_encrypt_cback;
- alarm_t *switch_delay_timer;
+ tBTA_DM_ENCRYPT_CBACK* p_encrypt_cback;
+ alarm_t* switch_delay_timer;
} tBTA_DM_CB;
/* DM search control block */
-typedef struct
-{
-
- tBTA_DM_SEARCH_CBACK * p_search_cback;
- tBTM_INQ_INFO * p_btm_inq_info;
- tBTA_SERVICE_MASK services;
- tBTA_SERVICE_MASK services_to_search;
- tBTA_SERVICE_MASK services_found;
- tSDP_DISCOVERY_DB * p_sdp_db;
- uint16_t state;
- BD_ADDR peer_bdaddr;
- bool name_discover_done;
- BD_NAME peer_name;
- alarm_t * search_timer;
- uint8_t service_index;
- tBTA_DM_MSG * p_search_queue; /* search or discover commands during search cancel stored here */
- bool wait_disc;
- bool sdp_results;
- tSDP_UUID uuid;
- uint8_t peer_scn;
- bool sdp_search;
- bool cancel_pending; /* inquiry cancel is pending */
- tBTA_TRANSPORT transport;
+typedef struct {
+ tBTA_DM_SEARCH_CBACK* p_search_cback;
+ tBTM_INQ_INFO* p_btm_inq_info;
+ tBTA_SERVICE_MASK services;
+ tBTA_SERVICE_MASK services_to_search;
+ tBTA_SERVICE_MASK services_found;
+ tSDP_DISCOVERY_DB* p_sdp_db;
+ uint16_t state;
+ BD_ADDR peer_bdaddr;
+ bool name_discover_done;
+ BD_NAME peer_name;
+ alarm_t* search_timer;
+ uint8_t service_index;
+ tBTA_DM_MSG* p_search_queue; /* search or discover commands during search
+ cancel stored here */
+ bool wait_disc;
+ bool sdp_results;
+ tSDP_UUID uuid;
+ uint8_t peer_scn;
+ bool sdp_search;
+ bool cancel_pending; /* inquiry cancel is pending */
+ tBTA_TRANSPORT transport;
#if (BLE_INCLUDED == TRUE)
- tBTA_DM_SEARCH_CBACK * p_scan_cback;
+ tBTA_DM_SEARCH_CBACK* p_scan_cback;
#if (BTA_GATT_INCLUDED == TRUE)
- tBTA_GATTC_IF client_if;
- uint8_t num_uuid;
- tBT_UUID *p_srvc_uuid;
- uint8_t uuid_to_search;
- bool gatt_disc_active;
- uint16_t conn_id;
- uint8_t * p_ble_rawdata;
- uint32_t ble_raw_size;
- uint32_t ble_raw_used;
- alarm_t * gatt_close_timer; /* GATT channel close delay timer */
- BD_ADDR pending_close_bda; /* pending GATT channel remote device address */
+ tBTA_GATTC_IF client_if;
+ uint8_t num_uuid;
+ tBT_UUID* p_srvc_uuid;
+ uint8_t uuid_to_search;
+ bool gatt_disc_active;
+ uint16_t conn_id;
+ uint8_t* p_ble_rawdata;
+ uint32_t ble_raw_size;
+ uint32_t ble_raw_used;
+ alarm_t* gatt_close_timer; /* GATT channel close delay timer */
+ BD_ADDR pending_close_bda; /* pending GATT channel remote device address */
#endif
#endif
-
} tBTA_DM_SEARCH_CB;
/* DI control block */
-typedef struct
-{
- tSDP_DISCOVERY_DB * p_di_db; /* pointer to the DI discovery database */
- uint8_t di_num; /* total local DI record number */
- uint32_t di_handle[BTA_DI_NUM_MAX]; /* local DI record handle, the first one is primary record */
-}tBTA_DM_DI_CB;
+typedef struct {
+ tSDP_DISCOVERY_DB* p_di_db; /* pointer to the DI discovery database */
+ uint8_t di_num; /* total local DI record number */
+ uint32_t di_handle[BTA_DI_NUM_MAX]; /* local DI record handle, the first one
+ is primary record */
+} tBTA_DM_DI_CB;
/* DM search state */
-enum
-{
+enum {
- BTA_DM_SEARCH_IDLE,
- BTA_DM_SEARCH_ACTIVE,
- BTA_DM_SEARCH_CANCELLING,
- BTA_DM_DISCOVER_ACTIVE
+ BTA_DM_SEARCH_IDLE,
+ BTA_DM_SEARCH_ACTIVE,
+ BTA_DM_SEARCH_CANCELLING,
+ BTA_DM_DISCOVER_ACTIVE
};
-
-
-typedef struct
-{
- DEV_CLASS dev_class; /* local device class */
- uint16_t policy_settings; /* link policy setting hold, sniff, park, MS switch */
- uint16_t page_timeout; /* timeout for page in slots */
- uint16_t link_timeout; /* link supervision timeout in slots */
- bool avoid_scatter; /* true to avoid scatternet when av is streaming (be the master) */
+typedef struct {
+ DEV_CLASS dev_class; /* local device class */
+ uint16_t
+ policy_settings; /* link policy setting hold, sniff, park, MS switch */
+ uint16_t page_timeout; /* timeout for page in slots */
+ uint16_t link_timeout; /* link supervision timeout in slots */
+ bool avoid_scatter; /* true to avoid scatternet when av is streaming (be the
+ master) */
} tBTA_DM_CFG;
extern const uint32_t bta_service_id_to_btm_srv_id_lkup_tbl[];
+typedef struct {
+ uint8_t id;
+ uint8_t app_id;
+ uint8_t cfg;
-typedef struct
-{
- uint8_t id;
- uint8_t app_id;
- uint8_t cfg;
+} tBTA_DM_RM;
-} tBTA_DM_RM ;
+extern tBTA_DM_CFG* p_bta_dm_cfg;
+extern tBTA_DM_RM* p_bta_dm_rm_cfg;
-extern tBTA_DM_CFG *p_bta_dm_cfg;
-extern tBTA_DM_RM *p_bta_dm_rm_cfg;
-
-typedef struct
-{
-
- uint8_t id;
- uint8_t app_id;
- uint8_t spec_idx; /* index of spec table to use */
+typedef struct {
+ uint8_t id;
+ uint8_t app_id;
+ uint8_t spec_idx; /* index of spec table to use */
} tBTA_DM_PM_CFG;
-
-typedef struct
-{
-
- tBTA_DM_PM_ACTION power_mode;
- uint16_t timeout;
+typedef struct {
+ tBTA_DM_PM_ACTION power_mode;
+ uint16_t timeout;
} tBTA_DM_PM_ACTN;
-typedef struct
-{
-
- uint8_t allow_mask; /* mask of sniff/hold/park modes to allow */
+typedef struct {
+ uint8_t allow_mask; /* mask of sniff/hold/park modes to allow */
#if (BTM_SSR_INCLUDED == TRUE)
- uint8_t ssr; /* set SSR on conn open/unpark */
+ uint8_t ssr; /* set SSR on conn open/unpark */
#endif
- tBTA_DM_PM_ACTN actn_tbl [BTA_DM_PM_NUM_EVTS][2];
+ tBTA_DM_PM_ACTN actn_tbl[BTA_DM_PM_NUM_EVTS][2];
} tBTA_DM_PM_SPEC;
-typedef struct
-{
- uint16_t max_lat;
- uint16_t min_rmt_to;
- uint16_t min_loc_to;
+typedef struct {
+ uint16_t max_lat;
+ uint16_t min_rmt_to;
+ uint16_t min_loc_to;
} tBTA_DM_SSR_SPEC;
-typedef struct
-{
- uint16_t manufacturer;
- uint16_t lmp_sub_version;
- uint8_t lmp_version;
-}tBTA_DM_LMP_VER_INFO;
+typedef struct {
+ uint16_t manufacturer;
+ uint16_t lmp_sub_version;
+ uint8_t lmp_version;
+} tBTA_DM_LMP_VER_INFO;
-extern const uint16_t bta_service_id_to_uuid_lkup_tbl [];
+extern const uint16_t bta_service_id_to_uuid_lkup_tbl[];
-extern tBTA_DM_PM_CFG *p_bta_dm_pm_cfg;
-extern tBTA_DM_PM_SPEC *p_bta_dm_pm_spec;
-extern tBTM_PM_PWR_MD *p_bta_dm_pm_md;
+extern tBTA_DM_PM_CFG* p_bta_dm_pm_cfg;
+extern tBTA_DM_PM_SPEC* p_bta_dm_pm_spec;
+extern tBTM_PM_PWR_MD* p_bta_dm_pm_md;
#if (BTM_SSR_INCLUDED == TRUE)
-extern tBTA_DM_SSR_SPEC *p_bta_dm_ssr_spec;
+extern tBTA_DM_SSR_SPEC* p_bta_dm_ssr_spec;
#endif
/* update dynamic BRCM Aware EIR data */
extern const tBTA_DM_EIR_CONF bta_dm_eir_cfg;
-extern tBTA_DM_EIR_CONF *p_bta_dm_eir_cfg;
+extern tBTA_DM_EIR_CONF* p_bta_dm_eir_cfg;
/* DM control block */
-extern tBTA_DM_CB bta_dm_cb;
+extern tBTA_DM_CB bta_dm_cb;
/* DM search control block */
-extern tBTA_DM_SEARCH_CB bta_dm_search_cb;
+extern tBTA_DM_SEARCH_CB bta_dm_search_cb;
/* DI control block */
-extern tBTA_DM_DI_CB bta_dm_di_cb;
+extern tBTA_DM_DI_CB bta_dm_di_cb;
-extern bool bta_dm_sm_execute(BT_HDR *p_msg);
-extern void bta_dm_sm_disable( void );
-extern bool bta_dm_search_sm_execute(BT_HDR *p_msg);
-extern void bta_dm_search_sm_disable( void );
+extern bool bta_dm_sm_execute(BT_HDR* p_msg);
+extern void bta_dm_sm_disable(void);
+extern bool bta_dm_search_sm_execute(BT_HDR* p_msg);
+extern void bta_dm_search_sm_disable(void);
-
-extern void bta_dm_enable (tBTA_DM_MSG *p_data);
-extern void bta_dm_disable (tBTA_DM_MSG *p_data);
+extern void bta_dm_enable(tBTA_DM_MSG* p_data);
+extern void bta_dm_disable(tBTA_DM_MSG* p_data);
extern void bta_dm_init_cb(void);
-extern void bta_dm_set_dev_name (tBTA_DM_MSG *p_data);
-extern void bta_dm_set_visibility (tBTA_DM_MSG *p_data);
+extern void bta_dm_set_dev_name(tBTA_DM_MSG* p_data);
+extern void bta_dm_set_visibility(tBTA_DM_MSG* p_data);
-extern void bta_dm_set_scan_config(tBTA_DM_MSG *p_data);
-extern void bta_dm_vendor_spec_command(tBTA_DM_MSG *p_data);
-extern void bta_dm_bond (tBTA_DM_MSG *p_data);
-extern void bta_dm_bond_cancel (tBTA_DM_MSG *p_data);
-extern void bta_dm_pin_reply (tBTA_DM_MSG *p_data);
-extern void bta_dm_acl_change(tBTA_DM_MSG *p_data);
-extern void bta_dm_add_device (tBTA_DM_MSG *p_data);
-extern void bta_dm_remove_device (tBTA_DM_MSG *p_data);
-extern void bta_dm_close_acl(tBTA_DM_MSG *p_data);
+extern void bta_dm_set_scan_config(tBTA_DM_MSG* p_data);
+extern void bta_dm_vendor_spec_command(tBTA_DM_MSG* p_data);
+extern void bta_dm_bond(tBTA_DM_MSG* p_data);
+extern void bta_dm_bond_cancel(tBTA_DM_MSG* p_data);
+extern void bta_dm_pin_reply(tBTA_DM_MSG* p_data);
+extern void bta_dm_acl_change(tBTA_DM_MSG* p_data);
+extern void bta_dm_add_device(tBTA_DM_MSG* p_data);
+extern void bta_dm_remove_device(tBTA_DM_MSG* p_data);
+extern void bta_dm_close_acl(tBTA_DM_MSG* p_data);
-
-extern void bta_dm_pm_btm_status(tBTA_DM_MSG *p_data);
-extern void bta_dm_pm_timer(tBTA_DM_MSG *p_data);
-extern void bta_dm_add_ampkey (tBTA_DM_MSG *p_data);
+extern void bta_dm_pm_btm_status(tBTA_DM_MSG* p_data);
+extern void bta_dm_pm_timer(tBTA_DM_MSG* p_data);
+extern void bta_dm_add_ampkey(tBTA_DM_MSG* p_data);
#if (BLE_INCLUDED == TRUE)
-extern void bta_dm_add_blekey (tBTA_DM_MSG *p_data);
-extern void bta_dm_add_ble_device (tBTA_DM_MSG *p_data);
-extern void bta_dm_ble_passkey_reply (tBTA_DM_MSG *p_data);
-extern void bta_dm_ble_confirm_reply (tBTA_DM_MSG *p_data);
-extern void bta_dm_security_grant (tBTA_DM_MSG *p_data);
-extern void bta_dm_ble_set_bg_conn_type (tBTA_DM_MSG *p_data);
-extern void bta_dm_ble_set_conn_params (tBTA_DM_MSG *p_data);
-extern void bta_dm_ble_set_scan_params(tBTA_DM_MSG *p_data);
-extern void bta_dm_ble_set_conn_scan_params (tBTA_DM_MSG *p_data);
-extern void bta_dm_close_gatt_conn(tBTA_DM_MSG *p_data);
-extern void bta_dm_ble_observe (tBTA_DM_MSG *p_data);
-extern void bta_dm_ble_update_conn_params (tBTA_DM_MSG *p_data);
-extern void bta_dm_ble_config_local_privacy (tBTA_DM_MSG *p_data);
-extern void bta_dm_ble_set_adv_params(uint16_t adv_int_min, uint16_t adv_int_max,
- tBLE_BD_ADDR *p_dir_bda);
+extern void bta_dm_add_blekey(tBTA_DM_MSG* p_data);
+extern void bta_dm_add_ble_device(tBTA_DM_MSG* p_data);
+extern void bta_dm_ble_passkey_reply(tBTA_DM_MSG* p_data);
+extern void bta_dm_ble_confirm_reply(tBTA_DM_MSG* p_data);
+extern void bta_dm_security_grant(tBTA_DM_MSG* p_data);
+extern void bta_dm_ble_set_bg_conn_type(tBTA_DM_MSG* p_data);
+extern void bta_dm_ble_set_conn_params(tBTA_DM_MSG* p_data);
+extern void bta_dm_ble_set_scan_params(tBTA_DM_MSG* p_data);
+extern void bta_dm_ble_set_conn_scan_params(tBTA_DM_MSG* p_data);
+extern void bta_dm_close_gatt_conn(tBTA_DM_MSG* p_data);
+extern void bta_dm_ble_observe(tBTA_DM_MSG* p_data);
+extern void bta_dm_ble_update_conn_params(tBTA_DM_MSG* p_data);
+extern void bta_dm_ble_config_local_privacy(tBTA_DM_MSG* p_data);
+extern void bta_dm_ble_set_adv_params(uint16_t adv_int_min,
+ uint16_t adv_int_max,
+ tBLE_BD_ADDR* p_dir_bda);
-extern void bta_dm_ble_set_data_length(tBTA_DM_MSG *p_data);
+extern void bta_dm_ble_set_data_length(tBTA_DM_MSG* p_data);
#if (BLE_ANDROID_CONTROLLER_SCAN_FILTER == TRUE)
-extern void bta_dm_cfg_filter_cond (tBTA_DM_MSG *p_data);
-extern void bta_dm_scan_filter_param_setup (tBTA_DM_MSG *p_data);
-extern void bta_dm_enable_scan_filter(tBTA_DM_MSG *p_data);
+extern void bta_dm_cfg_filter_cond(tBTA_DM_MSG* p_data);
+extern void bta_dm_scan_filter_param_setup(tBTA_DM_MSG* p_data);
+extern void bta_dm_enable_scan_filter(tBTA_DM_MSG* p_data);
#endif
-extern void bta_dm_ble_setup_storage(tBTA_DM_MSG *p_data);
-extern void bta_dm_ble_enable_batch_scan(tBTA_DM_MSG * p_data);
-extern void bta_dm_ble_disable_batch_scan(tBTA_DM_MSG * p_data);
-extern void bta_dm_ble_read_scan_reports(tBTA_DM_MSG * p_data);
-extern void bta_dm_ble_track_advertiser(tBTA_DM_MSG * p_data);
-extern void bta_dm_ble_get_energy_info(tBTA_DM_MSG *p_data);
+extern void bta_dm_ble_setup_storage(tBTA_DM_MSG* p_data);
+extern void bta_dm_ble_enable_batch_scan(tBTA_DM_MSG* p_data);
+extern void bta_dm_ble_disable_batch_scan(tBTA_DM_MSG* p_data);
+extern void bta_dm_ble_read_scan_reports(tBTA_DM_MSG* p_data);
+extern void bta_dm_ble_track_advertiser(tBTA_DM_MSG* p_data);
+extern void bta_dm_ble_get_energy_info(tBTA_DM_MSG* p_data);
#endif
-extern void bta_dm_set_encryption(tBTA_DM_MSG *p_data);
-extern void bta_dm_confirm(tBTA_DM_MSG *p_data);
-extern void bta_dm_loc_oob(tBTA_DM_MSG *p_data);
-extern void bta_dm_ci_io_req_act(tBTA_DM_MSG *p_data);
-extern void bta_dm_ci_rmt_oob_act(tBTA_DM_MSG *p_data);
+extern void bta_dm_set_encryption(tBTA_DM_MSG* p_data);
+extern void bta_dm_confirm(tBTA_DM_MSG* p_data);
+extern void bta_dm_loc_oob(tBTA_DM_MSG* p_data);
+extern void bta_dm_ci_io_req_act(tBTA_DM_MSG* p_data);
+extern void bta_dm_ci_rmt_oob_act(tBTA_DM_MSG* p_data);
extern void bta_dm_init_pm(void);
extern void bta_dm_disable_pm(void);
extern uint8_t bta_dm_get_av_count(void);
-extern void bta_dm_search_start (tBTA_DM_MSG *p_data);
-extern void bta_dm_search_cancel (tBTA_DM_MSG *p_data);
-extern void bta_dm_discover (tBTA_DM_MSG *p_data);
-extern void bta_dm_di_disc (tBTA_DM_MSG *p_data);
-extern void bta_dm_inq_cmpl (tBTA_DM_MSG *p_data);
-extern void bta_dm_rmt_name (tBTA_DM_MSG *p_data);
-extern void bta_dm_sdp_result (tBTA_DM_MSG *p_data);
-extern void bta_dm_search_cmpl (tBTA_DM_MSG *p_data);
-extern void bta_dm_free_sdp_db (tBTA_DM_MSG *p_data);
-extern void bta_dm_disc_result (tBTA_DM_MSG *p_data);
-extern void bta_dm_search_result (tBTA_DM_MSG *p_data);
-extern void bta_dm_discovery_cmpl (tBTA_DM_MSG *p_data);
-extern void bta_dm_queue_search (tBTA_DM_MSG *p_data);
-extern void bta_dm_queue_disc (tBTA_DM_MSG *p_data);
-extern void bta_dm_search_clear_queue (tBTA_DM_MSG *p_data);
-extern void bta_dm_search_cancel_cmpl (tBTA_DM_MSG *p_data);
-extern void bta_dm_search_cancel_notify (tBTA_DM_MSG *p_data);
-extern void bta_dm_search_cancel_transac_cmpl(tBTA_DM_MSG *p_data);
-extern void bta_dm_disc_rmt_name (tBTA_DM_MSG *p_data);
-extern tBTA_DM_PEER_DEVICE * bta_dm_find_peer_device(const BD_ADDR peer_addr);
+extern void bta_dm_search_start(tBTA_DM_MSG* p_data);
+extern void bta_dm_search_cancel(tBTA_DM_MSG* p_data);
+extern void bta_dm_discover(tBTA_DM_MSG* p_data);
+extern void bta_dm_di_disc(tBTA_DM_MSG* p_data);
+extern void bta_dm_inq_cmpl(tBTA_DM_MSG* p_data);
+extern void bta_dm_rmt_name(tBTA_DM_MSG* p_data);
+extern void bta_dm_sdp_result(tBTA_DM_MSG* p_data);
+extern void bta_dm_search_cmpl(tBTA_DM_MSG* p_data);
+extern void bta_dm_free_sdp_db(tBTA_DM_MSG* p_data);
+extern void bta_dm_disc_result(tBTA_DM_MSG* p_data);
+extern void bta_dm_search_result(tBTA_DM_MSG* p_data);
+extern void bta_dm_discovery_cmpl(tBTA_DM_MSG* p_data);
+extern void bta_dm_queue_search(tBTA_DM_MSG* p_data);
+extern void bta_dm_queue_disc(tBTA_DM_MSG* p_data);
+extern void bta_dm_search_clear_queue(tBTA_DM_MSG* p_data);
+extern void bta_dm_search_cancel_cmpl(tBTA_DM_MSG* p_data);
+extern void bta_dm_search_cancel_notify(tBTA_DM_MSG* p_data);
+extern void bta_dm_search_cancel_transac_cmpl(tBTA_DM_MSG* p_data);
+extern void bta_dm_disc_rmt_name(tBTA_DM_MSG* p_data);
+extern tBTA_DM_PEER_DEVICE* bta_dm_find_peer_device(const BD_ADDR peer_addr);
void bta_dm_eir_update_uuid(uint16_t uuid16, bool adding);
-extern void bta_dm_enable_test_mode(tBTA_DM_MSG *p_data);
-extern void bta_dm_disable_test_mode(tBTA_DM_MSG *p_data);
-extern void bta_dm_execute_callback(tBTA_DM_MSG *p_data);
+extern void bta_dm_enable_test_mode(tBTA_DM_MSG* p_data);
+extern void bta_dm_disable_test_mode(tBTA_DM_MSG* p_data);
+extern void bta_dm_execute_callback(tBTA_DM_MSG* p_data);
-
-extern void bta_dm_remove_all_acl(tBTA_DM_MSG *p_data);
+extern void bta_dm_remove_all_acl(tBTA_DM_MSG* p_data);
#endif /* BTA_DM_INT_H */
diff --git a/bta/dm/bta_dm_main.cc b/bta/dm/bta_dm_main.cc
index 0852e8d..ecbff69 100644
--- a/bta/dm/bta_dm_main.cc
+++ b/bta/dm/bta_dm_main.cc
@@ -23,73 +23,68 @@
******************************************************************************/
#include "bta_api.h"
-#include "bta_sys.h"
#include "bta_dm_int.h"
-
+#include "bta_sys.h"
/*****************************************************************************
* Constants and types
****************************************************************************/
-tBTA_DM_CB bta_dm_cb;
+tBTA_DM_CB bta_dm_cb;
tBTA_DM_SEARCH_CB bta_dm_search_cb;
-tBTA_DM_DI_CB bta_dm_di_cb;
+tBTA_DM_DI_CB bta_dm_di_cb;
-
-#define BTA_DM_NUM_ACTIONS (BTA_DM_MAX_EVT & 0x00ff)
+#define BTA_DM_NUM_ACTIONS (BTA_DM_MAX_EVT & 0x00ff)
/* type for action functions */
-typedef void (*tBTA_DM_ACTION)(tBTA_DM_MSG *p_data);
+typedef void (*tBTA_DM_ACTION)(tBTA_DM_MSG* p_data);
/* action function list */
-const tBTA_DM_ACTION bta_dm_action[] =
-{
+const tBTA_DM_ACTION bta_dm_action[] = {
/* device manager local device API events */
- bta_dm_enable, /* 0 BTA_DM_API_ENABLE_EVT */
- bta_dm_disable, /* 1 BTA_DM_API_DISABLE_EVT */
- bta_dm_set_dev_name, /* 2 BTA_DM_API_SET_NAME_EVT */
- bta_dm_set_visibility, /* 3 BTA_DM_API_SET_VISIBILITY_EVT */
- bta_dm_acl_change, /* 8 BTA_DM_ACL_CHANGE_EVT */
- bta_dm_add_device, /* 9 BTA_DM_API_ADD_DEVICE_EVT */
- bta_dm_close_acl, /* 10 BTA_DM_API_ADD_DEVICE_EVT */
+ bta_dm_enable, /* 0 BTA_DM_API_ENABLE_EVT */
+ bta_dm_disable, /* 1 BTA_DM_API_DISABLE_EVT */
+ bta_dm_set_dev_name, /* 2 BTA_DM_API_SET_NAME_EVT */
+ bta_dm_set_visibility, /* 3 BTA_DM_API_SET_VISIBILITY_EVT */
+ bta_dm_acl_change, /* 8 BTA_DM_ACL_CHANGE_EVT */
+ bta_dm_add_device, /* 9 BTA_DM_API_ADD_DEVICE_EVT */
+ bta_dm_close_acl, /* 10 BTA_DM_API_ADD_DEVICE_EVT */
/* security API events */
- bta_dm_bond, /* 11 BTA_DM_API_BOND_EVT */
- bta_dm_bond_cancel, /* 12 BTA_DM_API_BOND_CANCEL_EVT */
- bta_dm_pin_reply, /* 13 BTA_DM_API_PIN_REPLY_EVT */
+ bta_dm_bond, /* 11 BTA_DM_API_BOND_EVT */
+ bta_dm_bond_cancel, /* 12 BTA_DM_API_BOND_CANCEL_EVT */
+ bta_dm_pin_reply, /* 13 BTA_DM_API_PIN_REPLY_EVT */
/* power manger events */
- bta_dm_pm_btm_status, /* 16 BTA_DM_PM_BTM_STATUS_EVT */
- bta_dm_pm_timer, /* 17 BTA_DM_PM_TIMER_EVT*/
+ bta_dm_pm_btm_status, /* 16 BTA_DM_PM_BTM_STATUS_EVT */
+ bta_dm_pm_timer, /* 17 BTA_DM_PM_TIMER_EVT*/
/* simple pairing events */
- bta_dm_confirm, /* 18 BTA_DM_API_CONFIRM_EVT */
+ bta_dm_confirm, /* 18 BTA_DM_API_CONFIRM_EVT */
- bta_dm_set_encryption, /* BTA_DM_API_SET_ENCRYPTION_EVT */
+ bta_dm_set_encryption, /* BTA_DM_API_SET_ENCRYPTION_EVT */
/* out of band pairing events */
- bta_dm_loc_oob, /* 20 BTA_DM_API_LOC_OOB_EVT */
- bta_dm_ci_io_req_act, /* 21 BTA_DM_CI_IO_REQ_EVT */
- bta_dm_ci_rmt_oob_act, /* 22 BTA_DM_CI_RMT_OOB_EVT */
-
+ bta_dm_loc_oob, /* 20 BTA_DM_API_LOC_OOB_EVT */
+ bta_dm_ci_io_req_act, /* 21 BTA_DM_CI_IO_REQ_EVT */
+ bta_dm_ci_rmt_oob_act, /* 22 BTA_DM_CI_RMT_OOB_EVT */
#if (BLE_INCLUDED == TRUE)
- bta_dm_add_blekey, /* BTA_DM_API_ADD_BLEKEY_EVT */
- bta_dm_add_ble_device, /* BTA_DM_API_ADD_BLEDEVICE_EVT */
- bta_dm_ble_passkey_reply, /* BTA_DM_API_BLE_PASSKEY_REPLY_EVT */
- bta_dm_ble_confirm_reply, /* BTA_DM_API_BLE_CONFIRM_REPLY_EVT */
- bta_dm_security_grant,
- bta_dm_ble_set_bg_conn_type,
- bta_dm_ble_set_conn_params, /* BTA_DM_API_BLE_CONN_PARAM_EVT */
- bta_dm_ble_set_conn_scan_params, /* BTA_DM_API_BLE_CONN_SCAN_PARAM_EVT */
- bta_dm_ble_set_scan_params, /* BTA_DM_API_BLE_SCAN_PARAM_EVT */
+ bta_dm_add_blekey, /* BTA_DM_API_ADD_BLEKEY_EVT */
+ bta_dm_add_ble_device, /* BTA_DM_API_ADD_BLEDEVICE_EVT */
+ bta_dm_ble_passkey_reply, /* BTA_DM_API_BLE_PASSKEY_REPLY_EVT */
+ bta_dm_ble_confirm_reply, /* BTA_DM_API_BLE_CONFIRM_REPLY_EVT */
+ bta_dm_security_grant, bta_dm_ble_set_bg_conn_type,
+ bta_dm_ble_set_conn_params, /* BTA_DM_API_BLE_CONN_PARAM_EVT */
+ bta_dm_ble_set_conn_scan_params, /* BTA_DM_API_BLE_CONN_SCAN_PARAM_EVT */
+ bta_dm_ble_set_scan_params, /* BTA_DM_API_BLE_SCAN_PARAM_EVT */
bta_dm_ble_observe,
- bta_dm_ble_update_conn_params, /* BTA_DM_API_UPDATE_CONN_PARAM_EVT */
+ bta_dm_ble_update_conn_params, /* BTA_DM_API_UPDATE_CONN_PARAM_EVT */
#if (BLE_PRIVACY_SPT == TRUE)
- bta_dm_ble_config_local_privacy, /* BTA_DM_API_LOCAL_PRIVACY_EVT */
+ bta_dm_ble_config_local_privacy, /* BTA_DM_API_LOCAL_PRIVACY_EVT */
#endif
- bta_dm_ble_set_data_length, /* BTA_DM_API_SET_DATA_LENGTH_EVT */
+ bta_dm_ble_set_data_length, /* BTA_DM_API_SET_DATA_LENGTH_EVT */
#if (BLE_ANDROID_CONTROLLER_SCAN_FILTER == TRUE)
bta_dm_cfg_filter_cond, /* BTA_DM_API_CFG_FILTER_COND_EVT */
bta_dm_scan_filter_param_setup, /* BTA_DM_API_SCAN_FILTER_SETUP_EVT */
@@ -103,151 +98,188 @@
bta_dm_ble_get_energy_info, /* BTA_DM_API_BLE_ENERGY_INFO_EVT */
#endif
- bta_dm_enable_test_mode, /* BTA_DM_API_ENABLE_TEST_MODE_EVT */
- bta_dm_disable_test_mode, /* BTA_DM_API_DISABLE_TEST_MODE_EVT */
- bta_dm_execute_callback, /* BTA_DM_API_EXECUTE_CBACK_EVT */
+ bta_dm_enable_test_mode, /* BTA_DM_API_ENABLE_TEST_MODE_EVT */
+ bta_dm_disable_test_mode, /* BTA_DM_API_DISABLE_TEST_MODE_EVT */
+ bta_dm_execute_callback, /* BTA_DM_API_EXECUTE_CBACK_EVT */
- bta_dm_remove_all_acl, /* BTA_DM_API_REMOVE_ALL_ACL_EVT */
- bta_dm_remove_device, /* BTA_DM_API_REMOVE_DEVICE_EVT */
+ bta_dm_remove_all_acl, /* BTA_DM_API_REMOVE_ALL_ACL_EVT */
+ bta_dm_remove_device, /* BTA_DM_API_REMOVE_DEVICE_EVT */
};
-
-
/* state machine action enumeration list */
-enum
-{
- BTA_DM_API_SEARCH, /* 0 bta_dm_search_start */
- BTA_DM_API_SEARCH_CANCEL, /* 1 bta_dm_search_cancel */
- BTA_DM_API_DISCOVER, /* 2 bta_dm_discover */
- BTA_DM_INQUIRY_CMPL, /* 3 bta_dm_inq_cmpl */
- BTA_DM_REMT_NAME, /* 4 bta_dm_rmt_name */
- BTA_DM_SDP_RESULT, /* 5 bta_dm_sdp_result */
- BTA_DM_SEARCH_CMPL, /* 6 bta_dm_search_cmpl*/
- BTA_DM_FREE_SDP_DB, /* 7 bta_dm_free_sdp_db */
- BTA_DM_DISC_RESULT, /* 8 bta_dm_disc_result */
- BTA_DM_SEARCH_RESULT, /* 9 bta_dm_search_result */
- BTA_DM_QUEUE_SEARCH, /* 10 bta_dm_queue_search */
- BTA_DM_QUEUE_DISC, /* 11 bta_dm_queue_disc */
- BTA_DM_SEARCH_CLEAR_QUEUE, /* 12 bta_dm_search_clear_queue */
- BTA_DM_SEARCH_CANCEL_CMPL, /* 13 bta_dm_search_cancel_cmpl */
- BTA_DM_SEARCH_CANCEL_NOTIFY, /* 14 bta_dm_search_cancel_notify */
- BTA_DM_SEARCH_CANCEL_TRANSAC_CMPL, /* 15 bta_dm_search_cancel_transac_cmpl */
- BTA_DM_DISC_RMT_NAME, /* 16 bta_dm_disc_rmt_name */
- BTA_DM_API_DI_DISCOVER, /* 17 bta_dm_di_disc */
+enum {
+ BTA_DM_API_SEARCH, /* 0 bta_dm_search_start */
+ BTA_DM_API_SEARCH_CANCEL, /* 1 bta_dm_search_cancel */
+ BTA_DM_API_DISCOVER, /* 2 bta_dm_discover */
+ BTA_DM_INQUIRY_CMPL, /* 3 bta_dm_inq_cmpl */
+ BTA_DM_REMT_NAME, /* 4 bta_dm_rmt_name */
+ BTA_DM_SDP_RESULT, /* 5 bta_dm_sdp_result */
+ BTA_DM_SEARCH_CMPL, /* 6 bta_dm_search_cmpl*/
+ BTA_DM_FREE_SDP_DB, /* 7 bta_dm_free_sdp_db */
+ BTA_DM_DISC_RESULT, /* 8 bta_dm_disc_result */
+ BTA_DM_SEARCH_RESULT, /* 9 bta_dm_search_result */
+ BTA_DM_QUEUE_SEARCH, /* 10 bta_dm_queue_search */
+ BTA_DM_QUEUE_DISC, /* 11 bta_dm_queue_disc */
+ BTA_DM_SEARCH_CLEAR_QUEUE, /* 12 bta_dm_search_clear_queue */
+ BTA_DM_SEARCH_CANCEL_CMPL, /* 13 bta_dm_search_cancel_cmpl */
+ BTA_DM_SEARCH_CANCEL_NOTIFY, /* 14 bta_dm_search_cancel_notify */
+ BTA_DM_SEARCH_CANCEL_TRANSAC_CMPL, /* 15 bta_dm_search_cancel_transac_cmpl */
+ BTA_DM_DISC_RMT_NAME, /* 16 bta_dm_disc_rmt_name */
+ BTA_DM_API_DI_DISCOVER, /* 17 bta_dm_di_disc */
#if (BLE_INCLUDED == TRUE)
- BTA_DM_CLOSE_GATT_CONN, /* 18 bta_dm_close_gatt_conn */
+ BTA_DM_CLOSE_GATT_CONN, /* 18 bta_dm_close_gatt_conn */
#endif
- BTA_DM_SEARCH_NUM_ACTIONS /* 19 */
+ BTA_DM_SEARCH_NUM_ACTIONS /* 19 */
};
-
/* action function list */
-const tBTA_DM_ACTION bta_dm_search_action[] =
-{
+const tBTA_DM_ACTION bta_dm_search_action[] = {
- bta_dm_search_start, /* 0 BTA_DM_API_SEARCH */
- bta_dm_search_cancel, /* 1 BTA_DM_API_SEARCH_CANCEL */
- bta_dm_discover, /* 2 BTA_DM_API_DISCOVER */
- bta_dm_inq_cmpl, /* 3 BTA_DM_INQUIRY_CMPL */
- bta_dm_rmt_name, /* 4 BTA_DM_REMT_NAME */
- bta_dm_sdp_result, /* 5 BTA_DM_SDP_RESULT */
- bta_dm_search_cmpl, /* 6 BTA_DM_SEARCH_CMPL */
- bta_dm_free_sdp_db, /* 7 BTA_DM_FREE_SDP_DB */
- bta_dm_disc_result, /* 8 BTA_DM_DISC_RESULT */
- bta_dm_search_result, /* 9 BTA_DM_SEARCH_RESULT */
- bta_dm_queue_search, /* 10 BTA_DM_QUEUE_SEARCH */
- bta_dm_queue_disc, /* 11 BTA_DM_QUEUE_DISC */
- bta_dm_search_clear_queue, /* 12 BTA_DM_SEARCH_CLEAR_QUEUE */
- bta_dm_search_cancel_cmpl, /* 13 BTA_DM_SEARCH_CANCEL_CMPL */
- bta_dm_search_cancel_notify, /* 14 BTA_DM_SEARCH_CANCEL_NOTIFY */
- bta_dm_search_cancel_transac_cmpl, /* 15 BTA_DM_SEARCH_CANCEL_TRANSAC_CMPL */
- bta_dm_disc_rmt_name, /* 16 BTA_DM_DISC_RMT_NAME */
- bta_dm_di_disc /* 17 BTA_DM_API_DI_DISCOVER */
+ bta_dm_search_start, /* 0 BTA_DM_API_SEARCH */
+ bta_dm_search_cancel, /* 1 BTA_DM_API_SEARCH_CANCEL */
+ bta_dm_discover, /* 2 BTA_DM_API_DISCOVER */
+ bta_dm_inq_cmpl, /* 3 BTA_DM_INQUIRY_CMPL */
+ bta_dm_rmt_name, /* 4 BTA_DM_REMT_NAME */
+ bta_dm_sdp_result, /* 5 BTA_DM_SDP_RESULT */
+ bta_dm_search_cmpl, /* 6 BTA_DM_SEARCH_CMPL */
+ bta_dm_free_sdp_db, /* 7 BTA_DM_FREE_SDP_DB */
+ bta_dm_disc_result, /* 8 BTA_DM_DISC_RESULT */
+ bta_dm_search_result, /* 9 BTA_DM_SEARCH_RESULT */
+ bta_dm_queue_search, /* 10 BTA_DM_QUEUE_SEARCH */
+ bta_dm_queue_disc, /* 11 BTA_DM_QUEUE_DISC */
+ bta_dm_search_clear_queue, /* 12 BTA_DM_SEARCH_CLEAR_QUEUE */
+ bta_dm_search_cancel_cmpl, /* 13 BTA_DM_SEARCH_CANCEL_CMPL */
+ bta_dm_search_cancel_notify, /* 14 BTA_DM_SEARCH_CANCEL_NOTIFY */
+ bta_dm_search_cancel_transac_cmpl, /* 15 BTA_DM_SEARCH_CANCEL_TRANSAC_CMPL
+ */
+ bta_dm_disc_rmt_name, /* 16 BTA_DM_DISC_RMT_NAME */
+ bta_dm_di_disc /* 17 BTA_DM_API_DI_DISCOVER */
#if (BLE_INCLUDED == TRUE)
- ,bta_dm_close_gatt_conn
+ ,
+ bta_dm_close_gatt_conn
#endif
};
-#define BTA_DM_SEARCH_IGNORE BTA_DM_SEARCH_NUM_ACTIONS
+#define BTA_DM_SEARCH_IGNORE BTA_DM_SEARCH_NUM_ACTIONS
/* state table information */
-#define BTA_DM_SEARCH_ACTIONS 2 /* number of actions */
-#define BTA_DM_SEARCH_NEXT_STATE 2 /* position of next state */
-#define BTA_DM_SEARCH_NUM_COLS 3 /* number of columns in state tables */
-
-
+#define BTA_DM_SEARCH_ACTIONS 2 /* number of actions */
+#define BTA_DM_SEARCH_NEXT_STATE 2 /* position of next state */
+#define BTA_DM_SEARCH_NUM_COLS 3 /* number of columns in state tables */
/* state table for listen state */
-const uint8_t bta_dm_search_idle_st_table[][BTA_DM_SEARCH_NUM_COLS] =
-{
+const uint8_t bta_dm_search_idle_st_table[][BTA_DM_SEARCH_NUM_COLS] = {
-/* Event Action 1 Action 2 Next State */
-/* API_SEARCH */ {BTA_DM_API_SEARCH, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_ACTIVE},
-/* API_SEARCH_CANCEL */ {BTA_DM_SEARCH_CANCEL_NOTIFY, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IDLE},
-/* API_SEARCH_DISC */ {BTA_DM_API_DISCOVER, BTA_DM_SEARCH_IGNORE, BTA_DM_DISCOVER_ACTIVE},
-/* INQUIRY_CMPL */ {BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IDLE},
-/* REMT_NAME_EVT */ {BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IDLE},
-/* SDP_RESULT_EVT */ {BTA_DM_FREE_SDP_DB, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IDLE},
-/* SEARCH_CMPL_EVT */ {BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IDLE},
-/* DISCV_RES_EVT */ {BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IDLE},
-/* API_DI_DISCOVER_EVT */ {BTA_DM_API_DI_DISCOVER, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_ACTIVE}
+ /* Event Action 1
+ Action 2 Next State */
+ /* API_SEARCH */ {BTA_DM_API_SEARCH, BTA_DM_SEARCH_IGNORE,
+ BTA_DM_SEARCH_ACTIVE},
+ /* API_SEARCH_CANCEL */ {BTA_DM_SEARCH_CANCEL_NOTIFY, BTA_DM_SEARCH_IGNORE,
+ BTA_DM_SEARCH_IDLE},
+ /* API_SEARCH_DISC */ {BTA_DM_API_DISCOVER, BTA_DM_SEARCH_IGNORE,
+ BTA_DM_DISCOVER_ACTIVE},
+ /* INQUIRY_CMPL */ {BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IGNORE,
+ BTA_DM_SEARCH_IDLE},
+ /* REMT_NAME_EVT */ {BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IGNORE,
+ BTA_DM_SEARCH_IDLE},
+ /* SDP_RESULT_EVT */ {BTA_DM_FREE_SDP_DB, BTA_DM_SEARCH_IGNORE,
+ BTA_DM_SEARCH_IDLE},
+ /* SEARCH_CMPL_EVT */ {BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IGNORE,
+ BTA_DM_SEARCH_IDLE},
+ /* DISCV_RES_EVT */ {BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IGNORE,
+ BTA_DM_SEARCH_IDLE},
+ /* API_DI_DISCOVER_EVT */ {BTA_DM_API_DI_DISCOVER, BTA_DM_SEARCH_IGNORE,
+ BTA_DM_SEARCH_ACTIVE}
#if (BLE_INCLUDED == TRUE)
-/* DISC_CLOSE_TOUT_EVT */ ,{BTA_DM_CLOSE_GATT_CONN, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IDLE}
+ /* DISC_CLOSE_TOUT_EVT */,
+ {BTA_DM_CLOSE_GATT_CONN, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IDLE}
#endif
};
-const uint8_t bta_dm_search_search_active_st_table[][BTA_DM_SEARCH_NUM_COLS] =
-{
+const uint8_t bta_dm_search_search_active_st_table[][BTA_DM_SEARCH_NUM_COLS] = {
-/* Event Action 1 Action 2 Next State */
-/* API_SEARCH */ {BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_ACTIVE},
-/* API_SEARCH_CANCEL */ {BTA_DM_API_SEARCH_CANCEL, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_CANCELLING},
-/* API_SEARCH_DISC */ {BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_ACTIVE},
-/* INQUIRY_CMPL */ {BTA_DM_INQUIRY_CMPL, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_ACTIVE},
-/* REMT_NAME_EVT */ {BTA_DM_REMT_NAME, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_ACTIVE},
-/* SDP_RESULT_EVT */ {BTA_DM_SDP_RESULT, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_ACTIVE},
-/* SEARCH_CMPL_EVT */ {BTA_DM_SEARCH_CMPL, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IDLE},
-/* DISCV_RES_EVT */ {BTA_DM_SEARCH_RESULT, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_ACTIVE},
-/* API_DI_DISCOVER_EVT */ {BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_ACTIVE}
+ /* Event Action 1
+ Action 2 Next State */
+ /* API_SEARCH */ {BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IGNORE,
+ BTA_DM_SEARCH_ACTIVE},
+ /* API_SEARCH_CANCEL */ {BTA_DM_API_SEARCH_CANCEL, BTA_DM_SEARCH_IGNORE,
+ BTA_DM_SEARCH_CANCELLING},
+ /* API_SEARCH_DISC */ {BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IGNORE,
+ BTA_DM_SEARCH_ACTIVE},
+ /* INQUIRY_CMPL */ {BTA_DM_INQUIRY_CMPL, BTA_DM_SEARCH_IGNORE,
+ BTA_DM_SEARCH_ACTIVE},
+ /* REMT_NAME_EVT */ {BTA_DM_REMT_NAME, BTA_DM_SEARCH_IGNORE,
+ BTA_DM_SEARCH_ACTIVE},
+ /* SDP_RESULT_EVT */ {BTA_DM_SDP_RESULT, BTA_DM_SEARCH_IGNORE,
+ BTA_DM_SEARCH_ACTIVE},
+ /* SEARCH_CMPL_EVT */ {BTA_DM_SEARCH_CMPL, BTA_DM_SEARCH_IGNORE,
+ BTA_DM_SEARCH_IDLE},
+ /* DISCV_RES_EVT */ {BTA_DM_SEARCH_RESULT, BTA_DM_SEARCH_IGNORE,
+ BTA_DM_SEARCH_ACTIVE},
+ /* API_DI_DISCOVER_EVT */ {BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IGNORE,
+ BTA_DM_SEARCH_ACTIVE}
#if (BLE_INCLUDED == TRUE)
-/* DISC_CLOSE_TOUT_EVT */ ,{BTA_DM_CLOSE_GATT_CONN, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_ACTIVE}
+ /* DISC_CLOSE_TOUT_EVT */,
+ {BTA_DM_CLOSE_GATT_CONN, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_ACTIVE}
#endif
};
-const uint8_t bta_dm_search_search_cancelling_st_table[][BTA_DM_SEARCH_NUM_COLS] =
-{
+const uint8_t
+ bta_dm_search_search_cancelling_st_table[][BTA_DM_SEARCH_NUM_COLS] = {
-/* Event Action 1 Action 2 Next State */
-/* API_SEARCH */ {BTA_DM_QUEUE_SEARCH, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_CANCELLING},
-/* API_SEARCH_CANCEL */ {BTA_DM_SEARCH_CLEAR_QUEUE, BTA_DM_SEARCH_CANCEL_NOTIFY, BTA_DM_SEARCH_CANCELLING},
-/* API_SEARCH_DISC */ {BTA_DM_QUEUE_DISC, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_CANCELLING},
-/* INQUIRY_CMPL */ {BTA_DM_SEARCH_CANCEL_CMPL, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IDLE},
-/* REMT_NAME_EVT */ {BTA_DM_SEARCH_CANCEL_TRANSAC_CMPL, BTA_DM_SEARCH_CANCEL_CMPL, BTA_DM_SEARCH_IDLE},
-/* SDP_RESULT_EVT */ {BTA_DM_SEARCH_CANCEL_TRANSAC_CMPL, BTA_DM_SEARCH_CANCEL_CMPL, BTA_DM_SEARCH_IDLE},
-/* SEARCH_CMPL_EVT */ {BTA_DM_SEARCH_CANCEL_TRANSAC_CMPL, BTA_DM_SEARCH_CANCEL_CMPL, BTA_DM_SEARCH_IDLE},
-/* DISCV_RES_EVT */ {BTA_DM_SEARCH_CANCEL_TRANSAC_CMPL, BTA_DM_SEARCH_CANCEL_CMPL, BTA_DM_SEARCH_IDLE},
-/* API_DI_DISCOVER_EVT */ {BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_CANCELLING}
+ /* Event Action 1
+ Action 2 Next State */
+ /* API_SEARCH */ {BTA_DM_QUEUE_SEARCH, BTA_DM_SEARCH_IGNORE,
+ BTA_DM_SEARCH_CANCELLING},
+ /* API_SEARCH_CANCEL */ {BTA_DM_SEARCH_CLEAR_QUEUE,
+ BTA_DM_SEARCH_CANCEL_NOTIFY,
+ BTA_DM_SEARCH_CANCELLING},
+ /* API_SEARCH_DISC */ {BTA_DM_QUEUE_DISC, BTA_DM_SEARCH_IGNORE,
+ BTA_DM_SEARCH_CANCELLING},
+ /* INQUIRY_CMPL */ {BTA_DM_SEARCH_CANCEL_CMPL, BTA_DM_SEARCH_IGNORE,
+ BTA_DM_SEARCH_IDLE},
+ /* REMT_NAME_EVT */ {BTA_DM_SEARCH_CANCEL_TRANSAC_CMPL,
+ BTA_DM_SEARCH_CANCEL_CMPL, BTA_DM_SEARCH_IDLE},
+ /* SDP_RESULT_EVT */ {BTA_DM_SEARCH_CANCEL_TRANSAC_CMPL,
+ BTA_DM_SEARCH_CANCEL_CMPL, BTA_DM_SEARCH_IDLE},
+ /* SEARCH_CMPL_EVT */ {BTA_DM_SEARCH_CANCEL_TRANSAC_CMPL,
+ BTA_DM_SEARCH_CANCEL_CMPL, BTA_DM_SEARCH_IDLE},
+ /* DISCV_RES_EVT */ {BTA_DM_SEARCH_CANCEL_TRANSAC_CMPL,
+ BTA_DM_SEARCH_CANCEL_CMPL, BTA_DM_SEARCH_IDLE},
+ /* API_DI_DISCOVER_EVT */ {BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IGNORE,
+ BTA_DM_SEARCH_CANCELLING}
#if (BLE_INCLUDED == TRUE)
-/* DISC_CLOSE_TOUT_EVT */ ,{BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_CANCELLING}
+ /* DISC_CLOSE_TOUT_EVT */,
+ {BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_CANCELLING}
#endif
};
-const uint8_t bta_dm_search_disc_active_st_table[][BTA_DM_SEARCH_NUM_COLS] =
-{
+const uint8_t bta_dm_search_disc_active_st_table[][BTA_DM_SEARCH_NUM_COLS] = {
-/* Event Action 1 Action 2 Next State */
-/* API_SEARCH */ {BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IGNORE, BTA_DM_DISCOVER_ACTIVE},
-/* API_SEARCH_CANCEL */ {BTA_DM_SEARCH_CANCEL_NOTIFY, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_CANCELLING},
-/* API_SEARCH_DISC */ {BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IGNORE, BTA_DM_DISCOVER_ACTIVE},
-/* INQUIRY_CMPL */ {BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IGNORE, BTA_DM_DISCOVER_ACTIVE},
-/* REMT_NAME_EVT */ {BTA_DM_DISC_RMT_NAME, BTA_DM_SEARCH_IGNORE, BTA_DM_DISCOVER_ACTIVE},
-/* SDP_RESULT_EVT */ {BTA_DM_SDP_RESULT, BTA_DM_SEARCH_IGNORE, BTA_DM_DISCOVER_ACTIVE},
-/* SEARCH_CMPL_EVT */ {BTA_DM_SEARCH_CMPL, BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IDLE},
-/* DISCV_RES_EVT */ {BTA_DM_DISC_RESULT, BTA_DM_SEARCH_IGNORE, BTA_DM_DISCOVER_ACTIVE},
-/* API_DI_DISCOVER_EVT */ {BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IGNORE, BTA_DM_DISCOVER_ACTIVE}
+ /* Event Action 1
+ Action 2 Next State */
+ /* API_SEARCH */ {BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IGNORE,
+ BTA_DM_DISCOVER_ACTIVE},
+ /* API_SEARCH_CANCEL */ {BTA_DM_SEARCH_CANCEL_NOTIFY, BTA_DM_SEARCH_IGNORE,
+ BTA_DM_SEARCH_CANCELLING},
+ /* API_SEARCH_DISC */ {BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IGNORE,
+ BTA_DM_DISCOVER_ACTIVE},
+ /* INQUIRY_CMPL */ {BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IGNORE,
+ BTA_DM_DISCOVER_ACTIVE},
+ /* REMT_NAME_EVT */ {BTA_DM_DISC_RMT_NAME, BTA_DM_SEARCH_IGNORE,
+ BTA_DM_DISCOVER_ACTIVE},
+ /* SDP_RESULT_EVT */ {BTA_DM_SDP_RESULT, BTA_DM_SEARCH_IGNORE,
+ BTA_DM_DISCOVER_ACTIVE},
+ /* SEARCH_CMPL_EVT */ {BTA_DM_SEARCH_CMPL, BTA_DM_SEARCH_IGNORE,
+ BTA_DM_SEARCH_IDLE},
+ /* DISCV_RES_EVT */ {BTA_DM_DISC_RESULT, BTA_DM_SEARCH_IGNORE,
+ BTA_DM_DISCOVER_ACTIVE},
+ /* API_DI_DISCOVER_EVT */ {BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IGNORE,
+ BTA_DM_DISCOVER_ACTIVE}
#if (BLE_INCLUDED == TRUE)
-/* DISC_CLOSE_TOUT_EVT */ ,{BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IGNORE, BTA_DM_DISCOVER_ACTIVE}
+ /* DISC_CLOSE_TOUT_EVT */,
+ {BTA_DM_SEARCH_IGNORE, BTA_DM_SEARCH_IGNORE, BTA_DM_DISCOVER_ACTIVE}
#endif
};
@@ -255,12 +287,9 @@
/* state table */
const tBTA_DM_ST_TBL bta_dm_search_st_tbl[] = {
- bta_dm_search_idle_st_table,
- bta_dm_search_search_active_st_table,
+ bta_dm_search_idle_st_table, bta_dm_search_search_active_st_table,
bta_dm_search_search_cancelling_st_table,
- bta_dm_search_disc_active_st_table
-};
-
+ bta_dm_search_disc_active_st_table};
/*******************************************************************************
*
@@ -272,11 +301,7 @@
* Returns void
*
******************************************************************************/
-void bta_dm_sm_disable( )
-{
- bta_sys_deregister( BTA_ID_DM );
-}
-
+void bta_dm_sm_disable() { bta_sys_deregister(BTA_ID_DM); }
/*******************************************************************************
*
@@ -288,19 +313,17 @@
* Returns void
*
******************************************************************************/
-bool bta_dm_sm_execute(BT_HDR *p_msg)
-{
- uint16_t event = p_msg->event & 0x00ff;
+bool bta_dm_sm_execute(BT_HDR* p_msg) {
+ uint16_t event = p_msg->event & 0x00ff;
- APPL_TRACE_EVENT("bta_dm_sm_execute event:0x%x", event);
+ APPL_TRACE_EVENT("bta_dm_sm_execute event:0x%x", event);
- /* execute action functions */
- if(event < BTA_DM_NUM_ACTIONS)
- {
- (*bta_dm_action[event])( (tBTA_DM_MSG*) p_msg);
- }
+ /* execute action functions */
+ if (event < BTA_DM_NUM_ACTIONS) {
+ (*bta_dm_action[event])((tBTA_DM_MSG*)p_msg);
+ }
- return true;
+ return true;
}
/*******************************************************************************
@@ -313,12 +336,7 @@
* Returns void
*
******************************************************************************/
-void bta_dm_search_sm_disable( )
-{
- bta_sys_deregister( BTA_ID_DM_SEARCH );
-
-}
-
+void bta_dm_search_sm_disable() { bta_sys_deregister(BTA_ID_DM_SEARCH); }
/*******************************************************************************
*
@@ -330,33 +348,28 @@
* Returns void
*
******************************************************************************/
-bool bta_dm_search_sm_execute(BT_HDR *p_msg)
-{
- tBTA_DM_ST_TBL state_table;
- uint8_t action;
- int i;
+bool bta_dm_search_sm_execute(BT_HDR* p_msg) {
+ tBTA_DM_ST_TBL state_table;
+ uint8_t action;
+ int i;
- APPL_TRACE_EVENT("bta_dm_search_sm_execute state:%d, event:0x%x",
- bta_dm_search_cb.state, p_msg->event);
+ APPL_TRACE_EVENT("bta_dm_search_sm_execute state:%d, event:0x%x",
+ bta_dm_search_cb.state, p_msg->event);
- /* look up the state table for the current state */
- state_table = bta_dm_search_st_tbl[bta_dm_search_cb.state];
+ /* look up the state table for the current state */
+ state_table = bta_dm_search_st_tbl[bta_dm_search_cb.state];
- bta_dm_search_cb.state = state_table[p_msg->event & 0x00ff][BTA_DM_SEARCH_NEXT_STATE];
+ bta_dm_search_cb.state =
+ state_table[p_msg->event & 0x00ff][BTA_DM_SEARCH_NEXT_STATE];
-
- /* execute action functions */
- for (i = 0; i < BTA_DM_SEARCH_ACTIONS; i++)
- {
- if ((action = state_table[p_msg->event & 0x00ff][i]) != BTA_DM_SEARCH_IGNORE)
- {
- (*bta_dm_search_action[action])( (tBTA_DM_MSG*) p_msg);
- }
- else
- {
- break;
- }
+ /* execute action functions */
+ for (i = 0; i < BTA_DM_SEARCH_ACTIONS; i++) {
+ if ((action = state_table[p_msg->event & 0x00ff][i]) !=
+ BTA_DM_SEARCH_IGNORE) {
+ (*bta_dm_search_action[action])((tBTA_DM_MSG*)p_msg);
+ } else {
+ break;
}
- return true;
+ }
+ return true;
}
-
diff --git a/bta/dm/bta_dm_pm.cc b/bta/dm/bta_dm_pm.cc
index c75e4a4..646d03f 100644
--- a/bta/dm/bta_dm_pm.cc
+++ b/bta/dm/bta_dm_pm.cc
@@ -27,41 +27,43 @@
#include <string.h>
#include "bt_common.h"
-#include "bta_sys.h"
#include "bta_api.h"
#include "bta_dm_api.h"
#include "bta_dm_int.h"
+#include "bta_sys.h"
#include "btm_api.h"
+extern fixed_queue_t* btu_bta_alarm_queue;
-extern fixed_queue_t *btu_bta_alarm_queue;
-
-static void bta_dm_pm_cback(tBTA_SYS_CONN_STATUS status, uint8_t id, uint8_t app_id, BD_ADDR peer_addr);
+static void bta_dm_pm_cback(tBTA_SYS_CONN_STATUS status, uint8_t id,
+ uint8_t app_id, BD_ADDR peer_addr);
static void bta_dm_pm_set_mode(BD_ADDR peer_addr, tBTA_DM_PM_ACTION pm_mode,
tBTA_DM_PM_REQ pm_req);
-static void bta_dm_pm_timer_cback(void *data);
-static void bta_dm_pm_btm_cback(BD_ADDR bd_addr, tBTM_PM_STATUS status, uint16_t value, uint8_t hci_status);
+static void bta_dm_pm_timer_cback(void* data);
+static void bta_dm_pm_btm_cback(BD_ADDR bd_addr, tBTM_PM_STATUS status,
+ uint16_t value, uint8_t hci_status);
static bool bta_dm_pm_park(BD_ADDR peer_addr);
-static bool bta_dm_pm_sniff(tBTA_DM_PEER_DEVICE *p_peer_dev, uint8_t index);
-static bool bta_dm_pm_is_sco_active ();
+static bool bta_dm_pm_sniff(tBTA_DM_PEER_DEVICE* p_peer_dev, uint8_t index);
+static bool bta_dm_pm_is_sco_active();
static int bta_dm_get_sco_index();
static void bta_dm_pm_hid_check(bool bScoActive);
-static void bta_dm_pm_set_sniff_policy(tBTA_DM_PEER_DEVICE *p_dev, bool bDisable);
-static void bta_dm_pm_stop_timer_by_index(tBTA_PM_TIMER *p_timer,
+static void bta_dm_pm_set_sniff_policy(tBTA_DM_PEER_DEVICE* p_dev,
+ bool bDisable);
+static void bta_dm_pm_stop_timer_by_index(tBTA_PM_TIMER* p_timer,
uint8_t timer_idx);
#if (BTM_SSR_INCLUDED == TRUE)
#if (BTA_HH_INCLUDED == TRUE)
#include "../hh/bta_hh_int.h"
-/* BTA_DM_PM_SSR1 will be dedicated for HH SSR setting entry, no other profile can use it */
-#define BTA_DM_PM_SSR_HH BTA_DM_PM_SSR1
+/* BTA_DM_PM_SSR1 will be dedicated for HH SSR setting entry, no other profile
+ * can use it */
+#define BTA_DM_PM_SSR_HH BTA_DM_PM_SSR1
#endif
static void bta_dm_pm_ssr(BD_ADDR peer_addr);
#endif
tBTA_DM_CONNECTED_SRVCS bta_dm_conn_srvcs;
-
/*******************************************************************************
*
* Function bta_dm_init_pm
@@ -72,28 +74,24 @@
* Returns void
*
******************************************************************************/
-void bta_dm_init_pm(void)
-{
- memset(&bta_dm_conn_srvcs, 0x00, sizeof(bta_dm_conn_srvcs));
+void bta_dm_init_pm(void) {
+ memset(&bta_dm_conn_srvcs, 0x00, sizeof(bta_dm_conn_srvcs));
- /* if there are no power manger entries, so not register */
- if(p_bta_dm_pm_cfg[0].app_id != 0)
- {
- bta_sys_pm_register((tBTA_SYS_CONN_CBACK*)bta_dm_pm_cback);
+ /* if there are no power manger entries, so not register */
+ if (p_bta_dm_pm_cfg[0].app_id != 0) {
+ bta_sys_pm_register((tBTA_SYS_CONN_CBACK*)bta_dm_pm_cback);
- BTM_PmRegister((BTM_PM_REG_SET | BTM_PM_REG_NOTIF), &bta_dm_cb.pm_id,
- bta_dm_pm_btm_cback);
- }
+ BTM_PmRegister((BTM_PM_REG_SET | BTM_PM_REG_NOTIF), &bta_dm_cb.pm_id,
+ bta_dm_pm_btm_cback);
+ }
- /* Need to initialize all PM timer service IDs */
- for (int i = 0; i < BTA_DM_NUM_PM_TIMER; i++)
- {
- for (int j = 0; j < BTA_DM_PM_MODE_TIMER_MAX; j++)
- bta_dm_cb.pm_timer[i].srvc_id[j] = BTA_ID_MAX;
- }
+ /* Need to initialize all PM timer service IDs */
+ for (int i = 0; i < BTA_DM_NUM_PM_TIMER; i++) {
+ for (int j = 0; j < BTA_DM_PM_MODE_TIMER_MAX; j++)
+ bta_dm_cb.pm_timer[i].srvc_id[j] = BTA_ID_MAX;
+ }
}
-
/*******************************************************************************
*
* Function bta_dm_disable_pm
@@ -104,25 +102,22 @@
* Returns void
*
******************************************************************************/
-void bta_dm_disable_pm(void)
-{
- BTM_PmRegister( BTM_PM_DEREG, &bta_dm_cb.pm_id, NULL);
+void bta_dm_disable_pm(void) {
+ BTM_PmRegister(BTM_PM_DEREG, &bta_dm_cb.pm_id, NULL);
- /*
- * Deregister the PM callback from the system handling to prevent
- * re-enabling the PM timers after this call if the callback is invoked.
- */
- bta_sys_pm_register((tBTA_SYS_CONN_CBACK*)NULL);
+ /*
+ * Deregister the PM callback from the system handling to prevent
+ * re-enabling the PM timers after this call if the callback is invoked.
+ */
+ bta_sys_pm_register((tBTA_SYS_CONN_CBACK*)NULL);
- /* Need to stop all active timers. */
- for (int i = 0; i < BTA_DM_NUM_PM_TIMER; i++)
- {
- for (int j = 0; j < BTA_DM_PM_MODE_TIMER_MAX; j++)
- {
- bta_dm_pm_stop_timer_by_index(&bta_dm_cb.pm_timer[i], j);
- bta_dm_cb.pm_timer[i].pm_action[j] = BTA_DM_PM_NO_ACTION;
- }
+ /* Need to stop all active timers. */
+ for (int i = 0; i < BTA_DM_NUM_PM_TIMER; i++) {
+ for (int j = 0; j < BTA_DM_PM_MODE_TIMER_MAX; j++) {
+ bta_dm_pm_stop_timer_by_index(&bta_dm_cb.pm_timer[i], j);
+ bta_dm_cb.pm_timer[i].pm_action[j] = BTA_DM_PM_NO_ACTION;
}
+ }
}
/*******************************************************************************
@@ -135,15 +130,12 @@
* Returns number of av connections
*
******************************************************************************/
-uint8_t bta_dm_get_av_count(void)
-{
- uint8_t count = 0;
- for (int i = 0; i < bta_dm_conn_srvcs.count; i++)
- {
- if (bta_dm_conn_srvcs.conn_srvc[i].id == BTA_ID_AV)
- ++count;
- }
- return count;
+uint8_t bta_dm_get_av_count(void) {
+ uint8_t count = 0;
+ for (int i = 0; i < bta_dm_conn_srvcs.count; i++) {
+ if (bta_dm_conn_srvcs.conn_srvc[i].id == BTA_ID_AV) ++count;
+ }
+ return count;
}
/*******************************************************************************
@@ -156,54 +148,51 @@
* Returns void
*
******************************************************************************/
-static void bta_dm_pm_stop_timer(BD_ADDR peer_addr)
-{
- APPL_TRACE_DEBUG("%s: ", __func__);
+static void bta_dm_pm_stop_timer(BD_ADDR peer_addr) {
+ APPL_TRACE_DEBUG("%s: ", __func__);
- for(int i=0; i<BTA_DM_NUM_PM_TIMER; i++)
- {
- if (bta_dm_cb.pm_timer[i].in_use && !bdcmp(bta_dm_cb.pm_timer[i].peer_bdaddr, peer_addr))
- {
- for (int j = 0; j < BTA_DM_PM_MODE_TIMER_MAX; j++)
- {
- bta_dm_pm_stop_timer_by_index(&bta_dm_cb.pm_timer[i], j);
- /*
- * TODO: For now, stopping the timer does not reset
- * pm_action[j].
- * The reason is because some of the internal logic that
- * (re)assigns the pm_action[] values is taking into account
- * the older value; e.g., see the pm_action[] assignment in
- * function bta_dm_pm_start_timer().
- * Such subtlety in the execution logic is error prone, and
- * should be eliminiated in the future.
- */
- }
- break;
- }
+ for (int i = 0; i < BTA_DM_NUM_PM_TIMER; i++) {
+ if (bta_dm_cb.pm_timer[i].in_use &&
+ !bdcmp(bta_dm_cb.pm_timer[i].peer_bdaddr, peer_addr)) {
+ for (int j = 0; j < BTA_DM_PM_MODE_TIMER_MAX; j++) {
+ bta_dm_pm_stop_timer_by_index(&bta_dm_cb.pm_timer[i], j);
+ /*
+ * TODO: For now, stopping the timer does not reset
+ * pm_action[j].
+ * The reason is because some of the internal logic that
+ * (re)assigns the pm_action[] values is taking into account
+ * the older value; e.g., see the pm_action[] assignment in
+ * function bta_dm_pm_start_timer().
+ * Such subtlety in the execution logic is error prone, and
+ * should be eliminiated in the future.
+ */
+ }
+ break;
}
+ }
}
/*******************************************************************************
*
* Function bta_pm_action_to_timer_idx
*
- * Description convert power mode into timer index for each connected device
+ * Description convert power mode into timer index for each connected
+ *device
*
*
* Returns index of the power mode delay timer
*
******************************************************************************/
-static uint8_t bta_pm_action_to_timer_idx(uint8_t pm_action)
-{
- if (pm_action == BTA_DM_PM_SUSPEND)
- return BTA_DM_PM_SUSPEND_TIMER_IDX;
- else if (pm_action == BTA_DM_PM_PARK)
- return BTA_DM_PM_PARK_TIMER_IDX;
- else if ((pm_action & BTA_DM_PM_SNIFF) == BTA_DM_PM_SNIFF)
- return BTA_DM_PM_SNIFF_TIMER_IDX;
+static uint8_t bta_pm_action_to_timer_idx(uint8_t pm_action) {
+ if (pm_action == BTA_DM_PM_SUSPEND)
+ return BTA_DM_PM_SUSPEND_TIMER_IDX;
+ else if (pm_action == BTA_DM_PM_PARK)
+ return BTA_DM_PM_PARK_TIMER_IDX;
+ else if ((pm_action & BTA_DM_PM_SNIFF) == BTA_DM_PM_SNIFF)
+ return BTA_DM_PM_SNIFF_TIMER_IDX;
- /* Active, no preference, no action and retry */
- return BTA_DM_PM_MODE_TIMER_MAX;
+ /* Active, no preference, no action and retry */
+ return BTA_DM_PM_MODE_TIMER_MAX;
}
/*******************************************************************************
@@ -216,30 +205,27 @@
* Returns void
*
******************************************************************************/
-static void bta_dm_pm_stop_timer_by_mode(BD_ADDR peer_addr, uint8_t power_mode)
-{
- const uint8_t timer_idx = bta_pm_action_to_timer_idx(power_mode);
- if (timer_idx == BTA_DM_PM_MODE_TIMER_MAX)
- return;
+static void bta_dm_pm_stop_timer_by_mode(BD_ADDR peer_addr,
+ uint8_t power_mode) {
+ const uint8_t timer_idx = bta_pm_action_to_timer_idx(power_mode);
+ if (timer_idx == BTA_DM_PM_MODE_TIMER_MAX) return;
- for (int i = 0; i < BTA_DM_NUM_PM_TIMER; i++)
- {
- if (bta_dm_cb.pm_timer[i].in_use && !bdcmp(bta_dm_cb.pm_timer[i].peer_bdaddr, peer_addr))
- {
- if (bta_dm_cb.pm_timer[i].srvc_id[timer_idx] != BTA_ID_MAX)
- {
- bta_dm_pm_stop_timer_by_index(&bta_dm_cb.pm_timer[i], timer_idx);
- /*
- * TODO: Intentionally setting pm_action[timer_idx].
- * This assignment should be eliminated in the future - see the
- * pm_action[] related comment inside function
- * bta_dm_pm_stop_timer().
- */
- bta_dm_cb.pm_timer[i].pm_action[timer_idx] = power_mode;
- }
- break;
- }
+ for (int i = 0; i < BTA_DM_NUM_PM_TIMER; i++) {
+ if (bta_dm_cb.pm_timer[i].in_use &&
+ !bdcmp(bta_dm_cb.pm_timer[i].peer_bdaddr, peer_addr)) {
+ if (bta_dm_cb.pm_timer[i].srvc_id[timer_idx] != BTA_ID_MAX) {
+ bta_dm_pm_stop_timer_by_index(&bta_dm_cb.pm_timer[i], timer_idx);
+ /*
+ * TODO: Intentionally setting pm_action[timer_idx].
+ * This assignment should be eliminated in the future - see the
+ * pm_action[] related comment inside function
+ * bta_dm_pm_stop_timer().
+ */
+ bta_dm_cb.pm_timer[i].pm_action[timer_idx] = power_mode;
+ }
+ break;
}
+ }
}
/*******************************************************************************
@@ -252,23 +238,20 @@
* Returns index of the power mode delay timer
*
******************************************************************************/
-static void bta_dm_pm_stop_timer_by_srvc_id(BD_ADDR peer_addr, uint8_t srvc_id)
-{
- for (int i = 0; i < BTA_DM_NUM_PM_TIMER; i++)
- {
- if (bta_dm_cb.pm_timer[i].in_use && !bdcmp(bta_dm_cb.pm_timer[i].peer_bdaddr, peer_addr))
- {
- for (int j = 0; j < BTA_DM_PM_MODE_TIMER_MAX; j++)
- {
- if (bta_dm_cb.pm_timer[i].srvc_id[j] == srvc_id)
- {
- bta_dm_pm_stop_timer_by_index(&bta_dm_cb.pm_timer[i], j);
- bta_dm_cb.pm_timer[i].pm_action[j] = BTA_DM_PM_NO_ACTION;
- break;
- }
- }
+static void bta_dm_pm_stop_timer_by_srvc_id(BD_ADDR peer_addr,
+ uint8_t srvc_id) {
+ for (int i = 0; i < BTA_DM_NUM_PM_TIMER; i++) {
+ if (bta_dm_cb.pm_timer[i].in_use &&
+ !bdcmp(bta_dm_cb.pm_timer[i].peer_bdaddr, peer_addr)) {
+ for (int j = 0; j < BTA_DM_PM_MODE_TIMER_MAX; j++) {
+ if (bta_dm_cb.pm_timer[i].srvc_id[j] == srvc_id) {
+ bta_dm_pm_stop_timer_by_index(&bta_dm_cb.pm_timer[i], j);
+ bta_dm_cb.pm_timer[i].pm_action[j] = BTA_DM_PM_NO_ACTION;
+ break;
}
+ }
}
+ }
}
/*******************************************************************************
@@ -281,23 +264,21 @@
* Returns void
*
******************************************************************************/
-static void bta_dm_pm_start_timer(tBTA_PM_TIMER *p_timer, uint8_t timer_idx,
+static void bta_dm_pm_start_timer(tBTA_PM_TIMER* p_timer, uint8_t timer_idx,
period_ms_t timeout_ms, uint8_t srvc_id,
- uint8_t pm_action)
-{
- p_timer->in_use = true;
+ uint8_t pm_action) {
+ p_timer->in_use = true;
- if (p_timer->srvc_id[timer_idx] == BTA_ID_MAX)
- p_timer->active++;
+ if (p_timer->srvc_id[timer_idx] == BTA_ID_MAX) p_timer->active++;
- if (p_timer->pm_action[timer_idx] < pm_action)
- p_timer->pm_action[timer_idx] = pm_action;
+ if (p_timer->pm_action[timer_idx] < pm_action)
+ p_timer->pm_action[timer_idx] = pm_action;
- p_timer->srvc_id[timer_idx] = srvc_id;
+ p_timer->srvc_id[timer_idx] = srvc_id;
- alarm_set_on_queue(p_timer->timer[timer_idx], timeout_ms,
- bta_dm_pm_timer_cback, p_timer->timer[timer_idx],
- btu_bta_alarm_queue);
+ alarm_set_on_queue(p_timer->timer[timer_idx], timeout_ms,
+ bta_dm_pm_timer_cback, p_timer->timer[timer_idx],
+ btu_bta_alarm_queue);
}
/*******************************************************************************
@@ -310,24 +291,21 @@
* Returns void
*
******************************************************************************/
-static void bta_dm_pm_stop_timer_by_index(tBTA_PM_TIMER *p_timer,
- uint8_t timer_idx)
-{
- if ((p_timer == NULL) || (timer_idx >= BTA_DM_PM_MODE_TIMER_MAX))
- return;
+static void bta_dm_pm_stop_timer_by_index(tBTA_PM_TIMER* p_timer,
+ uint8_t timer_idx) {
+ if ((p_timer == NULL) || (timer_idx >= BTA_DM_PM_MODE_TIMER_MAX)) return;
- if (p_timer->srvc_id[timer_idx] == BTA_ID_MAX)
- return; /* The timer was not scheduled */
+ if (p_timer->srvc_id[timer_idx] == BTA_ID_MAX)
+ return; /* The timer was not scheduled */
- assert(p_timer->in_use && (p_timer->active > 0));
+ assert(p_timer->in_use && (p_timer->active > 0));
- alarm_cancel(p_timer->timer[timer_idx]);
- p_timer->srvc_id[timer_idx] = BTA_ID_MAX;
- /* NOTE: pm_action[timer_idx] intentionally not reset */
+ alarm_cancel(p_timer->timer[timer_idx]);
+ p_timer->srvc_id[timer_idx] = BTA_ID_MAX;
+ /* NOTE: pm_action[timer_idx] intentionally not reset */
- p_timer->active--;
- if (p_timer->active == 0)
- p_timer->in_use = false;
+ p_timer->active--;
+ if (p_timer->active == 0) p_timer->in_use = false;
}
/*******************************************************************************
@@ -340,182 +318,163 @@
* Returns void
*
******************************************************************************/
-static void bta_dm_pm_cback(tBTA_SYS_CONN_STATUS status, uint8_t id, uint8_t app_id, BD_ADDR peer_addr)
-{
-
- uint8_t i,j;
- uint8_t *p = NULL;
- tBTA_DM_PEER_DEVICE *p_dev;
- tBTA_DM_PM_REQ pm_req = BTA_DM_PM_NEW_REQ;
+static void bta_dm_pm_cback(tBTA_SYS_CONN_STATUS status, uint8_t id,
+ uint8_t app_id, BD_ADDR peer_addr) {
+ uint8_t i, j;
+ uint8_t* p = NULL;
+ tBTA_DM_PEER_DEVICE* p_dev;
+ tBTA_DM_PM_REQ pm_req = BTA_DM_PM_NEW_REQ;
#if (BTM_SSR_INCLUDED == TRUE)
- int index = BTA_DM_PM_SSR0;
+ int index = BTA_DM_PM_SSR0;
#endif
- APPL_TRACE_DEBUG("bta_dm_pm_cback: st(%d), id(%d), app(%d)", status, id, app_id);
+ APPL_TRACE_DEBUG("bta_dm_pm_cback: st(%d), id(%d), app(%d)", status, id,
+ app_id);
- p_dev = bta_dm_find_peer_device(peer_addr);
+ p_dev = bta_dm_find_peer_device(peer_addr);
- /* find if there is an power mode entry for the service */
- for(i=1; i<=p_bta_dm_pm_cfg[0].app_id; i++)
- {
+ /* find if there is an power mode entry for the service */
+ for (i = 1; i <= p_bta_dm_pm_cfg[0].app_id; i++) {
+ if ((p_bta_dm_pm_cfg[i].id == id) &&
+ ((p_bta_dm_pm_cfg[i].app_id == BTA_ALL_APP_ID) ||
+ (p_bta_dm_pm_cfg[i].app_id == app_id)))
+ break;
+ }
- if((p_bta_dm_pm_cfg[i].id == id)
- && ((p_bta_dm_pm_cfg[i].app_id == BTA_ALL_APP_ID ) || (p_bta_dm_pm_cfg[i].app_id == app_id )))
- break;
+ /* if no entries are there for the app_id and subsystem in p_bta_dm_pm_spec*/
+ if (i > p_bta_dm_pm_cfg[0].app_id) return;
- }
-
- /* if no entries are there for the app_id and subsystem in p_bta_dm_pm_spec*/
- if(i> p_bta_dm_pm_cfg[0].app_id)
- return;
-
- bta_dm_pm_stop_timer_by_srvc_id(peer_addr, id);
- /*p_dev = bta_dm_find_peer_device(peer_addr);*/
+ bta_dm_pm_stop_timer_by_srvc_id(peer_addr, id);
+/*p_dev = bta_dm_find_peer_device(peer_addr);*/
#if (BTM_SSR_INCLUDED == TRUE)
- /* set SSR parameters on SYS CONN OPEN */
- if((BTA_SYS_CONN_OPEN == status) && p_dev && (p_dev->info & BTA_DM_DI_USE_SSR))
- {
- index = p_bta_dm_pm_spec[p_bta_dm_pm_cfg[i].spec_idx].ssr;
- }
+ /* set SSR parameters on SYS CONN OPEN */
+ if ((BTA_SYS_CONN_OPEN == status) && p_dev &&
+ (p_dev->info & BTA_DM_DI_USE_SSR)) {
+ index = p_bta_dm_pm_spec[p_bta_dm_pm_cfg[i].spec_idx].ssr;
+ }
#endif
- /* if no action for the event */
- if(p_bta_dm_pm_spec[p_bta_dm_pm_cfg[i].spec_idx].actn_tbl[status][0].power_mode == BTA_DM_PM_NO_ACTION)
- {
+ /* if no action for the event */
+ if (p_bta_dm_pm_spec[p_bta_dm_pm_cfg[i].spec_idx]
+ .actn_tbl[status][0]
+ .power_mode == BTA_DM_PM_NO_ACTION) {
#if (BTM_SSR_INCLUDED == TRUE)
- if(BTA_DM_PM_SSR0 == index) /* and do not need to set SSR, return. */
+ if (BTA_DM_PM_SSR0 == index) /* and do not need to set SSR, return. */
#endif
- return;
+ return;
+ }
+
+ for (j = 0; j < bta_dm_conn_srvcs.count; j++) {
+ /* check if an entry already present */
+ if ((bta_dm_conn_srvcs.conn_srvc[j].id == id) &&
+ (bta_dm_conn_srvcs.conn_srvc[j].app_id == app_id) &&
+ !bdcmp(bta_dm_conn_srvcs.conn_srvc[j].peer_bdaddr, peer_addr)) {
+ bta_dm_conn_srvcs.conn_srvc[j].new_request = true;
+ break;
+ }
+ }
+
+ /* if subsystem has no more preference on the power mode remove
+ the cb */
+ if (p_bta_dm_pm_spec[p_bta_dm_pm_cfg[i].spec_idx]
+ .actn_tbl[status][0]
+ .power_mode == BTA_DM_PM_NO_PREF) {
+ if (j != bta_dm_conn_srvcs.count) {
+ bta_dm_conn_srvcs.count--;
+
+ for (; j < bta_dm_conn_srvcs.count; j++) {
+ memcpy(&bta_dm_conn_srvcs.conn_srvc[j],
+ &bta_dm_conn_srvcs.conn_srvc[j + 1],
+ sizeof(bta_dm_conn_srvcs.conn_srvc[j]));
+ }
+ } else {
+ APPL_TRACE_WARNING("bta_dm_act no entry for connected service cbs");
+ return;
+ }
+ } else if (j == bta_dm_conn_srvcs.count) {
+ /* check if we have more connected service that cbs */
+ if (bta_dm_conn_srvcs.count == BTA_DM_NUM_CONN_SRVS) {
+ APPL_TRACE_WARNING("bta_dm_act no more connected service cbs");
+ return;
}
- for(j=0; j<bta_dm_conn_srvcs.count ; j++)
- {
- /* check if an entry already present */
- if((bta_dm_conn_srvcs.conn_srvc[j].id == id)
- && (bta_dm_conn_srvcs.conn_srvc[j].app_id == app_id )
- && !bdcmp(bta_dm_conn_srvcs.conn_srvc[j].peer_bdaddr, peer_addr))
- {
- bta_dm_conn_srvcs.conn_srvc[j].new_request = true;
- break;
- }
+ /* fill in a new cb */
+ bta_dm_conn_srvcs.conn_srvc[j].id = id;
+ bta_dm_conn_srvcs.conn_srvc[j].app_id = app_id;
+ bta_dm_conn_srvcs.conn_srvc[j].new_request = true;
+ bdcpy(bta_dm_conn_srvcs.conn_srvc[j].peer_bdaddr, peer_addr);
- }
+ APPL_TRACE_WARNING("new conn_srvc id:%d, app_id:%d", id, app_id);
- /* if subsystem has no more preference on the power mode remove
- the cb */
- if(p_bta_dm_pm_spec[p_bta_dm_pm_cfg[i].spec_idx].actn_tbl[status][0].power_mode == BTA_DM_PM_NO_PREF)
- {
- if(j != bta_dm_conn_srvcs.count)
- {
- bta_dm_conn_srvcs.count--;
+ bta_dm_conn_srvcs.count++;
+ bta_dm_conn_srvcs.conn_srvc[j].state = status;
+ } else {
+ /* no service is added or removed. only updating status. */
+ bta_dm_conn_srvcs.conn_srvc[j].state = status;
+ }
- for(; j<bta_dm_conn_srvcs.count ; j++)
- {
+ /* stop timer */
+ bta_dm_pm_stop_timer(peer_addr);
+ if (bta_dm_conn_srvcs.count > 0) {
+ pm_req = BTA_DM_PM_RESTART;
+ APPL_TRACE_DEBUG(
+ "%s bta_dm_pm_stop_timer for current service, restart other "
+ "service timers: count = %d",
+ __func__, bta_dm_conn_srvcs.count);
+ }
- memcpy(&bta_dm_conn_srvcs.conn_srvc[j], &bta_dm_conn_srvcs.conn_srvc[j+1], sizeof(bta_dm_conn_srvcs.conn_srvc[j]));
-
- }
- }
- else
- {
- APPL_TRACE_WARNING("bta_dm_act no entry for connected service cbs");
- return;
- }
- }
- else if(j == bta_dm_conn_srvcs.count )
- {
- /* check if we have more connected service that cbs */
- if(bta_dm_conn_srvcs.count == BTA_DM_NUM_CONN_SRVS)
- {
- APPL_TRACE_WARNING("bta_dm_act no more connected service cbs");
- return;
- }
-
- /* fill in a new cb */
- bta_dm_conn_srvcs.conn_srvc[j].id = id;
- bta_dm_conn_srvcs.conn_srvc[j].app_id = app_id;
- bta_dm_conn_srvcs.conn_srvc[j].new_request = true;
- bdcpy(bta_dm_conn_srvcs.conn_srvc[j].peer_bdaddr, peer_addr);
-
- APPL_TRACE_WARNING("new conn_srvc id:%d, app_id:%d", id, app_id);
-
- bta_dm_conn_srvcs.count++;
- bta_dm_conn_srvcs.conn_srvc[j].state = status;
- }
- else
- {
- /* no service is added or removed. only updating status. */
- bta_dm_conn_srvcs.conn_srvc[j].state = status;
- }
-
- /* stop timer */
- bta_dm_pm_stop_timer(peer_addr);
- if (bta_dm_conn_srvcs.count > 0) {
- pm_req = BTA_DM_PM_RESTART;
- APPL_TRACE_DEBUG("%s bta_dm_pm_stop_timer for current service, restart other "
- "service timers: count = %d", __func__, bta_dm_conn_srvcs.count);
- }
-
- if(p_dev)
- {
- p_dev->pm_mode_attempted = 0;
- p_dev->pm_mode_failed = 0;
- }
+ if (p_dev) {
+ p_dev->pm_mode_attempted = 0;
+ p_dev->pm_mode_failed = 0;
+ }
#if (BTM_SSR_INCLUDED == TRUE)
- if(p_bta_dm_ssr_spec[index].max_lat
+ if (p_bta_dm_ssr_spec[index].max_lat
#if (BTA_HH_INCLUDED == TRUE)
- || index == BTA_DM_PM_SSR_HH
+ || index == BTA_DM_PM_SSR_HH
#endif
- )
- {
+ ) {
+ bta_dm_pm_ssr(peer_addr);
+ } else {
+ if (((NULL != (p = BTM_ReadLocalFeatures())) &&
+ HCI_SNIFF_SUB_RATE_SUPPORTED(p)) &&
+ ((NULL != (p = BTM_ReadRemoteFeatures(peer_addr))) &&
+ HCI_SNIFF_SUB_RATE_SUPPORTED(p)) &&
+ (index == BTA_DM_PM_SSR0)) {
+ if (status == BTA_SYS_SCO_OPEN) {
+ APPL_TRACE_DEBUG("%s: SCO inactive, reset SSR to zero", __func__);
+ BTM_SetSsrParams(peer_addr, 0, 0, 0);
+ } else if (status == BTA_SYS_SCO_CLOSE) {
+ APPL_TRACE_DEBUG("%s: SCO active, back to old SSR", __func__);
bta_dm_pm_ssr(peer_addr);
+ }
}
- else
- {
- if( ((NULL != (p = BTM_ReadLocalFeatures ())) && HCI_SNIFF_SUB_RATE_SUPPORTED(p)) &&
- ((NULL != (p = BTM_ReadRemoteFeatures (peer_addr))) && HCI_SNIFF_SUB_RATE_SUPPORTED(p)) &&
- (index == BTA_DM_PM_SSR0))
- {
- if (status == BTA_SYS_SCO_OPEN)
- {
- APPL_TRACE_DEBUG("%s: SCO inactive, reset SSR to zero", __func__);
- BTM_SetSsrParams (peer_addr, 0,0,0 );
- }
- else if (status == BTA_SYS_SCO_CLOSE)
- {
- APPL_TRACE_DEBUG("%s: SCO active, back to old SSR", __func__);
- bta_dm_pm_ssr(peer_addr);
- }
- }
- }
+ }
#endif
- bta_dm_pm_set_mode(peer_addr, BTA_DM_PM_NO_ACTION, pm_req);
+ bta_dm_pm_set_mode(peer_addr, BTA_DM_PM_NO_ACTION, pm_req);
- /* perform the HID link workaround if needed
- ** 1. If SCO up/down event is received OR
- ** 2. If HID connection open is received and SCO is already active.
- ** This will handle the case where HID connects when SCO already active
- */
- if ( BTM_IsDeviceUp() &&
- ( ((status == BTA_SYS_SCO_OPEN) || (status == BTA_SYS_SCO_CLOSE)) ||
- ((status == BTA_SYS_CONN_OPEN) && (id == BTA_ID_HH) && bta_dm_pm_is_sco_active()) ) )
- {
- bool bScoActive;
- if (status == BTA_SYS_CONN_OPEN)
- bScoActive = true;
- else
- bScoActive = (status == BTA_SYS_SCO_OPEN);
+ /* perform the HID link workaround if needed
+ ** 1. If SCO up/down event is received OR
+ ** 2. If HID connection open is received and SCO is already active.
+ ** This will handle the case where HID connects when SCO already active
+ */
+ if (BTM_IsDeviceUp() &&
+ (((status == BTA_SYS_SCO_OPEN) || (status == BTA_SYS_SCO_CLOSE)) ||
+ ((status == BTA_SYS_CONN_OPEN) && (id == BTA_ID_HH) &&
+ bta_dm_pm_is_sco_active()))) {
+ bool bScoActive;
+ if (status == BTA_SYS_CONN_OPEN)
+ bScoActive = true;
+ else
+ bScoActive = (status == BTA_SYS_SCO_OPEN);
- bta_dm_pm_hid_check(bScoActive);
- }
-
+ bta_dm_pm_hid_check(bScoActive);
+ }
}
-
/*******************************************************************************
*
* Function bta_dm_pm_set_mode
@@ -528,197 +487,161 @@
******************************************************************************/
static void bta_dm_pm_set_mode(BD_ADDR peer_addr, tBTA_DM_PM_ACTION pm_request,
- tBTA_DM_PM_REQ pm_req )
-{
+ tBTA_DM_PM_REQ pm_req) {
+ tBTA_DM_PM_ACTION pm_action = BTA_DM_PM_NO_ACTION;
+ period_ms_t timeout_ms = 0;
+ uint8_t i, j;
+ tBTA_DM_PM_ACTION failed_pm = 0;
+ tBTA_DM_PEER_DEVICE* p_peer_device = NULL;
+ tBTA_DM_PM_ACTION allowed_modes = 0;
+ tBTA_DM_PM_ACTION pref_modes = 0;
+ tBTA_DM_PM_CFG* p_pm_cfg;
+ tBTA_DM_PM_SPEC* p_pm_spec;
+ tBTA_DM_PM_ACTN *p_act0, *p_act1;
+ tBTA_DM_SRVCS* p_srvcs = NULL;
+ bool timer_started = false;
+ uint8_t timer_idx, available_timer = BTA_DM_PM_MODE_TIMER_MAX;
+ period_ms_t remaining_ms = 0;
- tBTA_DM_PM_ACTION pm_action = BTA_DM_PM_NO_ACTION;
- period_ms_t timeout_ms = 0;
- uint8_t i,j;
- tBTA_DM_PM_ACTION failed_pm = 0;
- tBTA_DM_PEER_DEVICE *p_peer_device = NULL;
- tBTA_DM_PM_ACTION allowed_modes = 0;
- tBTA_DM_PM_ACTION pref_modes = 0;
- tBTA_DM_PM_CFG *p_pm_cfg;
- tBTA_DM_PM_SPEC *p_pm_spec;
- tBTA_DM_PM_ACTN *p_act0, *p_act1;
- tBTA_DM_SRVCS *p_srvcs = NULL;
- bool timer_started = false;
- uint8_t timer_idx, available_timer = BTA_DM_PM_MODE_TIMER_MAX;
- period_ms_t remaining_ms = 0;
+ if (!bta_dm_cb.device_list.count) return;
- if(!bta_dm_cb.device_list.count)
- return;
+ /* see if any attempt to put device in low power mode failed */
+ p_peer_device = bta_dm_find_peer_device(peer_addr);
+ /* if no peer device found return */
+ if (p_peer_device == NULL) return;
- /* see if any attempt to put device in low power mode failed */
- p_peer_device = bta_dm_find_peer_device(peer_addr);
- /* if no peer device found return */
- if (p_peer_device == NULL)
- return;
+ failed_pm = p_peer_device->pm_mode_failed;
- failed_pm = p_peer_device->pm_mode_failed;
+ for (i = 0; i < bta_dm_conn_srvcs.count; i++) {
+ p_srvcs = &bta_dm_conn_srvcs.conn_srvc[i];
+ if (!bdcmp(p_srvcs->peer_bdaddr, peer_addr)) {
+ /* p_bta_dm_pm_cfg[0].app_id is the number of entries */
+ for (j = 1; j <= p_bta_dm_pm_cfg[0].app_id; j++) {
+ if ((p_bta_dm_pm_cfg[j].id == p_srvcs->id) &&
+ ((p_bta_dm_pm_cfg[j].app_id == BTA_ALL_APP_ID) ||
+ (p_bta_dm_pm_cfg[j].app_id == p_srvcs->app_id)))
+ break;
+ }
- for(i=0; i<bta_dm_conn_srvcs.count ; i++)
- {
+ p_pm_cfg = &p_bta_dm_pm_cfg[j];
+ p_pm_spec = &p_bta_dm_pm_spec[p_pm_cfg->spec_idx];
+ p_act0 = &p_pm_spec->actn_tbl[p_srvcs->state][0];
+ p_act1 = &p_pm_spec->actn_tbl[p_srvcs->state][1];
- p_srvcs = &bta_dm_conn_srvcs.conn_srvc[i];
- if(!bdcmp(p_srvcs->peer_bdaddr, peer_addr))
- {
+ APPL_TRACE_DEBUG("bta_dm_pm_set_mode: srvcsid: %d, state: %d, j: %d",
+ p_srvcs->id, p_srvcs->state, j);
+ allowed_modes |= p_pm_spec->allow_mask;
- /* p_bta_dm_pm_cfg[0].app_id is the number of entries */
- for(j=1; j<=p_bta_dm_pm_cfg[0].app_id; j++)
- {
- if((p_bta_dm_pm_cfg[j].id == p_srvcs->id)
- && ((p_bta_dm_pm_cfg[j].app_id == BTA_ALL_APP_ID ) ||
- (p_bta_dm_pm_cfg[j].app_id == p_srvcs->app_id)))
- break;
- }
+ /* PM actions are in the order of strictness */
- p_pm_cfg = &p_bta_dm_pm_cfg[j];
- p_pm_spec = &p_bta_dm_pm_spec[p_pm_cfg->spec_idx];
- p_act0 = &p_pm_spec->actn_tbl[p_srvcs->state][0];
- p_act1 = &p_pm_spec->actn_tbl[p_srvcs->state][1];
+ /* first check if the first preference is ok */
+ if (!(failed_pm & p_act0->power_mode)) {
+ pref_modes |= p_act0->power_mode;
- APPL_TRACE_DEBUG("bta_dm_pm_set_mode: srvcsid: %d, state: %d, j: %d", p_srvcs->id, p_srvcs->state, j);
- allowed_modes |= p_pm_spec->allow_mask;
+ if (p_act0->power_mode >= pm_action) {
+ pm_action = p_act0->power_mode;
- /* PM actions are in the order of strictness */
-
- /* first check if the first preference is ok */
- if(!(failed_pm & p_act0->power_mode))
- {
- pref_modes |= p_act0->power_mode;
-
- if(p_act0->power_mode >= pm_action)
- {
- pm_action = p_act0->power_mode;
-
- if (pm_req != BTA_DM_PM_NEW_REQ || p_srvcs->new_request)
- {
- p_srvcs->new_request = false;
- timeout_ms = p_act0->timeout;
- }
- }
- }
- /* if first preference has already failed, try second preference */
- else if(!(failed_pm & p_act1->power_mode))
- {
- pref_modes |= p_act1->power_mode;
-
- if(p_act1->power_mode > pm_action)
- {
- pm_action = p_act1->power_mode;
- timeout_ms = p_act1->timeout;
- }
- }
+ if (pm_req != BTA_DM_PM_NEW_REQ || p_srvcs->new_request) {
+ p_srvcs->new_request = false;
+ timeout_ms = p_act0->timeout;
+ }
}
- }
+ }
+ /* if first preference has already failed, try second preference */
+ else if (!(failed_pm & p_act1->power_mode)) {
+ pref_modes |= p_act1->power_mode;
- if(pm_action & (BTA_DM_PM_PARK | BTA_DM_PM_SNIFF))
- {
- /* some service don't like the mode */
- if(!(allowed_modes & pm_action))
- {
+ if (p_act1->power_mode > pm_action) {
+ pm_action = p_act1->power_mode;
+ timeout_ms = p_act1->timeout;
+ }
+ }
+ }
+ }
- /* select the other mode if its allowed and preferred, otherwise 0 which is BTA_DM_PM_NO_ACTION */
- pm_action = (allowed_modes & (BTA_DM_PM_PARK | BTA_DM_PM_SNIFF) & pref_modes);
+ if (pm_action & (BTA_DM_PM_PARK | BTA_DM_PM_SNIFF)) {
+ /* some service don't like the mode */
+ if (!(allowed_modes & pm_action)) {
+ /* select the other mode if its allowed and preferred, otherwise 0 which
+ * is BTA_DM_PM_NO_ACTION */
+ pm_action =
+ (allowed_modes & (BTA_DM_PM_PARK | BTA_DM_PM_SNIFF) & pref_modes);
- /* no timeout needed if no action is required */
- if(pm_action == BTA_DM_PM_NO_ACTION)
- {
- timeout_ms = 0;
- }
-
+ /* no timeout needed if no action is required */
+ if (pm_action == BTA_DM_PM_NO_ACTION) {
+ timeout_ms = 0;
+ }
+ }
+ }
+ /* if need to start a timer */
+ if ((pm_req != BTA_DM_PM_EXECUTE) && (timeout_ms > 0)) {
+ for (i = 0; i < BTA_DM_NUM_PM_TIMER; i++) {
+ if (bta_dm_cb.pm_timer[i].in_use &&
+ bdcmp(bta_dm_cb.pm_timer[i].peer_bdaddr, peer_addr) == 0) {
+ if ((timer_idx = bta_pm_action_to_timer_idx(pm_action)) !=
+ BTA_DM_PM_MODE_TIMER_MAX) {
+ remaining_ms =
+ alarm_get_remaining_ms(bta_dm_cb.pm_timer[i].timer[timer_idx]);
+ if (remaining_ms < timeout_ms) {
+ /* Cancel and restart the timer */
+ /*
+ * TODO: The value of pm_action[timer_idx] is
+ * conditionally updated between the two function
+ * calls below when the timer is restarted.
+ * This logic is error-prone and should be eliminated
+ * in the future.
+ */
+ bta_dm_pm_stop_timer_by_index(&bta_dm_cb.pm_timer[i], timer_idx);
+ bta_dm_pm_start_timer(&bta_dm_cb.pm_timer[i], timer_idx, timeout_ms,
+ p_srvcs->id, pm_action);
+ }
+ timer_started = true;
}
+ break;
+ } else if (!bta_dm_cb.pm_timer[i].in_use) {
+ APPL_TRACE_DEBUG("%s dm_pm_timer:%d, %d ms", __func__, i, timeout_ms);
+ if (available_timer == BTA_DM_PM_MODE_TIMER_MAX) available_timer = i;
+ }
}
- /* if need to start a timer */
- if ((pm_req != BTA_DM_PM_EXECUTE) && (timeout_ms > 0))
- {
- for (i=0; i<BTA_DM_NUM_PM_TIMER; i++)
- {
- if (bta_dm_cb.pm_timer[i].in_use && bdcmp(bta_dm_cb.pm_timer[i].peer_bdaddr, peer_addr) == 0)
- {
- if ((timer_idx = bta_pm_action_to_timer_idx(pm_action)) != BTA_DM_PM_MODE_TIMER_MAX)
- {
- remaining_ms = alarm_get_remaining_ms(bta_dm_cb.pm_timer[i].timer[timer_idx]);
- if (remaining_ms < timeout_ms)
- {
- /* Cancel and restart the timer */
- /*
- * TODO: The value of pm_action[timer_idx] is
- * conditionally updated between the two function
- * calls below when the timer is restarted.
- * This logic is error-prone and should be eliminated
- * in the future.
- */
- bta_dm_pm_stop_timer_by_index(&bta_dm_cb.pm_timer[i],
- timer_idx);
- bta_dm_pm_start_timer(&bta_dm_cb.pm_timer[i],
- timer_idx, timeout_ms,
- p_srvcs->id, pm_action);
- }
- timer_started = true;
- }
- break;
- }
- else if (!bta_dm_cb.pm_timer[i].in_use)
- {
- APPL_TRACE_DEBUG("%s dm_pm_timer:%d, %d ms", __func__, i,
- timeout_ms);
- if (available_timer == BTA_DM_PM_MODE_TIMER_MAX)
- available_timer = i;
- }
+ /* new power mode for a new active connection */
+ if (!timer_started) {
+ if (available_timer != BTA_DM_PM_MODE_TIMER_MAX) {
+ bdcpy(bta_dm_cb.pm_timer[available_timer].peer_bdaddr, peer_addr);
+ if ((timer_idx = bta_pm_action_to_timer_idx(pm_action)) !=
+ BTA_DM_PM_MODE_TIMER_MAX) {
+ bta_dm_pm_start_timer(&bta_dm_cb.pm_timer[available_timer], timer_idx,
+ timeout_ms, p_srvcs->id, pm_action);
+ timer_started = true;
}
- /* new power mode for a new active connection */
- if (!timer_started)
- {
- if( available_timer != BTA_DM_PM_MODE_TIMER_MAX)
- {
- bdcpy(bta_dm_cb.pm_timer[available_timer].peer_bdaddr, peer_addr);
- if ((timer_idx = bta_pm_action_to_timer_idx(pm_action)) != BTA_DM_PM_MODE_TIMER_MAX)
- {
- bta_dm_pm_start_timer(&bta_dm_cb.pm_timer[available_timer],
- timer_idx, timeout_ms,
- p_srvcs->id, pm_action);
- timer_started = true;
- }
- }
- /* no more timers */
- else
- {
- APPL_TRACE_WARNING("bta_dm_act dm_pm_timer no more");
- }
- }
- return;
+ }
+ /* no more timers */
+ else {
+ APPL_TRACE_WARNING("bta_dm_act dm_pm_timer no more");
+ }
}
- /* if pending power mode timer expires, and currecnt link is in a
- lower power mode than current profile requirement, igonre it */
- if (pm_req == BTA_DM_PM_EXECUTE && pm_request < pm_action)
- {
- APPL_TRACE_ERROR("Ignore the power mode request: %d", pm_request)
- return;
+ return;
+ }
+ /* if pending power mode timer expires, and currecnt link is in a
+ lower power mode than current profile requirement, igonre it */
+ if (pm_req == BTA_DM_PM_EXECUTE && pm_request < pm_action) {
+ APPL_TRACE_ERROR("Ignore the power mode request: %d", pm_request)
+ return;
+ }
+ if (pm_action == BTA_DM_PM_PARK) {
+ p_peer_device->pm_mode_attempted = BTA_DM_PM_PARK;
+ bta_dm_pm_park(peer_addr);
+ } else if (pm_action & BTA_DM_PM_SNIFF) {
+ /* dont initiate SNIFF, if link_policy has it disabled */
+ if (p_peer_device->link_policy & HCI_ENABLE_SNIFF_MODE) {
+ p_peer_device->pm_mode_attempted = BTA_DM_PM_SNIFF;
+ bta_dm_pm_sniff(p_peer_device, (uint8_t)(pm_action & 0x0F));
+ } else {
+ APPL_TRACE_DEBUG(
+ "bta_dm_pm_set_mode: Link policy disallows SNIFF, ignore request");
}
- if(pm_action == BTA_DM_PM_PARK)
- {
- p_peer_device->pm_mode_attempted = BTA_DM_PM_PARK;
- bta_dm_pm_park(peer_addr);
- }
- else if(pm_action & BTA_DM_PM_SNIFF)
- {
- /* dont initiate SNIFF, if link_policy has it disabled */
- if (p_peer_device->link_policy & HCI_ENABLE_SNIFF_MODE)
- {
- p_peer_device->pm_mode_attempted = BTA_DM_PM_SNIFF;
- bta_dm_pm_sniff(p_peer_device, (uint8_t)(pm_action & 0x0F) );
- }
- else
- {
- APPL_TRACE_DEBUG("bta_dm_pm_set_mode: Link policy disallows SNIFF, ignore request");
- }
- }
- else if(pm_action == BTA_DM_PM_ACTIVE)
- {
- bta_dm_pm_active(peer_addr);
- }
+ } else if (pm_action == BTA_DM_PM_ACTIVE) {
+ bta_dm_pm_active(peer_addr);
+ }
}
/*******************************************************************************
*
@@ -730,20 +653,17 @@
* Returns true if park attempted, false otherwise.
*
******************************************************************************/
-static bool bta_dm_pm_park(BD_ADDR peer_addr)
-{
+static bool bta_dm_pm_park(BD_ADDR peer_addr) {
+ tBTM_PM_MODE mode = BTM_PM_STS_ACTIVE;
- tBTM_PM_MODE mode = BTM_PM_STS_ACTIVE;
+ /* if not in park mode, switch to park */
+ BTM_ReadPowerMode(peer_addr, &mode);
- /* if not in park mode, switch to park */
- BTM_ReadPowerMode(peer_addr, &mode);
-
- if(mode != BTM_PM_MD_PARK)
- {
- BTM_SetPowerMode (bta_dm_cb.pm_id, peer_addr, &p_bta_dm_pm_md[BTA_DM_PM_PARK_IDX]);
- }
- return true;
-
+ if (mode != BTM_PM_MD_PARK) {
+ BTM_SetPowerMode(bta_dm_cb.pm_id, peer_addr,
+ &p_bta_dm_pm_md[BTA_DM_PM_PARK_IDX]);
+ }
+ return true;
}
/*******************************************************************************
@@ -756,65 +676,63 @@
* Returns true if sniff attempted, false otherwise.
*
******************************************************************************/
-static bool bta_dm_pm_sniff(tBTA_DM_PEER_DEVICE *p_peer_dev, uint8_t index)
-{
- tBTM_PM_MODE mode = BTM_PM_STS_ACTIVE;
- tBTM_PM_PWR_MD pwr_md;
- tBTM_STATUS status;
+static bool bta_dm_pm_sniff(tBTA_DM_PEER_DEVICE* p_peer_dev, uint8_t index) {
+ tBTM_PM_MODE mode = BTM_PM_STS_ACTIVE;
+ tBTM_PM_PWR_MD pwr_md;
+ tBTM_STATUS status;
#if (BTM_SSR_INCLUDED == TRUE)
- uint8_t *p_rem_feat = NULL;
+ uint8_t* p_rem_feat = NULL;
#endif
- BTM_ReadPowerMode(p_peer_dev->peer_bdaddr, &mode);
- p_rem_feat = BTM_ReadRemoteFeatures (p_peer_dev->peer_bdaddr);
+ BTM_ReadPowerMode(p_peer_dev->peer_bdaddr, &mode);
+ p_rem_feat = BTM_ReadRemoteFeatures(p_peer_dev->peer_bdaddr);
#if (BTM_SSR_INCLUDED == TRUE)
- APPL_TRACE_DEBUG("bta_dm_pm_sniff cur:%d, idx:%d, info:x%x", mode, index, p_peer_dev->info);
- if (mode != BTM_PM_MD_SNIFF ||
- (HCI_SNIFF_SUB_RATE_SUPPORTED(BTM_ReadLocalFeatures ()) && p_rem_feat &&
- HCI_SNIFF_SUB_RATE_SUPPORTED(p_rem_feat) &&
- !(p_peer_dev->info & BTA_DM_DI_USE_SSR)))
+ APPL_TRACE_DEBUG("bta_dm_pm_sniff cur:%d, idx:%d, info:x%x", mode, index,
+ p_peer_dev->info);
+ if (mode != BTM_PM_MD_SNIFF ||
+ (HCI_SNIFF_SUB_RATE_SUPPORTED(BTM_ReadLocalFeatures()) && p_rem_feat &&
+ HCI_SNIFF_SUB_RATE_SUPPORTED(p_rem_feat) &&
+ !(p_peer_dev->info & BTA_DM_DI_USE_SSR)))
#else
- APPL_TRACE_DEBUG("bta_dm_pm_sniff cur:%d, idx:%d", mode, index);
- if(mode != BTM_PM_MD_SNIFF)
+ APPL_TRACE_DEBUG("bta_dm_pm_sniff cur:%d, idx:%d", mode, index);
+ if (mode != BTM_PM_MD_SNIFF)
#endif
- {
+ {
#if (BTM_SSR_INCLUDED == TRUE)
- /* Dont initiate Sniff if controller has alreay accepted
- * remote sniff params. This avoid sniff loop issue with
- * some agrresive headsets who use sniff latencies more than
- * DUT supported range of Sniff intervals.*/
- if ((mode == BTM_PM_MD_SNIFF) && (p_peer_dev->info & BTA_DM_DI_ACP_SNIFF))
- {
- APPL_TRACE_DEBUG("%s: already in remote initiate sniff", __func__);
- return true;
- }
-#endif
- /* if the current mode is not sniff, issue the sniff command.
- * If sniff, but SSR is not used in this link, still issue the command */
- memcpy(&pwr_md, &p_bta_dm_pm_md[index], sizeof (tBTM_PM_PWR_MD));
- if (p_peer_dev->info & BTA_DM_DI_INT_SNIFF)
- {
- pwr_md.mode |= BTM_PM_MD_FORCE;
- }
- status = BTM_SetPowerMode (bta_dm_cb.pm_id, p_peer_dev->peer_bdaddr, &pwr_md);
- if (status == BTM_CMD_STORED|| status == BTM_CMD_STARTED)
- {
- p_peer_dev->info &= ~(BTA_DM_DI_INT_SNIFF|BTA_DM_DI_ACP_SNIFF);
- p_peer_dev->info |= BTA_DM_DI_SET_SNIFF;
- }
- else if (status == BTM_SUCCESS)
- {
- APPL_TRACE_DEBUG("bta_dm_pm_sniff BTM_SetPowerMode() returns BTM_SUCCESS");
- p_peer_dev->info &= ~(BTA_DM_DI_INT_SNIFF|BTA_DM_DI_ACP_SNIFF|BTA_DM_DI_SET_SNIFF);
- }
- else /* error */
- {
- APPL_TRACE_ERROR("bta_dm_pm_sniff BTM_SetPowerMode() returns ERROR status=%d", status);
- p_peer_dev->info &= ~(BTA_DM_DI_INT_SNIFF|BTA_DM_DI_ACP_SNIFF|BTA_DM_DI_SET_SNIFF);
- }
+ /* Dont initiate Sniff if controller has alreay accepted
+ * remote sniff params. This avoid sniff loop issue with
+ * some agrresive headsets who use sniff latencies more than
+ * DUT supported range of Sniff intervals.*/
+ if ((mode == BTM_PM_MD_SNIFF) && (p_peer_dev->info & BTA_DM_DI_ACP_SNIFF)) {
+ APPL_TRACE_DEBUG("%s: already in remote initiate sniff", __func__);
+ return true;
}
- return true;
-
+#endif
+ /* if the current mode is not sniff, issue the sniff command.
+ * If sniff, but SSR is not used in this link, still issue the command */
+ memcpy(&pwr_md, &p_bta_dm_pm_md[index], sizeof(tBTM_PM_PWR_MD));
+ if (p_peer_dev->info & BTA_DM_DI_INT_SNIFF) {
+ pwr_md.mode |= BTM_PM_MD_FORCE;
+ }
+ status =
+ BTM_SetPowerMode(bta_dm_cb.pm_id, p_peer_dev->peer_bdaddr, &pwr_md);
+ if (status == BTM_CMD_STORED || status == BTM_CMD_STARTED) {
+ p_peer_dev->info &= ~(BTA_DM_DI_INT_SNIFF | BTA_DM_DI_ACP_SNIFF);
+ p_peer_dev->info |= BTA_DM_DI_SET_SNIFF;
+ } else if (status == BTM_SUCCESS) {
+ APPL_TRACE_DEBUG(
+ "bta_dm_pm_sniff BTM_SetPowerMode() returns BTM_SUCCESS");
+ p_peer_dev->info &=
+ ~(BTA_DM_DI_INT_SNIFF | BTA_DM_DI_ACP_SNIFF | BTA_DM_DI_SET_SNIFF);
+ } else /* error */
+ {
+ APPL_TRACE_ERROR(
+ "bta_dm_pm_sniff BTM_SetPowerMode() returns ERROR status=%d", status);
+ p_peer_dev->info &=
+ ~(BTA_DM_DI_INT_SNIFF | BTA_DM_DI_ACP_SNIFF | BTA_DM_DI_SET_SNIFF);
+ }
+ }
+ return true;
}
/*******************************************************************************
*
@@ -826,75 +744,73 @@
*
******************************************************************************/
#if (BTM_SSR_INCLUDED == TRUE)
-static void bta_dm_pm_ssr(BD_ADDR peer_addr)
-{
- tBTA_DM_SSR_SPEC *p_spec, *p_spec_cur;
- uint8_t i,j;
- int ssr = BTA_DM_PM_SSR0;
+static void bta_dm_pm_ssr(BD_ADDR peer_addr) {
+ tBTA_DM_SSR_SPEC *p_spec, *p_spec_cur;
+ uint8_t i, j;
+ int ssr = BTA_DM_PM_SSR0;
- /* go through the connected services */
- for(i=0; i<bta_dm_conn_srvcs.count ; i++)
- {
- if(!bdcmp(bta_dm_conn_srvcs.conn_srvc[i].peer_bdaddr, peer_addr))
- {
- /* p_bta_dm_pm_cfg[0].app_id is the number of entries */
- for(j=1; j<=p_bta_dm_pm_cfg[0].app_id; j++)
- {
- /* find the associated p_bta_dm_pm_cfg */
- if((p_bta_dm_pm_cfg[j].id == bta_dm_conn_srvcs.conn_srvc[i].id)
- && ((p_bta_dm_pm_cfg[j].app_id == BTA_ALL_APP_ID )
- || (p_bta_dm_pm_cfg[j].app_id == bta_dm_conn_srvcs.conn_srvc[i].app_id)))
- {
- APPL_TRACE_WARNING("bta_dm_pm_ssr conn_srvc id:%d, app_id:%d",
- bta_dm_conn_srvcs.conn_srvc[i].id, bta_dm_conn_srvcs.conn_srvc[i].app_id);
- break;
- }
- }
+ /* go through the connected services */
+ for (i = 0; i < bta_dm_conn_srvcs.count; i++) {
+ if (!bdcmp(bta_dm_conn_srvcs.conn_srvc[i].peer_bdaddr, peer_addr)) {
+ /* p_bta_dm_pm_cfg[0].app_id is the number of entries */
+ for (j = 1; j <= p_bta_dm_pm_cfg[0].app_id; j++) {
+ /* find the associated p_bta_dm_pm_cfg */
+ if ((p_bta_dm_pm_cfg[j].id == bta_dm_conn_srvcs.conn_srvc[i].id) &&
+ ((p_bta_dm_pm_cfg[j].app_id == BTA_ALL_APP_ID) ||
+ (p_bta_dm_pm_cfg[j].app_id ==
+ bta_dm_conn_srvcs.conn_srvc[i].app_id))) {
+ APPL_TRACE_WARNING("bta_dm_pm_ssr conn_srvc id:%d, app_id:%d",
+ bta_dm_conn_srvcs.conn_srvc[i].id,
+ bta_dm_conn_srvcs.conn_srvc[i].app_id);
+ break;
+ }
+ }
- /* find the ssr index with the smallest max latency. */
- p_spec_cur = &p_bta_dm_ssr_spec[p_bta_dm_pm_spec[p_bta_dm_pm_cfg[j].spec_idx].ssr];
- p_spec = &p_bta_dm_ssr_spec[ssr];
+ /* find the ssr index with the smallest max latency. */
+ p_spec_cur =
+ &p_bta_dm_ssr_spec[p_bta_dm_pm_spec[p_bta_dm_pm_cfg[j].spec_idx].ssr];
+ p_spec = &p_bta_dm_ssr_spec[ssr];
#if (BTA_HH_INCLUDED == TRUE)
- /* HH has the per connection SSR preference, already read the SSR params from BTA HH */
- if (p_bta_dm_pm_spec[p_bta_dm_pm_cfg[j].spec_idx].ssr == BTA_DM_PM_SSR_HH)
- {
- if (bta_hh_read_ssr_param(peer_addr, &p_spec_cur->max_lat, &p_spec_cur->min_rmt_to) == BTA_HH_ERR)
- continue;
- }
+ /* HH has the per connection SSR preference, already read the SSR params
+ * from BTA HH */
+ if (p_bta_dm_pm_spec[p_bta_dm_pm_cfg[j].spec_idx].ssr ==
+ BTA_DM_PM_SSR_HH) {
+ if (bta_hh_read_ssr_param(peer_addr, &p_spec_cur->max_lat,
+ &p_spec_cur->min_rmt_to) == BTA_HH_ERR)
+ continue;
+ }
#endif
- if (p_spec_cur->max_lat < p_spec->max_lat ||
- (ssr == BTA_DM_PM_SSR0 && p_bta_dm_pm_spec[p_bta_dm_pm_cfg[j].spec_idx].ssr != BTA_DM_PM_SSR0))
- {
- ssr = p_bta_dm_pm_spec[p_bta_dm_pm_cfg[j].spec_idx].ssr;
- }
+ if (p_spec_cur->max_lat < p_spec->max_lat ||
+ (ssr == BTA_DM_PM_SSR0 &&
+ p_bta_dm_pm_spec[p_bta_dm_pm_cfg[j].spec_idx].ssr !=
+ BTA_DM_PM_SSR0)) {
+ ssr = p_bta_dm_pm_spec[p_bta_dm_pm_cfg[j].spec_idx].ssr;
+ }
+ }
+ }
+ p_spec = &p_bta_dm_ssr_spec[ssr];
+ APPL_TRACE_WARNING("%s ssr:%d, lat:%d", __func__, ssr, p_spec->max_lat);
+
+ if (p_spec->max_lat) {
+ /* Avoid SSR reset on device which has SCO connected */
+ if (bta_dm_pm_is_sco_active()) {
+ int idx = bta_dm_get_sco_index();
+ if (idx != -1) {
+ if (bdcmp(bta_dm_conn_srvcs.conn_srvc[idx].peer_bdaddr, peer_addr) ==
+ 0) {
+ APPL_TRACE_WARNING("%s SCO is active on device, ignore SSR",
+ __func__);
+ return;
}
+ }
}
- p_spec = &p_bta_dm_ssr_spec[ssr];
- APPL_TRACE_WARNING("%s ssr:%d, lat:%d", __func__, ssr, p_spec->max_lat);
-
- if (p_spec->max_lat)
- {
- /* Avoid SSR reset on device which has SCO connected */
- if (bta_dm_pm_is_sco_active())
- {
- int idx = bta_dm_get_sco_index();
- if (idx != -1)
- {
- if (bdcmp(bta_dm_conn_srvcs.conn_srvc[idx].peer_bdaddr, peer_addr) == 0)
- {
- APPL_TRACE_WARNING("%s SCO is active on device, ignore SSR", __func__);
- return;
- }
- }
- }
-
- /* set the SSR parameters. */
- BTM_SetSsrParams (peer_addr, p_spec->max_lat,
- p_spec->min_rmt_to, p_spec->min_loc_to);
- }
+ /* set the SSR parameters. */
+ BTM_SetSsrParams(peer_addr, p_spec->max_lat, p_spec->min_rmt_to,
+ p_spec->min_loc_to);
+ }
}
#endif
/*******************************************************************************
@@ -907,20 +823,16 @@
* Returns void
*
******************************************************************************/
-void bta_dm_pm_active(BD_ADDR peer_addr)
-{
- tBTM_PM_PWR_MD pm;
+void bta_dm_pm_active(BD_ADDR peer_addr) {
+ tBTM_PM_PWR_MD pm;
- memset( (void*)&pm, 0, sizeof(pm));
+ memset((void*)&pm, 0, sizeof(pm));
- /* switch to active mode */
- pm.mode = BTM_PM_MD_ACTIVE;
- BTM_SetPowerMode (bta_dm_cb.pm_id, peer_addr, &pm);
-
-
+ /* switch to active mode */
+ pm.mode = BTM_PM_MD_ACTIVE;
+ BTM_SetPowerMode(bta_dm_cb.pm_id, peer_addr, &pm);
}
-
/*******************************************************************************
*
* Function bta_dm_pm_btm_cback
@@ -931,18 +843,18 @@
* Returns void
*
******************************************************************************/
-static void bta_dm_pm_btm_cback(BD_ADDR bd_addr, tBTM_PM_STATUS status, uint16_t value, uint8_t hci_status)
-{
- tBTA_DM_PM_BTM_STATUS *p_buf =
- (tBTA_DM_PM_BTM_STATUS *)osi_malloc(sizeof(tBTA_DM_PM_BTM_STATUS));
+static void bta_dm_pm_btm_cback(BD_ADDR bd_addr, tBTM_PM_STATUS status,
+ uint16_t value, uint8_t hci_status) {
+ tBTA_DM_PM_BTM_STATUS* p_buf =
+ (tBTA_DM_PM_BTM_STATUS*)osi_malloc(sizeof(tBTA_DM_PM_BTM_STATUS));
- p_buf->hdr.event = BTA_DM_PM_BTM_STATUS_EVT;
- p_buf->status = status;
- p_buf->value = value;
- p_buf->hci_status = hci_status;
- bdcpy(p_buf->bd_addr, bd_addr);
+ p_buf->hdr.event = BTA_DM_PM_BTM_STATUS_EVT;
+ p_buf->status = status;
+ p_buf->value = value;
+ p_buf->hci_status = hci_status;
+ bdcpy(p_buf->bd_addr, bd_addr);
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -955,44 +867,38 @@
* Returns void
*
******************************************************************************/
-static void bta_dm_pm_timer_cback(void *data)
-{
- uint8_t i, j;
- alarm_t *alarm = (alarm_t *)data;
+static void bta_dm_pm_timer_cback(void* data) {
+ uint8_t i, j;
+ alarm_t* alarm = (alarm_t*)data;
- for (i=0; i<BTA_DM_NUM_PM_TIMER; i++)
- {
- APPL_TRACE_DEBUG("dm_pm_timer[%d] in use? %d", i, bta_dm_cb.pm_timer[i].in_use);
- if (bta_dm_cb.pm_timer[i].in_use)
- {
- for (j = 0; j < BTA_DM_PM_MODE_TIMER_MAX; j++)
- {
- if (bta_dm_cb.pm_timer[i].timer[j] == alarm)
- {
- bta_dm_cb.pm_timer[i].active --;
- bta_dm_cb.pm_timer[i].srvc_id[j] = BTA_ID_MAX;
- APPL_TRACE_DEBUG("dm_pm_timer[%d] expires, timer_idx=%d", i, j);
- break;
- }
- }
- if (bta_dm_cb.pm_timer[i].active == 0)
- bta_dm_cb.pm_timer[i].in_use = false;
- if (j < BTA_DM_PM_MODE_TIMER_MAX)
- break;
+ for (i = 0; i < BTA_DM_NUM_PM_TIMER; i++) {
+ APPL_TRACE_DEBUG("dm_pm_timer[%d] in use? %d", i,
+ bta_dm_cb.pm_timer[i].in_use);
+ if (bta_dm_cb.pm_timer[i].in_use) {
+ for (j = 0; j < BTA_DM_PM_MODE_TIMER_MAX; j++) {
+ if (bta_dm_cb.pm_timer[i].timer[j] == alarm) {
+ bta_dm_cb.pm_timer[i].active--;
+ bta_dm_cb.pm_timer[i].srvc_id[j] = BTA_ID_MAX;
+ APPL_TRACE_DEBUG("dm_pm_timer[%d] expires, timer_idx=%d", i, j);
+ break;
}
+ }
+ if (bta_dm_cb.pm_timer[i].active == 0)
+ bta_dm_cb.pm_timer[i].in_use = false;
+ if (j < BTA_DM_PM_MODE_TIMER_MAX) break;
}
+ }
- /* no more timers */
- if (i==BTA_DM_NUM_PM_TIMER)
- return;
+ /* no more timers */
+ if (i == BTA_DM_NUM_PM_TIMER) return;
- tBTA_DM_PM_TIMER *p_buf =
- (tBTA_DM_PM_TIMER *)osi_malloc(sizeof(tBTA_DM_PM_TIMER));
- p_buf->hdr.event = BTA_DM_PM_TIMER_EVT;
- p_buf->pm_request = bta_dm_cb.pm_timer[i].pm_action[j];
- bdcpy(p_buf->bd_addr, bta_dm_cb.pm_timer[i].peer_bdaddr);
+ tBTA_DM_PM_TIMER* p_buf =
+ (tBTA_DM_PM_TIMER*)osi_malloc(sizeof(tBTA_DM_PM_TIMER));
+ p_buf->hdr.event = BTA_DM_PM_TIMER_EVT;
+ p_buf->pm_request = bta_dm_cb.pm_timer[i].pm_action[j];
+ bdcpy(p_buf->bd_addr, bta_dm_cb.pm_timer[i].peer_bdaddr);
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -1005,98 +911,92 @@
* Returns void
*
******************************************************************************/
-void bta_dm_pm_btm_status(tBTA_DM_MSG *p_data)
-{
- APPL_TRACE_DEBUG("%s status: %d", __func__, p_data->pm_status.status);
+void bta_dm_pm_btm_status(tBTA_DM_MSG* p_data) {
+ APPL_TRACE_DEBUG("%s status: %d", __func__, p_data->pm_status.status);
- tBTA_DM_PEER_DEVICE *p_dev = bta_dm_find_peer_device(p_data->pm_status.bd_addr);
- if (NULL == p_dev)
- return;
+ tBTA_DM_PEER_DEVICE* p_dev =
+ bta_dm_find_peer_device(p_data->pm_status.bd_addr);
+ if (NULL == p_dev) return;
- tBTA_DM_DEV_INFO info = p_dev->info;
- /* check new mode */
- switch (p_data->pm_status.status)
- {
- case BTM_PM_STS_ACTIVE:
- /* if our sniff or park attempt failed
- we should not try it again*/
- if (p_data->pm_status.hci_status != 0)
- {
- APPL_TRACE_ERROR("%s hci_status=%d", __func__, p_data->pm_status.hci_status);
- p_dev->info &= ~(BTA_DM_DI_INT_SNIFF|BTA_DM_DI_ACP_SNIFF|BTA_DM_DI_SET_SNIFF);
+ tBTA_DM_DEV_INFO info = p_dev->info;
+ /* check new mode */
+ switch (p_data->pm_status.status) {
+ case BTM_PM_STS_ACTIVE:
+ /* if our sniff or park attempt failed
+ we should not try it again*/
+ if (p_data->pm_status.hci_status != 0) {
+ APPL_TRACE_ERROR("%s hci_status=%d", __func__,
+ p_data->pm_status.hci_status);
+ p_dev->info &=
+ ~(BTA_DM_DI_INT_SNIFF | BTA_DM_DI_ACP_SNIFF | BTA_DM_DI_SET_SNIFF);
- if(p_dev->pm_mode_attempted &(BTA_DM_PM_PARK | BTA_DM_PM_SNIFF))
- {
- p_dev->pm_mode_failed
- |= ((BTA_DM_PM_PARK | BTA_DM_PM_SNIFF) & p_dev->pm_mode_attempted);
- bta_dm_pm_stop_timer_by_mode(p_data->pm_status.bd_addr, p_dev->pm_mode_attempted);
- bta_dm_pm_set_mode(p_data->pm_status.bd_addr, BTA_DM_PM_NO_ACTION, BTA_DM_PM_RESTART);
- }
- }
- else
- {
+ if (p_dev->pm_mode_attempted & (BTA_DM_PM_PARK | BTA_DM_PM_SNIFF)) {
+ p_dev->pm_mode_failed |=
+ ((BTA_DM_PM_PARK | BTA_DM_PM_SNIFF) & p_dev->pm_mode_attempted);
+ bta_dm_pm_stop_timer_by_mode(p_data->pm_status.bd_addr,
+ p_dev->pm_mode_attempted);
+ bta_dm_pm_set_mode(p_data->pm_status.bd_addr, BTA_DM_PM_NO_ACTION,
+ BTA_DM_PM_RESTART);
+ }
+ } else {
#if (BTM_SSR_INCLUDED == TRUE)
- if(p_dev->prev_low)
- {
- /* need to send the SSR paramaters to controller again */
- bta_dm_pm_ssr(p_dev->peer_bdaddr);
- }
- p_dev->prev_low = BTM_PM_STS_ACTIVE;
+ if (p_dev->prev_low) {
+ /* need to send the SSR paramaters to controller again */
+ bta_dm_pm_ssr(p_dev->peer_bdaddr);
+ }
+ p_dev->prev_low = BTM_PM_STS_ACTIVE;
#endif
- /* link to active mode, need to restart the timer for next low power mode if needed */
- bta_dm_pm_stop_timer(p_data->pm_status.bd_addr);
- bta_dm_pm_set_mode(p_data->pm_status.bd_addr, BTA_DM_PM_NO_ACTION, BTA_DM_PM_RESTART);
- }
- break;
+ /* link to active mode, need to restart the timer for next low power
+ * mode if needed */
+ bta_dm_pm_stop_timer(p_data->pm_status.bd_addr);
+ bta_dm_pm_set_mode(p_data->pm_status.bd_addr, BTA_DM_PM_NO_ACTION,
+ BTA_DM_PM_RESTART);
+ }
+ break;
#if (BTM_SSR_INCLUDED == TRUE)
- case BTM_PM_STS_PARK:
- case BTM_PM_STS_HOLD:
- /* save the previous low power mode - for SSR.
- * SSR parameters are sent to controller on "conn open".
- * the numbers stay good until park/hold/detach */
- if(p_dev->info & BTA_DM_DI_USE_SSR)
- p_dev->prev_low = p_data->pm_status.status;
- break;
+ case BTM_PM_STS_PARK:
+ case BTM_PM_STS_HOLD:
+ /* save the previous low power mode - for SSR.
+ * SSR parameters are sent to controller on "conn open".
+ * the numbers stay good until park/hold/detach */
+ if (p_dev->info & BTA_DM_DI_USE_SSR)
+ p_dev->prev_low = p_data->pm_status.status;
+ break;
- case BTM_PM_STS_SSR:
- if(p_data->pm_status.value)
- p_dev->info |= BTA_DM_DI_USE_SSR;
- else
- p_dev->info &= ~BTA_DM_DI_USE_SSR;
- break;
+ case BTM_PM_STS_SSR:
+ if (p_data->pm_status.value)
+ p_dev->info |= BTA_DM_DI_USE_SSR;
+ else
+ p_dev->info &= ~BTA_DM_DI_USE_SSR;
+ break;
#endif
- case BTM_PM_STS_SNIFF:
- if (p_data->pm_status.hci_status == 0)
- {
- /* Stop PM timer now if already active for
- * particular device since link is already
- * put in sniff mode by remote device, and
- * PM timer sole purpose is to put the link
- * in sniff mode from host side.
- */
- bta_dm_pm_stop_timer(p_data->pm_status.bd_addr);
- }
- else
- {
- p_dev->info &= ~(BTA_DM_DI_SET_SNIFF | BTA_DM_DI_INT_SNIFF | BTA_DM_DI_ACP_SNIFF);
- if (info & BTA_DM_DI_SET_SNIFF)
- p_dev->info |= BTA_DM_DI_INT_SNIFF;
- else
- p_dev->info |= BTA_DM_DI_ACP_SNIFF;
- }
- break;
+ case BTM_PM_STS_SNIFF:
+ if (p_data->pm_status.hci_status == 0) {
+ /* Stop PM timer now if already active for
+ * particular device since link is already
+ * put in sniff mode by remote device, and
+ * PM timer sole purpose is to put the link
+ * in sniff mode from host side.
+ */
+ bta_dm_pm_stop_timer(p_data->pm_status.bd_addr);
+ } else {
+ p_dev->info &=
+ ~(BTA_DM_DI_SET_SNIFF | BTA_DM_DI_INT_SNIFF | BTA_DM_DI_ACP_SNIFF);
+ if (info & BTA_DM_DI_SET_SNIFF)
+ p_dev->info |= BTA_DM_DI_INT_SNIFF;
+ else
+ p_dev->info |= BTA_DM_DI_ACP_SNIFF;
+ }
+ break;
- case BTM_PM_STS_ERROR:
- p_dev->info &= ~BTA_DM_DI_SET_SNIFF;
- break;
+ case BTM_PM_STS_ERROR:
+ p_dev->info &= ~BTA_DM_DI_SET_SNIFF;
+ break;
- default:
- break;
- }
-
-
-
+ default:
+ break;
+ }
}
/*******************************************************************************
@@ -1109,10 +1009,10 @@
* Returns void
*
******************************************************************************/
-void bta_dm_pm_timer(tBTA_DM_MSG *p_data)
-{
- APPL_TRACE_EVENT("%s", __func__);
- bta_dm_pm_set_mode(p_data->pm_timer.bd_addr, p_data->pm_timer.pm_request, BTA_DM_PM_EXECUTE);
+void bta_dm_pm_timer(tBTA_DM_MSG* p_data) {
+ APPL_TRACE_EVENT("%s", __func__);
+ bta_dm_pm_set_mode(p_data->pm_timer.bd_addr, p_data->pm_timer.pm_request,
+ BTA_DM_PM_EXECUTE);
}
/*******************************************************************************
@@ -1124,20 +1024,16 @@
* Returns tBTA_DM_PEER_DEVICE
*
******************************************************************************/
-tBTA_DM_PEER_DEVICE * bta_dm_find_peer_device(const BD_ADDR peer_addr)
-{
- tBTA_DM_PEER_DEVICE *p_dev = NULL;
+tBTA_DM_PEER_DEVICE* bta_dm_find_peer_device(const BD_ADDR peer_addr) {
+ tBTA_DM_PEER_DEVICE* p_dev = NULL;
- for (int i=0; i<bta_dm_cb.device_list.count; i++)
- {
- if(!bdcmp( bta_dm_cb.device_list.peer_device[i].peer_bdaddr, peer_addr))
- {
- p_dev = &bta_dm_cb.device_list.peer_device[i];
- break;
- }
-
+ for (int i = 0; i < bta_dm_cb.device_list.count; i++) {
+ if (!bdcmp(bta_dm_cb.device_list.peer_device[i].peer_bdaddr, peer_addr)) {
+ p_dev = &bta_dm_cb.device_list.peer_device[i];
+ break;
}
- return p_dev;
+ }
+ return p_dev;
}
/*******************************************************************************
@@ -1149,26 +1045,23 @@
* Returns bool. true if SCO active, else false
*
******************************************************************************/
-static bool bta_dm_pm_is_sco_active ()
-{
- int j;
- bool bScoActive = false;
+static bool bta_dm_pm_is_sco_active() {
+ int j;
+ bool bScoActive = false;
- for(j=0; j<bta_dm_conn_srvcs.count ; j++)
- {
- /* check if an entry already present */
- if ( (bta_dm_conn_srvcs.conn_srvc[j].id == BTA_ID_AG ) && (bta_dm_conn_srvcs.conn_srvc[j].state == BTA_SYS_SCO_OPEN) )
- {
- bScoActive = true;
- break;
- }
+ for (j = 0; j < bta_dm_conn_srvcs.count; j++) {
+ /* check if an entry already present */
+ if ((bta_dm_conn_srvcs.conn_srvc[j].id == BTA_ID_AG) &&
+ (bta_dm_conn_srvcs.conn_srvc[j].state == BTA_SYS_SCO_OPEN)) {
+ bScoActive = true;
+ break;
}
+ }
- APPL_TRACE_DEBUG("bta_dm_is_sco_active: SCO active: %d", bScoActive);
- return bScoActive;
+ APPL_TRACE_DEBUG("bta_dm_is_sco_active: SCO active: %d", bScoActive);
+ return bScoActive;
}
-
/*******************************************************************************
*
* Function bta_dm_get_sco_index
@@ -1178,18 +1071,15 @@
* Returns index at which SCO is connected, in absence of SCO return -1
*
******************************************************************************/
-static int bta_dm_get_sco_index()
-{
- for(int j = 0; j < bta_dm_conn_srvcs.count; j++)
- {
- /* check for SCO connected index */
- if ( (bta_dm_conn_srvcs.conn_srvc[j].id == BTA_ID_AG ) &&
- (bta_dm_conn_srvcs.conn_srvc[j].state == BTA_SYS_SCO_OPEN) )
- {
- return j;
- }
+static int bta_dm_get_sco_index() {
+ for (int j = 0; j < bta_dm_conn_srvcs.count; j++) {
+ /* check for SCO connected index */
+ if ((bta_dm_conn_srvcs.conn_srvc[j].id == BTA_ID_AG) &&
+ (bta_dm_conn_srvcs.conn_srvc[j].state == BTA_SYS_SCO_OPEN)) {
+ return j;
}
- return -1;
+ }
+ return -1;
}
/*******************************************************************************
@@ -1201,27 +1091,27 @@
* Returns None
*
******************************************************************************/
-static void bta_dm_pm_hid_check(bool bScoActive)
-{
- int j;
+static void bta_dm_pm_hid_check(bool bScoActive) {
+ int j;
- /* if HID is active, disable the link policy */
- for(j=0; j<bta_dm_conn_srvcs.count ; j++)
- {
- /* check if an entry already present */
- if(bta_dm_conn_srvcs.conn_srvc[j].id == BTA_ID_HH )
- {
- APPL_TRACE_DEBUG ("SCO status change(Active: %d), modify HID link policy. state: %d",
- bScoActive, bta_dm_conn_srvcs.conn_srvc[j].state);
- bta_dm_pm_set_sniff_policy( bta_dm_find_peer_device(bta_dm_conn_srvcs.conn_srvc[j].peer_bdaddr), bScoActive);
+ /* if HID is active, disable the link policy */
+ for (j = 0; j < bta_dm_conn_srvcs.count; j++) {
+ /* check if an entry already present */
+ if (bta_dm_conn_srvcs.conn_srvc[j].id == BTA_ID_HH) {
+ APPL_TRACE_DEBUG(
+ "SCO status change(Active: %d), modify HID link policy. state: %d",
+ bScoActive, bta_dm_conn_srvcs.conn_srvc[j].state);
+ bta_dm_pm_set_sniff_policy(
+ bta_dm_find_peer_device(bta_dm_conn_srvcs.conn_srvc[j].peer_bdaddr),
+ bScoActive);
- /* if we had disabled link policy, seems like the hid device stop retrying SNIFF after a few tries. force sniff if needed */
- if (!bScoActive)
- bta_dm_pm_set_mode(bta_dm_conn_srvcs.conn_srvc[j].peer_bdaddr, BTA_DM_PM_NO_ACTION,
- BTA_DM_PM_RESTART);
- }
+ /* if we had disabled link policy, seems like the hid device stop retrying
+ * SNIFF after a few tries. force sniff if needed */
+ if (!bScoActive)
+ bta_dm_pm_set_mode(bta_dm_conn_srvcs.conn_srvc[j].peer_bdaddr,
+ BTA_DM_PM_NO_ACTION, BTA_DM_PM_RESTART);
}
-
+ }
}
/*******************************************************************************
@@ -1233,35 +1123,28 @@
* Returns None
*
******************************************************************************/
-static void bta_dm_pm_set_sniff_policy(tBTA_DM_PEER_DEVICE *p_dev, bool bDisable)
-{
- uint16_t policy_setting;
+static void bta_dm_pm_set_sniff_policy(tBTA_DM_PEER_DEVICE* p_dev,
+ bool bDisable) {
+ uint16_t policy_setting;
- if (!p_dev)
- return;
+ if (!p_dev) return;
- if (bDisable)
- {
- policy_setting = bta_dm_cb.cur_policy &
- (HCI_ENABLE_MASTER_SLAVE_SWITCH |
- HCI_ENABLE_HOLD_MODE |
- HCI_ENABLE_PARK_MODE);
+ if (bDisable) {
+ policy_setting =
+ bta_dm_cb.cur_policy & (HCI_ENABLE_MASTER_SLAVE_SWITCH |
+ HCI_ENABLE_HOLD_MODE | HCI_ENABLE_PARK_MODE);
- }
- else
- {
- /* allow sniff after sco is closed */
- policy_setting= bta_dm_cb.cur_policy;
- }
+ } else {
+ /* allow sniff after sco is closed */
+ policy_setting = bta_dm_cb.cur_policy;
+ }
- /* if disabling SNIFF, make sure link is Active */
- if (bDisable)
- bta_dm_pm_active(p_dev->peer_bdaddr);
+ /* if disabling SNIFF, make sure link is Active */
+ if (bDisable) bta_dm_pm_active(p_dev->peer_bdaddr);
- /* update device record and set link policy */
- p_dev->link_policy = policy_setting;
- BTM_SetLinkPolicy(p_dev->peer_bdaddr, &policy_setting);
-
+ /* update device record and set link policy */
+ p_dev->link_policy = policy_setting;
+ BTM_SetLinkPolicy(p_dev->peer_bdaddr, &policy_setting);
}
#if (BLE_INCLUDED == TRUE)
@@ -1269,20 +1152,21 @@
*
* Function bta_dm_pm_obtain_controller_state
*
- * Description This function obtains the consolidated controller power state
+ * Description This function obtains the consolidated controller power
+ *state
*
* Parameters:
*
******************************************************************************/
-tBTA_DM_CONTRL_STATE bta_dm_pm_obtain_controller_state(void)
-{
- /* Did not use counts as it is not sure, how accurate the count values are in
- ** bta_dm_cb.device_list.count > 0 || bta_dm_cb.device_list.le_count > 0 */
+tBTA_DM_CONTRL_STATE bta_dm_pm_obtain_controller_state(void) {
+ /* Did not use counts as it is not sure, how accurate the count values are
+ *in
+ ** bta_dm_cb.device_list.count > 0 || bta_dm_cb.device_list.le_count > 0 */
- tBTA_DM_CONTRL_STATE cur_state = BTA_DM_CONTRL_UNKNOWN;
- cur_state = BTM_PM_ReadControllerState();
+ tBTA_DM_CONTRL_STATE cur_state = BTA_DM_CONTRL_UNKNOWN;
+ cur_state = BTM_PM_ReadControllerState();
- APPL_TRACE_DEBUG("bta_dm_pm_obtain_controller_state: %d", cur_state);
- return cur_state;
+ APPL_TRACE_DEBUG("bta_dm_pm_obtain_controller_state: %d", cur_state);
+ return cur_state;
}
#endif
diff --git a/bta/dm/bta_dm_sco.cc b/bta/dm/bta_dm_sco.cc
index 059e3a3..107c175 100644
--- a/bta/dm/bta_dm_sco.cc
+++ b/bta/dm/bta_dm_sco.cc
@@ -33,40 +33,43 @@
#if (BTM_SCO_HCI_INCLUDED == TRUE)
#ifndef BTA_DM_SCO_DEBUG
-#define BTA_DM_SCO_DEBUG false
+#define BTA_DM_SCO_DEBUG false
#endif
/*****************************************************************************
* Constants
****************************************************************************/
-#define BTA_DM_PCM_OVERLAP_SIZE 48
+#define BTA_DM_PCM_OVERLAP_SIZE 48
-#define BTA_DM_PCM_SMPL_RATE_44100 44100
-#define BTA_DM_PCM_SMPL_RATE_22050 22050
-#define BTA_DM_PCM_SMPL_RATE_11025 11025
+#define BTA_DM_PCM_SMPL_RATE_44100 44100
+#define BTA_DM_PCM_SMPL_RATE_22050 22050
+#define BTA_DM_PCM_SMPL_RATE_11025 11025
/*****************************************************************************
* Data types for PCM Resampling utility
****************************************************************************/
-typedef int32_t (*PCONVERT_TO_BT_FILTERED) (uint8_t *pSrc, void *pDst, uint32_t dwSrcSamples,
- uint32_t dwSrcSps,int32_t *pLastCurPos, uint8_t *pOverlapArea);
-typedef int32_t (*PCONVERT_TO_BT_NOFILTER) (void *pSrc, void *pDst, uint32_t dwSrcSamples,
- uint32_t dwSrcSps);
-typedef struct
-{
- uint8_t overlap_area[BTA_DM_PCM_OVERLAP_SIZE * 4];
- uint32_t cur_pos; /* current position */
- uint32_t src_sps; /* samples per second (source audio data) */
- PCONVERT_TO_BT_FILTERED filter; /* the action function to do the
- conversion 44100, 22050, 11025*/
- PCONVERT_TO_BT_NOFILTER nofilter; /* the action function to do
- the conversion 48000, 32000, 16000*/
- uint32_t bits; /* number of bits per pcm sample */
- uint32_t n_channels; /* number of channels (i.e. mono(1), stereo(2)...) */
- uint32_t sample_size;
- uint32_t can_be_filtered;
- uint32_t divisor;
+typedef int32_t (*PCONVERT_TO_BT_FILTERED)(uint8_t* pSrc, void* pDst,
+ uint32_t dwSrcSamples,
+ uint32_t dwSrcSps,
+ int32_t* pLastCurPos,
+ uint8_t* pOverlapArea);
+typedef int32_t (*PCONVERT_TO_BT_NOFILTER)(void* pSrc, void* pDst,
+ uint32_t dwSrcSamples,
+ uint32_t dwSrcSps);
+typedef struct {
+ uint8_t overlap_area[BTA_DM_PCM_OVERLAP_SIZE * 4];
+ uint32_t cur_pos; /* current position */
+ uint32_t src_sps; /* samples per second (source audio data) */
+ PCONVERT_TO_BT_FILTERED filter; /* the action function to do the
+ conversion 44100, 22050, 11025*/
+ PCONVERT_TO_BT_NOFILTER nofilter; /* the action function to do
+ the conversion 48000, 32000, 16000*/
+ uint32_t bits; /* number of bits per pcm sample */
+ uint32_t n_channels; /* number of channels (i.e. mono(1), stereo(2)...) */
+ uint32_t sample_size;
+ uint32_t can_be_filtered;
+ uint32_t divisor;
} tBTA_DM_PCM_RESAMPLE_CB;
tBTA_DM_PCM_RESAMPLE_CB bta_dm_pcm_cb;
@@ -221,349 +224,332 @@
////////////////////////////////////////////////////////////////////////////////////////////////////
//
-#undef SRC_CHANNELS
-#undef SRC_SAMPLE
-#undef SRC_TYPE
+#undef SRC_CHANNELS
+#undef SRC_SAMPLE
+#undef SRC_TYPE
-#define SRC_TYPE uint8_t
-#define SRC_CHANNELS 1
-#define SRC_SAMPLE(x) ((pS[x] - 0x80) << 8)
+#define SRC_TYPE uint8_t
+#define SRC_CHANNELS 1
+#define SRC_SAMPLE(x) ((pS[x] - 0x80) << 8)
/*****************************************************************************
* Local Function
****************************************************************************/
-int32_t Convert_8M_ToBT_Filtered (uint8_t *pSrc, void *pDst, uint32_t dwSrcSamples,
- uint32_t dwSrcSps, int32_t *pLastCurPos, uint8_t *pOverlapArea)
-{
- int32_t CurrentPos = *pLastCurPos;
- SRC_TYPE *pIn, *pInEnd;
- SRC_TYPE *pOv, *pOvEnd;
- int16_t *psBtOut = (int16_t *)pDst;
+int32_t Convert_8M_ToBT_Filtered(uint8_t* pSrc, void* pDst,
+ uint32_t dwSrcSamples, uint32_t dwSrcSps,
+ int32_t* pLastCurPos, uint8_t* pOverlapArea) {
+ int32_t CurrentPos = *pLastCurPos;
+ SRC_TYPE *pIn, *pInEnd;
+ SRC_TYPE *pOv, *pOvEnd;
+ int16_t* psBtOut = (int16_t*)pDst;
#if (BTA_DM_SCO_DEBUG == TRUE)
- APPL_TRACE_DEBUG("Convert_8M_ToBT_Filtered, CurrentPos %d\n", CurrentPos);
+ APPL_TRACE_DEBUG("Convert_8M_ToBT_Filtered, CurrentPos %d\n", CurrentPos);
#endif
- memcpy (pOverlapArea + (BTA_DM_PCM_OVERLAP_SIZE * 2), pSrc, BTA_DM_PCM_OVERLAP_SIZE * 2);
+ memcpy(pOverlapArea + (BTA_DM_PCM_OVERLAP_SIZE * 2), pSrc,
+ BTA_DM_PCM_OVERLAP_SIZE * 2);
- pOv = (SRC_TYPE *)(pOverlapArea + BTA_DM_PCM_OVERLAP_SIZE);
- pOvEnd = (SRC_TYPE *)(pOverlapArea + (BTA_DM_PCM_OVERLAP_SIZE * 3));
+ pOv = (SRC_TYPE*)(pOverlapArea + BTA_DM_PCM_OVERLAP_SIZE);
+ pOvEnd = (SRC_TYPE*)(pOverlapArea + (BTA_DM_PCM_OVERLAP_SIZE * 3));
- pIn = (SRC_TYPE *)(pSrc + BTA_DM_PCM_OVERLAP_SIZE);
- pInEnd = (SRC_TYPE *)(pSrc + (dwSrcSamples * SRC_CHANNELS * sizeof (SRC_TYPE)) - \
- BTA_DM_PCM_OVERLAP_SIZE);
+ pIn = (SRC_TYPE*)(pSrc + BTA_DM_PCM_OVERLAP_SIZE);
+ pInEnd = (SRC_TYPE*)(pSrc + (dwSrcSamples * SRC_CHANNELS * sizeof(SRC_TYPE)) -
+ BTA_DM_PCM_OVERLAP_SIZE);
- if (dwSrcSps == BTA_DM_PCM_SMPL_RATE_44100)
- {
- CONVERT_44100_TO_BLUETOOTH(pOv, pOvEnd);
- CONVERT_44100_TO_BLUETOOTH(pIn, pInEnd);
- }
- else if (dwSrcSps == BTA_DM_PCM_SMPL_RATE_22050)
- {
- CONVERT_22050_TO_BLUETOOTH(pOv, pOvEnd);
- CONVERT_22050_TO_BLUETOOTH(pIn, pInEnd);
- }
- else if (dwSrcSps == BTA_DM_PCM_SMPL_RATE_11025)
- {
- CONVERT_11025_TO_BLUETOOTH(pOv, pOvEnd);
- CONVERT_11025_TO_BLUETOOTH(pIn, pInEnd);
- }
+ if (dwSrcSps == BTA_DM_PCM_SMPL_RATE_44100) {
+ CONVERT_44100_TO_BLUETOOTH(pOv, pOvEnd);
+ CONVERT_44100_TO_BLUETOOTH(pIn, pInEnd);
+ } else if (dwSrcSps == BTA_DM_PCM_SMPL_RATE_22050) {
+ CONVERT_22050_TO_BLUETOOTH(pOv, pOvEnd);
+ CONVERT_22050_TO_BLUETOOTH(pIn, pInEnd);
+ } else if (dwSrcSps == BTA_DM_PCM_SMPL_RATE_11025) {
+ CONVERT_11025_TO_BLUETOOTH(pOv, pOvEnd);
+ CONVERT_11025_TO_BLUETOOTH(pIn, pInEnd);
+ }
- memcpy (pOverlapArea, pSrc + (dwSrcSamples * SRC_CHANNELS * sizeof (SRC_TYPE)) - \
- (BTA_DM_PCM_OVERLAP_SIZE * 2), BTA_DM_PCM_OVERLAP_SIZE * 2);
+ memcpy(pOverlapArea, pSrc + (dwSrcSamples * SRC_CHANNELS * sizeof(SRC_TYPE)) -
+ (BTA_DM_PCM_OVERLAP_SIZE * 2),
+ BTA_DM_PCM_OVERLAP_SIZE * 2);
- *pLastCurPos = CurrentPos;
+ *pLastCurPos = CurrentPos;
- return (psBtOut - (int16_t *)pDst);
+ return (psBtOut - (int16_t*)pDst);
}
-int32_t Convert_8M_ToBT_NoFilter (void *pSrc, void *pDst, uint32_t dwSrcSamples, uint32_t dwSrcSps)
-{
- int32_t CurrentPos;
- uint8_t *pbSrc = (uint8_t *)pSrc;
- int16_t *psDst = (int16_t *)pDst;
- int16_t sWorker;
+int32_t Convert_8M_ToBT_NoFilter(void* pSrc, void* pDst, uint32_t dwSrcSamples,
+ uint32_t dwSrcSps) {
+ int32_t CurrentPos;
+ uint8_t* pbSrc = (uint8_t*)pSrc;
+ int16_t* psDst = (int16_t*)pDst;
+ int16_t sWorker;
- // start at dwSpsSrc / 2, decrement by 8000
- //
- CurrentPos = (dwSrcSps >> 1);
+ // start at dwSpsSrc / 2, decrement by 8000
+ //
+ CurrentPos = (dwSrcSps >> 1);
- while (dwSrcSamples--)
- {
- CurrentPos -= 8000;
+ while (dwSrcSamples--) {
+ CurrentPos -= 8000;
- if (CurrentPos >= 0)
- pbSrc++;
- else
- {
- sWorker = *pbSrc++;
- sWorker -= 0x80;
- sWorker <<= 8;
+ if (CurrentPos >= 0)
+ pbSrc++;
+ else {
+ sWorker = *pbSrc++;
+ sWorker -= 0x80;
+ sWorker <<= 8;
- *psDst++ = sWorker;
+ *psDst++ = sWorker;
- CurrentPos += dwSrcSps;
- }
+ CurrentPos += dwSrcSps;
}
+ }
- return (psDst - (int16_t *)pDst);
-}
-
-
-////////////////////////////////////////////////////////////////////////////////////////////////////
-//
-#undef SRC_CHANNELS
-#undef SRC_SAMPLE
-#undef SRC_TYPE
-
-#define SRC_TYPE int16_t
-#define SRC_CHANNELS 1
-#define SRC_SAMPLE(x) pS[x]
-
-int32_t Convert_16M_ToBT_Filtered (uint8_t *pSrc, void *pDst, uint32_t dwSrcSamples,
- uint32_t dwSrcSps, int32_t *pLastCurPos, uint8_t *pOverlapArea)
-{
- int32_t CurrentPos = *pLastCurPos;
- SRC_TYPE *pIn, *pInEnd;
- SRC_TYPE *pOv, *pOvEnd;
- int16_t *psBtOut = (int16_t *)pDst;
-
- memcpy (pOverlapArea + (BTA_DM_PCM_OVERLAP_SIZE * 2), pSrc, BTA_DM_PCM_OVERLAP_SIZE * 2);
-
- pOv = (SRC_TYPE *)(pOverlapArea + BTA_DM_PCM_OVERLAP_SIZE);
- pOvEnd = (SRC_TYPE *)(pOverlapArea + (BTA_DM_PCM_OVERLAP_SIZE * 3));
-
- pIn = (SRC_TYPE *)(pSrc + BTA_DM_PCM_OVERLAP_SIZE);
- pInEnd = (SRC_TYPE *)(pSrc + (dwSrcSamples * SRC_CHANNELS * sizeof (SRC_TYPE)) - BTA_DM_PCM_OVERLAP_SIZE);
-
- if (dwSrcSps == BTA_DM_PCM_SMPL_RATE_44100)
- {
- CONVERT_44100_TO_BLUETOOTH(pOv, pOvEnd);
- CONVERT_44100_TO_BLUETOOTH(pIn, pInEnd);
- }
- else if (dwSrcSps == BTA_DM_PCM_SMPL_RATE_22050)
- {
- CONVERT_22050_TO_BLUETOOTH(pOv, pOvEnd);
- CONVERT_22050_TO_BLUETOOTH(pIn, pInEnd);
- }
- else if (dwSrcSps == BTA_DM_PCM_SMPL_RATE_11025)
- {
- CONVERT_11025_TO_BLUETOOTH(pOv, pOvEnd);
- CONVERT_11025_TO_BLUETOOTH(pIn, pInEnd);
- }
-
- memcpy (pOverlapArea, pSrc + (dwSrcSamples * SRC_CHANNELS * sizeof (SRC_TYPE)) - \
- (BTA_DM_PCM_OVERLAP_SIZE * 2), BTA_DM_PCM_OVERLAP_SIZE * 2);
-
- *pLastCurPos = CurrentPos;
-
- return (psBtOut - (int16_t *)pDst);
-}
-
-int32_t Convert_16M_ToBT_NoFilter (void *pSrc, void *pDst, uint32_t dwSrcSamples, uint32_t dwSrcSps)
-{
- int32_t CurrentPos;
- int16_t *psSrc = (int16_t *)pSrc;
- int16_t *psDst = (int16_t *)pDst;
-
- // start at dwSpsSrc / 2, decrement by 8000
- //
- CurrentPos = (dwSrcSps >> 1);
-
- while (dwSrcSamples--)
- {
- CurrentPos -= 8000;
-
- if (CurrentPos >= 0)
- psSrc++;
- else
- {
- *psDst++ = *psSrc++;
-
- CurrentPos += dwSrcSps;
- }
- }
-
- return (psDst - (int16_t *)pDst);
+ return (psDst - (int16_t*)pDst);
}
////////////////////////////////////////////////////////////////////////////////////////////////////
//
-#undef SRC_CHANNELS
-#undef SRC_SAMPLE
-#undef SRC_TYPE
+#undef SRC_CHANNELS
+#undef SRC_SAMPLE
+#undef SRC_TYPE
-#define SRC_TYPE uint8_t
-#define SRC_CHANNELS 2
-#define SRC_SAMPLE(x) ((((pS[x * 2] - 0x80) << 8) + ((pS[(x * 2) + 1] - 0x80) << 8)) >> 1)
+#define SRC_TYPE int16_t
+#define SRC_CHANNELS 1
+#define SRC_SAMPLE(x) pS[x]
-int32_t Convert_8S_ToBT_Filtered (uint8_t *pSrc, void *pDst, uint32_t dwSrcSamples,
- uint32_t dwSrcSps, int32_t *pLastCurPos, uint8_t *pOverlapArea)
-{
- int32_t CurrentPos = *pLastCurPos;
- SRC_TYPE *pIn, *pInEnd;
- SRC_TYPE *pOv, *pOvEnd;
- int16_t *psBtOut = (int16_t *)pDst;
+int32_t Convert_16M_ToBT_Filtered(uint8_t* pSrc, void* pDst,
+ uint32_t dwSrcSamples, uint32_t dwSrcSps,
+ int32_t* pLastCurPos, uint8_t* pOverlapArea) {
+ int32_t CurrentPos = *pLastCurPos;
+ SRC_TYPE *pIn, *pInEnd;
+ SRC_TYPE *pOv, *pOvEnd;
+ int16_t* psBtOut = (int16_t*)pDst;
+
+ memcpy(pOverlapArea + (BTA_DM_PCM_OVERLAP_SIZE * 2), pSrc,
+ BTA_DM_PCM_OVERLAP_SIZE * 2);
+
+ pOv = (SRC_TYPE*)(pOverlapArea + BTA_DM_PCM_OVERLAP_SIZE);
+ pOvEnd = (SRC_TYPE*)(pOverlapArea + (BTA_DM_PCM_OVERLAP_SIZE * 3));
+
+ pIn = (SRC_TYPE*)(pSrc + BTA_DM_PCM_OVERLAP_SIZE);
+ pInEnd = (SRC_TYPE*)(pSrc + (dwSrcSamples * SRC_CHANNELS * sizeof(SRC_TYPE)) -
+ BTA_DM_PCM_OVERLAP_SIZE);
+
+ if (dwSrcSps == BTA_DM_PCM_SMPL_RATE_44100) {
+ CONVERT_44100_TO_BLUETOOTH(pOv, pOvEnd);
+ CONVERT_44100_TO_BLUETOOTH(pIn, pInEnd);
+ } else if (dwSrcSps == BTA_DM_PCM_SMPL_RATE_22050) {
+ CONVERT_22050_TO_BLUETOOTH(pOv, pOvEnd);
+ CONVERT_22050_TO_BLUETOOTH(pIn, pInEnd);
+ } else if (dwSrcSps == BTA_DM_PCM_SMPL_RATE_11025) {
+ CONVERT_11025_TO_BLUETOOTH(pOv, pOvEnd);
+ CONVERT_11025_TO_BLUETOOTH(pIn, pInEnd);
+ }
+
+ memcpy(pOverlapArea, pSrc + (dwSrcSamples * SRC_CHANNELS * sizeof(SRC_TYPE)) -
+ (BTA_DM_PCM_OVERLAP_SIZE * 2),
+ BTA_DM_PCM_OVERLAP_SIZE * 2);
+
+ *pLastCurPos = CurrentPos;
+
+ return (psBtOut - (int16_t*)pDst);
+}
+
+int32_t Convert_16M_ToBT_NoFilter(void* pSrc, void* pDst, uint32_t dwSrcSamples,
+ uint32_t dwSrcSps) {
+ int32_t CurrentPos;
+ int16_t* psSrc = (int16_t*)pSrc;
+ int16_t* psDst = (int16_t*)pDst;
+
+ // start at dwSpsSrc / 2, decrement by 8000
+ //
+ CurrentPos = (dwSrcSps >> 1);
+
+ while (dwSrcSamples--) {
+ CurrentPos -= 8000;
+
+ if (CurrentPos >= 0)
+ psSrc++;
+ else {
+ *psDst++ = *psSrc++;
+
+ CurrentPos += dwSrcSps;
+ }
+ }
+
+ return (psDst - (int16_t*)pDst);
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+//
+#undef SRC_CHANNELS
+#undef SRC_SAMPLE
+#undef SRC_TYPE
+
+#define SRC_TYPE uint8_t
+#define SRC_CHANNELS 2
+#define SRC_SAMPLE(x) \
+ ((((pS[x * 2] - 0x80) << 8) + ((pS[(x * 2) + 1] - 0x80) << 8)) >> 1)
+
+int32_t Convert_8S_ToBT_Filtered(uint8_t* pSrc, void* pDst,
+ uint32_t dwSrcSamples, uint32_t dwSrcSps,
+ int32_t* pLastCurPos, uint8_t* pOverlapArea) {
+ int32_t CurrentPos = *pLastCurPos;
+ SRC_TYPE *pIn, *pInEnd;
+ SRC_TYPE *pOv, *pOvEnd;
+ int16_t* psBtOut = (int16_t*)pDst;
#if (BTA_DM_SCO_DEBUG == TRUE)
- APPL_TRACE_DEBUG("Convert_8S_ToBT_Filtered CurrentPos %d, SRC_TYPE %d, SRC_CHANNELS %d, \
- dwSrcSamples %d, dwSrcSps %d", CurrentPos, sizeof (SRC_TYPE), SRC_CHANNELS, \
- dwSrcSamples, dwSrcSps);
+ APPL_TRACE_DEBUG(
+ "Convert_8S_ToBT_Filtered CurrentPos %d, SRC_TYPE %d, SRC_CHANNELS %d, \
+ dwSrcSamples %d, dwSrcSps %d",
+ CurrentPos, sizeof(SRC_TYPE), SRC_CHANNELS, dwSrcSamples, dwSrcSps);
#endif
- memcpy (pOverlapArea + (BTA_DM_PCM_OVERLAP_SIZE * 2), pSrc, BTA_DM_PCM_OVERLAP_SIZE * 2);
+ memcpy(pOverlapArea + (BTA_DM_PCM_OVERLAP_SIZE * 2), pSrc,
+ BTA_DM_PCM_OVERLAP_SIZE * 2);
- pOv = (SRC_TYPE *)(pOverlapArea + BTA_DM_PCM_OVERLAP_SIZE);
- pOvEnd = (SRC_TYPE *)(pOverlapArea + (BTA_DM_PCM_OVERLAP_SIZE * 3));
+ pOv = (SRC_TYPE*)(pOverlapArea + BTA_DM_PCM_OVERLAP_SIZE);
+ pOvEnd = (SRC_TYPE*)(pOverlapArea + (BTA_DM_PCM_OVERLAP_SIZE * 3));
- pIn = (SRC_TYPE *)(pSrc + BTA_DM_PCM_OVERLAP_SIZE);
- pInEnd = (SRC_TYPE *)(pSrc + (dwSrcSamples * SRC_CHANNELS * sizeof (SRC_TYPE)) - BTA_DM_PCM_OVERLAP_SIZE);
+ pIn = (SRC_TYPE*)(pSrc + BTA_DM_PCM_OVERLAP_SIZE);
+ pInEnd = (SRC_TYPE*)(pSrc + (dwSrcSamples * SRC_CHANNELS * sizeof(SRC_TYPE)) -
+ BTA_DM_PCM_OVERLAP_SIZE);
- if (dwSrcSps == BTA_DM_PCM_SMPL_RATE_44100)
- {
- CONVERT_44100_TO_BLUETOOTH(pOv, pOvEnd);
- CONVERT_44100_TO_BLUETOOTH(pIn, pInEnd);
- }
- else if (dwSrcSps == BTA_DM_PCM_SMPL_RATE_22050)
- {
- CONVERT_22050_TO_BLUETOOTH(pOv, pOvEnd);
- CONVERT_22050_TO_BLUETOOTH(pIn, pInEnd);
- }
- else if (dwSrcSps == BTA_DM_PCM_SMPL_RATE_11025)
- {
- CONVERT_11025_TO_BLUETOOTH(pOv, pOvEnd);
- CONVERT_11025_TO_BLUETOOTH(pIn, pInEnd);
- }
+ if (dwSrcSps == BTA_DM_PCM_SMPL_RATE_44100) {
+ CONVERT_44100_TO_BLUETOOTH(pOv, pOvEnd);
+ CONVERT_44100_TO_BLUETOOTH(pIn, pInEnd);
+ } else if (dwSrcSps == BTA_DM_PCM_SMPL_RATE_22050) {
+ CONVERT_22050_TO_BLUETOOTH(pOv, pOvEnd);
+ CONVERT_22050_TO_BLUETOOTH(pIn, pInEnd);
+ } else if (dwSrcSps == BTA_DM_PCM_SMPL_RATE_11025) {
+ CONVERT_11025_TO_BLUETOOTH(pOv, pOvEnd);
+ CONVERT_11025_TO_BLUETOOTH(pIn, pInEnd);
+ }
- memcpy (pOverlapArea, pSrc + (dwSrcSamples * SRC_CHANNELS * sizeof (SRC_TYPE)) - \
- (BTA_DM_PCM_OVERLAP_SIZE * 2), BTA_DM_PCM_OVERLAP_SIZE * 2);
+ memcpy(pOverlapArea, pSrc + (dwSrcSamples * SRC_CHANNELS * sizeof(SRC_TYPE)) -
+ (BTA_DM_PCM_OVERLAP_SIZE * 2),
+ BTA_DM_PCM_OVERLAP_SIZE * 2);
- *pLastCurPos = CurrentPos;
+ *pLastCurPos = CurrentPos;
- return (psBtOut - (int16_t *)pDst);
+ return (psBtOut - (int16_t*)pDst);
}
-int32_t Convert_8S_ToBT_NoFilter (void *pSrc, void *pDst, uint32_t dwSrcSamples, uint32_t dwSrcSps)
-{
- int32_t CurrentPos;
- uint8_t *pbSrc = (uint8_t *)pSrc;
- int16_t *psDst = (int16_t *)pDst;
- int16_t sWorker, sWorker2;
+int32_t Convert_8S_ToBT_NoFilter(void* pSrc, void* pDst, uint32_t dwSrcSamples,
+ uint32_t dwSrcSps) {
+ int32_t CurrentPos;
+ uint8_t* pbSrc = (uint8_t*)pSrc;
+ int16_t* psDst = (int16_t*)pDst;
+ int16_t sWorker, sWorker2;
- // start at dwSpsSrc / 2, decrement by 8000
- //
- CurrentPos = (dwSrcSps >> 1);
+ // start at dwSpsSrc / 2, decrement by 8000
+ //
+ CurrentPos = (dwSrcSps >> 1);
- while (dwSrcSamples--)
- {
- CurrentPos -= 8000;
+ while (dwSrcSamples--) {
+ CurrentPos -= 8000;
- if (CurrentPos >= 0)
- pbSrc += 2;
- else
- {
- sWorker = *(unsigned char *)pbSrc;
- sWorker -= 0x80;
- sWorker <<= 8;
- pbSrc++;
+ if (CurrentPos >= 0)
+ pbSrc += 2;
+ else {
+ sWorker = *(unsigned char*)pbSrc;
+ sWorker -= 0x80;
+ sWorker <<= 8;
+ pbSrc++;
- sWorker2 = *(unsigned char *)pbSrc;
- sWorker2 -= 0x80;
- sWorker2 <<= 8;
- pbSrc++;
+ sWorker2 = *(unsigned char*)pbSrc;
+ sWorker2 -= 0x80;
+ sWorker2 <<= 8;
+ pbSrc++;
- sWorker += sWorker2;
- sWorker >>= 1;
+ sWorker += sWorker2;
+ sWorker >>= 1;
- *psDst++ = sWorker;
+ *psDst++ = sWorker;
- CurrentPos += dwSrcSps;
- }
+ CurrentPos += dwSrcSps;
}
+ }
- return (psDst - (int16_t *)pDst);
+ return (psDst - (int16_t*)pDst);
}
-
////////////////////////////////////////////////////////////////////////////////////////////////////
//
-#undef SRC_CHANNELS
-#undef SRC_SAMPLE
-#undef SRC_TYPE
+#undef SRC_CHANNELS
+#undef SRC_SAMPLE
+#undef SRC_TYPE
-#define SRC_TYPE int16_t
-#define SRC_CHANNELS 2
+#define SRC_TYPE int16_t
+#define SRC_CHANNELS 2
#define SRC_SAMPLE(x) ((pS[x * 2] + pS[(x * 2) + 1]) >> 1)
-int32_t Convert_16S_ToBT_Filtered (uint8_t *pSrc, void *pDst, uint32_t dwSrcSamples,
- uint32_t dwSrcSps, int32_t *pLastCurPos, uint8_t *pOverlapArea)
-{
- int32_t CurrentPos = *pLastCurPos;
- SRC_TYPE *pIn, *pInEnd;
- SRC_TYPE *pOv, *pOvEnd;
- int16_t *psBtOut = (int16_t *)pDst;
+int32_t Convert_16S_ToBT_Filtered(uint8_t* pSrc, void* pDst,
+ uint32_t dwSrcSamples, uint32_t dwSrcSps,
+ int32_t* pLastCurPos, uint8_t* pOverlapArea) {
+ int32_t CurrentPos = *pLastCurPos;
+ SRC_TYPE *pIn, *pInEnd;
+ SRC_TYPE *pOv, *pOvEnd;
+ int16_t* psBtOut = (int16_t*)pDst;
- memcpy (pOverlapArea + (BTA_DM_PCM_OVERLAP_SIZE * 2), pSrc, BTA_DM_PCM_OVERLAP_SIZE * 2);
+ memcpy(pOverlapArea + (BTA_DM_PCM_OVERLAP_SIZE * 2), pSrc,
+ BTA_DM_PCM_OVERLAP_SIZE * 2);
- pOv = (SRC_TYPE *)(pOverlapArea + BTA_DM_PCM_OVERLAP_SIZE);
- pOvEnd = (SRC_TYPE *)(pOverlapArea + (BTA_DM_PCM_OVERLAP_SIZE * 3));
+ pOv = (SRC_TYPE*)(pOverlapArea + BTA_DM_PCM_OVERLAP_SIZE);
+ pOvEnd = (SRC_TYPE*)(pOverlapArea + (BTA_DM_PCM_OVERLAP_SIZE * 3));
- pIn = (SRC_TYPE *)(pSrc + BTA_DM_PCM_OVERLAP_SIZE);
- pInEnd = (SRC_TYPE *)(pSrc + (dwSrcSamples * SRC_CHANNELS * sizeof (SRC_TYPE)) - BTA_DM_PCM_OVERLAP_SIZE);
+ pIn = (SRC_TYPE*)(pSrc + BTA_DM_PCM_OVERLAP_SIZE);
+ pInEnd = (SRC_TYPE*)(pSrc + (dwSrcSamples * SRC_CHANNELS * sizeof(SRC_TYPE)) -
+ BTA_DM_PCM_OVERLAP_SIZE);
- if (dwSrcSps == BTA_DM_PCM_SMPL_RATE_44100)
- {
- CONVERT_44100_TO_BLUETOOTH(pOv, pOvEnd);
- CONVERT_44100_TO_BLUETOOTH(pIn, pInEnd);
- }
- else if (dwSrcSps == BTA_DM_PCM_SMPL_RATE_22050)
- {
- CONVERT_22050_TO_BLUETOOTH(pOv, pOvEnd);
- CONVERT_22050_TO_BLUETOOTH(pIn, pInEnd);
- }
- else if (dwSrcSps == BTA_DM_PCM_SMPL_RATE_11025)
- {
- CONVERT_11025_TO_BLUETOOTH(pOv, pOvEnd);
- CONVERT_11025_TO_BLUETOOTH(pIn, pInEnd);
- }
+ if (dwSrcSps == BTA_DM_PCM_SMPL_RATE_44100) {
+ CONVERT_44100_TO_BLUETOOTH(pOv, pOvEnd);
+ CONVERT_44100_TO_BLUETOOTH(pIn, pInEnd);
+ } else if (dwSrcSps == BTA_DM_PCM_SMPL_RATE_22050) {
+ CONVERT_22050_TO_BLUETOOTH(pOv, pOvEnd);
+ CONVERT_22050_TO_BLUETOOTH(pIn, pInEnd);
+ } else if (dwSrcSps == BTA_DM_PCM_SMPL_RATE_11025) {
+ CONVERT_11025_TO_BLUETOOTH(pOv, pOvEnd);
+ CONVERT_11025_TO_BLUETOOTH(pIn, pInEnd);
+ }
- memcpy (pOverlapArea, pSrc + (dwSrcSamples * SRC_CHANNELS * sizeof (SRC_TYPE)) - \
- (BTA_DM_PCM_OVERLAP_SIZE * 2), BTA_DM_PCM_OVERLAP_SIZE * 2);
+ memcpy(pOverlapArea, pSrc + (dwSrcSamples * SRC_CHANNELS * sizeof(SRC_TYPE)) -
+ (BTA_DM_PCM_OVERLAP_SIZE * 2),
+ BTA_DM_PCM_OVERLAP_SIZE * 2);
- *pLastCurPos = CurrentPos;
+ *pLastCurPos = CurrentPos;
- return (psBtOut - (int16_t *)pDst);
+ return (psBtOut - (int16_t*)pDst);
}
-int32_t Convert_16S_ToBT_NoFilter (void *pSrc, void *pDst, uint32_t dwSrcSamples, uint32_t dwSrcSps)
-{
- int32_t CurrentPos;
- int16_t *psSrc = (int16_t *)pSrc;
- int16_t *psDst = (int16_t *)pDst;
- int16_t sWorker;
+int32_t Convert_16S_ToBT_NoFilter(void* pSrc, void* pDst, uint32_t dwSrcSamples,
+ uint32_t dwSrcSps) {
+ int32_t CurrentPos;
+ int16_t* psSrc = (int16_t*)pSrc;
+ int16_t* psDst = (int16_t*)pDst;
+ int16_t sWorker;
- // start at dwSpsSrc / 2, decrement by 8000
- //
- CurrentPos = (dwSrcSps >> 1);
+ // start at dwSpsSrc / 2, decrement by 8000
+ //
+ CurrentPos = (dwSrcSps >> 1);
- while (dwSrcSamples--)
- {
- CurrentPos -= 8000;
+ while (dwSrcSamples--) {
+ CurrentPos -= 8000;
- if (CurrentPos >= 0)
- psSrc += 2;
- else
- {
- /* CR 82894, to avoid overflow, divide before add */
- sWorker = ((*psSrc) >> 1 );
- psSrc++;
- sWorker += ((*psSrc) >> 1 );
- psSrc++;
+ if (CurrentPos >= 0)
+ psSrc += 2;
+ else {
+ /* CR 82894, to avoid overflow, divide before add */
+ sWorker = ((*psSrc) >> 1);
+ psSrc++;
+ sWorker += ((*psSrc) >> 1);
+ psSrc++;
- *psDst++ = sWorker;
+ *psDst++ = sWorker;
- CurrentPos += dwSrcSps;
- }
+ CurrentPos += dwSrcSps;
}
+ }
- return (psDst - (int16_t *)pDst);
+ return (psDst - (int16_t*)pDst);
}
/*******************************************************************************
@@ -580,109 +566,104 @@
* Returns none
*
******************************************************************************/
-void BTA_DmPcmInitSamples (uint32_t src_sps, uint32_t bits, uint32_t n_channels)
-{
- tBTA_DM_PCM_RESAMPLE_CB *p_cb = &bta_dm_pcm_cb;
+void BTA_DmPcmInitSamples(uint32_t src_sps, uint32_t bits,
+ uint32_t n_channels) {
+ tBTA_DM_PCM_RESAMPLE_CB* p_cb = &bta_dm_pcm_cb;
- p_cb->cur_pos = src_sps / 2;
- p_cb->src_sps = src_sps;
- p_cb->bits = bits;
- p_cb->n_channels = n_channels;
- p_cb->sample_size = 2;
- p_cb->divisor = 2;
+ p_cb->cur_pos = src_sps / 2;
+ p_cb->src_sps = src_sps;
+ p_cb->bits = bits;
+ p_cb->n_channels = n_channels;
+ p_cb->sample_size = 2;
+ p_cb->divisor = 2;
- memset(p_cb->overlap_area, 0, sizeof(p_cb->overlap_area) );
+ memset(p_cb->overlap_area, 0, sizeof(p_cb->overlap_area));
- if ((src_sps == BTA_DM_PCM_SMPL_RATE_44100) ||
- (src_sps == BTA_DM_PCM_SMPL_RATE_22050) ||
- (src_sps == BTA_DM_PCM_SMPL_RATE_11025))
- p_cb->can_be_filtered = 1;
- else
- p_cb->can_be_filtered = 0;
+ if ((src_sps == BTA_DM_PCM_SMPL_RATE_44100) ||
+ (src_sps == BTA_DM_PCM_SMPL_RATE_22050) ||
+ (src_sps == BTA_DM_PCM_SMPL_RATE_11025))
+ p_cb->can_be_filtered = 1;
+ else
+ p_cb->can_be_filtered = 0;
#if (BTA_DM_SCO_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_dm_pcm_init_samples: n_channels = %d bits = %d", n_channels, bits);
+ APPL_TRACE_DEBUG("bta_dm_pcm_init_samples: n_channels = %d bits = %d",
+ n_channels, bits);
#endif
- if(n_channels == 1)
- {
- /* mono */
- if(bits == 8)
- {
- p_cb->filter = (PCONVERT_TO_BT_FILTERED) Convert_8M_ToBT_Filtered;
- p_cb->nofilter = (PCONVERT_TO_BT_NOFILTER) Convert_8M_ToBT_NoFilter;
- p_cb->divisor = 1;
- }
- else
- {
- p_cb->filter = (PCONVERT_TO_BT_FILTERED) Convert_16M_ToBT_Filtered;
- p_cb->nofilter = (PCONVERT_TO_BT_NOFILTER) Convert_16M_ToBT_NoFilter;
- }
+ if (n_channels == 1) {
+ /* mono */
+ if (bits == 8) {
+ p_cb->filter = (PCONVERT_TO_BT_FILTERED)Convert_8M_ToBT_Filtered;
+ p_cb->nofilter = (PCONVERT_TO_BT_NOFILTER)Convert_8M_ToBT_NoFilter;
+ p_cb->divisor = 1;
+ } else {
+ p_cb->filter = (PCONVERT_TO_BT_FILTERED)Convert_16M_ToBT_Filtered;
+ p_cb->nofilter = (PCONVERT_TO_BT_NOFILTER)Convert_16M_ToBT_NoFilter;
}
- else
- {
- /* stereo */
- if(bits == 8)
- {
- p_cb->filter = (PCONVERT_TO_BT_FILTERED) Convert_8S_ToBT_Filtered;
- p_cb->nofilter = (PCONVERT_TO_BT_NOFILTER) Convert_8S_ToBT_NoFilter;
- }
- else
- {
- p_cb->filter = (PCONVERT_TO_BT_FILTERED) Convert_16S_ToBT_Filtered;
- p_cb->nofilter = (PCONVERT_TO_BT_NOFILTER) Convert_16S_ToBT_NoFilter;
- p_cb->divisor = 4;
- }
+ } else {
+ /* stereo */
+ if (bits == 8) {
+ p_cb->filter = (PCONVERT_TO_BT_FILTERED)Convert_8S_ToBT_Filtered;
+ p_cb->nofilter = (PCONVERT_TO_BT_NOFILTER)Convert_8S_ToBT_NoFilter;
+ } else {
+ p_cb->filter = (PCONVERT_TO_BT_FILTERED)Convert_16S_ToBT_Filtered;
+ p_cb->nofilter = (PCONVERT_TO_BT_NOFILTER)Convert_16S_ToBT_NoFilter;
+ p_cb->divisor = 4;
}
+ }
#if (BTA_DM_SCO_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_pcm_init_dwn_sample: cur_pos %d, src_sps %d", \
- p_cb->cur_pos, p_cb->src_sps);
- APPL_TRACE_DEBUG("bta_pcm_init_dwn_sample: bits %d, n_channels %d, sample_size %d, ", \
- p_cb->bits, p_cb->n_channels, p_cb->sample_size);
- APPL_TRACE_DEBUG("bta_pcm_init_dwn_sample: can_be_filtered %d, n_channels: %d, \
- divisor %d", p_cb->can_be_filtered, p_cb->n_channels, p_cb->divisor);
+ APPL_TRACE_DEBUG("bta_pcm_init_dwn_sample: cur_pos %d, src_sps %d",
+ p_cb->cur_pos, p_cb->src_sps);
+ APPL_TRACE_DEBUG(
+ "bta_pcm_init_dwn_sample: bits %d, n_channels %d, sample_size %d, ",
+ p_cb->bits, p_cb->n_channels, p_cb->sample_size);
+ APPL_TRACE_DEBUG(
+ "bta_pcm_init_dwn_sample: can_be_filtered %d, n_channels: %d, \
+ divisor %d",
+ p_cb->can_be_filtered, p_cb->n_channels, p_cb->divisor);
#endif
-
}
/**************************************************************************************
* Function BTA_DmPcmResample
*
- * Description Down sampling utility to convert higher sampling rate into 8K/16bits
+ * Description Down sampling utility to convert higher sampling rate into
+ *8K/16bits
* PCM samples.
*
* Parameters p_src: pointer to the buffer where the original sampling PCM
* are stored.
* in_bytes: Length of the input PCM sample buffer in byte.
- * p_dst: pointer to the buffer which is to be used to store
+ * p_dst: pointer to the buffer which is to be used to
+ *store
* the converted PCM samples.
*
*
* Returns int32_t: number of samples converted.
*
*************************************************************************************/
-int32_t BTA_DmPcmResample (void *p_src, uint32_t in_bytes, void *p_dst)
-{
- uint32_t out_sample;
+int32_t BTA_DmPcmResample(void* p_src, uint32_t in_bytes, void* p_dst) {
+ uint32_t out_sample;
#if (BTA_DM_SCO_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_pcm_resample : insamples %d", (in_bytes / bta_dm_pcm_cb.divisor));
+ APPL_TRACE_DEBUG("bta_pcm_resample : insamples %d",
+ (in_bytes / bta_dm_pcm_cb.divisor));
#endif
- if(bta_dm_pcm_cb.can_be_filtered)
- {
- out_sample = (*bta_dm_pcm_cb.filter) (p_src, p_dst, (in_bytes / bta_dm_pcm_cb.divisor),
- bta_dm_pcm_cb.src_sps, (int32_t *) &bta_dm_pcm_cb.cur_pos, bta_dm_pcm_cb.overlap_area);
- }
- else
- {
- out_sample = (*bta_dm_pcm_cb.nofilter) (p_src, p_dst,
- (in_bytes / bta_dm_pcm_cb.divisor), bta_dm_pcm_cb.src_sps);
- }
+ if (bta_dm_pcm_cb.can_be_filtered) {
+ out_sample = (*bta_dm_pcm_cb.filter)(
+ p_src, p_dst, (in_bytes / bta_dm_pcm_cb.divisor), bta_dm_pcm_cb.src_sps,
+ (int32_t*)&bta_dm_pcm_cb.cur_pos, bta_dm_pcm_cb.overlap_area);
+ } else {
+ out_sample = (*bta_dm_pcm_cb.nofilter)(p_src, p_dst,
+ (in_bytes / bta_dm_pcm_cb.divisor),
+ bta_dm_pcm_cb.src_sps);
+ }
#if (BTA_DM_SCO_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_pcm_resample : outsamples %d", out_sample);
+ APPL_TRACE_DEBUG("bta_pcm_resample : outsamples %d", out_sample);
#endif
- return (out_sample * bta_dm_pcm_cb.sample_size);
+ return (out_sample * bta_dm_pcm_cb.sample_size);
}
#endif
diff --git a/bta/gatt/bta_gattc_act.cc b/bta/gatt/bta_gattc_act.cc
index 717cbb9..fc66070 100644
--- a/bta/gatt/bta_gattc_act.cc
+++ b/bta/gatt/bta_gattc_act.cc
@@ -27,11 +27,11 @@
#include <string.h>
+#include "bt_common.h"
#include "bt_target.h"
#include "bta_gattc_int.h"
#include "bta_sys.h"
#include "btif/include/btif_debug_conn.h"
-#include "bt_common.h"
#include "l2c_api.h"
#include "osi/include/log.h"
#include "osi/include/osi.h"
@@ -47,59 +47,46 @@
/*****************************************************************************
* Constants
****************************************************************************/
-static void bta_gattc_conn_cback(tGATT_IF gattc_if, BD_ADDR bda, uint16_t conn_id,
- bool connected, tGATT_DISCONN_REASON reason,
+static void bta_gattc_conn_cback(tGATT_IF gattc_if, BD_ADDR bda,
+ uint16_t conn_id, bool connected,
+ tGATT_DISCONN_REASON reason,
tBT_TRANSPORT transport);
-static void bta_gattc_cmpl_cback(uint16_t conn_id, tGATTC_OPTYPE op, tGATT_STATUS status,
- tGATT_CL_COMPLETE *p_data);
+static void bta_gattc_cmpl_cback(uint16_t conn_id, tGATTC_OPTYPE op,
+ tGATT_STATUS status,
+ tGATT_CL_COMPLETE* p_data);
static void bta_gattc_cmpl_sendmsg(uint16_t conn_id, tGATTC_OPTYPE op,
tBTA_GATT_STATUS status,
- tGATT_CL_COMPLETE *p_data);
+ tGATT_CL_COMPLETE* p_data);
-static void bta_gattc_deregister_cmpl(tBTA_GATTC_RCB *p_clreg);
+static void bta_gattc_deregister_cmpl(tBTA_GATTC_RCB* p_clreg);
static void bta_gattc_enc_cmpl_cback(tGATT_IF gattc_if, BD_ADDR bda);
-static void bta_gattc_cong_cback (uint16_t conn_id, bool congested);
+static void bta_gattc_cong_cback(uint16_t conn_id, bool congested);
-static tGATT_CBACK bta_gattc_cl_cback =
-{
- bta_gattc_conn_cback,
- bta_gattc_cmpl_cback,
- bta_gattc_disc_res_cback,
- bta_gattc_disc_cmpl_cback,
- NULL,
- bta_gattc_enc_cmpl_cback,
- bta_gattc_cong_cback
-};
+static tGATT_CBACK bta_gattc_cl_cback = {bta_gattc_conn_cback,
+ bta_gattc_cmpl_cback,
+ bta_gattc_disc_res_cback,
+ bta_gattc_disc_cmpl_cback,
+ NULL,
+ bta_gattc_enc_cmpl_cback,
+ bta_gattc_cong_cback};
/* opcode(tGATTC_OPTYPE) order has to be comply with internal event order */
-static uint16_t bta_gattc_opcode_to_int_evt[] =
-{
- BTA_GATTC_API_READ_EVT,
- BTA_GATTC_API_WRITE_EVT,
- BTA_GATTC_API_EXEC_EVT,
- BTA_GATTC_API_CFG_MTU_EVT
-};
+static uint16_t bta_gattc_opcode_to_int_evt[] = {
+ BTA_GATTC_API_READ_EVT, BTA_GATTC_API_WRITE_EVT, BTA_GATTC_API_EXEC_EVT,
+ BTA_GATTC_API_CFG_MTU_EVT};
#if (BT_TRACE_VERBOSE == TRUE)
-static const char *bta_gattc_op_code_name[] =
-{
- "Unknown",
- "Discovery",
- "Read",
- "Write",
- "Exec",
- "Config",
- "Notification",
- "Indication"
-};
-#endif // BT_TRACE_VERBOSE
+static const char* bta_gattc_op_code_name[] = {
+ "Unknown", "Discovery", "Read", "Write",
+ "Exec", "Config", "Notification", "Indication"};
+#endif // BT_TRACE_VERBOSE
/*****************************************************************************
* Action Functions
****************************************************************************/
-
-void bta_gattc_reset_discover_st(tBTA_GATTC_SERV *p_srcb, tBTA_GATT_STATUS status);
+void bta_gattc_reset_discover_st(tBTA_GATTC_SERV* p_srcb,
+ tBTA_GATT_STATUS status);
/*******************************************************************************
*
@@ -111,20 +98,16 @@
* Returns void
*
******************************************************************************/
-static void bta_gattc_enable()
-{
- APPL_TRACE_DEBUG("bta_gattc_enable");
+static void bta_gattc_enable() {
+ APPL_TRACE_DEBUG("bta_gattc_enable");
- if (bta_gattc_cb.state == BTA_GATTC_STATE_DISABLED)
- {
- /* initialize control block */
- memset(&bta_gattc_cb, 0, sizeof(tBTA_GATTC_CB));
- bta_gattc_cb.state = BTA_GATTC_STATE_ENABLED;
- }
- else
- {
- APPL_TRACE_DEBUG("GATTC is arelady enabled");
- }
+ if (bta_gattc_cb.state == BTA_GATTC_STATE_DISABLED) {
+ /* initialize control block */
+ memset(&bta_gattc_cb, 0, sizeof(tBTA_GATTC_CB));
+ bta_gattc_cb.state = BTA_GATTC_STATE_ENABLED;
+ } else {
+ APPL_TRACE_DEBUG("GATTC is arelady enabled");
+ }
}
/*******************************************************************************
@@ -137,41 +120,36 @@
* Returns void
*
******************************************************************************/
-void bta_gattc_disable()
-{
- uint8_t i;
+void bta_gattc_disable() {
+ uint8_t i;
- APPL_TRACE_DEBUG("bta_gattc_disable");
+ APPL_TRACE_DEBUG("bta_gattc_disable");
- if (bta_gattc_cb.state != BTA_GATTC_STATE_ENABLED)
- {
- APPL_TRACE_ERROR("not enabled or disable in pogress");
- return;
- }
+ if (bta_gattc_cb.state != BTA_GATTC_STATE_ENABLED) {
+ APPL_TRACE_ERROR("not enabled or disable in pogress");
+ return;
+ }
- for (i = 0; i <BTA_GATTC_CL_MAX; i ++)
- {
- if (bta_gattc_cb.cl_rcb[i].in_use)
- {
- bta_gattc_cb.state = BTA_GATTC_STATE_DISABLING;
- /* don't deregister HH GATT IF */
- /* HH GATT IF will be deregistered by bta_hh_le_deregister when disable HH */
+ for (i = 0; i < BTA_GATTC_CL_MAX; i++) {
+ if (bta_gattc_cb.cl_rcb[i].in_use) {
+ bta_gattc_cb.state = BTA_GATTC_STATE_DISABLING;
+/* don't deregister HH GATT IF */
+/* HH GATT IF will be deregistered by bta_hh_le_deregister when disable HH */
#if (BTA_HH_LE_INCLUDED == TRUE)
- if (!bta_hh_le_is_hh_gatt_if(bta_gattc_cb.cl_rcb[i].client_if)) {
+ if (!bta_hh_le_is_hh_gatt_if(bta_gattc_cb.cl_rcb[i].client_if)) {
#endif
- bta_gattc_deregister(&bta_gattc_cb.cl_rcb[i]);
+ bta_gattc_deregister(&bta_gattc_cb.cl_rcb[i]);
#if (BTA_HH_LE_INCLUDED == TRUE)
- }
+ }
#endif
- }
}
+ }
- /* no registered apps, indicate disable completed */
- if (bta_gattc_cb.state != BTA_GATTC_STATE_DISABLING)
- {
- memset(&bta_gattc_cb, 0, sizeof(tBTA_GATTC_CB));
- bta_gattc_cb.state = BTA_GATTC_STATE_DISABLED;
- }
+ /* no registered apps, indicate disable completed */
+ if (bta_gattc_cb.state != BTA_GATTC_STATE_DISABLING) {
+ memset(&bta_gattc_cb, 0, sizeof(tBTA_GATTC_CB));
+ bta_gattc_cb.state = BTA_GATTC_STATE_DISABLED;
+ }
}
/*******************************************************************************
@@ -183,62 +161,56 @@
* Returns void
*
******************************************************************************/
-void bta_gattc_register(tBTA_GATTC_DATA *p_data)
-{
- tBTA_GATTC cb_data;
- uint8_t i;
- tBT_UUID *p_app_uuid = &p_data->api_reg.app_uuid;
- tBTA_GATT_STATUS status = BTA_GATT_NO_RESOURCES;
+void bta_gattc_register(tBTA_GATTC_DATA* p_data) {
+ tBTA_GATTC cb_data;
+ uint8_t i;
+ tBT_UUID* p_app_uuid = &p_data->api_reg.app_uuid;
+ tBTA_GATT_STATUS status = BTA_GATT_NO_RESOURCES;
- APPL_TRACE_DEBUG("bta_gattc_register state %d",bta_gattc_cb.state);
- memset(&cb_data, 0, sizeof(cb_data));
- cb_data.reg_oper.status = BTA_GATT_NO_RESOURCES;
+ APPL_TRACE_DEBUG("bta_gattc_register state %d", bta_gattc_cb.state);
+ memset(&cb_data, 0, sizeof(cb_data));
+ cb_data.reg_oper.status = BTA_GATT_NO_RESOURCES;
- /* check if GATTC module is already enabled . Else enable */
- if (bta_gattc_cb.state == BTA_GATTC_STATE_DISABLED)
- {
- bta_gattc_enable ();
- }
- /* todo need to check duplicate uuid */
- for (i = 0; i < BTA_GATTC_CL_MAX; i ++)
- {
- if (!bta_gattc_cb.cl_rcb[i].in_use)
- {
- if ((p_app_uuid == NULL) || (bta_gattc_cb.cl_rcb[i].client_if = GATT_Register(p_app_uuid, &bta_gattc_cl_cback)) == 0)
- {
- APPL_TRACE_ERROR("Register with GATT stack failed.");
- status = BTA_GATT_ERROR;
- }
- else
- {
- bta_gattc_cb.cl_rcb[i].in_use = true;
- bta_gattc_cb.cl_rcb[i].p_cback = p_data->api_reg.p_cback;
- memcpy(&bta_gattc_cb.cl_rcb[i].app_uuid, p_app_uuid, sizeof(tBT_UUID));
+ /* check if GATTC module is already enabled . Else enable */
+ if (bta_gattc_cb.state == BTA_GATTC_STATE_DISABLED) {
+ bta_gattc_enable();
+ }
+ /* todo need to check duplicate uuid */
+ for (i = 0; i < BTA_GATTC_CL_MAX; i++) {
+ if (!bta_gattc_cb.cl_rcb[i].in_use) {
+ if ((p_app_uuid == NULL) ||
+ (bta_gattc_cb.cl_rcb[i].client_if =
+ GATT_Register(p_app_uuid, &bta_gattc_cl_cback)) == 0) {
+ APPL_TRACE_ERROR("Register with GATT stack failed.");
+ status = BTA_GATT_ERROR;
+ } else {
+ bta_gattc_cb.cl_rcb[i].in_use = true;
+ bta_gattc_cb.cl_rcb[i].p_cback = p_data->api_reg.p_cback;
+ memcpy(&bta_gattc_cb.cl_rcb[i].app_uuid, p_app_uuid, sizeof(tBT_UUID));
- /* BTA use the same client interface as BTE GATT statck */
- cb_data.reg_oper.client_if = bta_gattc_cb.cl_rcb[i].client_if;
+ /* BTA use the same client interface as BTE GATT statck */
+ cb_data.reg_oper.client_if = bta_gattc_cb.cl_rcb[i].client_if;
- tBTA_GATTC_INT_START_IF *p_buf =
- (tBTA_GATTC_INT_START_IF *)osi_malloc(sizeof(tBTA_GATTC_INT_START_IF));
- p_buf->hdr.event = BTA_GATTC_INT_START_IF_EVT;
- p_buf->client_if = bta_gattc_cb.cl_rcb[i].client_if;
+ tBTA_GATTC_INT_START_IF* p_buf = (tBTA_GATTC_INT_START_IF*)osi_malloc(
+ sizeof(tBTA_GATTC_INT_START_IF));
+ p_buf->hdr.event = BTA_GATTC_INT_START_IF_EVT;
+ p_buf->client_if = bta_gattc_cb.cl_rcb[i].client_if;
- bta_sys_sendmsg(p_buf);
- status = BTA_GATT_OK;
- break;
- }
- }
+ bta_sys_sendmsg(p_buf);
+ status = BTA_GATT_OK;
+ break;
+ }
}
+ }
- /* callback with register event */
- if (p_data->api_reg.p_cback)
- {
- if (p_app_uuid != NULL)
- memcpy(&(cb_data.reg_oper.app_uuid),p_app_uuid,sizeof(tBT_UUID));
+ /* callback with register event */
+ if (p_data->api_reg.p_cback) {
+ if (p_app_uuid != NULL)
+ memcpy(&(cb_data.reg_oper.app_uuid), p_app_uuid, sizeof(tBT_UUID));
- cb_data.reg_oper.status = status;
- (*p_data->api_reg.p_cback)(BTA_GATTC_REG_EVT, (tBTA_GATTC *)&cb_data);
- }
+ cb_data.reg_oper.status = status;
+ (*p_data->api_reg.p_cback)(BTA_GATTC_REG_EVT, (tBTA_GATTC*)&cb_data);
+ }
}
/*******************************************************************************
*
@@ -249,16 +221,13 @@
* Returns none.
*
******************************************************************************/
-void bta_gattc_start_if(tBTA_GATTC_DATA *p_msg)
-{
- if (bta_gattc_cl_get_regcb(p_msg->int_start_if.client_if) !=NULL )
- {
- GATT_StartIf(p_msg->int_start_if.client_if);
- }
- else
- {
- APPL_TRACE_ERROR("Unable to start app.: Unknown interface =%d",p_msg->int_start_if.client_if );
- }
+void bta_gattc_start_if(tBTA_GATTC_DATA* p_msg) {
+ if (bta_gattc_cl_get_regcb(p_msg->int_start_if.client_if) != NULL) {
+ GATT_StartIf(p_msg->int_start_if.client_if);
+ } else {
+ APPL_TRACE_ERROR("Unable to start app.: Unknown interface =%d",
+ p_msg->int_start_if.client_if);
+ }
}
/*******************************************************************************
*
@@ -269,48 +238,42 @@
* Returns void
*
******************************************************************************/
-void bta_gattc_deregister(tBTA_GATTC_RCB *p_clreg)
-{
- uint8_t i;
- BT_HDR buf;
+void bta_gattc_deregister(tBTA_GATTC_RCB* p_clreg) {
+ uint8_t i;
+ BT_HDR buf;
- if (p_clreg != NULL)
- {
- /* remove bg connection associated with this rcb */
- for (i = 0; i < BTA_GATTC_KNOWN_SR_MAX; i ++)
- {
- if (bta_gattc_cb.bg_track[i].in_use)
- {
- if (bta_gattc_cb.bg_track[i].cif_mask & (1 <<(p_clreg->client_if - 1)))
- {
- bta_gattc_mark_bg_conn(p_clreg->client_if, bta_gattc_cb.bg_track[i].remote_bda, false);
- GATT_CancelConnect(p_clreg->client_if, bta_gattc_cb.bg_track[i].remote_bda, false);
- }
- }
+ if (p_clreg != NULL) {
+ /* remove bg connection associated with this rcb */
+ for (i = 0; i < BTA_GATTC_KNOWN_SR_MAX; i++) {
+ if (bta_gattc_cb.bg_track[i].in_use) {
+ if (bta_gattc_cb.bg_track[i].cif_mask &
+ (1 << (p_clreg->client_if - 1))) {
+ bta_gattc_mark_bg_conn(p_clreg->client_if,
+ bta_gattc_cb.bg_track[i].remote_bda, false);
+ GATT_CancelConnect(p_clreg->client_if,
+ bta_gattc_cb.bg_track[i].remote_bda, false);
}
+ }
+ }
- if (p_clreg->num_clcb > 0)
- {
- /* close all CLCB related to this app */
- for (i= 0; i < BTA_GATTC_CLCB_MAX; i ++)
- {
- if (bta_gattc_cb.clcb[i].in_use && (bta_gattc_cb.clcb[i].p_rcb == p_clreg))
- {
- p_clreg->dereg_pending = true;
+ if (p_clreg->num_clcb > 0) {
+ /* close all CLCB related to this app */
+ for (i = 0; i < BTA_GATTC_CLCB_MAX; i++) {
+ if (bta_gattc_cb.clcb[i].in_use &&
+ (bta_gattc_cb.clcb[i].p_rcb == p_clreg)) {
+ p_clreg->dereg_pending = true;
- buf.event = BTA_GATTC_API_CLOSE_EVT;
- buf.layer_specific = bta_gattc_cb.clcb[i].bta_conn_id;
- bta_gattc_close(&bta_gattc_cb.clcb[i], (tBTA_GATTC_DATA *)&buf) ;
- }
- }
+ buf.event = BTA_GATTC_API_CLOSE_EVT;
+ buf.layer_specific = bta_gattc_cb.clcb[i].bta_conn_id;
+ bta_gattc_close(&bta_gattc_cb.clcb[i], (tBTA_GATTC_DATA*)&buf);
}
- else
- bta_gattc_deregister_cmpl(p_clreg);
- }
- else
- {
- APPL_TRACE_ERROR("bta_gattc_deregister Deregister Failedm unknown client cif");
- }
+ }
+ } else
+ bta_gattc_deregister_cmpl(p_clreg);
+ } else {
+ APPL_TRACE_ERROR(
+ "bta_gattc_deregister Deregister Failedm unknown client cif");
+ }
}
/*******************************************************************************
*
@@ -321,43 +284,31 @@
* Returns void
*
******************************************************************************/
-void bta_gattc_process_api_open (tBTA_GATTC_DATA * p_msg)
-{
- uint16_t event = ((BT_HDR *)p_msg)->event;
- tBTA_GATTC_CLCB *p_clcb = NULL;
- tBTA_GATTC_RCB *p_clreg = bta_gattc_cl_get_regcb(p_msg->api_conn.client_if);
+void bta_gattc_process_api_open(tBTA_GATTC_DATA* p_msg) {
+ uint16_t event = ((BT_HDR*)p_msg)->event;
+ tBTA_GATTC_CLCB* p_clcb = NULL;
+ tBTA_GATTC_RCB* p_clreg = bta_gattc_cl_get_regcb(p_msg->api_conn.client_if);
- if (p_clreg != NULL)
- {
- if (p_msg->api_conn.is_direct)
- {
- if ((p_clcb = bta_gattc_find_alloc_clcb(p_msg->api_conn.client_if,
- p_msg->api_conn.remote_bda,
- p_msg->api_conn.transport)) != NULL)
- {
- bta_gattc_sm_execute(p_clcb, event, p_msg);
- }
- else
- {
- APPL_TRACE_ERROR("No resources to open a new connection.");
+ if (p_clreg != NULL) {
+ if (p_msg->api_conn.is_direct) {
+ if ((p_clcb = bta_gattc_find_alloc_clcb(
+ p_msg->api_conn.client_if, p_msg->api_conn.remote_bda,
+ p_msg->api_conn.transport)) != NULL) {
+ bta_gattc_sm_execute(p_clcb, event, p_msg);
+ } else {
+ APPL_TRACE_ERROR("No resources to open a new connection.");
- bta_gattc_send_open_cback(p_clreg,
- BTA_GATT_NO_RESOURCES,
- p_msg->api_conn.remote_bda,
- BTA_GATT_INVALID_CONN_ID,
- p_msg->api_conn.transport, 0);
- }
- }
- else
- {
- bta_gattc_init_bk_conn(&p_msg->api_conn, p_clreg);
- }
+ bta_gattc_send_open_cback(
+ p_clreg, BTA_GATT_NO_RESOURCES, p_msg->api_conn.remote_bda,
+ BTA_GATT_INVALID_CONN_ID, p_msg->api_conn.transport, 0);
+ }
+ } else {
+ bta_gattc_init_bk_conn(&p_msg->api_conn, p_clreg);
}
- else
- {
- APPL_TRACE_ERROR("bta_gattc_process_api_open Failed, unknown client_if: %d",
- p_msg->api_conn.client_if);
- }
+ } else {
+ APPL_TRACE_ERROR("bta_gattc_process_api_open Failed, unknown client_if: %d",
+ p_msg->api_conn.client_if);
+ }
}
/*******************************************************************************
*
@@ -368,39 +319,30 @@
* Returns void
*
******************************************************************************/
-void bta_gattc_process_api_open_cancel (tBTA_GATTC_DATA * p_msg)
-{
- uint16_t event = ((BT_HDR *)p_msg)->event;
- tBTA_GATTC_CLCB *p_clcb = NULL;
- tBTA_GATTC_RCB *p_clreg;
- tBTA_GATTC cb_data;
+void bta_gattc_process_api_open_cancel(tBTA_GATTC_DATA* p_msg) {
+ uint16_t event = ((BT_HDR*)p_msg)->event;
+ tBTA_GATTC_CLCB* p_clcb = NULL;
+ tBTA_GATTC_RCB* p_clreg;
+ tBTA_GATTC cb_data;
- if (p_msg->api_cancel_conn.is_direct)
- {
- if ((p_clcb = bta_gattc_find_clcb_by_cif(p_msg->api_cancel_conn.client_if,
- p_msg->api_cancel_conn.remote_bda,
- BTA_GATT_TRANSPORT_LE)) != NULL)
- {
- bta_gattc_sm_execute(p_clcb, event, p_msg);
- }
- else
- {
- APPL_TRACE_ERROR("No such connection need to be cancelled");
+ if (p_msg->api_cancel_conn.is_direct) {
+ if ((p_clcb = bta_gattc_find_clcb_by_cif(p_msg->api_cancel_conn.client_if,
+ p_msg->api_cancel_conn.remote_bda,
+ BTA_GATT_TRANSPORT_LE)) != NULL) {
+ bta_gattc_sm_execute(p_clcb, event, p_msg);
+ } else {
+ APPL_TRACE_ERROR("No such connection need to be cancelled");
- p_clreg = bta_gattc_cl_get_regcb(p_msg->api_cancel_conn.client_if);
+ p_clreg = bta_gattc_cl_get_regcb(p_msg->api_cancel_conn.client_if);
- if (p_clreg && p_clreg->p_cback)
- {
- cb_data.status = BTA_GATT_ERROR;
- (*p_clreg->p_cback)(BTA_GATTC_CANCEL_OPEN_EVT, &cb_data);
- }
- }
+ if (p_clreg && p_clreg->p_cback) {
+ cb_data.status = BTA_GATT_ERROR;
+ (*p_clreg->p_cback)(BTA_GATTC_CANCEL_OPEN_EVT, &cb_data);
+ }
}
- else
- {
- bta_gattc_cancel_bk_conn(&p_msg->api_cancel_conn);
-
- }
+ } else {
+ bta_gattc_cancel_bk_conn(&p_msg->api_cancel_conn);
+ }
}
/*******************************************************************************
@@ -412,22 +354,20 @@
* Returns void
*
******************************************************************************/
-void bta_gattc_process_enc_cmpl(tBTA_GATTC_DATA *p_msg)
-{
- tBTA_GATTC_RCB *p_clreg;
- tBTA_GATTC cb_data;
+void bta_gattc_process_enc_cmpl(tBTA_GATTC_DATA* p_msg) {
+ tBTA_GATTC_RCB* p_clreg;
+ tBTA_GATTC cb_data;
- p_clreg = bta_gattc_cl_get_regcb(p_msg->enc_cmpl.client_if);
+ p_clreg = bta_gattc_cl_get_regcb(p_msg->enc_cmpl.client_if);
- if (p_clreg && p_clreg->p_cback)
- {
- memset(&cb_data, 0, sizeof(tBTA_GATTC));
+ if (p_clreg && p_clreg->p_cback) {
+ memset(&cb_data, 0, sizeof(tBTA_GATTC));
- cb_data.enc_cmpl.client_if = p_msg->enc_cmpl.client_if;
- bdcpy(cb_data.enc_cmpl.remote_bda, p_msg->enc_cmpl.remote_bda);
+ cb_data.enc_cmpl.client_if = p_msg->enc_cmpl.client_if;
+ bdcpy(cb_data.enc_cmpl.remote_bda, p_msg->enc_cmpl.remote_bda);
- (*p_clreg->p_cback)(BTA_GATTC_ENC_CMPL_CB_EVT, &cb_data);
- }
+ (*p_clreg->p_cback)(BTA_GATTC_ENC_CMPL_CB_EVT, &cb_data);
+ }
}
/*******************************************************************************
@@ -439,15 +379,14 @@
* Returns void
*
******************************************************************************/
-void bta_gattc_cancel_open_error(tBTA_GATTC_CLCB *p_clcb,
- UNUSED_ATTR tBTA_GATTC_DATA *p_data)
-{
- tBTA_GATTC cb_data;
+void bta_gattc_cancel_open_error(tBTA_GATTC_CLCB* p_clcb,
+ UNUSED_ATTR tBTA_GATTC_DATA* p_data) {
+ tBTA_GATTC cb_data;
- cb_data.status=BTA_GATT_ERROR;
+ cb_data.status = BTA_GATT_ERROR;
- if ( p_clcb && p_clcb->p_rcb && p_clcb->p_rcb->p_cback )
- (*p_clcb->p_rcb->p_cback)(BTA_GATTC_CANCEL_OPEN_EVT, &cb_data);
+ if (p_clcb && p_clcb->p_rcb && p_clcb->p_rcb->p_cback)
+ (*p_clcb->p_rcb->p_cback)(BTA_GATTC_CANCEL_OPEN_EVT, &cb_data);
}
/*******************************************************************************
@@ -459,17 +398,12 @@
* Returns void
*
******************************************************************************/
-void bta_gattc_open_error(tBTA_GATTC_CLCB *p_clcb,
- UNUSED_ATTR tBTA_GATTC_DATA *p_data)
-{
- APPL_TRACE_ERROR("Connection already opened. wrong state");
+void bta_gattc_open_error(tBTA_GATTC_CLCB* p_clcb,
+ UNUSED_ATTR tBTA_GATTC_DATA* p_data) {
+ APPL_TRACE_ERROR("Connection already opened. wrong state");
- bta_gattc_send_open_cback(p_clcb->p_rcb,
- BTA_GATT_OK,
- p_clcb->bda,
- p_clcb->bta_conn_id,
- p_clcb->transport,
- 0);
+ bta_gattc_send_open_cback(p_clcb->p_rcb, BTA_GATT_OK, p_clcb->bda,
+ p_clcb->bta_conn_id, p_clcb->transport, 0);
}
/*******************************************************************************
*
@@ -480,17 +414,12 @@
* Returns void
*
******************************************************************************/
-void bta_gattc_open_fail(tBTA_GATTC_CLCB *p_clcb,
- UNUSED_ATTR tBTA_GATTC_DATA *p_data)
-{
- bta_gattc_send_open_cback(p_clcb->p_rcb,
- BTA_GATT_ERROR,
- p_clcb->bda,
- p_clcb->bta_conn_id,
- p_clcb->transport,
- 0);
- /* open failure, remove clcb */
- bta_gattc_clcb_dealloc(p_clcb);
+void bta_gattc_open_fail(tBTA_GATTC_CLCB* p_clcb,
+ UNUSED_ATTR tBTA_GATTC_DATA* p_data) {
+ bta_gattc_send_open_cback(p_clcb->p_rcb, BTA_GATT_ERROR, p_clcb->bda,
+ p_clcb->bta_conn_id, p_clcb->transport, 0);
+ /* open failure, remove clcb */
+ bta_gattc_clcb_dealloc(p_clcb);
}
/*******************************************************************************
@@ -502,32 +431,26 @@
* Returns void
*
******************************************************************************/
-void bta_gattc_open(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data)
-{
- tBTA_GATTC_DATA gattc_data;
+void bta_gattc_open(tBTA_GATTC_CLCB* p_clcb, tBTA_GATTC_DATA* p_data) {
+ tBTA_GATTC_DATA gattc_data;
- /* open/hold a connection */
- if (!GATT_Connect(p_clcb->p_rcb->client_if, p_data->api_conn.remote_bda,
- true, p_data->api_conn.transport, false))
- {
- APPL_TRACE_ERROR("Connection open failure");
+ /* open/hold a connection */
+ if (!GATT_Connect(p_clcb->p_rcb->client_if, p_data->api_conn.remote_bda, true,
+ p_data->api_conn.transport, false)) {
+ APPL_TRACE_ERROR("Connection open failure");
- bta_gattc_sm_execute(p_clcb, BTA_GATTC_INT_OPEN_FAIL_EVT, p_data);
+ bta_gattc_sm_execute(p_clcb, BTA_GATTC_INT_OPEN_FAIL_EVT, p_data);
+ } else {
+ /* a connected remote device */
+ if (GATT_GetConnIdIfConnected(
+ p_clcb->p_rcb->client_if, p_data->api_conn.remote_bda,
+ &p_clcb->bta_conn_id, p_data->api_conn.transport)) {
+ gattc_data.int_conn.hdr.layer_specific = p_clcb->bta_conn_id;
+
+ bta_gattc_sm_execute(p_clcb, BTA_GATTC_INT_CONN_EVT, &gattc_data);
}
- else
- {
- /* a connected remote device */
- if (GATT_GetConnIdIfConnected(p_clcb->p_rcb->client_if,
- p_data->api_conn.remote_bda,
- &p_clcb->bta_conn_id,
- p_data->api_conn.transport))
- {
- gattc_data.int_conn.hdr.layer_specific = p_clcb->bta_conn_id;
-
- bta_gattc_sm_execute(p_clcb, BTA_GATTC_INT_CONN_EVT, &gattc_data);
- }
- /* else wait for the callback event */
- }
+ /* else wait for the callback event */
+ }
}
/*******************************************************************************
*
@@ -538,53 +461,49 @@
* Returns void
*
******************************************************************************/
-void bta_gattc_init_bk_conn(tBTA_GATTC_API_OPEN *p_data, tBTA_GATTC_RCB *p_clreg)
-{
- tBTA_GATT_STATUS status = BTA_GATT_NO_RESOURCES;
- uint16_t conn_id;
- tBTA_GATTC_CLCB *p_clcb;
- tBTA_GATTC_DATA gattc_data;
+void bta_gattc_init_bk_conn(tBTA_GATTC_API_OPEN* p_data,
+ tBTA_GATTC_RCB* p_clreg) {
+ tBTA_GATT_STATUS status = BTA_GATT_NO_RESOURCES;
+ uint16_t conn_id;
+ tBTA_GATTC_CLCB* p_clcb;
+ tBTA_GATTC_DATA gattc_data;
- if (bta_gattc_mark_bg_conn(p_data->client_if, p_data->remote_bda, true))
- {
- /* always call open to hold a connection */
- if (!GATT_Connect(p_data->client_if, p_data->remote_bda, false, p_data->transport, false))
- {
- uint8_t *bda = (uint8_t *)p_data->remote_bda;
- status = BTA_GATT_ERROR;
- APPL_TRACE_ERROR("%s unable to connect to remote bd_addr:%02x:%02x:%02x:%02x:%02x:%02x",
- __func__, bda[0], bda[1], bda[2], bda[3], bda[4], bda[5]);
+ if (bta_gattc_mark_bg_conn(p_data->client_if, p_data->remote_bda, true)) {
+ /* always call open to hold a connection */
+ if (!GATT_Connect(p_data->client_if, p_data->remote_bda, false,
+ p_data->transport, false)) {
+ uint8_t* bda = (uint8_t*)p_data->remote_bda;
+ status = BTA_GATT_ERROR;
+ APPL_TRACE_ERROR(
+ "%s unable to connect to remote "
+ "bd_addr:%02x:%02x:%02x:%02x:%02x:%02x",
+ __func__, bda[0], bda[1], bda[2], bda[3], bda[4], bda[5]);
+ } else {
+ status = BTA_GATT_OK;
+
+ /* if is a connected remote device */
+ if (GATT_GetConnIdIfConnected(p_data->client_if, p_data->remote_bda,
+ &conn_id, p_data->transport)) {
+ if ((p_clcb = bta_gattc_find_alloc_clcb(
+ p_data->client_if, p_data->remote_bda,
+ BTA_GATT_TRANSPORT_LE)) != NULL) {
+ gattc_data.hdr.layer_specific = p_clcb->bta_conn_id = conn_id;
+
+ /* open connection */
+ bta_gattc_sm_execute(p_clcb, BTA_GATTC_INT_CONN_EVT, &gattc_data);
+ status = BTA_GATT_OK;
}
- else
- {
- status = BTA_GATT_OK;
-
- /* if is a connected remote device */
- if (GATT_GetConnIdIfConnected(p_data->client_if,
- p_data->remote_bda,
- &conn_id,
- p_data->transport))
- {
- if ((p_clcb = bta_gattc_find_alloc_clcb(p_data->client_if, p_data->remote_bda,
- BTA_GATT_TRANSPORT_LE)) != NULL)
- {
- gattc_data.hdr.layer_specific = p_clcb->bta_conn_id = conn_id;
-
- /* open connection */
- bta_gattc_sm_execute(p_clcb, BTA_GATTC_INT_CONN_EVT, &gattc_data);
- status = BTA_GATT_OK;
- }
- }
- }
+ }
}
+ }
- /* open failure, report OPEN_EVT */
- if (status != BTA_GATT_OK)
- {
- bta_gattc_send_open_cback(p_clreg, status, p_data->remote_bda,
- BTA_GATT_INVALID_CONN_ID, BTA_GATT_TRANSPORT_LE, 0);
- }
+ /* open failure, report OPEN_EVT */
+ if (status != BTA_GATT_OK) {
+ bta_gattc_send_open_cback(p_clreg, status, p_data->remote_bda,
+ BTA_GATT_INVALID_CONN_ID, BTA_GATT_TRANSPORT_LE,
+ 0);
+ }
}
/*******************************************************************************
*
@@ -595,31 +514,24 @@
* Returns void
*
******************************************************************************/
-void bta_gattc_cancel_bk_conn(tBTA_GATTC_API_CANCEL_OPEN *p_data)
-{
- tBTA_GATTC_RCB *p_clreg;
- tBTA_GATTC cb_data;
- cb_data.status = BTA_GATT_ERROR;
+void bta_gattc_cancel_bk_conn(tBTA_GATTC_API_CANCEL_OPEN* p_data) {
+ tBTA_GATTC_RCB* p_clreg;
+ tBTA_GATTC cb_data;
+ cb_data.status = BTA_GATT_ERROR;
- /* remove the device from the bg connection mask */
- if (bta_gattc_mark_bg_conn(p_data->client_if, p_data->remote_bda, false))
- {
- if (GATT_CancelConnect(p_data->client_if, p_data->remote_bda, false))
- {
- cb_data.status = BTA_GATT_OK;
- }
- else
- {
- APPL_TRACE_ERROR("bta_gattc_cancel_bk_conn failed");
- }
+ /* remove the device from the bg connection mask */
+ if (bta_gattc_mark_bg_conn(p_data->client_if, p_data->remote_bda, false)) {
+ if (GATT_CancelConnect(p_data->client_if, p_data->remote_bda, false)) {
+ cb_data.status = BTA_GATT_OK;
+ } else {
+ APPL_TRACE_ERROR("bta_gattc_cancel_bk_conn failed");
}
- p_clreg = bta_gattc_cl_get_regcb(p_data->client_if);
+ }
+ p_clreg = bta_gattc_cl_get_regcb(p_data->client_if);
- if (p_clreg && p_clreg->p_cback)
- {
- (*p_clreg->p_cback)(BTA_GATTC_CANCEL_OPEN_EVT, &cb_data);
- }
-
+ if (p_clreg && p_clreg->p_cback) {
+ (*p_clreg->p_cback)(BTA_GATTC_CANCEL_OPEN_EVT, &cb_data);
+ }
}
/*******************************************************************************
*
@@ -630,18 +542,16 @@
* Returns void
*
******************************************************************************/
-void bta_gattc_cancel_open_ok(tBTA_GATTC_CLCB *p_clcb,
- UNUSED_ATTR tBTA_GATTC_DATA *p_data)
-{
- tBTA_GATTC cb_data;
+void bta_gattc_cancel_open_ok(tBTA_GATTC_CLCB* p_clcb,
+ UNUSED_ATTR tBTA_GATTC_DATA* p_data) {
+ tBTA_GATTC cb_data;
- if ( p_clcb->p_rcb->p_cback )
- {
- cb_data.status = BTA_GATT_OK;
- (*p_clcb->p_rcb->p_cback)(BTA_GATTC_CANCEL_OPEN_EVT, &cb_data);
- }
+ if (p_clcb->p_rcb->p_cback) {
+ cb_data.status = BTA_GATT_OK;
+ (*p_clcb->p_rcb->p_cback)(BTA_GATTC_CANCEL_OPEN_EVT, &cb_data);
+ }
- bta_gattc_clcb_dealloc(p_clcb);
+ bta_gattc_clcb_dealloc(p_clcb);
}
/*******************************************************************************
*
@@ -652,22 +562,18 @@
* Returns void
*
******************************************************************************/
-void bta_gattc_cancel_open(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data)
-{
- tBTA_GATTC cb_data;
+void bta_gattc_cancel_open(tBTA_GATTC_CLCB* p_clcb, tBTA_GATTC_DATA* p_data) {
+ tBTA_GATTC cb_data;
- if (GATT_CancelConnect(p_clcb->p_rcb->client_if, p_data->api_cancel_conn.remote_bda, true))
- {
- bta_gattc_sm_execute(p_clcb, BTA_GATTC_INT_CANCEL_OPEN_OK_EVT, p_data);
+ if (GATT_CancelConnect(p_clcb->p_rcb->client_if,
+ p_data->api_cancel_conn.remote_bda, true)) {
+ bta_gattc_sm_execute(p_clcb, BTA_GATTC_INT_CANCEL_OPEN_OK_EVT, p_data);
+ } else {
+ if (p_clcb->p_rcb->p_cback) {
+ cb_data.status = BTA_GATT_ERROR;
+ (*p_clcb->p_rcb->p_cback)(BTA_GATTC_CANCEL_OPEN_EVT, &cb_data);
}
- else
- {
- if ( p_clcb->p_rcb->p_cback )
- {
- cb_data.status = BTA_GATT_ERROR;
- (*p_clcb->p_rcb->p_cback)(BTA_GATTC_CANCEL_OPEN_EVT, &cb_data);
- }
- }
+ }
}
/*******************************************************************************
*
@@ -678,70 +584,59 @@
* Returns void
*
******************************************************************************/
-void bta_gattc_conn(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data)
-{
- tBTA_GATTC_IF gatt_if;
- APPL_TRACE_DEBUG("bta_gattc_conn server cache state=%d",p_clcb->p_srcb->state);
+void bta_gattc_conn(tBTA_GATTC_CLCB* p_clcb, tBTA_GATTC_DATA* p_data) {
+ tBTA_GATTC_IF gatt_if;
+ APPL_TRACE_DEBUG("bta_gattc_conn server cache state=%d",
+ p_clcb->p_srcb->state);
- if (p_data != NULL)
- {
- APPL_TRACE_DEBUG("bta_gattc_conn conn_id=%d",p_data->hdr.layer_specific);
- p_clcb->bta_conn_id = p_data->int_conn.hdr.layer_specific;
+ if (p_data != NULL) {
+ APPL_TRACE_DEBUG("bta_gattc_conn conn_id=%d", p_data->hdr.layer_specific);
+ p_clcb->bta_conn_id = p_data->int_conn.hdr.layer_specific;
- GATT_GetConnectionInfor(p_data->hdr.layer_specific,
- &gatt_if, p_clcb->bda, &p_clcb->transport);
+ GATT_GetConnectionInfor(p_data->hdr.layer_specific, &gatt_if, p_clcb->bda,
+ &p_clcb->transport);
+ }
+
+ p_clcb->p_srcb->connected = true;
+
+ if (p_clcb->p_srcb->mtu == 0) p_clcb->p_srcb->mtu = GATT_DEF_BLE_MTU_SIZE;
+
+ /* start database cache if needed */
+ if (p_clcb->p_srcb->p_srvc_cache == NULL ||
+ p_clcb->p_srcb->state != BTA_GATTC_SERV_IDLE) {
+ if (p_clcb->p_srcb->state == BTA_GATTC_SERV_IDLE) {
+ p_clcb->p_srcb->state = BTA_GATTC_SERV_LOAD;
+ if (bta_gattc_cache_load(p_clcb)) {
+ p_clcb->p_srcb->state = BTA_GATTC_SERV_IDLE;
+ bta_gattc_reset_discover_st(p_clcb->p_srcb, BTA_GATT_OK);
+ } else {
+ p_clcb->p_srcb->state = BTA_GATTC_SERV_DISC;
+ /* cache load failure, start discovery */
+ bta_gattc_start_discover(p_clcb, NULL);
+ }
+ } else /* cache is building */
+ p_clcb->state = BTA_GATTC_DISCOVER_ST;
+ }
+
+ else {
+ /* a pending service handle change indication */
+ if (p_clcb->p_srcb->srvc_hdl_chg) {
+ p_clcb->p_srcb->srvc_hdl_chg = false;
+ /* start discovery */
+ bta_gattc_sm_execute(p_clcb, BTA_GATTC_INT_DISCOVER_EVT, NULL);
}
+ }
- p_clcb->p_srcb->connected = true;
+ if (p_clcb->p_rcb) {
+ /* there is no RM for GATT */
+ if (p_clcb->transport == BTA_TRANSPORT_BR_EDR)
+ bta_sys_conn_open(BTA_ID_GATTC, BTA_ALL_APP_ID, p_clcb->bda);
- if (p_clcb->p_srcb->mtu == 0)
- p_clcb->p_srcb->mtu = GATT_DEF_BLE_MTU_SIZE;
-
- /* start database cache if needed */
- if (p_clcb->p_srcb->p_srvc_cache == NULL ||
- p_clcb->p_srcb->state != BTA_GATTC_SERV_IDLE)
- {
- if (p_clcb->p_srcb->state == BTA_GATTC_SERV_IDLE)
- {
- p_clcb->p_srcb->state = BTA_GATTC_SERV_LOAD;
- if (bta_gattc_cache_load(p_clcb)) {
- p_clcb->p_srcb->state = BTA_GATTC_SERV_IDLE;
- bta_gattc_reset_discover_st(p_clcb->p_srcb, BTA_GATT_OK);
- } else {
- p_clcb->p_srcb->state = BTA_GATTC_SERV_DISC;
- /* cache load failure, start discovery */
- bta_gattc_start_discover(p_clcb, NULL);
- }
- }
- else /* cache is building */
- p_clcb->state = BTA_GATTC_DISCOVER_ST;
- }
-
- else
- {
- /* a pending service handle change indication */
- if (p_clcb->p_srcb->srvc_hdl_chg)
- {
- p_clcb->p_srcb->srvc_hdl_chg = false;
- /* start discovery */
- bta_gattc_sm_execute(p_clcb, BTA_GATTC_INT_DISCOVER_EVT, NULL);
- }
- }
-
- if (p_clcb->p_rcb)
- {
- /* there is no RM for GATT */
- if (p_clcb->transport == BTA_TRANSPORT_BR_EDR)
- bta_sys_conn_open(BTA_ID_GATTC, BTA_ALL_APP_ID, p_clcb->bda);
-
- bta_gattc_send_open_cback(p_clcb->p_rcb,
- BTA_GATT_OK,
- p_clcb->bda,
- p_clcb->bta_conn_id,
- p_clcb->transport,
- p_clcb->p_srcb->mtu);
- }
- }
+ bta_gattc_send_open_cback(p_clcb->p_rcb, BTA_GATT_OK, p_clcb->bda,
+ p_clcb->bta_conn_id, p_clcb->transport,
+ p_clcb->p_srcb->mtu);
+ }
+}
/*******************************************************************************
*
* Function bta_gattc_close_fail
@@ -751,21 +646,19 @@
* Returns void
*
******************************************************************************/
-void bta_gattc_close_fail(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data)
-{
- tBTA_GATTC cb_data;
+void bta_gattc_close_fail(tBTA_GATTC_CLCB* p_clcb, tBTA_GATTC_DATA* p_data) {
+ tBTA_GATTC cb_data;
- if ( p_clcb->p_rcb->p_cback )
- {
- memset(&cb_data, 0, sizeof(tBTA_GATTC));
- cb_data.close.client_if = p_clcb->p_rcb->client_if;
- cb_data.close.conn_id = p_data->hdr.layer_specific;
- bdcpy(cb_data.close.remote_bda, p_clcb->bda);
- cb_data.close.status = BTA_GATT_ERROR;
- cb_data.close.reason = BTA_GATT_CONN_NONE;
+ if (p_clcb->p_rcb->p_cback) {
+ memset(&cb_data, 0, sizeof(tBTA_GATTC));
+ cb_data.close.client_if = p_clcb->p_rcb->client_if;
+ cb_data.close.conn_id = p_data->hdr.layer_specific;
+ bdcpy(cb_data.close.remote_bda, p_clcb->bda);
+ cb_data.close.status = BTA_GATT_ERROR;
+ cb_data.close.reason = BTA_GATT_CONN_NONE;
- (*p_clcb->p_rcb->p_cback)(BTA_GATTC_CLOSE_EVT, &cb_data);
- }
+ (*p_clcb->p_rcb->p_cback)(BTA_GATTC_CLOSE_EVT, &cb_data);
+ }
}
/*******************************************************************************
*
@@ -776,42 +669,36 @@
* Returns void
*
******************************************************************************/
-void bta_gattc_close(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data)
-{
- tBTA_GATTC_CBACK *p_cback = p_clcb->p_rcb->p_cback;
- tBTA_GATTC_RCB *p_clreg = p_clcb->p_rcb;
- tBTA_GATTC cb_data;
+void bta_gattc_close(tBTA_GATTC_CLCB* p_clcb, tBTA_GATTC_DATA* p_data) {
+ tBTA_GATTC_CBACK* p_cback = p_clcb->p_rcb->p_cback;
+ tBTA_GATTC_RCB* p_clreg = p_clcb->p_rcb;
+ tBTA_GATTC cb_data;
- APPL_TRACE_DEBUG("bta_gattc_close conn_id=%d",p_clcb->bta_conn_id);
+ APPL_TRACE_DEBUG("bta_gattc_close conn_id=%d", p_clcb->bta_conn_id);
- cb_data.close.client_if = p_clcb->p_rcb->client_if;
- cb_data.close.conn_id = p_clcb->bta_conn_id;
- cb_data.close.reason = p_clcb->reason;
- cb_data.close.status = p_clcb->status;
- bdcpy(cb_data.close.remote_bda, p_clcb->bda);
+ cb_data.close.client_if = p_clcb->p_rcb->client_if;
+ cb_data.close.conn_id = p_clcb->bta_conn_id;
+ cb_data.close.reason = p_clcb->reason;
+ cb_data.close.status = p_clcb->status;
+ bdcpy(cb_data.close.remote_bda, p_clcb->bda);
- if (p_clcb->transport == BTA_TRANSPORT_BR_EDR)
- bta_sys_conn_close( BTA_ID_GATTC ,BTA_ALL_APP_ID, p_clcb->bda);
+ if (p_clcb->transport == BTA_TRANSPORT_BR_EDR)
+ bta_sys_conn_close(BTA_ID_GATTC, BTA_ALL_APP_ID, p_clcb->bda);
- bta_gattc_clcb_dealloc(p_clcb);
+ bta_gattc_clcb_dealloc(p_clcb);
- if (p_data->hdr.event == BTA_GATTC_API_CLOSE_EVT)
- {
- cb_data.close.status = GATT_Disconnect(p_data->hdr.layer_specific);
- }
- else if (p_data->hdr.event == BTA_GATTC_INT_DISCONN_EVT)
- {
- cb_data.close.status = p_data->int_conn.reason;
- cb_data.close.reason = p_data->int_conn.reason;
- }
+ if (p_data->hdr.event == BTA_GATTC_API_CLOSE_EVT) {
+ cb_data.close.status = GATT_Disconnect(p_data->hdr.layer_specific);
+ } else if (p_data->hdr.event == BTA_GATTC_INT_DISCONN_EVT) {
+ cb_data.close.status = p_data->int_conn.reason;
+ cb_data.close.reason = p_data->int_conn.reason;
+ }
- if(p_cback)
- (* p_cback)(BTA_GATTC_CLOSE_EVT, (tBTA_GATTC *)&cb_data);
+ if (p_cback) (*p_cback)(BTA_GATTC_CLOSE_EVT, (tBTA_GATTC*)&cb_data);
- if (p_clreg->num_clcb == 0 && p_clreg->dereg_pending)
- {
- bta_gattc_deregister_cmpl(p_clreg);
- }
+ if (p_clreg->num_clcb == 0 && p_clreg->dereg_pending) {
+ bta_gattc_deregister_cmpl(p_clreg);
+ }
}
/*******************************************************************************
*
@@ -822,18 +709,17 @@
* Returns None.
*
******************************************************************************/
-void bta_gattc_reset_discover_st(tBTA_GATTC_SERV *p_srcb, tBTA_GATT_STATUS status)
-{
- uint8_t i;
+void bta_gattc_reset_discover_st(tBTA_GATTC_SERV* p_srcb,
+ tBTA_GATT_STATUS status) {
+ uint8_t i;
- for (i = 0; i < BTA_GATTC_CLCB_MAX; i ++)
- {
- if (bta_gattc_cb.clcb[i].p_srcb == p_srcb)
- {
- bta_gattc_cb.clcb[i].status = status;
- bta_gattc_sm_execute(&bta_gattc_cb.clcb[i], BTA_GATTC_DISCOVER_CMPL_EVT, NULL);
- }
+ for (i = 0; i < BTA_GATTC_CLCB_MAX; i++) {
+ if (bta_gattc_cb.clcb[i].p_srcb == p_srcb) {
+ bta_gattc_cb.clcb[i].status = status;
+ bta_gattc_sm_execute(&bta_gattc_cb.clcb[i], BTA_GATTC_DISCOVER_CMPL_EVT,
+ NULL);
}
+ }
}
/*******************************************************************************
*
@@ -844,25 +730,24 @@
* Returns void
*
******************************************************************************/
-void bta_gattc_disc_close(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data)
-{
- APPL_TRACE_DEBUG("%s: Discovery cancel conn_id=%d", __func__,
- p_clcb->bta_conn_id);
+void bta_gattc_disc_close(tBTA_GATTC_CLCB* p_clcb, tBTA_GATTC_DATA* p_data) {
+ APPL_TRACE_DEBUG("%s: Discovery cancel conn_id=%d", __func__,
+ p_clcb->bta_conn_id);
- if (p_clcb->disc_active)
- bta_gattc_reset_discover_st(p_clcb->p_srcb, BTA_GATT_ERROR);
- else
- p_clcb->state = BTA_GATTC_CONN_ST;
+ if (p_clcb->disc_active)
+ bta_gattc_reset_discover_st(p_clcb->p_srcb, BTA_GATT_ERROR);
+ else
+ p_clcb->state = BTA_GATTC_CONN_ST;
- // This function only gets called as the result of a BTA_GATTC_API_CLOSE_EVT
- // while in the BTA_GATTC_DISCOVER_ST state. Once the state changes, the
- // connection itself still needs to be closed to resolve the original event.
- if (p_clcb->state == BTA_GATTC_CONN_ST)
- {
- APPL_TRACE_DEBUG("State is back to BTA_GATTC_CONN_ST. "
- "Trigger connection close");
- bta_gattc_close(p_clcb, p_data);
- }
+ // This function only gets called as the result of a BTA_GATTC_API_CLOSE_EVT
+ // while in the BTA_GATTC_DISCOVER_ST state. Once the state changes, the
+ // connection itself still needs to be closed to resolve the original event.
+ if (p_clcb->state == BTA_GATTC_CONN_ST) {
+ APPL_TRACE_DEBUG(
+ "State is back to BTA_GATTC_CONN_ST. "
+ "Trigger connection close");
+ bta_gattc_close(p_clcb, p_data);
+ }
}
/*******************************************************************************
*
@@ -874,38 +759,35 @@
* Returns None.
*
******************************************************************************/
-void bta_gattc_set_discover_st(tBTA_GATTC_SERV *p_srcb)
-{
- uint8_t i;
+void bta_gattc_set_discover_st(tBTA_GATTC_SERV* p_srcb) {
+ uint8_t i;
#if (BLE_INCLUDED == TRUE)
- L2CA_EnableUpdateBleConnParams(p_srcb->server_bda, false);
+ L2CA_EnableUpdateBleConnParams(p_srcb->server_bda, false);
#endif
- for (i = 0; i < BTA_GATTC_CLCB_MAX; i ++)
- {
- if (bta_gattc_cb.clcb[i].p_srcb == p_srcb)
- {
- bta_gattc_cb.clcb[i].status = BTA_GATT_OK;
- bta_gattc_cb.clcb[i].state = BTA_GATTC_DISCOVER_ST;
- }
+ for (i = 0; i < BTA_GATTC_CLCB_MAX; i++) {
+ if (bta_gattc_cb.clcb[i].p_srcb == p_srcb) {
+ bta_gattc_cb.clcb[i].status = BTA_GATT_OK;
+ bta_gattc_cb.clcb[i].state = BTA_GATTC_DISCOVER_ST;
}
+ }
}
/*******************************************************************************
*
* Function bta_gattc_restart_discover
*
* Description process service change in discovery state, mark up the auto
- * update flag and set status to be discovery cancel for current
+ * update flag and set status to be discovery cancel for
+ *current
* discovery.
*
* Returns None.
*
******************************************************************************/
-void bta_gattc_restart_discover(tBTA_GATTC_CLCB *p_clcb,
- UNUSED_ATTR tBTA_GATTC_DATA *p_data)
-{
- p_clcb->status = BTA_GATT_CANCEL;
- p_clcb->auto_update = BTA_GATTC_DISC_WAITING;
+void bta_gattc_restart_discover(tBTA_GATTC_CLCB* p_clcb,
+ UNUSED_ATTR tBTA_GATTC_DATA* p_data) {
+ p_clcb->status = BTA_GATT_CANCEL;
+ p_clcb->auto_update = BTA_GATTC_DISC_WAITING;
}
/*******************************************************************************
@@ -917,24 +799,21 @@
* Returns None.
*
******************************************************************************/
-void bta_gattc_cfg_mtu(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data)
-{
- tBTA_GATT_STATUS status;
+void bta_gattc_cfg_mtu(tBTA_GATTC_CLCB* p_clcb, tBTA_GATTC_DATA* p_data) {
+ tBTA_GATT_STATUS status;
- if (bta_gattc_enqueue(p_clcb, p_data))
- {
- status = GATTC_ConfigureMTU (p_clcb->bta_conn_id, p_data->api_mtu.mtu);
+ if (bta_gattc_enqueue(p_clcb, p_data)) {
+ status = GATTC_ConfigureMTU(p_clcb->bta_conn_id, p_data->api_mtu.mtu);
- /* if failed, return callback here */
- if (status != GATT_SUCCESS && status != GATT_CMD_STARTED)
- {
- /* Dequeue the data, if it was enqueued */
- if (p_clcb->p_q_cmd == p_data)
- p_clcb->p_q_cmd = NULL;
+ /* if failed, return callback here */
+ if (status != GATT_SUCCESS && status != GATT_CMD_STARTED) {
+ /* Dequeue the data, if it was enqueued */
+ if (p_clcb->p_q_cmd == p_data) p_clcb->p_q_cmd = NULL;
- bta_gattc_cmpl_sendmsg(p_clcb->bta_conn_id, GATTC_OPTYPE_CONFIG, status, NULL);
- }
+ bta_gattc_cmpl_sendmsg(p_clcb->bta_conn_id, GATTC_OPTYPE_CONFIG, status,
+ NULL);
}
+ }
}
/*******************************************************************************
*
@@ -945,59 +824,53 @@
* Returns None.
*
******************************************************************************/
-void bta_gattc_start_discover(tBTA_GATTC_CLCB *p_clcb,
- UNUSED_ATTR tBTA_GATTC_DATA *p_data)
-{
- APPL_TRACE_DEBUG("bta_gattc_start_discover conn_id=%d p_clcb->p_srcb->state = %d ",
- p_clcb->bta_conn_id, p_clcb->p_srcb->state);
+void bta_gattc_start_discover(tBTA_GATTC_CLCB* p_clcb,
+ UNUSED_ATTR tBTA_GATTC_DATA* p_data) {
+ APPL_TRACE_DEBUG(
+ "bta_gattc_start_discover conn_id=%d p_clcb->p_srcb->state = %d ",
+ p_clcb->bta_conn_id, p_clcb->p_srcb->state);
- if (((p_clcb->p_q_cmd == NULL || p_clcb->auto_update == BTA_GATTC_REQ_WAITING) &&
- p_clcb->p_srcb->state == BTA_GATTC_SERV_IDLE) ||
- p_clcb->p_srcb->state == BTA_GATTC_SERV_DISC)
- /* no pending operation, start discovery right away */
- {
- p_clcb->auto_update = BTA_GATTC_NO_SCHEDULE;
+ if (((p_clcb->p_q_cmd == NULL ||
+ p_clcb->auto_update == BTA_GATTC_REQ_WAITING) &&
+ p_clcb->p_srcb->state == BTA_GATTC_SERV_IDLE) ||
+ p_clcb->p_srcb->state == BTA_GATTC_SERV_DISC)
+ /* no pending operation, start discovery right away */
+ {
+ p_clcb->auto_update = BTA_GATTC_NO_SCHEDULE;
- if (p_clcb->p_srcb != NULL)
- {
- /* clear the service change mask */
- p_clcb->p_srcb->srvc_hdl_chg = false;
- p_clcb->p_srcb->update_count = 0;
- p_clcb->p_srcb->state = BTA_GATTC_SERV_DISC_ACT;
+ if (p_clcb->p_srcb != NULL) {
+ /* clear the service change mask */
+ p_clcb->p_srcb->srvc_hdl_chg = false;
+ p_clcb->p_srcb->update_count = 0;
+ p_clcb->p_srcb->state = BTA_GATTC_SERV_DISC_ACT;
- if (p_clcb->transport == BTA_TRANSPORT_LE)
- L2CA_EnableUpdateBleConnParams(p_clcb->p_srcb->server_bda, false);
+ if (p_clcb->transport == BTA_TRANSPORT_LE)
+ L2CA_EnableUpdateBleConnParams(p_clcb->p_srcb->server_bda, false);
- /* set all srcb related clcb into discovery ST */
- bta_gattc_set_discover_st(p_clcb->p_srcb);
+ /* set all srcb related clcb into discovery ST */
+ bta_gattc_set_discover_st(p_clcb->p_srcb);
- if ((p_clcb->status = bta_gattc_init_cache(p_clcb->p_srcb)) == BTA_GATT_OK)
- {
- p_clcb->status = bta_gattc_discover_pri_service(p_clcb->bta_conn_id,
- p_clcb->p_srcb, GATT_DISC_SRVC_ALL);
- }
- if (p_clcb->status != BTA_GATT_OK)
- {
- APPL_TRACE_ERROR("discovery on server failed");
- bta_gattc_reset_discover_st(p_clcb->p_srcb, p_clcb->status);
- }
- else
- p_clcb->disc_active = true;
- }
- else
- {
- APPL_TRACE_ERROR("unknown device, can not start discovery");
- }
+ if ((p_clcb->status = bta_gattc_init_cache(p_clcb->p_srcb)) ==
+ BTA_GATT_OK) {
+ p_clcb->status = bta_gattc_discover_pri_service(
+ p_clcb->bta_conn_id, p_clcb->p_srcb, GATT_DISC_SRVC_ALL);
+ }
+ if (p_clcb->status != BTA_GATT_OK) {
+ APPL_TRACE_ERROR("discovery on server failed");
+ bta_gattc_reset_discover_st(p_clcb->p_srcb, p_clcb->status);
+ } else
+ p_clcb->disc_active = true;
+ } else {
+ APPL_TRACE_ERROR("unknown device, can not start discovery");
}
- /* pending operation, wait until it finishes */
- else
- {
- p_clcb->auto_update = BTA_GATTC_DISC_WAITING;
+ }
+ /* pending operation, wait until it finishes */
+ else {
+ p_clcb->auto_update = BTA_GATTC_DISC_WAITING;
- if (p_clcb->p_srcb->state == BTA_GATTC_SERV_IDLE)
- p_clcb->state = BTA_GATTC_CONN_ST; /* set clcb state */
- }
-
+ if (p_clcb->p_srcb->state == BTA_GATTC_SERV_IDLE)
+ p_clcb->state = BTA_GATTC_CONN_ST; /* set clcb state */
+ }
}
/*******************************************************************************
*
@@ -1008,57 +881,53 @@
* Returns None.
*
******************************************************************************/
-void bta_gattc_disc_cmpl(tBTA_GATTC_CLCB *p_clcb,
- UNUSED_ATTR tBTA_GATTC_DATA *p_data)
-{
- tBTA_GATTC_DATA *p_q_cmd = p_clcb->p_q_cmd;
+void bta_gattc_disc_cmpl(tBTA_GATTC_CLCB* p_clcb,
+ UNUSED_ATTR tBTA_GATTC_DATA* p_data) {
+ tBTA_GATTC_DATA* p_q_cmd = p_clcb->p_q_cmd;
- APPL_TRACE_DEBUG("bta_gattc_disc_cmpl conn_id=%d",p_clcb->bta_conn_id);
+ APPL_TRACE_DEBUG("bta_gattc_disc_cmpl conn_id=%d", p_clcb->bta_conn_id);
#if (BLE_INCLUDED == TRUE)
- if(p_clcb->transport == BTA_TRANSPORT_LE)
- L2CA_EnableUpdateBleConnParams(p_clcb->p_srcb->server_bda, true);
+ if (p_clcb->transport == BTA_TRANSPORT_LE)
+ L2CA_EnableUpdateBleConnParams(p_clcb->p_srcb->server_bda, true);
#endif
- p_clcb->p_srcb->state = BTA_GATTC_SERV_IDLE;
- p_clcb->disc_active = false;
+ p_clcb->p_srcb->state = BTA_GATTC_SERV_IDLE;
+ p_clcb->disc_active = false;
- if (p_clcb->status != GATT_SUCCESS)
- {
- /* clean up cache */
- if(p_clcb->p_srcb && p_clcb->p_srcb->p_srvc_cache) {
- list_free(p_clcb->p_srcb->p_srvc_cache);
- p_clcb->p_srcb->p_srvc_cache = NULL;
- }
-
- /* used to reset cache in application */
- bta_gattc_cache_reset(p_clcb->p_srcb->server_bda);
- }
- if (p_clcb->p_srcb && p_clcb->p_srcb->p_srvc_list) {
- /* release pending attribute list buffer */
- osi_free_and_reset((void **)&p_clcb->p_srcb->p_srvc_list);
+ if (p_clcb->status != GATT_SUCCESS) {
+ /* clean up cache */
+ if (p_clcb->p_srcb && p_clcb->p_srcb->p_srvc_cache) {
+ list_free(p_clcb->p_srcb->p_srvc_cache);
+ p_clcb->p_srcb->p_srvc_cache = NULL;
}
- if (p_clcb->auto_update == BTA_GATTC_DISC_WAITING)
- {
- /* start discovery again */
- p_clcb->auto_update = BTA_GATTC_REQ_WAITING;
- bta_gattc_sm_execute(p_clcb, BTA_GATTC_INT_DISCOVER_EVT, NULL);
+ /* used to reset cache in application */
+ bta_gattc_cache_reset(p_clcb->p_srcb->server_bda);
+ }
+ if (p_clcb->p_srcb && p_clcb->p_srcb->p_srvc_list) {
+ /* release pending attribute list buffer */
+ osi_free_and_reset((void**)&p_clcb->p_srcb->p_srvc_list);
+ }
+
+ if (p_clcb->auto_update == BTA_GATTC_DISC_WAITING) {
+ /* start discovery again */
+ p_clcb->auto_update = BTA_GATTC_REQ_WAITING;
+ bta_gattc_sm_execute(p_clcb, BTA_GATTC_INT_DISCOVER_EVT, NULL);
+ }
+ /* get any queued command to proceed */
+ else if (p_q_cmd != NULL) {
+ p_clcb->p_q_cmd = NULL;
+ /* execute pending operation of link block still present */
+ if (l2cu_find_lcb_by_bd_addr(p_clcb->p_srcb->server_bda, BT_TRANSPORT_LE) !=
+ NULL) {
+ bta_gattc_sm_execute(p_clcb, p_q_cmd->hdr.event, p_q_cmd);
}
- /* get any queued command to proceed */
- else if (p_q_cmd != NULL)
- {
- p_clcb->p_q_cmd = NULL;
- /* execute pending operation of link block still present */
- if (l2cu_find_lcb_by_bd_addr(p_clcb->p_srcb->server_bda, BT_TRANSPORT_LE) != NULL) {
- bta_gattc_sm_execute(p_clcb, p_q_cmd->hdr.event, p_q_cmd);
- }
- /* if the command executed requeued the cmd, we don't
- * want to free the underlying buffer that's being
- * referenced by p_clcb->p_q_cmd
- */
- if (p_q_cmd != p_clcb->p_q_cmd)
- osi_free_and_reset((void **)&p_q_cmd);
- }
+ /* if the command executed requeued the cmd, we don't
+ * want to free the underlying buffer that's being
+ * referenced by p_clcb->p_q_cmd
+ */
+ if (p_q_cmd != p_clcb->p_q_cmd) osi_free_and_reset((void**)&p_q_cmd);
+ }
}
/*******************************************************************************
*
@@ -1069,27 +938,25 @@
* Returns None.
*
******************************************************************************/
-void bta_gattc_read(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data)
-{
- if (!bta_gattc_enqueue(p_clcb, p_data))
- return;
+void bta_gattc_read(tBTA_GATTC_CLCB* p_clcb, tBTA_GATTC_DATA* p_data) {
+ if (!bta_gattc_enqueue(p_clcb, p_data)) return;
- tGATT_READ_PARAM read_param;
- memset (&read_param, 0 ,sizeof(tGATT_READ_PARAM));
- read_param.by_handle.handle = p_data->api_read.handle;
- read_param.by_handle.auth_req = p_data->api_read.auth_req;
+ tGATT_READ_PARAM read_param;
+ memset(&read_param, 0, sizeof(tGATT_READ_PARAM));
+ read_param.by_handle.handle = p_data->api_read.handle;
+ read_param.by_handle.auth_req = p_data->api_read.auth_req;
- tBTA_GATT_STATUS status = GATTC_Read(p_clcb->bta_conn_id, GATT_READ_BY_HANDLE, &read_param);
+ tBTA_GATT_STATUS status =
+ GATTC_Read(p_clcb->bta_conn_id, GATT_READ_BY_HANDLE, &read_param);
- /* read fail */
- if (status != BTA_GATT_OK)
- {
- /* Dequeue the data, if it was enqueued */
- if (p_clcb->p_q_cmd == p_data)
- p_clcb->p_q_cmd = NULL;
+ /* read fail */
+ if (status != BTA_GATT_OK) {
+ /* Dequeue the data, if it was enqueued */
+ if (p_clcb->p_q_cmd == p_data) p_clcb->p_q_cmd = NULL;
- bta_gattc_cmpl_sendmsg(p_clcb->bta_conn_id, GATTC_OPTYPE_READ, status, NULL);
- }
+ bta_gattc_cmpl_sendmsg(p_clcb->bta_conn_id, GATTC_OPTYPE_READ, status,
+ NULL);
+ }
}
/*******************************************************************************
*
@@ -1099,35 +966,31 @@
*
* Returns None.
********************************************************************************/
-void bta_gattc_read_multi(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data)
-{
- tBTA_GATT_STATUS status = BTA_GATT_OK;
- tGATT_READ_PARAM read_param;
+void bta_gattc_read_multi(tBTA_GATTC_CLCB* p_clcb, tBTA_GATTC_DATA* p_data) {
+ tBTA_GATT_STATUS status = BTA_GATT_OK;
+ tGATT_READ_PARAM read_param;
- if (bta_gattc_enqueue(p_clcb, p_data))
- {
- memset(&read_param, 0, sizeof(tGATT_READ_PARAM));
+ if (bta_gattc_enqueue(p_clcb, p_data)) {
+ memset(&read_param, 0, sizeof(tGATT_READ_PARAM));
- if (status == BTA_GATT_OK)
- {
- read_param.read_multiple.num_handles = p_data->api_read_multi.num_attr;
- read_param.read_multiple.auth_req = p_data->api_read_multi.auth_req;
- memcpy(&read_param.read_multiple.handles, p_data->api_read_multi.handles,
- sizeof(uint16_t) * p_data->api_read_multi.num_attr);
+ if (status == BTA_GATT_OK) {
+ read_param.read_multiple.num_handles = p_data->api_read_multi.num_attr;
+ read_param.read_multiple.auth_req = p_data->api_read_multi.auth_req;
+ memcpy(&read_param.read_multiple.handles, p_data->api_read_multi.handles,
+ sizeof(uint16_t) * p_data->api_read_multi.num_attr);
- status = GATTC_Read(p_clcb->bta_conn_id, GATT_READ_MULTIPLE, &read_param);
- }
-
- /* read fail */
- if (status != BTA_GATT_OK)
- {
- /* Dequeue the data, if it was enqueued */
- if (p_clcb->p_q_cmd == p_data)
- p_clcb->p_q_cmd = NULL;
-
- bta_gattc_cmpl_sendmsg(p_clcb->bta_conn_id, GATTC_OPTYPE_READ, status, NULL);
- }
+ status = GATTC_Read(p_clcb->bta_conn_id, GATT_READ_MULTIPLE, &read_param);
}
+
+ /* read fail */
+ if (status != BTA_GATT_OK) {
+ /* Dequeue the data, if it was enqueued */
+ if (p_clcb->p_q_cmd == p_data) p_clcb->p_q_cmd = NULL;
+
+ bta_gattc_cmpl_sendmsg(p_clcb->bta_conn_id, GATTC_OPTYPE_READ, status,
+ NULL);
+ }
+ }
}
/*******************************************************************************
*
@@ -1138,34 +1001,32 @@
* Returns None.
*
******************************************************************************/
-void bta_gattc_write(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data)
-{
- if (!bta_gattc_enqueue(p_clcb, p_data))
- return;
+void bta_gattc_write(tBTA_GATTC_CLCB* p_clcb, tBTA_GATTC_DATA* p_data) {
+ if (!bta_gattc_enqueue(p_clcb, p_data)) return;
- tBTA_GATT_STATUS status = BTA_GATT_OK;
- tGATT_VALUE attr;
+ tBTA_GATT_STATUS status = BTA_GATT_OK;
+ tGATT_VALUE attr;
- attr.conn_id = p_clcb->bta_conn_id;
- attr.handle = p_data->api_write.handle;
- attr.offset = p_data->api_write.offset;
- attr.len = p_data->api_write.len;
- attr.auth_req = p_data->api_write.auth_req;
+ attr.conn_id = p_clcb->bta_conn_id;
+ attr.handle = p_data->api_write.handle;
+ attr.offset = p_data->api_write.offset;
+ attr.len = p_data->api_write.len;
+ attr.auth_req = p_data->api_write.auth_req;
- if (p_data->api_write.p_value)
- memcpy(attr.value, p_data->api_write.p_value, p_data->api_write.len);
+ if (p_data->api_write.p_value)
+ memcpy(attr.value, p_data->api_write.p_value, p_data->api_write.len);
- status = GATTC_Write(p_clcb->bta_conn_id, p_data->api_write.write_type, &attr);
+ status =
+ GATTC_Write(p_clcb->bta_conn_id, p_data->api_write.write_type, &attr);
- /* write fail */
- if (status != BTA_GATT_OK)
- {
- /* Dequeue the data, if it was enqueued */
- if (p_clcb->p_q_cmd == p_data)
- p_clcb->p_q_cmd = NULL;
+ /* write fail */
+ if (status != BTA_GATT_OK) {
+ /* Dequeue the data, if it was enqueued */
+ if (p_clcb->p_q_cmd == p_data) p_clcb->p_q_cmd = NULL;
- bta_gattc_cmpl_sendmsg(p_clcb->bta_conn_id, GATTC_OPTYPE_WRITE, status, NULL);
- }
+ bta_gattc_cmpl_sendmsg(p_clcb->bta_conn_id, GATTC_OPTYPE_WRITE, status,
+ NULL);
+ }
}
/*******************************************************************************
*
@@ -1175,23 +1036,21 @@
*
* Returns None.
********************************************************************************/
-void bta_gattc_execute(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data)
-{
- tBTA_GATT_STATUS status;
+void bta_gattc_execute(tBTA_GATTC_CLCB* p_clcb, tBTA_GATTC_DATA* p_data) {
+ tBTA_GATT_STATUS status;
- if (bta_gattc_enqueue(p_clcb, p_data))
- {
- status = GATTC_ExecuteWrite(p_clcb->bta_conn_id, p_data->api_exec.is_execute);
+ if (bta_gattc_enqueue(p_clcb, p_data)) {
+ status =
+ GATTC_ExecuteWrite(p_clcb->bta_conn_id, p_data->api_exec.is_execute);
- if (status != BTA_GATT_OK)
- {
- /* Dequeue the data, if it was enqueued */
- if (p_clcb->p_q_cmd == p_data)
- p_clcb->p_q_cmd = NULL;
+ if (status != BTA_GATT_OK) {
+ /* Dequeue the data, if it was enqueued */
+ if (p_clcb->p_q_cmd == p_data) p_clcb->p_q_cmd = NULL;
- bta_gattc_cmpl_sendmsg(p_clcb->bta_conn_id, GATTC_OPTYPE_EXE_WRITE, status, NULL);
- }
+ bta_gattc_cmpl_sendmsg(p_clcb->bta_conn_id, GATTC_OPTYPE_EXE_WRITE,
+ status, NULL);
}
+ }
}
/*******************************************************************************
*
@@ -1202,20 +1061,19 @@
* Returns None.
*
******************************************************************************/
-void bta_gattc_confirm(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data)
-{
- uint16_t handle = p_data->api_confirm.handle;
+void bta_gattc_confirm(tBTA_GATTC_CLCB* p_clcb, tBTA_GATTC_DATA* p_data) {
+ uint16_t handle = p_data->api_confirm.handle;
- if (GATTC_SendHandleValueConfirm(p_data->api_confirm.hdr.layer_specific, handle)
- != GATT_SUCCESS) {
- APPL_TRACE_ERROR("bta_gattc_confirm to handle [0x%04x] failed", handle);
- } else {
- /* if over BR_EDR, inform PM for mode change */
- if (p_clcb->transport == BTA_TRANSPORT_BR_EDR) {
- bta_sys_busy(BTA_ID_GATTC, BTA_ALL_APP_ID, p_clcb->bda);
- bta_sys_idle(BTA_ID_GATTC, BTA_ALL_APP_ID, p_clcb->bda);
- }
+ if (GATTC_SendHandleValueConfirm(p_data->api_confirm.hdr.layer_specific,
+ handle) != GATT_SUCCESS) {
+ APPL_TRACE_ERROR("bta_gattc_confirm to handle [0x%04x] failed", handle);
+ } else {
+ /* if over BR_EDR, inform PM for mode change */
+ if (p_clcb->transport == BTA_TRANSPORT_BR_EDR) {
+ bta_sys_busy(BTA_ID_GATTC, BTA_ALL_APP_ID, p_clcb->bda);
+ bta_sys_idle(BTA_ID_GATTC, BTA_ALL_APP_ID, p_clcb->bda);
}
+ }
}
/*******************************************************************************
*
@@ -1226,18 +1084,18 @@
* Returns None.
*
******************************************************************************/
-void bta_gattc_read_cmpl(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_OP_CMPL *p_data)
-{
- GATT_READ_OP_CB cb = p_clcb->p_q_cmd->api_read.read_cb;
- void *my_cb_data = p_clcb->p_q_cmd->api_read.read_cb_data;
+void bta_gattc_read_cmpl(tBTA_GATTC_CLCB* p_clcb, tBTA_GATTC_OP_CMPL* p_data) {
+ GATT_READ_OP_CB cb = p_clcb->p_q_cmd->api_read.read_cb;
+ void* my_cb_data = p_clcb->p_q_cmd->api_read.read_cb_data;
- uint16_t handle = p_clcb->p_q_cmd->api_read.handle;
- osi_free_and_reset((void **)&p_clcb->p_q_cmd);
+ uint16_t handle = p_clcb->p_q_cmd->api_read.handle;
+ osi_free_and_reset((void**)&p_clcb->p_q_cmd);
- if (cb) {
- cb(p_clcb->bta_conn_id, p_data->status, handle,
- p_data->p_cmpl->att_value.len, p_data->p_cmpl->att_value.value, my_cb_data);
- }
+ if (cb) {
+ cb(p_clcb->bta_conn_id, p_data->status, handle,
+ p_data->p_cmpl->att_value.len, p_data->p_cmpl->att_value.value,
+ my_cb_data);
+ }
}
/*******************************************************************************
*
@@ -1248,16 +1106,16 @@
* Returns None.
*
******************************************************************************/
-void bta_gattc_write_cmpl(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_OP_CMPL *p_data)
-{
- GATT_WRITE_OP_CB cb = p_clcb->p_q_cmd->api_write.write_cb;
- void *my_cb_data = p_clcb->p_q_cmd->api_write.write_cb_data;
+void bta_gattc_write_cmpl(tBTA_GATTC_CLCB* p_clcb, tBTA_GATTC_OP_CMPL* p_data) {
+ GATT_WRITE_OP_CB cb = p_clcb->p_q_cmd->api_write.write_cb;
+ void* my_cb_data = p_clcb->p_q_cmd->api_write.write_cb_data;
- osi_free_and_reset((void **)&p_clcb->p_q_cmd);
+ osi_free_and_reset((void**)&p_clcb->p_q_cmd);
- if (cb) {
- cb(p_clcb->bta_conn_id, p_data->status, p_data->p_cmpl->att_value.handle, my_cb_data);
- }
+ if (cb) {
+ cb(p_clcb->bta_conn_id, p_data->status, p_data->p_cmpl->att_value.handle,
+ my_cb_data);
+ }
}
/*******************************************************************************
*
@@ -1268,19 +1126,17 @@
* Returns None.
*
******************************************************************************/
-void bta_gattc_exec_cmpl(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_OP_CMPL *p_data)
-{
- tBTA_GATTC cb_data;
+void bta_gattc_exec_cmpl(tBTA_GATTC_CLCB* p_clcb, tBTA_GATTC_OP_CMPL* p_data) {
+ tBTA_GATTC cb_data;
- osi_free_and_reset((void **)&p_clcb->p_q_cmd);
- p_clcb->status = BTA_GATT_OK;
+ osi_free_and_reset((void**)&p_clcb->p_q_cmd);
+ p_clcb->status = BTA_GATT_OK;
- /* execute complete, callback */
- cb_data.exec_cmpl.conn_id = p_clcb->bta_conn_id;
- cb_data.exec_cmpl.status = p_data->status;
+ /* execute complete, callback */
+ cb_data.exec_cmpl.conn_id = p_clcb->bta_conn_id;
+ cb_data.exec_cmpl.status = p_data->status;
- ( *p_clcb->p_rcb->p_cback)(BTA_GATTC_EXEC_EVT, &cb_data);
-
+ (*p_clcb->p_rcb->p_cback)(BTA_GATTC_EXEC_EVT, &cb_data);
}
/*******************************************************************************
@@ -1292,23 +1148,22 @@
* Returns None.
*
******************************************************************************/
-void bta_gattc_cfg_mtu_cmpl(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_OP_CMPL *p_data)
-{
- tBTA_GATTC cb_data;
+void bta_gattc_cfg_mtu_cmpl(tBTA_GATTC_CLCB* p_clcb,
+ tBTA_GATTC_OP_CMPL* p_data) {
+ tBTA_GATTC cb_data;
- osi_free_and_reset((void **)&p_clcb->p_q_cmd);
+ osi_free_and_reset((void**)&p_clcb->p_q_cmd);
- if (p_data->p_cmpl && p_data->status == BTA_GATT_OK)
- p_clcb->p_srcb->mtu = p_data->p_cmpl->mtu;
+ if (p_data->p_cmpl && p_data->status == BTA_GATT_OK)
+ p_clcb->p_srcb->mtu = p_data->p_cmpl->mtu;
- /* configure MTU complete, callback */
- p_clcb->status = p_data->status;
- cb_data.cfg_mtu.conn_id = p_clcb->bta_conn_id;
- cb_data.cfg_mtu.status = p_data->status;
- cb_data.cfg_mtu.mtu = p_clcb->p_srcb->mtu;
+ /* configure MTU complete, callback */
+ p_clcb->status = p_data->status;
+ cb_data.cfg_mtu.conn_id = p_clcb->bta_conn_id;
+ cb_data.cfg_mtu.status = p_data->status;
+ cb_data.cfg_mtu.mtu = p_clcb->p_srcb->mtu;
- (*p_clcb->p_rcb->p_cback) (BTA_GATTC_CFG_MTU_EVT, &cb_data);
-
+ (*p_clcb->p_rcb->p_cback)(BTA_GATTC_CFG_MTU_EVT, &cb_data);
}
/*******************************************************************************
*
@@ -1319,66 +1174,65 @@
* Returns None.
*
******************************************************************************/
-void bta_gattc_op_cmpl(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data)
-{
- uint8_t op = (uint8_t)p_data->op_cmpl.op_code;
- uint8_t mapped_op = 0;
+void bta_gattc_op_cmpl(tBTA_GATTC_CLCB* p_clcb, tBTA_GATTC_DATA* p_data) {
+ uint8_t op = (uint8_t)p_data->op_cmpl.op_code;
+ uint8_t mapped_op = 0;
- APPL_TRACE_DEBUG("bta_gattc_op_cmpl op = %d", op);
+ APPL_TRACE_DEBUG("bta_gattc_op_cmpl op = %d", op);
- if (op == GATTC_OPTYPE_INDICATION || op == GATTC_OPTYPE_NOTIFICATION)
- {
- APPL_TRACE_ERROR("unexpected operation, ignored");
+ if (op == GATTC_OPTYPE_INDICATION || op == GATTC_OPTYPE_NOTIFICATION) {
+ APPL_TRACE_ERROR("unexpected operation, ignored");
+ } else if (op >= GATTC_OPTYPE_READ) {
+ if (p_clcb->p_q_cmd == NULL) {
+ APPL_TRACE_ERROR("No pending command");
+ return;
}
- else if (op >= GATTC_OPTYPE_READ)
- {
- if (p_clcb->p_q_cmd == NULL)
- {
- APPL_TRACE_ERROR("No pending command");
- return;
- }
- if (p_clcb->p_q_cmd->hdr.event != bta_gattc_opcode_to_int_evt[op - GATTC_OPTYPE_READ])
- {
- mapped_op = p_clcb->p_q_cmd->hdr.event - BTA_GATTC_API_READ_EVT + GATTC_OPTYPE_READ;
- if ( mapped_op > GATTC_OPTYPE_INDICATION) mapped_op = 0;
+ if (p_clcb->p_q_cmd->hdr.event !=
+ bta_gattc_opcode_to_int_evt[op - GATTC_OPTYPE_READ]) {
+ mapped_op = p_clcb->p_q_cmd->hdr.event - BTA_GATTC_API_READ_EVT +
+ GATTC_OPTYPE_READ;
+ if (mapped_op > GATTC_OPTYPE_INDICATION) mapped_op = 0;
#if (BT_TRACE_VERBOSE == TRUE)
- APPL_TRACE_ERROR("expect op:(%s :0x%04x), receive unexpected operation (%s).",
- bta_gattc_op_code_name[mapped_op] , p_clcb->p_q_cmd->hdr.event,
- bta_gattc_op_code_name[op]);
+ APPL_TRACE_ERROR(
+ "expect op:(%s :0x%04x), receive unexpected operation (%s).",
+ bta_gattc_op_code_name[mapped_op], p_clcb->p_q_cmd->hdr.event,
+ bta_gattc_op_code_name[op]);
#else
- APPL_TRACE_ERROR("expect op:(%u :0x%04x), receive unexpected operation (%u).",
- mapped_op , p_clcb->p_q_cmd->hdr.event, op);
+ APPL_TRACE_ERROR(
+ "expect op:(%u :0x%04x), receive unexpected operation (%u).",
+ mapped_op, p_clcb->p_q_cmd->hdr.event, op);
#endif
- return;
- }
-
- /* discard responses if service change indication is received before operation completed */
- if (p_clcb->auto_update == BTA_GATTC_DISC_WAITING && p_clcb->p_srcb->srvc_hdl_chg)
- {
- APPL_TRACE_DEBUG("Discard all responses when service change indication is received.");
- p_data->op_cmpl.status = GATT_ERROR;
- }
-
- /* service handle change void the response, discard it */
- if (op == GATTC_OPTYPE_READ)
- bta_gattc_read_cmpl(p_clcb, &p_data->op_cmpl);
-
- else if (op == GATTC_OPTYPE_WRITE)
- bta_gattc_write_cmpl(p_clcb, &p_data->op_cmpl);
-
- else if (op == GATTC_OPTYPE_EXE_WRITE)
- bta_gattc_exec_cmpl(p_clcb, &p_data->op_cmpl);
-
- else if (op == GATTC_OPTYPE_CONFIG)
- bta_gattc_cfg_mtu_cmpl(p_clcb, &p_data->op_cmpl);
-
- if (p_clcb->auto_update == BTA_GATTC_DISC_WAITING)
- {
- p_clcb->auto_update = BTA_GATTC_REQ_WAITING;
- bta_gattc_sm_execute(p_clcb, BTA_GATTC_INT_DISCOVER_EVT, NULL);
- }
+ return;
}
+
+ /* discard responses if service change indication is received before
+ * operation completed */
+ if (p_clcb->auto_update == BTA_GATTC_DISC_WAITING &&
+ p_clcb->p_srcb->srvc_hdl_chg) {
+ APPL_TRACE_DEBUG(
+ "Discard all responses when service change indication is received.");
+ p_data->op_cmpl.status = GATT_ERROR;
+ }
+
+ /* service handle change void the response, discard it */
+ if (op == GATTC_OPTYPE_READ)
+ bta_gattc_read_cmpl(p_clcb, &p_data->op_cmpl);
+
+ else if (op == GATTC_OPTYPE_WRITE)
+ bta_gattc_write_cmpl(p_clcb, &p_data->op_cmpl);
+
+ else if (op == GATTC_OPTYPE_EXE_WRITE)
+ bta_gattc_exec_cmpl(p_clcb, &p_data->op_cmpl);
+
+ else if (op == GATTC_OPTYPE_CONFIG)
+ bta_gattc_cfg_mtu_cmpl(p_clcb, &p_data->op_cmpl);
+
+ if (p_clcb->auto_update == BTA_GATTC_DISC_WAITING) {
+ p_clcb->auto_update = BTA_GATTC_REQ_WAITING;
+ bta_gattc_sm_execute(p_clcb, BTA_GATTC_INT_DISCOVER_EVT, NULL);
+ }
+ }
}
/*******************************************************************************
*
@@ -1389,12 +1243,12 @@
* Returns None.
*
******************************************************************************/
-void bta_gattc_ignore_op_cmpl(UNUSED_ATTR tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data)
-{
- /* receive op complete when discovery is started, ignore the response,
- and wait for discovery finish and resent */
- APPL_TRACE_DEBUG("bta_gattc_ignore_op_cmpl op = %d", p_data->hdr.layer_specific);
-
+void bta_gattc_ignore_op_cmpl(UNUSED_ATTR tBTA_GATTC_CLCB* p_clcb,
+ tBTA_GATTC_DATA* p_data) {
+ /* receive op complete when discovery is started, ignore the response,
+ and wait for discovery finish and resent */
+ APPL_TRACE_DEBUG("bta_gattc_ignore_op_cmpl op = %d",
+ p_data->hdr.layer_specific);
}
/*******************************************************************************
*
@@ -1405,36 +1259,34 @@
* Returns None.
*
******************************************************************************/
-void bta_gattc_search(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data)
-{
- tBTA_GATT_STATUS status = GATT_INTERNAL_ERROR;
- tBTA_GATTC cb_data;
- APPL_TRACE_DEBUG("bta_gattc_search conn_id=%d",p_clcb->bta_conn_id);
- if (p_clcb->p_srcb && p_clcb->p_srcb->p_srvc_cache)
- {
- status = BTA_GATT_OK;
- /* search the local cache of a server device */
- bta_gattc_search_service(p_clcb, p_data->api_search.p_srvc_uuid);
- }
- cb_data.search_cmpl.status = status;
- cb_data.search_cmpl.conn_id = p_clcb->bta_conn_id;
+void bta_gattc_search(tBTA_GATTC_CLCB* p_clcb, tBTA_GATTC_DATA* p_data) {
+ tBTA_GATT_STATUS status = GATT_INTERNAL_ERROR;
+ tBTA_GATTC cb_data;
+ APPL_TRACE_DEBUG("bta_gattc_search conn_id=%d", p_clcb->bta_conn_id);
+ if (p_clcb->p_srcb && p_clcb->p_srcb->p_srvc_cache) {
+ status = BTA_GATT_OK;
+ /* search the local cache of a server device */
+ bta_gattc_search_service(p_clcb, p_data->api_search.p_srvc_uuid);
+ }
+ cb_data.search_cmpl.status = status;
+ cb_data.search_cmpl.conn_id = p_clcb->bta_conn_id;
- /* end of search or no server cache available */
- ( *p_clcb->p_rcb->p_cback)(BTA_GATTC_SEARCH_CMPL_EVT, &cb_data);
+ /* end of search or no server cache available */
+ (*p_clcb->p_rcb->p_cback)(BTA_GATTC_SEARCH_CMPL_EVT, &cb_data);
}
/*******************************************************************************
*
* Function bta_gattc_q_cmd
*
- * Description enqueue a command into control block, usually because discovery
+ * Description enqueue a command into control block, usually because
+ *discovery
* operation is busy.
*
* Returns None.
*
******************************************************************************/
-void bta_gattc_q_cmd(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data)
-{
- bta_gattc_enqueue(p_clcb, p_data);
+void bta_gattc_q_cmd(tBTA_GATTC_CLCB* p_clcb, tBTA_GATTC_DATA* p_data) {
+ bta_gattc_enqueue(p_clcb, p_data);
}
/*******************************************************************************
@@ -1446,13 +1298,12 @@
* Returns None.
*
******************************************************************************/
-void bta_gattc_fail(tBTA_GATTC_CLCB *p_clcb,
- UNUSED_ATTR tBTA_GATTC_DATA *p_data)
-{
- if (p_clcb->status == BTA_GATT_OK)
- {
- APPL_TRACE_ERROR("operation not supported at current state [%d]", p_clcb->state);
- }
+void bta_gattc_fail(tBTA_GATTC_CLCB* p_clcb,
+ UNUSED_ATTR tBTA_GATTC_DATA* p_data) {
+ if (p_clcb->status == BTA_GATT_OK) {
+ APPL_TRACE_ERROR("operation not supported at current state [%d]",
+ p_clcb->state);
+ }
}
/*******************************************************************************
@@ -1464,28 +1315,26 @@
* Returns void
*
******************************************************************************/
-static void bta_gattc_deregister_cmpl(tBTA_GATTC_RCB *p_clreg)
-{
- tBTA_GATTC_IF client_if = p_clreg->client_if;
- tBTA_GATTC cb_data;
- tBTA_GATTC_CBACK *p_cback = p_clreg->p_cback;
+static void bta_gattc_deregister_cmpl(tBTA_GATTC_RCB* p_clreg) {
+ tBTA_GATTC_IF client_if = p_clreg->client_if;
+ tBTA_GATTC cb_data;
+ tBTA_GATTC_CBACK* p_cback = p_clreg->p_cback;
- memset(&cb_data, 0, sizeof(tBTA_GATTC));
+ memset(&cb_data, 0, sizeof(tBTA_GATTC));
- GATT_Deregister(p_clreg->client_if);
- memset(p_clreg, 0, sizeof(tBTA_GATTC_RCB));
+ GATT_Deregister(p_clreg->client_if);
+ memset(p_clreg, 0, sizeof(tBTA_GATTC_RCB));
- cb_data.reg_oper.client_if = client_if;
- cb_data.reg_oper.status = BTA_GATT_OK;
+ cb_data.reg_oper.client_if = client_if;
+ cb_data.reg_oper.status = BTA_GATT_OK;
- if (p_cback)
- /* callback with de-register event */
- (*p_cback)(BTA_GATTC_DEREG_EVT, (tBTA_GATTC *)&cb_data);
+ if (p_cback) /* callback with de-register event */
+ (*p_cback)(BTA_GATTC_DEREG_EVT, (tBTA_GATTC*)&cb_data);
- if (bta_gattc_num_reg_app() == 0 && bta_gattc_cb.state == BTA_GATTC_STATE_DISABLING)
- {
- bta_gattc_cb.state = BTA_GATTC_STATE_DISABLED;
- }
+ if (bta_gattc_num_reg_app() == 0 &&
+ bta_gattc_cb.state == BTA_GATTC_STATE_DISABLING) {
+ bta_gattc_cb.state = BTA_GATTC_STATE_DISABLED;
+ }
}
/*******************************************************************************
*
@@ -1496,34 +1345,34 @@
* Returns void
*
******************************************************************************/
-static void bta_gattc_conn_cback(tGATT_IF gattc_if, BD_ADDR bda, uint16_t conn_id,
- bool connected, tGATT_DISCONN_REASON reason,
- tBT_TRANSPORT transport)
-{
- if (reason != 0) {
- APPL_TRACE_WARNING("%s() - cif=%d connected=%d conn_id=%d reason=0x%04x",
- __func__, gattc_if, connected, conn_id, reason);
- }
+static void bta_gattc_conn_cback(tGATT_IF gattc_if, BD_ADDR bda,
+ uint16_t conn_id, bool connected,
+ tGATT_DISCONN_REASON reason,
+ tBT_TRANSPORT transport) {
+ if (reason != 0) {
+ APPL_TRACE_WARNING("%s() - cif=%d connected=%d conn_id=%d reason=0x%04x",
+ __func__, gattc_if, connected, conn_id, reason);
+ }
- bt_bdaddr_t bdaddr;
- bdcpy(bdaddr.address, bda);
- if (connected)
- btif_debug_conn_state(bdaddr, BTIF_DEBUG_CONNECTED, GATT_CONN_UNKNOWN);
- else
- btif_debug_conn_state(bdaddr, BTIF_DEBUG_DISCONNECTED, reason);
+ bt_bdaddr_t bdaddr;
+ bdcpy(bdaddr.address, bda);
+ if (connected)
+ btif_debug_conn_state(bdaddr, BTIF_DEBUG_CONNECTED, GATT_CONN_UNKNOWN);
+ else
+ btif_debug_conn_state(bdaddr, BTIF_DEBUG_DISCONNECTED, reason);
- tBTA_GATTC_DATA *p_buf =
- (tBTA_GATTC_DATA *)osi_calloc(sizeof(tBTA_GATTC_DATA));
- p_buf->int_conn.hdr.event = connected ? BTA_GATTC_INT_CONN_EVT :
- BTA_GATTC_INT_DISCONN_EVT;
- p_buf->int_conn.hdr.layer_specific = conn_id;
- p_buf->int_conn.client_if = gattc_if;
- p_buf->int_conn.role = L2CA_GetBleConnRole(bda);
- p_buf->int_conn.reason = reason;
- p_buf->int_conn.transport = transport;
- bdcpy(p_buf->int_conn.remote_bda, bda);
+ tBTA_GATTC_DATA* p_buf =
+ (tBTA_GATTC_DATA*)osi_calloc(sizeof(tBTA_GATTC_DATA));
+ p_buf->int_conn.hdr.event =
+ connected ? BTA_GATTC_INT_CONN_EVT : BTA_GATTC_INT_DISCONN_EVT;
+ p_buf->int_conn.hdr.layer_specific = conn_id;
+ p_buf->int_conn.client_if = gattc_if;
+ p_buf->int_conn.role = L2CA_GetBleConnRole(bda);
+ p_buf->int_conn.reason = reason;
+ p_buf->int_conn.transport = transport;
+ bdcpy(p_buf->int_conn.remote_bda, bda);
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -1535,81 +1384,73 @@
* Returns void
*
******************************************************************************/
-static void bta_gattc_enc_cmpl_cback(tGATT_IF gattc_if, BD_ADDR bda)
-{
- tBTA_GATTC_CLCB *p_clcb =
- bta_gattc_find_clcb_by_cif(gattc_if, bda, BTA_GATT_TRANSPORT_LE);
+static void bta_gattc_enc_cmpl_cback(tGATT_IF gattc_if, BD_ADDR bda) {
+ tBTA_GATTC_CLCB* p_clcb =
+ bta_gattc_find_clcb_by_cif(gattc_if, bda, BTA_GATT_TRANSPORT_LE);
- if (p_clcb == NULL)
- return;
+ if (p_clcb == NULL) return;
#if (BTA_HH_LE_INCLUDED == TRUE)
- /* filter this event just for BTA HH LE GATT client,
- In the future, if we want to enable encryption complete event
- for all GATT clients, we can remove this code */
- if (!bta_hh_le_is_hh_gatt_if(gattc_if))
- {
- return;
- }
+ /* filter this event just for BTA HH LE GATT client,
+ In the future, if we want to enable encryption complete event
+ for all GATT clients, we can remove this code */
+ if (!bta_hh_le_is_hh_gatt_if(gattc_if)) {
+ return;
+ }
#endif
- APPL_TRACE_DEBUG("%s: cif = %d", __func__, gattc_if);
+ APPL_TRACE_DEBUG("%s: cif = %d", __func__, gattc_if);
- tBTA_GATTC_DATA *p_buf =
- (tBTA_GATTC_DATA *)osi_calloc(sizeof(tBTA_GATTC_DATA));
- p_buf->enc_cmpl.hdr.event = BTA_GATTC_ENC_CMPL_EVT;
- p_buf->enc_cmpl.hdr.layer_specific = p_clcb->bta_conn_id;
- p_buf->enc_cmpl.client_if = gattc_if;
- bdcpy(p_buf->enc_cmpl.remote_bda, bda);
+ tBTA_GATTC_DATA* p_buf =
+ (tBTA_GATTC_DATA*)osi_calloc(sizeof(tBTA_GATTC_DATA));
+ p_buf->enc_cmpl.hdr.event = BTA_GATTC_ENC_CMPL_EVT;
+ p_buf->enc_cmpl.hdr.layer_specific = p_clcb->bta_conn_id;
+ p_buf->enc_cmpl.client_if = gattc_if;
+ bdcpy(p_buf->enc_cmpl.remote_bda, bda);
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
*
* Function bta_gattc_process_api_refresh
*
- * Description process refresh API to delete cache and start a new discovery
+ * Description process refresh API to delete cache and start a new
+ *discovery
* if currently connected.
*
* Returns None.
*
******************************************************************************/
-void bta_gattc_process_api_refresh(tBTA_GATTC_DATA * p_msg)
-{
- tBTA_GATTC_SERV *p_srvc_cb = bta_gattc_find_srvr_cache(p_msg->api_conn.remote_bda);
- tBTA_GATTC_CLCB *p_clcb = &bta_gattc_cb.clcb[0];
- bool found = false;
- uint8_t i;
+void bta_gattc_process_api_refresh(tBTA_GATTC_DATA* p_msg) {
+ tBTA_GATTC_SERV* p_srvc_cb =
+ bta_gattc_find_srvr_cache(p_msg->api_conn.remote_bda);
+ tBTA_GATTC_CLCB* p_clcb = &bta_gattc_cb.clcb[0];
+ bool found = false;
+ uint8_t i;
- if (p_srvc_cb != NULL)
- {
- /* try to find a CLCB */
- if (p_srvc_cb->connected && p_srvc_cb->num_clcb != 0)
- {
- for (i = 0; i < BTA_GATTC_CLCB_MAX; i ++, p_clcb ++)
- {
- if (p_clcb->in_use && p_clcb->p_srcb == p_srvc_cb)
- {
- found = true;
- break;
- }
- }
- if (found)
- {
- bta_gattc_sm_execute(p_clcb, BTA_GATTC_INT_DISCOVER_EVT, NULL);
- return;
- }
+ if (p_srvc_cb != NULL) {
+ /* try to find a CLCB */
+ if (p_srvc_cb->connected && p_srvc_cb->num_clcb != 0) {
+ for (i = 0; i < BTA_GATTC_CLCB_MAX; i++, p_clcb++) {
+ if (p_clcb->in_use && p_clcb->p_srcb == p_srvc_cb) {
+ found = true;
+ break;
}
- /* in all other cases, mark it and delete the cache */
- if (p_srvc_cb->p_srvc_cache != NULL) {
- list_free(p_srvc_cb->p_srvc_cache);
- p_srvc_cb->p_srvc_cache = NULL;
- }
+ }
+ if (found) {
+ bta_gattc_sm_execute(p_clcb, BTA_GATTC_INT_DISCOVER_EVT, NULL);
+ return;
+ }
}
- /* used to reset cache in application */
- bta_gattc_cache_reset(p_msg->api_conn.remote_bda);
-
+ /* in all other cases, mark it and delete the cache */
+ if (p_srvc_cb->p_srvc_cache != NULL) {
+ list_free(p_srvc_cb->p_srvc_cache);
+ p_srvc_cb->p_srvc_cache = NULL;
+ }
+ }
+ /* used to reset cache in application */
+ bta_gattc_cache_reset(p_msg->api_conn.remote_bda);
}
/*******************************************************************************
*
@@ -1620,79 +1461,74 @@
* Returns None.
*
******************************************************************************/
-bool bta_gattc_process_srvc_chg_ind(uint16_t conn_id,
- tBTA_GATTC_RCB *p_clrcb,
- tBTA_GATTC_SERV *p_srcb,
- tBTA_GATTC_CLCB *p_clcb,
- tBTA_GATTC_NOTIFY *p_notify,
- tGATT_VALUE *att_value)
-{
- tBT_UUID gattp_uuid, srvc_chg_uuid;
- bool processed = false;
- uint8_t i;
+bool bta_gattc_process_srvc_chg_ind(uint16_t conn_id, tBTA_GATTC_RCB* p_clrcb,
+ tBTA_GATTC_SERV* p_srcb,
+ tBTA_GATTC_CLCB* p_clcb,
+ tBTA_GATTC_NOTIFY* p_notify,
+ tGATT_VALUE* att_value) {
+ tBT_UUID gattp_uuid, srvc_chg_uuid;
+ bool processed = false;
+ uint8_t i;
- gattp_uuid.len = 2;
- gattp_uuid.uu.uuid16 = UUID_SERVCLASS_GATT_SERVER;
+ gattp_uuid.len = 2;
+ gattp_uuid.uu.uuid16 = UUID_SERVCLASS_GATT_SERVER;
- srvc_chg_uuid.len = 2;
- srvc_chg_uuid.uu.uuid16 = GATT_UUID_GATT_SRV_CHGD;
+ srvc_chg_uuid.len = 2;
+ srvc_chg_uuid.uu.uuid16 = GATT_UUID_GATT_SRV_CHGD;
- const tBTA_GATTC_CHARACTERISTIC *p_char = bta_gattc_get_characteristic_srcb(p_srcb, p_notify->handle);
- if (p_char && bta_gattc_uuid_compare(&p_char->service->uuid, &gattp_uuid, true) &&
- bta_gattc_uuid_compare(&p_char->uuid, &srvc_chg_uuid, true))
- {
- if (att_value->len != BTA_GATTC_SERVICE_CHANGED_LEN) {
- APPL_TRACE_ERROR("%s: received malformed service changed indication, skipping", __func__);
- return false;
- }
-
- uint8_t *p = att_value->value;
- uint16_t s_handle = ((uint16_t)(*(p )) + (((uint16_t)(*(p + 1))) << 8));
- uint16_t e_handle = ((uint16_t)(*(p + 2)) + (((uint16_t)(*(p + 3))) << 8));
-
- APPL_TRACE_ERROR("%s: service changed s_handle:0x%04x e_handle:0x%04x",
- __func__, s_handle, e_handle);
-
- processed = true;
- /* mark service handle change pending */
- p_srcb->srvc_hdl_chg = true;
- /* clear up all notification/indication registration */
- bta_gattc_clear_notif_registration(p_srcb, conn_id, s_handle, e_handle);
- /* service change indication all received, do discovery update */
- if ( ++ p_srcb->update_count == bta_gattc_num_reg_app())
- {
- /* not an opened connection; or connection busy */
- /* search for first available clcb and start discovery */
- if (p_clcb == NULL || (p_clcb && p_clcb->p_q_cmd != NULL))
- {
- for (i = 0 ; i < BTA_GATTC_CLCB_MAX; i ++)
- {
- if (bta_gattc_cb.clcb[i].in_use &&
- bta_gattc_cb.clcb[i].p_srcb == p_srcb &&
- bta_gattc_cb.clcb[i].p_q_cmd == NULL)
- {
- p_clcb = &bta_gattc_cb.clcb[i];
- break;
- }
- }
- }
- /* send confirmation here if this is an indication, it should always be */
- GATTC_SendHandleValueConfirm(conn_id, att_value->handle);
-
- /* if connection available, refresh cache by doing discovery now */
- if (p_clcb != NULL)
- bta_gattc_sm_execute(p_clcb, BTA_GATTC_INT_DISCOVER_EVT, NULL);
- }
- /* notify applicationf or service change */
- if (p_clrcb->p_cback != NULL)
- {
- (* p_clrcb->p_cback)(BTA_GATTC_SRVC_CHG_EVT, (tBTA_GATTC *)p_srcb->server_bda);
- }
-
+ const tBTA_GATTC_CHARACTERISTIC* p_char =
+ bta_gattc_get_characteristic_srcb(p_srcb, p_notify->handle);
+ if (p_char &&
+ bta_gattc_uuid_compare(&p_char->service->uuid, &gattp_uuid, true) &&
+ bta_gattc_uuid_compare(&p_char->uuid, &srvc_chg_uuid, true)) {
+ if (att_value->len != BTA_GATTC_SERVICE_CHANGED_LEN) {
+ APPL_TRACE_ERROR(
+ "%s: received malformed service changed indication, skipping",
+ __func__);
+ return false;
}
- return processed;
+ uint8_t* p = att_value->value;
+ uint16_t s_handle = ((uint16_t)(*(p)) + (((uint16_t)(*(p + 1))) << 8));
+ uint16_t e_handle = ((uint16_t)(*(p + 2)) + (((uint16_t)(*(p + 3))) << 8));
+ APPL_TRACE_ERROR("%s: service changed s_handle:0x%04x e_handle:0x%04x",
+ __func__, s_handle, e_handle);
+
+ processed = true;
+ /* mark service handle change pending */
+ p_srcb->srvc_hdl_chg = true;
+ /* clear up all notification/indication registration */
+ bta_gattc_clear_notif_registration(p_srcb, conn_id, s_handle, e_handle);
+ /* service change indication all received, do discovery update */
+ if (++p_srcb->update_count == bta_gattc_num_reg_app()) {
+ /* not an opened connection; or connection busy */
+ /* search for first available clcb and start discovery */
+ if (p_clcb == NULL || (p_clcb && p_clcb->p_q_cmd != NULL)) {
+ for (i = 0; i < BTA_GATTC_CLCB_MAX; i++) {
+ if (bta_gattc_cb.clcb[i].in_use &&
+ bta_gattc_cb.clcb[i].p_srcb == p_srcb &&
+ bta_gattc_cb.clcb[i].p_q_cmd == NULL) {
+ p_clcb = &bta_gattc_cb.clcb[i];
+ break;
+ }
+ }
+ }
+ /* send confirmation here if this is an indication, it should always be */
+ GATTC_SendHandleValueConfirm(conn_id, att_value->handle);
+
+ /* if connection available, refresh cache by doing discovery now */
+ if (p_clcb != NULL)
+ bta_gattc_sm_execute(p_clcb, BTA_GATTC_INT_DISCOVER_EVT, NULL);
+ }
+ /* notify applicationf or service change */
+ if (p_clrcb->p_cback != NULL) {
+ (*p_clrcb->p_cback)(BTA_GATTC_SRVC_CHG_EVT,
+ (tBTA_GATTC*)p_srcb->server_bda);
+ }
+ }
+
+ return processed;
}
/*******************************************************************************
*
@@ -1703,24 +1539,23 @@
* Returns None.
*
******************************************************************************/
-void bta_gattc_proc_other_indication(tBTA_GATTC_CLCB *p_clcb, uint8_t op,
- tGATT_CL_COMPLETE *p_data,
- tBTA_GATTC_NOTIFY *p_notify)
-{
- APPL_TRACE_DEBUG("bta_gattc_proc_other_indication check \
+void bta_gattc_proc_other_indication(tBTA_GATTC_CLCB* p_clcb, uint8_t op,
+ tGATT_CL_COMPLETE* p_data,
+ tBTA_GATTC_NOTIFY* p_notify) {
+ APPL_TRACE_DEBUG(
+ "bta_gattc_proc_other_indication check \
p_data->att_value.handle=%d p_data->handle=%d",
- p_data->att_value.handle, p_data->handle);
- APPL_TRACE_DEBUG("is_notify", p_notify->is_notify);
+ p_data->att_value.handle, p_data->handle);
+ APPL_TRACE_DEBUG("is_notify", p_notify->is_notify);
- p_notify->is_notify = (op == GATTC_OPTYPE_INDICATION) ? false : true;
- p_notify->len = p_data->att_value.len;
- bdcpy(p_notify->bda, p_clcb->bda);
- memcpy(p_notify->value, p_data->att_value.value, p_data->att_value.len);
- p_notify->conn_id = p_clcb->bta_conn_id;
+ p_notify->is_notify = (op == GATTC_OPTYPE_INDICATION) ? false : true;
+ p_notify->len = p_data->att_value.len;
+ bdcpy(p_notify->bda, p_clcb->bda);
+ memcpy(p_notify->value, p_data->att_value.value, p_data->att_value.len);
+ p_notify->conn_id = p_clcb->bta_conn_id;
- if (p_clcb->p_rcb->p_cback)
- (*p_clcb->p_rcb->p_cback)(BTA_GATTC_NOTIF_EVT, (tBTA_GATTC *)p_notify);
-
+ if (p_clcb->p_rcb->p_cback)
+ (*p_clcb->p_rcb->p_cback)(BTA_GATTC_NOTIF_EVT, (tBTA_GATTC*)p_notify);
}
/*******************************************************************************
*
@@ -1731,76 +1566,71 @@
* Returns None.
*
******************************************************************************/
-void bta_gattc_process_indicate(uint16_t conn_id, tGATTC_OPTYPE op, tGATT_CL_COMPLETE *p_data)
-{
- uint16_t handle = p_data->att_value.handle;
- tBTA_GATTC_CLCB *p_clcb ;
- tBTA_GATTC_RCB *p_clrcb = NULL;
- tBTA_GATTC_SERV *p_srcb = NULL;
- tBTA_GATTC_NOTIFY notify;
- BD_ADDR remote_bda;
- tBTA_GATTC_IF gatt_if;
- tBTA_TRANSPORT transport;
+void bta_gattc_process_indicate(uint16_t conn_id, tGATTC_OPTYPE op,
+ tGATT_CL_COMPLETE* p_data) {
+ uint16_t handle = p_data->att_value.handle;
+ tBTA_GATTC_CLCB* p_clcb;
+ tBTA_GATTC_RCB* p_clrcb = NULL;
+ tBTA_GATTC_SERV* p_srcb = NULL;
+ tBTA_GATTC_NOTIFY notify;
+ BD_ADDR remote_bda;
+ tBTA_GATTC_IF gatt_if;
+ tBTA_TRANSPORT transport;
- if (!GATT_GetConnectionInfor(conn_id, &gatt_if, remote_bda, &transport))
- {
- APPL_TRACE_ERROR("%s indication/notif for unknown app", __func__);
- if (op == GATTC_OPTYPE_INDICATION)
- GATTC_SendHandleValueConfirm(conn_id, handle);
- return;
- }
+ if (!GATT_GetConnectionInfor(conn_id, &gatt_if, remote_bda, &transport)) {
+ APPL_TRACE_ERROR("%s indication/notif for unknown app", __func__);
+ if (op == GATTC_OPTYPE_INDICATION)
+ GATTC_SendHandleValueConfirm(conn_id, handle);
+ return;
+ }
- if ((p_clrcb = bta_gattc_cl_get_regcb(gatt_if)) == NULL)
- {
- APPL_TRACE_ERROR("%s indication/notif for unregistered app", __func__);
- if (op == GATTC_OPTYPE_INDICATION)
- GATTC_SendHandleValueConfirm(conn_id, handle);
- return;
- }
+ if ((p_clrcb = bta_gattc_cl_get_regcb(gatt_if)) == NULL) {
+ APPL_TRACE_ERROR("%s indication/notif for unregistered app", __func__);
+ if (op == GATTC_OPTYPE_INDICATION)
+ GATTC_SendHandleValueConfirm(conn_id, handle);
+ return;
+ }
- if ((p_srcb = bta_gattc_find_srcb(remote_bda)) == NULL)
- {
- APPL_TRACE_ERROR("%s indication/notif for unknown device, ignore", __func__);
- if (op == GATTC_OPTYPE_INDICATION)
- GATTC_SendHandleValueConfirm(conn_id, handle);
- return;
- }
+ if ((p_srcb = bta_gattc_find_srcb(remote_bda)) == NULL) {
+ APPL_TRACE_ERROR("%s indication/notif for unknown device, ignore",
+ __func__);
+ if (op == GATTC_OPTYPE_INDICATION)
+ GATTC_SendHandleValueConfirm(conn_id, handle);
+ return;
+ }
- p_clcb = bta_gattc_find_clcb_by_conn_id(conn_id);
+ p_clcb = bta_gattc_find_clcb_by_conn_id(conn_id);
- notify.handle = handle;
- /* if non-service change indication/notification, forward to application */
- if (!bta_gattc_process_srvc_chg_ind(conn_id, p_clrcb, p_srcb, p_clcb, ¬ify, &p_data->att_value))
- {
- /* if app registered for the notification */
- if (bta_gattc_check_notif_registry(p_clrcb, p_srcb, ¬ify))
- {
- /* connection not open yet */
- if (p_clcb == NULL)
- {
- p_clcb = bta_gattc_clcb_alloc(gatt_if, remote_bda, transport);
+ notify.handle = handle;
+ /* if non-service change indication/notification, forward to application */
+ if (!bta_gattc_process_srvc_chg_ind(conn_id, p_clrcb, p_srcb, p_clcb, ¬ify,
+ &p_data->att_value)) {
+ /* if app registered for the notification */
+ if (bta_gattc_check_notif_registry(p_clrcb, p_srcb, ¬ify)) {
+ /* connection not open yet */
+ if (p_clcb == NULL) {
+ p_clcb = bta_gattc_clcb_alloc(gatt_if, remote_bda, transport);
- if (p_clcb == NULL) {
- APPL_TRACE_ERROR("No resources");
- return;
- }
-
- p_clcb->bta_conn_id = conn_id;
- p_clcb->transport = transport;
-
- bta_gattc_sm_execute(p_clcb, BTA_GATTC_INT_CONN_EVT, NULL);
- }
-
- if (p_clcb != NULL)
- bta_gattc_proc_other_indication(p_clcb, op, p_data, ¬ify);
+ if (p_clcb == NULL) {
+ APPL_TRACE_ERROR("No resources");
+ return;
}
- /* no one intersted and need ack? */
- else if (op == GATTC_OPTYPE_INDICATION)
- {
- APPL_TRACE_DEBUG("%s no one interested, ack now", __func__);
- GATTC_SendHandleValueConfirm(conn_id, handle);
- }
+
+ p_clcb->bta_conn_id = conn_id;
+ p_clcb->transport = transport;
+
+ bta_gattc_sm_execute(p_clcb, BTA_GATTC_INT_CONN_EVT, NULL);
+ }
+
+ if (p_clcb != NULL)
+ bta_gattc_proc_other_indication(p_clcb, op, p_data, ¬ify);
}
+ /* no one intersted and need ack? */
+ else if (op == GATTC_OPTYPE_INDICATION) {
+ APPL_TRACE_DEBUG("%s no one interested, ack now", __func__);
+ GATTC_SendHandleValueConfirm(conn_id, handle);
+ }
+ }
}
/*******************************************************************************
*
@@ -1811,34 +1641,32 @@
* Returns None.
*
******************************************************************************/
-static void bta_gattc_cmpl_cback(uint16_t conn_id, tGATTC_OPTYPE op, tGATT_STATUS status,
- tGATT_CL_COMPLETE *p_data)
-{
- tBTA_GATTC_CLCB *p_clcb;
- APPL_TRACE_DEBUG("bta_gattc_cmpl_cback: conn_id = %d op = %d status = %d",
- conn_id, op, status);
+static void bta_gattc_cmpl_cback(uint16_t conn_id, tGATTC_OPTYPE op,
+ tGATT_STATUS status,
+ tGATT_CL_COMPLETE* p_data) {
+ tBTA_GATTC_CLCB* p_clcb;
+ APPL_TRACE_DEBUG("bta_gattc_cmpl_cback: conn_id = %d op = %d status = %d",
+ conn_id, op, status);
- /* notification and indication processed right away */
- if (op == GATTC_OPTYPE_NOTIFICATION || op == GATTC_OPTYPE_INDICATION)
- {
- bta_gattc_process_indicate(conn_id, op, p_data);
- return;
- }
- /* for all other operation, not expected if w/o connection */
- else if ((p_clcb = bta_gattc_find_clcb_by_conn_id(conn_id)) == NULL)
- {
- APPL_TRACE_ERROR("bta_gattc_cmpl_cback unknown conn_id = %d, ignore data", conn_id);
- return;
- }
+ /* notification and indication processed right away */
+ if (op == GATTC_OPTYPE_NOTIFICATION || op == GATTC_OPTYPE_INDICATION) {
+ bta_gattc_process_indicate(conn_id, op, p_data);
+ return;
+ }
+ /* for all other operation, not expected if w/o connection */
+ else if ((p_clcb = bta_gattc_find_clcb_by_conn_id(conn_id)) == NULL) {
+ APPL_TRACE_ERROR("bta_gattc_cmpl_cback unknown conn_id = %d, ignore data",
+ conn_id);
+ return;
+ }
- /* if over BR_EDR, inform PM for mode change */
- if (p_clcb->transport == BTA_TRANSPORT_BR_EDR)
- {
- bta_sys_busy(BTA_ID_GATTC, BTA_ALL_APP_ID, p_clcb->bda);
- bta_sys_idle(BTA_ID_GATTC, BTA_ALL_APP_ID, p_clcb->bda);
- }
+ /* if over BR_EDR, inform PM for mode change */
+ if (p_clcb->transport == BTA_TRANSPORT_BR_EDR) {
+ bta_sys_busy(BTA_ID_GATTC, BTA_ALL_APP_ID, p_clcb->bda);
+ bta_sys_idle(BTA_ID_GATTC, BTA_ALL_APP_ID, p_clcb->bda);
+ }
- bta_gattc_cmpl_sendmsg(conn_id, op, status, p_data);
+ bta_gattc_cmpl_sendmsg(conn_id, op, status, p_data);
}
/*******************************************************************************
@@ -1852,22 +1680,21 @@
******************************************************************************/
static void bta_gattc_cmpl_sendmsg(uint16_t conn_id, tGATTC_OPTYPE op,
tBTA_GATT_STATUS status,
- tGATT_CL_COMPLETE *p_data)
-{
- const size_t len = sizeof(tBTA_GATTC_OP_CMPL) + sizeof(tGATT_CL_COMPLETE);
- tBTA_GATTC_OP_CMPL *p_buf = (tBTA_GATTC_OP_CMPL *)osi_calloc(len);
+ tGATT_CL_COMPLETE* p_data) {
+ const size_t len = sizeof(tBTA_GATTC_OP_CMPL) + sizeof(tGATT_CL_COMPLETE);
+ tBTA_GATTC_OP_CMPL* p_buf = (tBTA_GATTC_OP_CMPL*)osi_calloc(len);
- p_buf->hdr.event = BTA_GATTC_OP_CMPL_EVT;
- p_buf->hdr.layer_specific = conn_id;
- p_buf->status = status;
- p_buf->op_code = op;
+ p_buf->hdr.event = BTA_GATTC_OP_CMPL_EVT;
+ p_buf->hdr.layer_specific = conn_id;
+ p_buf->status = status;
+ p_buf->op_code = op;
- if (p_data != NULL) {
- p_buf->p_cmpl = (tGATT_CL_COMPLETE *)(p_buf + 1);
- memcpy(p_buf->p_cmpl, p_data, sizeof(tGATT_CL_COMPLETE));
- }
+ if (p_data != NULL) {
+ p_buf->p_cmpl = (tGATT_CL_COMPLETE*)(p_buf + 1);
+ memcpy(p_buf->p_cmpl, p_data, sizeof(tGATT_CL_COMPLETE));
+ }
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -1879,20 +1706,17 @@
* Returns void
*
*******************************************************************************/
-static void bta_gattc_cong_cback (uint16_t conn_id, bool congested)
-{
- tBTA_GATTC_CLCB *p_clcb;
- tBTA_GATTC cb_data;
+static void bta_gattc_cong_cback(uint16_t conn_id, bool congested) {
+ tBTA_GATTC_CLCB* p_clcb;
+ tBTA_GATTC cb_data;
- if ((p_clcb = bta_gattc_find_clcb_by_conn_id(conn_id)) != NULL)
- {
- if (p_clcb->p_rcb->p_cback)
- {
- cb_data.congest.conn_id = conn_id;
- cb_data.congest.congested = congested;
+ if ((p_clcb = bta_gattc_find_clcb_by_conn_id(conn_id)) != NULL) {
+ if (p_clcb->p_rcb->p_cback) {
+ cb_data.congest.conn_id = conn_id;
+ cb_data.congest.congested = congested;
- (*p_clcb->p_rcb->p_cback)(BTA_GATTC_CONGEST_EVT, &cb_data);
- }
+ (*p_clcb->p_rcb->p_cback)(BTA_GATTC_CONGEST_EVT, &cb_data);
}
+ }
}
-#endif // BTA_GATT_INCLUDED == TRUE && BLE_INCLUDED == TRUE
+#endif // BTA_GATT_INCLUDED == TRUE && BLE_INCLUDED == TRUE
diff --git a/bta/gatt/bta_gattc_api.cc b/bta/gatt/bta_gattc_api.cc
index 226ea1c..f290905 100644
--- a/bta/gatt/bta_gattc_api.cc
+++ b/bta/gatt/bta_gattc_api.cc
@@ -30,20 +30,16 @@
#include <base/callback.h>
#include "bt_common.h"
-#include "bta_sys.h"
#include "bta_gatt_api.h"
#include "bta_gattc_int.h"
+#include "bta_sys.h"
/*****************************************************************************
* Constants
****************************************************************************/
-static const tBTA_SYS_REG bta_gattc_reg =
-{
- bta_gattc_hdl_event,
- BTA_GATTC_Disable
-};
-
+static const tBTA_SYS_REG bta_gattc_reg = {bta_gattc_hdl_event,
+ BTA_GATTC_Disable};
/*******************************************************************************
*
@@ -56,19 +52,17 @@
* Returns None
*
******************************************************************************/
-void BTA_GATTC_Disable(void)
-{
- if (bta_sys_is_register(BTA_ID_GATTC) == false)
- {
- APPL_TRACE_WARNING("GATTC Module not enabled/already disabled");
- return;
- }
+void BTA_GATTC_Disable(void) {
+ if (bta_sys_is_register(BTA_ID_GATTC) == false) {
+ APPL_TRACE_WARNING("GATTC Module not enabled/already disabled");
+ return;
+ }
- BT_HDR *p_buf = (BT_HDR *)osi_malloc(sizeof(BT_HDR));
- p_buf->event = BTA_GATTC_API_DISABLE_EVT;
+ BT_HDR* p_buf = (BT_HDR*)osi_malloc(sizeof(BT_HDR));
+ p_buf->event = BTA_GATTC_API_DISABLE_EVT;
- bta_sys_sendmsg(p_buf);
- bta_sys_deregister(BTA_ID_GATTC);
+ bta_sys_sendmsg(p_buf);
+ bta_sys_deregister(BTA_ID_GATTC);
}
/*******************************************************************************
@@ -84,20 +78,20 @@
* Returns None
*
******************************************************************************/
-void BTA_GATTC_AppRegister(tBT_UUID *p_app_uuid, tBTA_GATTC_CBACK *p_client_cb)
-{
- tBTA_GATTC_API_REG *p_buf =
- (tBTA_GATTC_API_REG *)osi_malloc(sizeof(tBTA_GATTC_API_REG));
+void BTA_GATTC_AppRegister(tBT_UUID* p_app_uuid,
+ tBTA_GATTC_CBACK* p_client_cb) {
+ tBTA_GATTC_API_REG* p_buf =
+ (tBTA_GATTC_API_REG*)osi_malloc(sizeof(tBTA_GATTC_API_REG));
- if (bta_sys_is_register(BTA_ID_GATTC) == false)
- bta_sys_register(BTA_ID_GATTC, &bta_gattc_reg);
+ if (bta_sys_is_register(BTA_ID_GATTC) == false)
+ bta_sys_register(BTA_ID_GATTC, &bta_gattc_reg);
- p_buf->hdr.event = BTA_GATTC_API_REG_EVT;
- if (p_app_uuid != NULL)
- memcpy(&p_buf->app_uuid, p_app_uuid, sizeof(tBT_UUID));
- p_buf->p_cback = p_client_cb;
+ p_buf->hdr.event = BTA_GATTC_API_REG_EVT;
+ if (p_app_uuid != NULL)
+ memcpy(&p_buf->app_uuid, p_app_uuid, sizeof(tBT_UUID));
+ p_buf->p_cback = p_client_cb;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -112,15 +106,14 @@
* Returns None
*
******************************************************************************/
-void BTA_GATTC_AppDeregister(tBTA_GATTC_IF client_if)
-{
- tBTA_GATTC_API_DEREG *p_buf =
- (tBTA_GATTC_API_DEREG *)osi_malloc(sizeof(tBTA_GATTC_API_DEREG));
+void BTA_GATTC_AppDeregister(tBTA_GATTC_IF client_if) {
+ tBTA_GATTC_API_DEREG* p_buf =
+ (tBTA_GATTC_API_DEREG*)osi_malloc(sizeof(tBTA_GATTC_API_DEREG));
- p_buf->hdr.event = BTA_GATTC_API_DEREG_EVT;
- p_buf->client_if = client_if;
+ p_buf->hdr.event = BTA_GATTC_API_DEREG_EVT;
+ p_buf->client_if = client_if;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -133,31 +126,32 @@
* Parameters client_if: server interface.
* remote_bda: remote device BD address.
* is_direct: direct connection or background auto connection
- * transport: Transport to be used for GATT connection (BREDR/LE)
+ * transport: Transport to be used for GATT connection
+ *(BREDR/LE)
*
* Returns void
*
******************************************************************************/
-void BTA_GATTC_Open(tBTA_GATTC_IF client_if, BD_ADDR remote_bda,
- bool is_direct, tBTA_GATT_TRANSPORT transport)
-{
- tBTA_GATTC_API_OPEN *p_buf =
- (tBTA_GATTC_API_OPEN *) osi_malloc(sizeof(tBTA_GATTC_API_OPEN));
+void BTA_GATTC_Open(tBTA_GATTC_IF client_if, BD_ADDR remote_bda, bool is_direct,
+ tBTA_GATT_TRANSPORT transport) {
+ tBTA_GATTC_API_OPEN* p_buf =
+ (tBTA_GATTC_API_OPEN*)osi_malloc(sizeof(tBTA_GATTC_API_OPEN));
- p_buf->hdr.event = BTA_GATTC_API_OPEN_EVT;
- p_buf->client_if = client_if;
- p_buf->is_direct = is_direct;
- p_buf->transport = transport;
- memcpy(p_buf->remote_bda, remote_bda, BD_ADDR_LEN);
+ p_buf->hdr.event = BTA_GATTC_API_OPEN_EVT;
+ p_buf->client_if = client_if;
+ p_buf->is_direct = is_direct;
+ p_buf->transport = transport;
+ memcpy(p_buf->remote_bda, remote_bda, BD_ADDR_LEN);
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
*
* Function BTA_GATTC_CancelOpen
*
- * Description Cancel a direct open connection or remove a background auto connection
+ * Description Cancel a direct open connection or remove a background auto
+ *connection
* bd address
*
* Parameters client_if: server interface.
@@ -167,17 +161,17 @@
* Returns void
*
******************************************************************************/
-void BTA_GATTC_CancelOpen(tBTA_GATTC_IF client_if, BD_ADDR remote_bda, bool is_direct)
-{
- tBTA_GATTC_API_CANCEL_OPEN *p_buf =
- (tBTA_GATTC_API_CANCEL_OPEN *)osi_malloc(sizeof(tBTA_GATTC_API_CANCEL_OPEN));
+void BTA_GATTC_CancelOpen(tBTA_GATTC_IF client_if, BD_ADDR remote_bda,
+ bool is_direct) {
+ tBTA_GATTC_API_CANCEL_OPEN* p_buf = (tBTA_GATTC_API_CANCEL_OPEN*)osi_malloc(
+ sizeof(tBTA_GATTC_API_CANCEL_OPEN));
- p_buf->hdr.event = BTA_GATTC_API_CANCEL_OPEN_EVT;
- p_buf->client_if = client_if;
- p_buf->is_direct = is_direct;
- memcpy(p_buf->remote_bda, remote_bda, BD_ADDR_LEN);
+ p_buf->hdr.event = BTA_GATTC_API_CANCEL_OPEN_EVT;
+ p_buf->client_if = client_if;
+ p_buf->is_direct = is_direct;
+ memcpy(p_buf->remote_bda, remote_bda, BD_ADDR_LEN);
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -191,14 +185,13 @@
* Returns void
*
******************************************************************************/
-void BTA_GATTC_Close(uint16_t conn_id)
-{
- BT_HDR *p_buf = (BT_HDR *)osi_malloc(sizeof(BT_HDR));
+void BTA_GATTC_Close(uint16_t conn_id) {
+ BT_HDR* p_buf = (BT_HDR*)osi_malloc(sizeof(BT_HDR));
- p_buf->event = BTA_GATTC_API_CLOSE_EVT;
- p_buf->layer_specific = conn_id;
+ p_buf->event = BTA_GATTC_API_CLOSE_EVT;
+ p_buf->layer_specific = conn_id;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -214,16 +207,15 @@
* Returns void
*
******************************************************************************/
-void BTA_GATTC_ConfigureMTU (uint16_t conn_id, uint16_t mtu)
-{
- tBTA_GATTC_API_CFG_MTU *p_buf =
- (tBTA_GATTC_API_CFG_MTU *)osi_malloc(sizeof(tBTA_GATTC_API_CFG_MTU));
+void BTA_GATTC_ConfigureMTU(uint16_t conn_id, uint16_t mtu) {
+ tBTA_GATTC_API_CFG_MTU* p_buf =
+ (tBTA_GATTC_API_CFG_MTU*)osi_malloc(sizeof(tBTA_GATTC_API_CFG_MTU));
- p_buf->hdr.event = BTA_GATTC_API_CFG_MTU_EVT;
- p_buf->hdr.layer_specific = conn_id;
- p_buf->mtu = mtu;
+ p_buf->hdr.event = BTA_GATTC_API_CFG_MTU_EVT;
+ p_buf->hdr.layer_specific = conn_id;
+ p_buf->mtu = mtu;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -231,39 +223,42 @@
* Function BTA_GATTC_ServiceSearchRequest
*
* Description This function is called to request a GATT service discovery
- * on a GATT server. This function report service search result
- * by a callback event, and followed by a service search complete
+ * on a GATT server. This function report service search
+ *result
+ * by a callback event, and followed by a service search
+ *complete
* event.
*
* Parameters conn_id: connection ID.
- * p_srvc_uuid: a UUID of the service application is interested in.
+ * p_srvc_uuid: a UUID of the service application is interested
+ *in.
* If Null, discover for all services.
*
* Returns None
*
******************************************************************************/
-void BTA_GATTC_ServiceSearchRequest (uint16_t conn_id, tBT_UUID *p_srvc_uuid)
-{
- const size_t len = sizeof(tBTA_GATTC_API_SEARCH) + sizeof(tBT_UUID);
- tBTA_GATTC_API_SEARCH *p_buf = (tBTA_GATTC_API_SEARCH *)osi_calloc(len);
+void BTA_GATTC_ServiceSearchRequest(uint16_t conn_id, tBT_UUID* p_srvc_uuid) {
+ const size_t len = sizeof(tBTA_GATTC_API_SEARCH) + sizeof(tBT_UUID);
+ tBTA_GATTC_API_SEARCH* p_buf = (tBTA_GATTC_API_SEARCH*)osi_calloc(len);
- p_buf->hdr.event = BTA_GATTC_API_SEARCH_EVT;
- p_buf->hdr.layer_specific = conn_id;
- if (p_srvc_uuid) {
- p_buf->p_srvc_uuid = (tBT_UUID *)(p_buf + 1);
- memcpy(p_buf->p_srvc_uuid, p_srvc_uuid, sizeof(tBT_UUID));
- } else {
- p_buf->p_srvc_uuid = NULL;
- }
+ p_buf->hdr.event = BTA_GATTC_API_SEARCH_EVT;
+ p_buf->hdr.layer_specific = conn_id;
+ if (p_srvc_uuid) {
+ p_buf->p_srvc_uuid = (tBT_UUID*)(p_buf + 1);
+ memcpy(p_buf->p_srvc_uuid, p_srvc_uuid, sizeof(tBT_UUID));
+ } else {
+ p_buf->p_srvc_uuid = NULL;
+ }
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
*
* Function BTA_GATTC_GetServices
*
- * Description This function is called to find the services on the given server.
+ * Description This function is called to find the services on the given
+ *server.
*
* Parameters conn_id: connection ID which identify the server.
*
@@ -271,14 +266,15 @@
*
******************************************************************************/
const list_t* BTA_GATTC_GetServices(uint16_t conn_id) {
- return bta_gattc_get_services(conn_id);
+ return bta_gattc_get_services(conn_id);
}
/*******************************************************************************
*
* Function BTA_GATTC_GetCharacteristic
*
- * Description This function is called to find the characteristic on the given server.
+ * Description This function is called to find the characteristic on the
+ *given server.
*
* Parameters conn_id - connection ID which identify the server.
* handle - characteristic handle
@@ -286,15 +282,17 @@
* Returns returns pointer to tBTA_GATTC_CHARACTERISTIC or NULL.
*
******************************************************************************/
-const tBTA_GATTC_CHARACTERISTIC* BTA_GATTC_GetCharacteristic(uint16_t conn_id, uint16_t handle) {
- return bta_gattc_get_characteristic(conn_id, handle);
+const tBTA_GATTC_CHARACTERISTIC* BTA_GATTC_GetCharacteristic(uint16_t conn_id,
+ uint16_t handle) {
+ return bta_gattc_get_characteristic(conn_id, handle);
}
/*******************************************************************************
*
* Function BTA_GATTC_GetDescriptor
*
- * Description This function is called to find the characteristic on the given server.
+ * Description This function is called to find the characteristic on the
+ *given server.
*
* Parameters conn_id - connection ID which identify the server.
* handle - descriptor handle
@@ -302,8 +300,9 @@
* Returns returns pointer to tBTA_GATTC_DESCRIPTOR or NULL.
*
******************************************************************************/
-const tBTA_GATTC_DESCRIPTOR* BTA_GATTC_GetDescriptor(uint16_t conn_id, uint16_t handle) {
- return bta_gattc_get_descriptor(conn_id, handle);
+const tBTA_GATTC_DESCRIPTOR* BTA_GATTC_GetDescriptor(uint16_t conn_id,
+ uint16_t handle) {
+ return bta_gattc_get_descriptor(conn_id, handle);
}
/*******************************************************************************
@@ -313,15 +312,16 @@
* Description This function is called to get the GATT database.
*
* Parameters conn_id: connection ID which identify the server.
- * db: output parameter which will contain the GATT database copy.
+ * db: output parameter which will contain the GATT database
+ *copy.
* Caller is responsible for freeing it.
* count: number of elements in database.
*
******************************************************************************/
-void BTA_GATTC_GetGattDb(uint16_t conn_id, uint16_t start_handle, uint16_t end_handle,
- btgatt_db_element_t **db, int *count)
-{
- bta_gattc_get_gatt_db(conn_id, start_handle, end_handle, db, count);
+void BTA_GATTC_GetGattDb(uint16_t conn_id, uint16_t start_handle,
+ uint16_t end_handle, btgatt_db_element_t** db,
+ int* count) {
+ bta_gattc_get_gatt_db(conn_id, start_handle, end_handle, db, count);
}
/*******************************************************************************
@@ -336,20 +336,20 @@
* Returns None
*
******************************************************************************/
-void BTA_GATTC_ReadCharacteristic(uint16_t conn_id, uint16_t handle, tBTA_GATT_AUTH_REQ auth_req,
- GATT_READ_OP_CB callback, void* cb_data)
-{
- tBTA_GATTC_API_READ *p_buf =
- (tBTA_GATTC_API_READ *)osi_calloc(sizeof(tBTA_GATTC_API_READ));
+void BTA_GATTC_ReadCharacteristic(uint16_t conn_id, uint16_t handle,
+ tBTA_GATT_AUTH_REQ auth_req,
+ GATT_READ_OP_CB callback, void* cb_data) {
+ tBTA_GATTC_API_READ* p_buf =
+ (tBTA_GATTC_API_READ*)osi_calloc(sizeof(tBTA_GATTC_API_READ));
- p_buf->hdr.event = BTA_GATTC_API_READ_EVT;
- p_buf->hdr.layer_specific = conn_id;
- p_buf->auth_req = auth_req;
- p_buf->handle = handle;
- p_buf->read_cb = callback;
- p_buf->read_cb_data = cb_data;
+ p_buf->hdr.event = BTA_GATTC_API_READ_EVT;
+ p_buf->hdr.layer_specific = conn_id;
+ p_buf->auth_req = auth_req;
+ p_buf->handle = handle;
+ p_buf->read_cb = callback;
+ p_buf->read_cb_data = cb_data;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -364,20 +364,20 @@
* Returns None
*
******************************************************************************/
-void BTA_GATTC_ReadCharDescr(uint16_t conn_id, uint16_t handle, tBTA_GATT_AUTH_REQ auth_req,
- GATT_READ_OP_CB callback, void* cb_data)
-{
- tBTA_GATTC_API_READ *p_buf =
- (tBTA_GATTC_API_READ *)osi_calloc(sizeof(tBTA_GATTC_API_READ));
+void BTA_GATTC_ReadCharDescr(uint16_t conn_id, uint16_t handle,
+ tBTA_GATT_AUTH_REQ auth_req,
+ GATT_READ_OP_CB callback, void* cb_data) {
+ tBTA_GATTC_API_READ* p_buf =
+ (tBTA_GATTC_API_READ*)osi_calloc(sizeof(tBTA_GATTC_API_READ));
- p_buf->hdr.event = BTA_GATTC_API_READ_EVT;
- p_buf->hdr.layer_specific = conn_id;
- p_buf->auth_req = auth_req;
- p_buf->handle = handle;
- p_buf->read_cb = callback;
- p_buf->read_cb_data = cb_data;
+ p_buf->hdr.event = BTA_GATTC_API_READ_EVT;
+ p_buf->hdr.layer_specific = conn_id;
+ p_buf->auth_req = auth_req;
+ p_buf->handle = handle;
+ p_buf->read_cb = callback;
+ p_buf->read_cb_data = cb_data;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -393,21 +393,21 @@
* Returns None
*
******************************************************************************/
-void BTA_GATTC_ReadMultiple(uint16_t conn_id, tBTA_GATTC_MULTI *p_read_multi,
- tBTA_GATT_AUTH_REQ auth_req)
-{
- tBTA_GATTC_API_READ_MULTI *p_buf =
- (tBTA_GATTC_API_READ_MULTI *)osi_calloc(sizeof(tBTA_GATTC_API_READ_MULTI));
+void BTA_GATTC_ReadMultiple(uint16_t conn_id, tBTA_GATTC_MULTI* p_read_multi,
+ tBTA_GATT_AUTH_REQ auth_req) {
+ tBTA_GATTC_API_READ_MULTI* p_buf =
+ (tBTA_GATTC_API_READ_MULTI*)osi_calloc(sizeof(tBTA_GATTC_API_READ_MULTI));
- p_buf->hdr.event = BTA_GATTC_API_READ_MULTI_EVT;
- p_buf->hdr.layer_specific = conn_id;
- p_buf->auth_req = auth_req;
- p_buf->num_attr = p_read_multi->num_attr;
+ p_buf->hdr.event = BTA_GATTC_API_READ_MULTI_EVT;
+ p_buf->hdr.layer_specific = conn_id;
+ p_buf->auth_req = auth_req;
+ p_buf->num_attr = p_read_multi->num_attr;
- if (p_buf->num_attr > 0)
- memcpy(p_buf->handles, p_read_multi->handles, sizeof(uint16_t) * p_read_multi->num_attr);
+ if (p_buf->num_attr > 0)
+ memcpy(p_buf->handles, p_read_multi->handles,
+ sizeof(uint16_t) * p_read_multi->num_attr);
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -424,32 +424,29 @@
* Returns None
*
******************************************************************************/
-void BTA_GATTC_WriteCharValue ( uint16_t conn_id,
- uint16_t handle,
- tBTA_GATTC_WRITE_TYPE write_type,
- std::vector<uint8_t> value,
- tBTA_GATT_AUTH_REQ auth_req,
- GATT_WRITE_OP_CB callback,
- void* cb_data)
-{
- tBTA_GATTC_API_WRITE *p_buf = (tBTA_GATTC_API_WRITE *)
- osi_calloc(sizeof(tBTA_GATTC_API_WRITE) + value.size());
+void BTA_GATTC_WriteCharValue(uint16_t conn_id, uint16_t handle,
+ tBTA_GATTC_WRITE_TYPE write_type,
+ std::vector<uint8_t> value,
+ tBTA_GATT_AUTH_REQ auth_req,
+ GATT_WRITE_OP_CB callback, void* cb_data) {
+ tBTA_GATTC_API_WRITE* p_buf = (tBTA_GATTC_API_WRITE*)osi_calloc(
+ sizeof(tBTA_GATTC_API_WRITE) + value.size());
- p_buf->hdr.event = BTA_GATTC_API_WRITE_EVT;
- p_buf->hdr.layer_specific = conn_id;
- p_buf->auth_req = auth_req;
- p_buf->handle = handle;
- p_buf->write_type = write_type;
- p_buf->len = value.size();
- p_buf->write_cb = callback;
- p_buf->write_cb_data = cb_data;
+ p_buf->hdr.event = BTA_GATTC_API_WRITE_EVT;
+ p_buf->hdr.layer_specific = conn_id;
+ p_buf->auth_req = auth_req;
+ p_buf->handle = handle;
+ p_buf->write_type = write_type;
+ p_buf->len = value.size();
+ p_buf->write_cb = callback;
+ p_buf->write_cb_data = cb_data;
- if (value.size() > 0) {
- p_buf->p_value = (uint8_t *)(p_buf + 1);
- memcpy(p_buf->p_value, value.data(), value.size());
- }
+ if (value.size() > 0) {
+ p_buf->p_value = (uint8_t*)(p_buf + 1);
+ memcpy(p_buf->p_value, value.data(), value.size());
+ }
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -465,38 +462,36 @@
* Returns None
*
******************************************************************************/
-void BTA_GATTC_WriteCharDescr (uint16_t conn_id,
- uint16_t handle,
- std::vector<uint8_t> value,
- tBTA_GATT_AUTH_REQ auth_req,
- GATT_WRITE_OP_CB callback,
- void* cb_data)
-{
- tBTA_GATTC_API_WRITE *p_buf = (tBTA_GATTC_API_WRITE *)
- osi_calloc(sizeof(tBTA_GATTC_API_WRITE) + value.size());
+void BTA_GATTC_WriteCharDescr(uint16_t conn_id, uint16_t handle,
+ std::vector<uint8_t> value,
+ tBTA_GATT_AUTH_REQ auth_req,
+ GATT_WRITE_OP_CB callback, void* cb_data) {
+ tBTA_GATTC_API_WRITE* p_buf = (tBTA_GATTC_API_WRITE*)osi_calloc(
+ sizeof(tBTA_GATTC_API_WRITE) + value.size());
- p_buf->hdr.event = BTA_GATTC_API_WRITE_EVT;
- p_buf->hdr.layer_specific = conn_id;
- p_buf->auth_req = auth_req;
- p_buf->handle = handle;
- p_buf->write_type = BTA_GATTC_TYPE_WRITE;
- p_buf->write_cb = callback;
- p_buf->write_cb_data = cb_data;
+ p_buf->hdr.event = BTA_GATTC_API_WRITE_EVT;
+ p_buf->hdr.layer_specific = conn_id;
+ p_buf->auth_req = auth_req;
+ p_buf->handle = handle;
+ p_buf->write_type = BTA_GATTC_TYPE_WRITE;
+ p_buf->write_cb = callback;
+ p_buf->write_cb_data = cb_data;
- if (value.size() != 0) {
- p_buf->p_value = (uint8_t *)(p_buf + 1);
- p_buf->len = value.size();
- memcpy(p_buf->p_value, value.data(), value.size());
- }
+ if (value.size() != 0) {
+ p_buf->p_value = (uint8_t*)(p_buf + 1);
+ p_buf->len = value.size();
+ memcpy(p_buf->p_value, value.data(), value.size());
+ }
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
*
* Function BTA_GATTC_PrepareWrite
*
- * Description This function is called to prepare write a characteristic value.
+ * Description This function is called to prepare write a characteristic
+ *value.
*
* Parameters conn_id - connection ID.
* p_char_id - GATT characteritic ID of the service.
@@ -506,38 +501,38 @@
* Returns None
*
******************************************************************************/
-void BTA_GATTC_PrepareWrite (uint16_t conn_id, uint16_t handle, uint16_t offset,
- std::vector<uint8_t> value,
- tBTA_GATT_AUTH_REQ auth_req,
- GATT_WRITE_OP_CB callback, void* cb_data)
-{
- tBTA_GATTC_API_WRITE *p_buf =
- (tBTA_GATTC_API_WRITE *)osi_calloc(sizeof(tBTA_GATTC_API_WRITE) + value.size());
+void BTA_GATTC_PrepareWrite(uint16_t conn_id, uint16_t handle, uint16_t offset,
+ std::vector<uint8_t> value,
+ tBTA_GATT_AUTH_REQ auth_req,
+ GATT_WRITE_OP_CB callback, void* cb_data) {
+ tBTA_GATTC_API_WRITE* p_buf = (tBTA_GATTC_API_WRITE*)osi_calloc(
+ sizeof(tBTA_GATTC_API_WRITE) + value.size());
- p_buf->hdr.event = BTA_GATTC_API_WRITE_EVT;
- p_buf->hdr.layer_specific = conn_id;
- p_buf->auth_req = auth_req;
- p_buf->handle = handle;
- p_buf->write_cb = callback;
- p_buf->write_cb_data = cb_data;
+ p_buf->hdr.event = BTA_GATTC_API_WRITE_EVT;
+ p_buf->hdr.layer_specific = conn_id;
+ p_buf->auth_req = auth_req;
+ p_buf->handle = handle;
+ p_buf->write_cb = callback;
+ p_buf->write_cb_data = cb_data;
- p_buf->write_type = BTA_GATTC_WRITE_PREPARE;
- p_buf->offset = offset;
- p_buf->len = value.size();
+ p_buf->write_type = BTA_GATTC_WRITE_PREPARE;
+ p_buf->offset = offset;
+ p_buf->len = value.size();
- if (value.size() > 0) {
- p_buf->p_value = (uint8_t *)(p_buf + 1);
- memcpy(p_buf->p_value, value.data(), value.size());
- }
+ if (value.size() > 0) {
+ p_buf->p_value = (uint8_t*)(p_buf + 1);
+ memcpy(p_buf->p_value, value.data(), value.size());
+ }
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
*
* Function BTA_GATTC_ExecuteWrite
*
- * Description This function is called to execute write a prepare write sequence.
+ * Description This function is called to execute write a prepare write
+ *sequence.
*
* Parameters conn_id - connection ID.
* is_execute - execute or cancel.
@@ -545,16 +540,15 @@
* Returns None
*
******************************************************************************/
-void BTA_GATTC_ExecuteWrite (uint16_t conn_id, bool is_execute)
-{
- tBTA_GATTC_API_EXEC *p_buf =
- (tBTA_GATTC_API_EXEC *)osi_calloc(sizeof(tBTA_GATTC_API_EXEC));
+void BTA_GATTC_ExecuteWrite(uint16_t conn_id, bool is_execute) {
+ tBTA_GATTC_API_EXEC* p_buf =
+ (tBTA_GATTC_API_EXEC*)osi_calloc(sizeof(tBTA_GATTC_API_EXEC));
- p_buf->hdr.event = BTA_GATTC_API_EXEC_EVT;
- p_buf->hdr.layer_specific = conn_id;
- p_buf->is_execute = is_execute;
+ p_buf->hdr.event = BTA_GATTC_API_EXEC_EVT;
+ p_buf->hdr.layer_specific = conn_id;
+ p_buf->is_execute = is_execute;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -569,25 +563,25 @@
* Returns None
*
******************************************************************************/
-void BTA_GATTC_SendIndConfirm (uint16_t conn_id, uint16_t handle)
-{
- tBTA_GATTC_API_CONFIRM *p_buf =
- (tBTA_GATTC_API_CONFIRM *)osi_calloc(sizeof(tBTA_GATTC_API_CONFIRM));
+void BTA_GATTC_SendIndConfirm(uint16_t conn_id, uint16_t handle) {
+ tBTA_GATTC_API_CONFIRM* p_buf =
+ (tBTA_GATTC_API_CONFIRM*)osi_calloc(sizeof(tBTA_GATTC_API_CONFIRM));
- APPL_TRACE_API("%s conn_id=%d handle=0x%04x", __func__, conn_id, handle);
+ APPL_TRACE_API("%s conn_id=%d handle=0x%04x", __func__, conn_id, handle);
- p_buf->hdr.event = BTA_GATTC_API_CONFIRM_EVT;
- p_buf->hdr.layer_specific = conn_id;
- p_buf->handle = handle;
+ p_buf->hdr.event = BTA_GATTC_API_CONFIRM_EVT;
+ p_buf->hdr.layer_specific = conn_id;
+ p_buf->handle = handle;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
*
* Function BTA_GATTC_RegisterForNotifications
*
- * Description This function is called to register for notification of a service.
+ * Description This function is called to register for notification of a
+ *service.
*
* Parameters client_if - client interface.
* bda - target GATT server.
@@ -596,68 +590,60 @@
* Returns OK if registration succeed, otherwise failed.
*
******************************************************************************/
-tBTA_GATT_STATUS BTA_GATTC_RegisterForNotifications (tBTA_GATTC_IF client_if,
- const BD_ADDR bda, uint16_t handle)
-{
- tBTA_GATTC_RCB *p_clreg;
- tBTA_GATT_STATUS status = BTA_GATT_ILLEGAL_PARAMETER;
- uint8_t i;
+tBTA_GATT_STATUS BTA_GATTC_RegisterForNotifications(tBTA_GATTC_IF client_if,
+ const BD_ADDR bda,
+ uint16_t handle) {
+ tBTA_GATTC_RCB* p_clreg;
+ tBTA_GATT_STATUS status = BTA_GATT_ILLEGAL_PARAMETER;
+ uint8_t i;
- if (!handle)
- {
- APPL_TRACE_ERROR("deregistration failed, handle is 0");
- return status;
- }
-
- if ((p_clreg = bta_gattc_cl_get_regcb(client_if)) != NULL)
- {
- for (i = 0; i < BTA_GATTC_NOTIF_REG_MAX; i ++)
- {
- if ( p_clreg->notif_reg[i].in_use &&
- !memcmp(p_clreg->notif_reg[i].remote_bda, bda, BD_ADDR_LEN) &&
- p_clreg->notif_reg[i].handle == handle)
- {
- APPL_TRACE_WARNING("notification already registered");
- status = BTA_GATT_OK;
- break;
- }
- }
- if (status != BTA_GATT_OK)
- {
- for (i = 0; i < BTA_GATTC_NOTIF_REG_MAX; i ++)
- {
- if (!p_clreg->notif_reg[i].in_use)
- {
- memset((void *)&p_clreg->notif_reg[i], 0, sizeof(tBTA_GATTC_NOTIF_REG));
-
- p_clreg->notif_reg[i].in_use = true;
- memcpy(p_clreg->notif_reg[i].remote_bda, bda, BD_ADDR_LEN);
-
- p_clreg->notif_reg[i].handle = handle;
- status = BTA_GATT_OK;
- break;
- }
- }
- if (i == BTA_GATTC_NOTIF_REG_MAX)
- {
- status = BTA_GATT_NO_RESOURCES;
- APPL_TRACE_ERROR("Max Notification Reached, registration failed.");
- }
- }
- }
- else
- {
- APPL_TRACE_ERROR("Client_if: %d Not Registered", client_if);
- }
-
+ if (!handle) {
+ APPL_TRACE_ERROR("deregistration failed, handle is 0");
return status;
+ }
+
+ if ((p_clreg = bta_gattc_cl_get_regcb(client_if)) != NULL) {
+ for (i = 0; i < BTA_GATTC_NOTIF_REG_MAX; i++) {
+ if (p_clreg->notif_reg[i].in_use &&
+ !memcmp(p_clreg->notif_reg[i].remote_bda, bda, BD_ADDR_LEN) &&
+ p_clreg->notif_reg[i].handle == handle) {
+ APPL_TRACE_WARNING("notification already registered");
+ status = BTA_GATT_OK;
+ break;
+ }
+ }
+ if (status != BTA_GATT_OK) {
+ for (i = 0; i < BTA_GATTC_NOTIF_REG_MAX; i++) {
+ if (!p_clreg->notif_reg[i].in_use) {
+ memset((void*)&p_clreg->notif_reg[i], 0,
+ sizeof(tBTA_GATTC_NOTIF_REG));
+
+ p_clreg->notif_reg[i].in_use = true;
+ memcpy(p_clreg->notif_reg[i].remote_bda, bda, BD_ADDR_LEN);
+
+ p_clreg->notif_reg[i].handle = handle;
+ status = BTA_GATT_OK;
+ break;
+ }
+ }
+ if (i == BTA_GATTC_NOTIF_REG_MAX) {
+ status = BTA_GATT_NO_RESOURCES;
+ APPL_TRACE_ERROR("Max Notification Reached, registration failed.");
+ }
+ }
+ } else {
+ APPL_TRACE_ERROR("Client_if: %d Not Registered", client_if);
+ }
+
+ return status;
}
/*******************************************************************************
*
* Function BTA_GATTC_DeregisterForNotifications
*
- * Description This function is called to de-register for notification of a servbice.
+ * Description This function is called to de-register for notification of a
+ *servbice.
*
* Parameters client_if - client interface.
* remote_bda - target GATT server.
@@ -666,35 +652,38 @@
* Returns OK if deregistration succeed, otherwise failed.
*
******************************************************************************/
-tBTA_GATT_STATUS BTA_GATTC_DeregisterForNotifications (tBTA_GATTC_IF client_if,
- const BD_ADDR bda, uint16_t handle)
-{
- if (!handle) {
- APPL_TRACE_ERROR("%s: deregistration failed, handle is 0", __func__);
- return BTA_GATT_ILLEGAL_PARAMETER;
- }
+tBTA_GATT_STATUS BTA_GATTC_DeregisterForNotifications(tBTA_GATTC_IF client_if,
+ const BD_ADDR bda,
+ uint16_t handle) {
+ if (!handle) {
+ APPL_TRACE_ERROR("%s: deregistration failed, handle is 0", __func__);
+ return BTA_GATT_ILLEGAL_PARAMETER;
+ }
- tBTA_GATTC_RCB *p_clreg = bta_gattc_cl_get_regcb(client_if);
- if (p_clreg == NULL) {
- APPL_TRACE_ERROR("%s client_if: %d not registered bd_addr:%02x:%02x:%02x:%02x:%02x:%02x",
- __func__, client_if, bda[0], bda[1], bda[2], bda[3], bda[4], bda[5]);
- return BTA_GATT_ILLEGAL_PARAMETER;
- }
+ tBTA_GATTC_RCB* p_clreg = bta_gattc_cl_get_regcb(client_if);
+ if (p_clreg == NULL) {
+ APPL_TRACE_ERROR(
+ "%s client_if: %d not registered bd_addr:%02x:%02x:%02x:%02x:%02x:%02x",
+ __func__, client_if, bda[0], bda[1], bda[2], bda[3], bda[4], bda[5]);
+ return BTA_GATT_ILLEGAL_PARAMETER;
+ }
- for (int i = 0; i < BTA_GATTC_NOTIF_REG_MAX; i ++) {
- if (p_clreg->notif_reg[i].in_use &&
- !memcmp(p_clreg->notif_reg[i].remote_bda, bda, BD_ADDR_LEN) &&
- p_clreg->notif_reg[i].handle == handle) {
- APPL_TRACE_DEBUG("%s deregistered bd_addr:%02x:%02x:%02x:%02x:%02x:%02x",
- __func__, bda[0], bda[1], bda[2], bda[3], bda[4], bda[5]);
- memset(&p_clreg->notif_reg[i], 0, sizeof(tBTA_GATTC_NOTIF_REG));
- return BTA_GATT_OK;
- }
+ for (int i = 0; i < BTA_GATTC_NOTIF_REG_MAX; i++) {
+ if (p_clreg->notif_reg[i].in_use &&
+ !memcmp(p_clreg->notif_reg[i].remote_bda, bda, BD_ADDR_LEN) &&
+ p_clreg->notif_reg[i].handle == handle) {
+ APPL_TRACE_DEBUG("%s deregistered bd_addr:%02x:%02x:%02x:%02x:%02x:%02x",
+ __func__, bda[0], bda[1], bda[2], bda[3], bda[4],
+ bda[5]);
+ memset(&p_clreg->notif_reg[i], 0, sizeof(tBTA_GATTC_NOTIF_REG));
+ return BTA_GATT_OK;
}
+ }
- APPL_TRACE_ERROR("%s registration not found bd_addr:%02x:%02x:%02x:%02x:%02x:%02x",
- __func__, bda[0], bda[1], bda[2], bda[3], bda[4], bda[5]);
- return BTA_GATT_ERROR;
+ APPL_TRACE_ERROR(
+ "%s registration not found bd_addr:%02x:%02x:%02x:%02x:%02x:%02x",
+ __func__, bda[0], bda[1], bda[2], bda[3], bda[4], bda[5]);
+ return BTA_GATT_ERROR;
}
/*******************************************************************************
@@ -708,15 +697,14 @@
* Returns void
*
******************************************************************************/
-void BTA_GATTC_Refresh(const BD_ADDR remote_bda)
-{
- tBTA_GATTC_API_OPEN *p_buf =
- (tBTA_GATTC_API_OPEN *)osi_malloc(sizeof(tBTA_GATTC_API_OPEN));
+void BTA_GATTC_Refresh(const BD_ADDR remote_bda) {
+ tBTA_GATTC_API_OPEN* p_buf =
+ (tBTA_GATTC_API_OPEN*)osi_malloc(sizeof(tBTA_GATTC_API_OPEN));
- p_buf->hdr.event = BTA_GATTC_API_REFRESH_EVT;
- memcpy(p_buf->remote_bda, remote_bda, BD_ADDR_LEN);
+ p_buf->hdr.event = BTA_GATTC_API_REFRESH_EVT;
+ memcpy(p_buf->remote_bda, remote_bda, BD_ADDR_LEN);
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
#endif /* BTA_GATT_INCLUDED */
diff --git a/bta/gatt/bta_gattc_cache.cc b/bta/gatt/bta_gattc_cache.cc
index b4530bc..31280c5 100644
--- a/bta/gatt/bta_gattc_cache.cc
+++ b/bta/gatt/bta_gattc_cache.cc
@@ -34,78 +34,80 @@
#include <string.h>
#include <unistd.h>
+#include "bt_common.h"
#include "bta_gattc_int.h"
#include "bta_sys.h"
#include "btm_api.h"
#include "btm_ble_api.h"
#include "btm_int.h"
-#include "bt_common.h"
#include "osi/include/log.h"
#include "osi/include/osi.h"
#include "sdp_api.h"
#include "sdpdefs.h"
#include "utl.h"
-static void bta_gattc_cache_write(BD_ADDR server_bda, uint16_t num_attr, tBTA_GATTC_NV_ATTR *attr);
-static void bta_gattc_char_dscpt_disc_cmpl(uint16_t conn_id, tBTA_GATTC_SERV *p_srvc_cb);
-static tBTA_GATT_STATUS bta_gattc_sdp_service_disc(uint16_t conn_id, tBTA_GATTC_SERV *p_server_cb);
-extern void bta_to_btif_uuid(bt_uuid_t *p_dest, tBT_UUID *p_src);
-tBTA_GATTC_SERVICE* bta_gattc_find_matching_service(const list_t *services, uint16_t handle);
-tBTA_GATTC_DESCRIPTOR* bta_gattc_get_descriptor_srcb(tBTA_GATTC_SERV *p_srcb, uint16_t handle);
-tBTA_GATTC_CHARACTERISTIC* bta_gattc_get_characteristic_srcb(tBTA_GATTC_SERV *p_srcb, uint16_t handle);
+static void bta_gattc_cache_write(BD_ADDR server_bda, uint16_t num_attr,
+ tBTA_GATTC_NV_ATTR* attr);
+static void bta_gattc_char_dscpt_disc_cmpl(uint16_t conn_id,
+ tBTA_GATTC_SERV* p_srvc_cb);
+static tBTA_GATT_STATUS bta_gattc_sdp_service_disc(
+ uint16_t conn_id, tBTA_GATTC_SERV* p_server_cb);
+extern void bta_to_btif_uuid(bt_uuid_t* p_dest, tBT_UUID* p_src);
+tBTA_GATTC_SERVICE* bta_gattc_find_matching_service(const list_t* services,
+ uint16_t handle);
+tBTA_GATTC_DESCRIPTOR* bta_gattc_get_descriptor_srcb(tBTA_GATTC_SERV* p_srcb,
+ uint16_t handle);
+tBTA_GATTC_CHARACTERISTIC* bta_gattc_get_characteristic_srcb(
+ tBTA_GATTC_SERV* p_srcb, uint16_t handle);
#define BTA_GATT_SDP_DB_SIZE 4096
#define GATT_CACHE_PREFIX "/data/misc/bluetooth/gatt_cache_"
#define GATT_CACHE_VERSION 2
-static void bta_gattc_generate_cache_file_name(char *buffer,
- size_t buffer_len, BD_ADDR bda)
-{
- snprintf(buffer, buffer_len, "%s%02x%02x%02x%02x%02x%02x", GATT_CACHE_PREFIX,
- bda[0], bda[1], bda[2], bda[3], bda[4], bda[5]);
+static void bta_gattc_generate_cache_file_name(char* buffer, size_t buffer_len,
+ BD_ADDR bda) {
+ snprintf(buffer, buffer_len, "%s%02x%02x%02x%02x%02x%02x", GATT_CACHE_PREFIX,
+ bda[0], bda[1], bda[2], bda[3], bda[4], bda[5]);
}
/*****************************************************************************
* Constants and data types
****************************************************************************/
-typedef struct
-{
- tSDP_DISCOVERY_DB *p_sdp_db;
- uint16_t sdp_conn_id;
+typedef struct {
+ tSDP_DISCOVERY_DB* p_sdp_db;
+ uint16_t sdp_conn_id;
} tBTA_GATTC_CB_DATA;
#if (BTA_GATT_DEBUG == TRUE)
-static char *bta_gattc_attr_type[] =
-{
+static char* bta_gattc_attr_type[] = {
"I", /* Included Service */
"C", /* Characteristic */
- "D" /* Characteristic Descriptor */
+ "D" /* Characteristic Descriptor */
};
/* utility functions */
-bool display_cache_attribute(void *data, void *context) {
- tBTA_GATTC_CACHE_ATTR *p_attr = data;
- APPL_TRACE_ERROR("\t Attr handle[%d] uuid[0x%04x] type[%s] prop[0x%1x]",
- p_attr->handle, p_attr->uuid.uu.uuid16,
- bta_gattc_attr_type[p_attr->attr_type], p_attr->property);
- return true;
+bool display_cache_attribute(void* data, void* context) {
+ tBTA_GATTC_CACHE_ATTR* p_attr = data;
+ APPL_TRACE_ERROR("\t Attr handle[%d] uuid[0x%04x] type[%s] prop[0x%1x]",
+ p_attr->handle, p_attr->uuid.uu.uuid16,
+ bta_gattc_attr_type[p_attr->attr_type], p_attr->property);
+ return true;
}
-bool display_cache_service(void *data, void *context) {
- tBTA_GATTC_SERVICE *p_cur_srvc = data;
- APPL_TRACE_ERROR("Service: handle[%d ~ %d] %s[0x%04x] inst[%d]",
- p_cur_srvc->s_handle, p_cur_srvc->e_handle,
- ((p_cur_srvc->uuid.len == 2) ? "uuid16" : "uuid128"),
- p_cur_srvc->uuid.uu.uuid16,
- p_cur_srvc->handle);
+bool display_cache_service(void* data, void* context) {
+ tBTA_GATTC_SERVICE* p_cur_srvc = data;
+ APPL_TRACE_ERROR("Service: handle[%d ~ %d] %s[0x%04x] inst[%d]",
+ p_cur_srvc->s_handle, p_cur_srvc->e_handle,
+ ((p_cur_srvc->uuid.len == 2) ? "uuid16" : "uuid128"),
+ p_cur_srvc->uuid.uu.uuid16, p_cur_srvc->handle);
- if (p_cur_srvc->characteristics != NULL) {
- list_foreach(p_cur_srvc->characteristics, display_cache_attribute, NULL);
- }
+ if (p_cur_srvc->characteristics != NULL) {
+ list_foreach(p_cur_srvc->characteristics, display_cache_attribute, NULL);
+ }
- return true;
+ return true;
}
/*******************************************************************************
@@ -117,12 +119,11 @@
* Returns none.
*
******************************************************************************/
-static void bta_gattc_display_cache_server(list_t *p_cache)
-{
- APPL_TRACE_ERROR("<================Start Server Cache =============>");
- list_foreach(p_cache, display_cache_service, NULL);
- APPL_TRACE_ERROR("<================End Server Cache =============>");
- APPL_TRACE_ERROR(" ");
+static void bta_gattc_display_cache_server(list_t* p_cache) {
+ APPL_TRACE_ERROR("<================Start Server Cache =============>");
+ list_foreach(p_cache, display_cache_service, NULL);
+ APPL_TRACE_ERROR("<================End Server Cache =============>");
+ APPL_TRACE_ERROR(" ");
}
/*******************************************************************************
@@ -134,58 +135,57 @@
* Returns none.
*
******************************************************************************/
-static void bta_gattc_display_explore_record(tBTA_GATTC_ATTR_REC *p_rec, uint8_t num_rec)
-{
- uint8_t i;
- tBTA_GATTC_ATTR_REC *pp = p_rec;
+static void bta_gattc_display_explore_record(tBTA_GATTC_ATTR_REC* p_rec,
+ uint8_t num_rec) {
+ uint8_t i;
+ tBTA_GATTC_ATTR_REC* pp = p_rec;
- APPL_TRACE_ERROR("<================Start Explore Queue =============>");
- for (i = 0; i < num_rec; i ++, pp ++)
- {
- APPL_TRACE_ERROR("\t rec[%d] uuid[0x%04x] s_handle[%d] e_handle[%d] is_primary[%d]",
- i + 1, pp->uuid.uu.uuid16, pp->s_handle, pp->e_handle, pp->is_primary);
- }
- APPL_TRACE_ERROR("<================ End Explore Queue =============>");
- APPL_TRACE_ERROR(" ");
-
+ APPL_TRACE_ERROR("<================Start Explore Queue =============>");
+ for (i = 0; i < num_rec; i++, pp++) {
+ APPL_TRACE_ERROR(
+ "\t rec[%d] uuid[0x%04x] s_handle[%d] e_handle[%d] is_primary[%d]",
+ i + 1, pp->uuid.uu.uuid16, pp->s_handle, pp->e_handle, pp->is_primary);
+ }
+ APPL_TRACE_ERROR("<================ End Explore Queue =============>");
+ APPL_TRACE_ERROR(" ");
}
-#endif /* BTA_GATT_DEBUG == TRUE */
+#endif /* BTA_GATT_DEBUG == TRUE */
/*******************************************************************************
*
* Function bta_gattc_init_cache
*
- * Description Initialize the database cache and discovery related resources.
+ * Description Initialize the database cache and discovery related
+ *resources.
*
* Returns status
*
******************************************************************************/
-tBTA_GATT_STATUS bta_gattc_init_cache(tBTA_GATTC_SERV *p_srvc_cb)
-{
- if (p_srvc_cb->p_srvc_cache != NULL) {
- list_free(p_srvc_cb->p_srvc_cache);
- p_srvc_cb->p_srvc_cache = NULL;
- }
+tBTA_GATT_STATUS bta_gattc_init_cache(tBTA_GATTC_SERV* p_srvc_cb) {
+ if (p_srvc_cb->p_srvc_cache != NULL) {
+ list_free(p_srvc_cb->p_srvc_cache);
+ p_srvc_cb->p_srvc_cache = NULL;
+ }
- osi_free(p_srvc_cb->p_srvc_list);
- p_srvc_cb->p_srvc_list =
- (tBTA_GATTC_ATTR_REC *)osi_malloc(BTA_GATTC_ATTR_LIST_SIZE);
- p_srvc_cb->total_srvc = 0;
- p_srvc_cb->cur_srvc_idx = 0;
- p_srvc_cb->cur_char_idx = 0;
- p_srvc_cb->next_avail_idx = 0;
+ osi_free(p_srvc_cb->p_srvc_list);
+ p_srvc_cb->p_srvc_list =
+ (tBTA_GATTC_ATTR_REC*)osi_malloc(BTA_GATTC_ATTR_LIST_SIZE);
+ p_srvc_cb->total_srvc = 0;
+ p_srvc_cb->cur_srvc_idx = 0;
+ p_srvc_cb->cur_char_idx = 0;
+ p_srvc_cb->next_avail_idx = 0;
- return BTA_GATT_OK;
+ return BTA_GATT_OK;
}
-static void characteristic_free(void *ptr) {
- tBTA_GATTC_CHARACTERISTIC *p_char = (tBTA_GATTC_CHARACTERISTIC*)ptr;
+static void characteristic_free(void* ptr) {
+ tBTA_GATTC_CHARACTERISTIC* p_char = (tBTA_GATTC_CHARACTERISTIC*)ptr;
list_free(p_char->descriptors);
osi_free(p_char);
}
-static void service_free(void *ptr) {
- tBTA_GATTC_SERVICE *srvc = (tBTA_GATTC_SERVICE*)ptr;
+static void service_free(void* ptr) {
+ tBTA_GATTC_SERVICE* srvc = (tBTA_GATTC_SERVICE*)ptr;
list_free(srvc->characteristics);
list_free(srvc->included_svc);
osi_free(srvc);
@@ -200,70 +200,72 @@
* Returns status
*
******************************************************************************/
-static tBTA_GATT_STATUS bta_gattc_add_srvc_to_cache(tBTA_GATTC_SERV *p_srvc_cb,
- uint16_t s_handle, uint16_t e_handle,
- tBT_UUID *p_uuid,
- bool is_primary)
-{
+static tBTA_GATT_STATUS bta_gattc_add_srvc_to_cache(tBTA_GATTC_SERV* p_srvc_cb,
+ uint16_t s_handle,
+ uint16_t e_handle,
+ tBT_UUID* p_uuid,
+ bool is_primary) {
#if (BTA_GATT_DEBUG == TRUE)
- APPL_TRACE_DEBUG("Add a service into Service");
+ APPL_TRACE_DEBUG("Add a service into Service");
#endif
- tBTA_GATTC_SERVICE *p_new_srvc = (tBTA_GATTC_SERVICE*)osi_malloc(sizeof(tBTA_GATTC_SERVICE));
+ tBTA_GATTC_SERVICE* p_new_srvc =
+ (tBTA_GATTC_SERVICE*)osi_malloc(sizeof(tBTA_GATTC_SERVICE));
- /* update service information */
- p_new_srvc->s_handle = s_handle;
- p_new_srvc->e_handle = e_handle;
- p_new_srvc->is_primary = is_primary;
- memcpy(&p_new_srvc->uuid, p_uuid, sizeof(tBT_UUID));
- p_new_srvc->handle = s_handle;
- p_new_srvc->characteristics = list_new(characteristic_free);
- p_new_srvc->included_svc = list_new(osi_free);
+ /* update service information */
+ p_new_srvc->s_handle = s_handle;
+ p_new_srvc->e_handle = e_handle;
+ p_new_srvc->is_primary = is_primary;
+ memcpy(&p_new_srvc->uuid, p_uuid, sizeof(tBT_UUID));
+ p_new_srvc->handle = s_handle;
+ p_new_srvc->characteristics = list_new(characteristic_free);
+ p_new_srvc->included_svc = list_new(osi_free);
- if (p_srvc_cb->p_srvc_cache == NULL) {
- p_srvc_cb->p_srvc_cache = list_new(service_free);
- }
+ if (p_srvc_cb->p_srvc_cache == NULL) {
+ p_srvc_cb->p_srvc_cache = list_new(service_free);
+ }
- list_append(p_srvc_cb->p_srvc_cache, p_new_srvc);
- return BTA_GATT_OK;
+ list_append(p_srvc_cb->p_srvc_cache, p_new_srvc);
+ return BTA_GATT_OK;
}
-static tBTA_GATT_STATUS bta_gattc_add_char_to_cache(tBTA_GATTC_SERV *p_srvc_cb,
+static tBTA_GATT_STATUS bta_gattc_add_char_to_cache(tBTA_GATTC_SERV* p_srvc_cb,
uint16_t attr_handle,
uint16_t value_handle,
- tBT_UUID *p_uuid,
- uint8_t property)
-{
+ tBT_UUID* p_uuid,
+ uint8_t property) {
#if (BTA_GATT_DEBUG == TRUE)
- APPL_TRACE_DEBUG("%s: Add a characteristic into Service", __func__);
- APPL_TRACE_DEBUG("handle=%d uuid16=0x%x property=0x%x",
- value_handle, p_uuid->uu.uuid16, property);
+ APPL_TRACE_DEBUG("%s: Add a characteristic into Service", __func__);
+ APPL_TRACE_DEBUG("handle=%d uuid16=0x%x property=0x%x", value_handle,
+ p_uuid->uu.uuid16, property);
#endif
- tBTA_GATTC_SERVICE *service = bta_gattc_find_matching_service(p_srvc_cb->p_srvc_cache, attr_handle);
- if (!service) {
- APPL_TRACE_ERROR("Illegal action to add char/descr/incl srvc for non-existing service!");
- return GATT_WRONG_STATE;
- }
+ tBTA_GATTC_SERVICE* service =
+ bta_gattc_find_matching_service(p_srvc_cb->p_srvc_cache, attr_handle);
+ if (!service) {
+ APPL_TRACE_ERROR(
+ "Illegal action to add char/descr/incl srvc for non-existing service!");
+ return GATT_WRONG_STATE;
+ }
- /* TODO(jpawlowski): We should use attribute handle, not value handle to refer to characteristic.
- This is just a temporary workaround.
- */
- if (service->e_handle < value_handle)
- service->e_handle = value_handle;
+ /* TODO(jpawlowski): We should use attribute handle, not value handle to refer
+ to characteristic.
+ This is just a temporary workaround.
+ */
+ if (service->e_handle < value_handle) service->e_handle = value_handle;
- tBTA_GATTC_CHARACTERISTIC *characteristic = (tBTA_GATTC_CHARACTERISTIC*)
- osi_malloc(sizeof(tBTA_GATTC_CHARACTERISTIC));
+ tBTA_GATTC_CHARACTERISTIC* characteristic =
+ (tBTA_GATTC_CHARACTERISTIC*)osi_malloc(sizeof(tBTA_GATTC_CHARACTERISTIC));
- characteristic->handle = value_handle;
- characteristic->properties = property;
- characteristic->descriptors = list_new(osi_free);
- memcpy(&characteristic->uuid, p_uuid, sizeof(tBT_UUID));
+ characteristic->handle = value_handle;
+ characteristic->properties = property;
+ characteristic->descriptors = list_new(osi_free);
+ memcpy(&characteristic->uuid, p_uuid, sizeof(tBT_UUID));
- characteristic->service = service;
- list_append(service->characteristics, characteristic);
+ characteristic->service = service;
+ list_append(service->characteristics, characteristic);
- return BTA_GATT_OK;
+ return BTA_GATT_OK;
}
/*******************************************************************************
@@ -275,63 +277,65 @@
* Returns status
*
******************************************************************************/
-static tBTA_GATT_STATUS bta_gattc_add_attr_to_cache(tBTA_GATTC_SERV *p_srvc_cb,
- uint16_t handle,
- tBT_UUID *p_uuid,
- uint8_t property,
- uint16_t incl_srvc_s_handle,
- tBTA_GATTC_ATTR_TYPE type)
-{
+static tBTA_GATT_STATUS bta_gattc_add_attr_to_cache(
+ tBTA_GATTC_SERV* p_srvc_cb, uint16_t handle, tBT_UUID* p_uuid,
+ uint8_t property, uint16_t incl_srvc_s_handle, tBTA_GATTC_ATTR_TYPE type) {
#if (BTA_GATT_DEBUG == TRUE)
- APPL_TRACE_DEBUG("%s: Add a [%s] into Service", __func__, bta_gattc_attr_type[type]);
- APPL_TRACE_DEBUG("handle=%d uuid16=0x%x property=0x%x type=%d",
- handle, p_uuid->uu.uuid16, property, type);
+ APPL_TRACE_DEBUG("%s: Add a [%s] into Service", __func__,
+ bta_gattc_attr_type[type]);
+ APPL_TRACE_DEBUG("handle=%d uuid16=0x%x property=0x%x type=%d", handle,
+ p_uuid->uu.uuid16, property, type);
#endif
- tBTA_GATTC_SERVICE *service = bta_gattc_find_matching_service(p_srvc_cb->p_srvc_cache, handle);
- if (!service) {
- APPL_TRACE_ERROR("Illegal action to add char/descr/incl srvc for non-existing service!");
- return GATT_WRONG_STATE;
+ tBTA_GATTC_SERVICE* service =
+ bta_gattc_find_matching_service(p_srvc_cb->p_srvc_cache, handle);
+ if (!service) {
+ APPL_TRACE_ERROR(
+ "Illegal action to add char/descr/incl srvc for non-existing service!");
+ return GATT_WRONG_STATE;
+ }
+
+ if (type == BTA_GATTC_ATTR_TYPE_INCL_SRVC) {
+ tBTA_GATTC_INCLUDED_SVC* isvc =
+ (tBTA_GATTC_INCLUDED_SVC*)osi_malloc(sizeof(tBTA_GATTC_INCLUDED_SVC));
+
+ isvc->handle = handle;
+ memcpy(&isvc->uuid, p_uuid, sizeof(tBT_UUID));
+
+ isvc->owning_service = service;
+ isvc->included_service = bta_gattc_find_matching_service(
+ p_srvc_cb->p_srvc_cache, incl_srvc_s_handle);
+ if (!isvc->included_service) {
+ APPL_TRACE_ERROR(
+ "%s: Illegal action to add non-existing included service!", __func__);
+ osi_free(isvc);
+ return GATT_WRONG_STATE;
}
- if (type == BTA_GATTC_ATTR_TYPE_INCL_SRVC) {
- tBTA_GATTC_INCLUDED_SVC *isvc = (tBTA_GATTC_INCLUDED_SVC*)
- osi_malloc(sizeof(tBTA_GATTC_INCLUDED_SVC));
+ list_append(service->included_svc, isvc);
+ } else if (type == BTA_GATTC_ATTR_TYPE_CHAR_DESCR) {
+ tBTA_GATTC_DESCRIPTOR* descriptor =
+ (tBTA_GATTC_DESCRIPTOR*)osi_malloc(sizeof(tBTA_GATTC_DESCRIPTOR));
- isvc->handle = handle;
- memcpy(&isvc->uuid, p_uuid, sizeof(tBT_UUID));
+ descriptor->handle = handle;
+ memcpy(&descriptor->uuid, p_uuid, sizeof(tBT_UUID));
- isvc->owning_service = service;
- isvc->included_service = bta_gattc_find_matching_service(
- p_srvc_cb->p_srvc_cache, incl_srvc_s_handle);
- if (!isvc->included_service) {
- APPL_TRACE_ERROR("%s: Illegal action to add non-existing included service!", __func__);
- osi_free(isvc);
- return GATT_WRONG_STATE;
- }
-
- list_append(service->included_svc, isvc);
- } else if (type == BTA_GATTC_ATTR_TYPE_CHAR_DESCR) {
- tBTA_GATTC_DESCRIPTOR *descriptor = (tBTA_GATTC_DESCRIPTOR*)
- osi_malloc(sizeof(tBTA_GATTC_DESCRIPTOR));
-
- descriptor->handle = handle;
- memcpy(&descriptor->uuid, p_uuid, sizeof(tBT_UUID));
-
- if (service->characteristics == NULL) {
- APPL_TRACE_ERROR("%s: Illegal action to add descriptor before adding a characteristic!",
- __func__);
- osi_free(descriptor);
- return GATT_WRONG_STATE;
- }
-
- tBTA_GATTC_CHARACTERISTIC *char_node = (tBTA_GATTC_CHARACTERISTIC*)
- list_back(service->characteristics);
-
- descriptor->characteristic = char_node;
- list_append(char_node->descriptors, descriptor);
+ if (service->characteristics == NULL) {
+ APPL_TRACE_ERROR(
+ "%s: Illegal action to add descriptor before adding a "
+ "characteristic!",
+ __func__);
+ osi_free(descriptor);
+ return GATT_WRONG_STATE;
}
- return BTA_GATT_OK;
+
+ tBTA_GATTC_CHARACTERISTIC* char_node =
+ (tBTA_GATTC_CHARACTERISTIC*)list_back(service->characteristics);
+
+ descriptor->characteristic = char_node;
+ list_append(char_node->descriptors, descriptor);
+ }
+ return BTA_GATT_OK;
}
/*******************************************************************************
@@ -343,26 +347,24 @@
* Returns None.
*
******************************************************************************/
-void bta_gattc_get_disc_range(tBTA_GATTC_SERV *p_srvc_cb, uint16_t *p_s_hdl, uint16_t *p_e_hdl, bool is_srvc)
-{
- tBTA_GATTC_ATTR_REC *p_rec = NULL;
+void bta_gattc_get_disc_range(tBTA_GATTC_SERV* p_srvc_cb, uint16_t* p_s_hdl,
+ uint16_t* p_e_hdl, bool is_srvc) {
+ tBTA_GATTC_ATTR_REC* p_rec = NULL;
- if (is_srvc)
- {
- p_rec = p_srvc_cb->p_srvc_list + p_srvc_cb->cur_srvc_idx;
- *p_s_hdl = p_rec->s_handle;
- }
- else
- {
- p_rec = p_srvc_cb->p_srvc_list + p_srvc_cb->cur_char_idx;
- *p_s_hdl = p_rec->s_handle + 1;
- }
+ if (is_srvc) {
+ p_rec = p_srvc_cb->p_srvc_list + p_srvc_cb->cur_srvc_idx;
+ *p_s_hdl = p_rec->s_handle;
+ } else {
+ p_rec = p_srvc_cb->p_srvc_list + p_srvc_cb->cur_char_idx;
+ *p_s_hdl = p_rec->s_handle + 1;
+ }
- *p_e_hdl = p_rec->e_handle;
+ *p_e_hdl = p_rec->e_handle;
#if (BTA_GATT_DEBUG == TRUE)
- APPL_TRACE_DEBUG("discover range [%d ~ %d]",p_rec->s_handle, p_rec->e_handle);
+ APPL_TRACE_DEBUG("discover range [%d ~ %d]", p_rec->s_handle,
+ p_rec->e_handle);
#endif
- return;
+ return;
}
/*******************************************************************************
*
@@ -373,21 +375,20 @@
* Returns status of the operation.
*
******************************************************************************/
-tBTA_GATT_STATUS bta_gattc_discover_pri_service(uint16_t conn_id, tBTA_GATTC_SERV *p_server_cb,
- uint8_t disc_type)
-{
- tBTA_GATTC_CLCB *p_clcb = bta_gattc_find_clcb_by_conn_id(conn_id);
- tBTA_GATT_STATUS status = BTA_GATT_ERROR;
+tBTA_GATT_STATUS bta_gattc_discover_pri_service(uint16_t conn_id,
+ tBTA_GATTC_SERV* p_server_cb,
+ uint8_t disc_type) {
+ tBTA_GATTC_CLCB* p_clcb = bta_gattc_find_clcb_by_conn_id(conn_id);
+ tBTA_GATT_STATUS status = BTA_GATT_ERROR;
- if (p_clcb)
- {
- if (p_clcb->transport == BTA_TRANSPORT_LE)
- status = bta_gattc_discover_procedure(conn_id, p_server_cb, disc_type);
- else
- status = bta_gattc_sdp_service_disc(conn_id, p_server_cb);
- }
+ if (p_clcb) {
+ if (p_clcb->transport == BTA_TRANSPORT_LE)
+ status = bta_gattc_discover_procedure(conn_id, p_server_cb, disc_type);
+ else
+ status = bta_gattc_sdp_service_disc(conn_id, p_server_cb);
+ }
- return status;
+ return status;
}
/*******************************************************************************
*
@@ -398,33 +399,28 @@
* Returns status of the operation.
*
******************************************************************************/
-tBTA_GATT_STATUS bta_gattc_discover_procedure(uint16_t conn_id, tBTA_GATTC_SERV *p_server_cb,
- uint8_t disc_type)
-{
- tGATT_DISC_PARAM param;
- bool is_service = true;
+tBTA_GATT_STATUS bta_gattc_discover_procedure(uint16_t conn_id,
+ tBTA_GATTC_SERV* p_server_cb,
+ uint8_t disc_type) {
+ tGATT_DISC_PARAM param;
+ bool is_service = true;
- memset(¶m, 0, sizeof(tGATT_DISC_PARAM));
+ memset(¶m, 0, sizeof(tGATT_DISC_PARAM));
- if (disc_type == GATT_DISC_SRVC_ALL || disc_type == GATT_DISC_SRVC_BY_UUID)
- {
- param.s_handle = 1;
- param.e_handle = 0xFFFF;
+ if (disc_type == GATT_DISC_SRVC_ALL || disc_type == GATT_DISC_SRVC_BY_UUID) {
+ param.s_handle = 1;
+ param.e_handle = 0xFFFF;
+ } else {
+ if (disc_type == GATT_DISC_CHAR_DSCPT) is_service = false;
+
+ bta_gattc_get_disc_range(p_server_cb, ¶m.s_handle, ¶m.e_handle,
+ is_service);
+
+ if (param.s_handle > param.e_handle) {
+ return GATT_ERROR;
}
- else
- {
- if (disc_type == GATT_DISC_CHAR_DSCPT)
- is_service = false;
-
- bta_gattc_get_disc_range(p_server_cb, ¶m.s_handle, ¶m.e_handle, is_service);
-
- if (param.s_handle > param.e_handle)
- {
- return GATT_ERROR;
- }
- }
- return GATTC_Discover (conn_id, disc_type, ¶m);
-
+ }
+ return GATTC_Discover(conn_id, disc_type, ¶m);
}
/*******************************************************************************
*
@@ -435,9 +431,9 @@
* Returns status of the operation.
*
******************************************************************************/
-tBTA_GATT_STATUS bta_gattc_start_disc_include_srvc(uint16_t conn_id, tBTA_GATTC_SERV *p_srvc_cb)
-{
- return bta_gattc_discover_procedure(conn_id, p_srvc_cb, GATT_DISC_INC_SRVC);
+tBTA_GATT_STATUS bta_gattc_start_disc_include_srvc(uint16_t conn_id,
+ tBTA_GATTC_SERV* p_srvc_cb) {
+ return bta_gattc_discover_procedure(conn_id, p_srvc_cb, GATT_DISC_INC_SRVC);
}
/*******************************************************************************
*
@@ -448,11 +444,11 @@
* Returns status of the operation.
*
******************************************************************************/
-tBTA_GATT_STATUS bta_gattc_start_disc_char(uint16_t conn_id, tBTA_GATTC_SERV *p_srvc_cb)
-{
- p_srvc_cb->total_char = 0;
+tBTA_GATT_STATUS bta_gattc_start_disc_char(uint16_t conn_id,
+ tBTA_GATTC_SERV* p_srvc_cb) {
+ p_srvc_cb->total_char = 0;
- return bta_gattc_discover_procedure(conn_id, p_srvc_cb, GATT_DISC_CHAR);
+ return bta_gattc_discover_procedure(conn_id, p_srvc_cb, GATT_DISC_CHAR);
}
/*******************************************************************************
*
@@ -463,13 +459,13 @@
* Returns none.
*
******************************************************************************/
-void bta_gattc_start_disc_char_dscp(uint16_t conn_id, tBTA_GATTC_SERV *p_srvc_cb)
-{
- APPL_TRACE_DEBUG("starting discover characteristics descriptor");
+void bta_gattc_start_disc_char_dscp(uint16_t conn_id,
+ tBTA_GATTC_SERV* p_srvc_cb) {
+ APPL_TRACE_DEBUG("starting discover characteristics descriptor");
- if (bta_gattc_discover_procedure(conn_id, p_srvc_cb, GATT_DISC_CHAR_DSCPT) != 0)
- bta_gattc_char_dscpt_disc_cmpl(conn_id, p_srvc_cb);
-
+ if (bta_gattc_discover_procedure(conn_id, p_srvc_cb, GATT_DISC_CHAR_DSCPT) !=
+ 0)
+ bta_gattc_char_dscpt_disc_cmpl(conn_id, p_srvc_cb);
}
/*******************************************************************************
*
@@ -480,49 +476,44 @@
* Returns status
*
******************************************************************************/
-static void bta_gattc_explore_srvc(uint16_t conn_id, tBTA_GATTC_SERV *p_srvc_cb)
-{
- tBTA_GATTC_ATTR_REC *p_rec = p_srvc_cb->p_srvc_list + p_srvc_cb->cur_srvc_idx;
- tBTA_GATTC_CLCB *p_clcb = bta_gattc_find_clcb_by_conn_id(conn_id);
+static void bta_gattc_explore_srvc(uint16_t conn_id,
+ tBTA_GATTC_SERV* p_srvc_cb) {
+ tBTA_GATTC_ATTR_REC* p_rec = p_srvc_cb->p_srvc_list + p_srvc_cb->cur_srvc_idx;
+ tBTA_GATTC_CLCB* p_clcb = bta_gattc_find_clcb_by_conn_id(conn_id);
- APPL_TRACE_DEBUG("Start service discovery: srvc_idx = %d", p_srvc_cb->cur_srvc_idx);
+ APPL_TRACE_DEBUG("Start service discovery: srvc_idx = %d",
+ p_srvc_cb->cur_srvc_idx);
- p_srvc_cb->cur_char_idx = p_srvc_cb->next_avail_idx = p_srvc_cb->total_srvc;
+ p_srvc_cb->cur_char_idx = p_srvc_cb->next_avail_idx = p_srvc_cb->total_srvc;
- if (p_clcb == NULL)
- {
- APPL_TRACE_ERROR("unknown connection ID");
- return;
+ if (p_clcb == NULL) {
+ APPL_TRACE_ERROR("unknown connection ID");
+ return;
+ }
+ /* start expore a service if there is service not been explored */
+ if (p_srvc_cb->cur_srvc_idx < p_srvc_cb->total_srvc) {
+ /* add the first service into cache */
+ if (bta_gattc_add_srvc_to_cache(p_srvc_cb, p_rec->s_handle, p_rec->e_handle,
+ &p_rec->uuid, p_rec->is_primary) == 0) {
+ /* start discovering included services */
+ bta_gattc_start_disc_include_srvc(conn_id, p_srvc_cb);
+ return;
}
- /* start expore a service if there is service not been explored */
- if (p_srvc_cb->cur_srvc_idx < p_srvc_cb->total_srvc)
- {
- /* add the first service into cache */
- if (bta_gattc_add_srvc_to_cache (p_srvc_cb,
- p_rec->s_handle,
- p_rec->e_handle,
- &p_rec->uuid,
- p_rec->is_primary) == 0)
- {
- /* start discovering included services */
- bta_gattc_start_disc_include_srvc(conn_id, p_srvc_cb);
- return;
- }
- }
- /* no service found at all, the end of server discovery*/
- LOG_WARN(LOG_TAG, "%s no more services found", __func__);
+ }
+ /* no service found at all, the end of server discovery*/
+ LOG_WARN(LOG_TAG, "%s no more services found", __func__);
#if (BTA_GATT_DEBUG == TRUE)
- bta_gattc_display_cache_server(p_srvc_cb->p_srvc_cache);
+ bta_gattc_display_cache_server(p_srvc_cb->p_srvc_cache);
#endif
- /* save cache to NV */
- p_clcb->p_srcb->state = BTA_GATTC_SERV_SAVE;
+ /* save cache to NV */
+ p_clcb->p_srcb->state = BTA_GATTC_SERV_SAVE;
- if (btm_sec_is_a_bonded_dev(p_srvc_cb->server_bda)) {
- bta_gattc_cache_save(p_clcb->p_srcb, p_clcb->bta_conn_id);
- }
+ if (btm_sec_is_a_bonded_dev(p_srvc_cb->server_bda)) {
+ bta_gattc_cache_save(p_clcb->p_srcb, p_clcb->bta_conn_id);
+ }
- bta_gattc_reset_discover_st(p_clcb->p_srcb, BTA_GATT_OK);
+ bta_gattc_reset_discover_st(p_clcb->p_srcb, BTA_GATT_OK);
}
/*******************************************************************************
*
@@ -533,12 +524,12 @@
* Returns status
*
******************************************************************************/
-static void bta_gattc_incl_srvc_disc_cmpl(uint16_t conn_id, tBTA_GATTC_SERV *p_srvc_cb)
-{
- p_srvc_cb->cur_char_idx = p_srvc_cb->total_srvc;
+static void bta_gattc_incl_srvc_disc_cmpl(uint16_t conn_id,
+ tBTA_GATTC_SERV* p_srvc_cb) {
+ p_srvc_cb->cur_char_idx = p_srvc_cb->total_srvc;
- /* start discoverying characteristic */
- bta_gattc_start_disc_char(conn_id, p_srvc_cb);
+ /* start discoverying characteristic */
+ bta_gattc_start_disc_char(conn_id, p_srvc_cb);
}
/*******************************************************************************
*
@@ -549,29 +540,25 @@
* Returns status
*
******************************************************************************/
-static void bta_gattc_char_disc_cmpl(uint16_t conn_id, tBTA_GATTC_SERV *p_srvc_cb)
-{
- tBTA_GATTC_ATTR_REC *p_rec = p_srvc_cb->p_srvc_list + p_srvc_cb->cur_char_idx;
+static void bta_gattc_char_disc_cmpl(uint16_t conn_id,
+ tBTA_GATTC_SERV* p_srvc_cb) {
+ tBTA_GATTC_ATTR_REC* p_rec = p_srvc_cb->p_srvc_list + p_srvc_cb->cur_char_idx;
- /* if there are characteristic needs to be explored */
- if (p_srvc_cb->total_char > 0)
- {
- /* add the first characteristic into cache */
- bta_gattc_add_char_to_cache (p_srvc_cb,
- p_rec->char_decl_handle,
- p_rec->s_handle,
- &p_rec->uuid,
- p_rec->property);
+ /* if there are characteristic needs to be explored */
+ if (p_srvc_cb->total_char > 0) {
+ /* add the first characteristic into cache */
+ bta_gattc_add_char_to_cache(p_srvc_cb, p_rec->char_decl_handle,
+ p_rec->s_handle, &p_rec->uuid, p_rec->property);
- /* start discoverying characteristic descriptor , if failed, disc for next char*/
- bta_gattc_start_disc_char_dscp(conn_id, p_srvc_cb);
- }
- else /* otherwise start with next service */
- {
- p_srvc_cb->cur_srvc_idx ++;
+ /* start discoverying characteristic descriptor , if failed, disc for next
+ * char*/
+ bta_gattc_start_disc_char_dscp(conn_id, p_srvc_cb);
+ } else /* otherwise start with next service */
+ {
+ p_srvc_cb->cur_srvc_idx++;
- bta_gattc_explore_srvc (conn_id, p_srvc_cb);
- }
+ bta_gattc_explore_srvc(conn_id, p_srvc_cb);
+ }
}
/*******************************************************************************
*
@@ -582,62 +569,52 @@
* Returns status
*
******************************************************************************/
-static void bta_gattc_char_dscpt_disc_cmpl(uint16_t conn_id, tBTA_GATTC_SERV *p_srvc_cb)
-{
- tBTA_GATTC_ATTR_REC *p_rec = NULL;
+static void bta_gattc_char_dscpt_disc_cmpl(uint16_t conn_id,
+ tBTA_GATTC_SERV* p_srvc_cb) {
+ tBTA_GATTC_ATTR_REC* p_rec = NULL;
- if (-- p_srvc_cb->total_char > 0)
- {
- p_rec = p_srvc_cb->p_srvc_list + (++ p_srvc_cb->cur_char_idx);
- /* add the next characteristic into cache */
- bta_gattc_add_char_to_cache (p_srvc_cb,
- p_rec->char_decl_handle,
- p_rec->s_handle,
- &p_rec->uuid,
- p_rec->property);
+ if (--p_srvc_cb->total_char > 0) {
+ p_rec = p_srvc_cb->p_srvc_list + (++p_srvc_cb->cur_char_idx);
+ /* add the next characteristic into cache */
+ bta_gattc_add_char_to_cache(p_srvc_cb, p_rec->char_decl_handle,
+ p_rec->s_handle, &p_rec->uuid, p_rec->property);
- /* start discoverying next characteristic for char descriptor */
- bta_gattc_start_disc_char_dscp(conn_id, p_srvc_cb);
- }
- else
- /* all characteristic has been explored, start with next service if any */
- {
+ /* start discoverying next characteristic for char descriptor */
+ bta_gattc_start_disc_char_dscp(conn_id, p_srvc_cb);
+ } else
+ /* all characteristic has been explored, start with next service if any */
+ {
#if (BTA_GATT_DEBUG == TRUE)
- APPL_TRACE_ERROR("all char has been explored");
+ APPL_TRACE_ERROR("all char has been explored");
#endif
- p_srvc_cb->cur_srvc_idx ++;
- bta_gattc_explore_srvc (conn_id, p_srvc_cb);
- }
-
+ p_srvc_cb->cur_srvc_idx++;
+ bta_gattc_explore_srvc(conn_id, p_srvc_cb);
+ }
}
-static bool bta_gattc_srvc_in_list(tBTA_GATTC_SERV *p_srvc_cb, uint16_t s_handle,
- uint16_t e_handle,
- UNUSED_ATTR tBT_UUID uuid)
-{
- tBTA_GATTC_ATTR_REC *p_rec = NULL;
- uint8_t i;
- bool exist_srvc = false;
+static bool bta_gattc_srvc_in_list(tBTA_GATTC_SERV* p_srvc_cb,
+ uint16_t s_handle, uint16_t e_handle,
+ UNUSED_ATTR tBT_UUID uuid) {
+ tBTA_GATTC_ATTR_REC* p_rec = NULL;
+ uint8_t i;
+ bool exist_srvc = false;
- if (!GATT_HANDLE_IS_VALID(s_handle) || !GATT_HANDLE_IS_VALID(e_handle))
- {
- APPL_TRACE_ERROR("invalid included service handle: [0x%04x ~ 0x%04x]", s_handle, e_handle);
+ if (!GATT_HANDLE_IS_VALID(s_handle) || !GATT_HANDLE_IS_VALID(e_handle)) {
+ APPL_TRACE_ERROR("invalid included service handle: [0x%04x ~ 0x%04x]",
+ s_handle, e_handle);
+ exist_srvc = true;
+ } else {
+ for (i = 0; i < p_srvc_cb->next_avail_idx; i++) {
+ p_rec = p_srvc_cb->p_srvc_list + i;
+
+ /* a new service should not have any overlap with other service handle
+ * range */
+ if (p_rec->s_handle == s_handle || p_rec->e_handle == e_handle) {
exist_srvc = true;
+ break;
+ }
}
- else
- {
- for (i = 0; i < p_srvc_cb->next_avail_idx; i ++)
- {
- p_rec = p_srvc_cb->p_srvc_list + i;
-
- /* a new service should not have any overlap with other service handle range */
- if (p_rec->s_handle == s_handle || p_rec->e_handle == e_handle)
- {
- exist_srvc = true;
- break;
- }
- }
- }
- return exist_srvc;
+ }
+ return exist_srvc;
}
/*******************************************************************************
*
@@ -648,35 +625,34 @@
* Returns status
*
******************************************************************************/
-static tBTA_GATT_STATUS bta_gattc_add_srvc_to_list(tBTA_GATTC_SERV *p_srvc_cb,
- uint16_t s_handle, uint16_t e_handle,
- tBT_UUID uuid, bool is_primary)
-{
- tBTA_GATTC_ATTR_REC *p_rec = NULL;
- tBTA_GATT_STATUS status = BTA_GATT_OK;
+static tBTA_GATT_STATUS bta_gattc_add_srvc_to_list(tBTA_GATTC_SERV* p_srvc_cb,
+ uint16_t s_handle,
+ uint16_t e_handle,
+ tBT_UUID uuid,
+ bool is_primary) {
+ tBTA_GATTC_ATTR_REC* p_rec = NULL;
+ tBTA_GATT_STATUS status = BTA_GATT_OK;
- if (p_srvc_cb->p_srvc_list && p_srvc_cb->next_avail_idx < BTA_GATTC_MAX_CACHE_CHAR)
- {
- p_rec = p_srvc_cb->p_srvc_list + p_srvc_cb->next_avail_idx;
+ if (p_srvc_cb->p_srvc_list &&
+ p_srvc_cb->next_avail_idx < BTA_GATTC_MAX_CACHE_CHAR) {
+ p_rec = p_srvc_cb->p_srvc_list + p_srvc_cb->next_avail_idx;
- APPL_TRACE_DEBUG("%s handle=%d, service type=0x%04x",
- __func__, s_handle, uuid.uu.uuid16);
+ APPL_TRACE_DEBUG("%s handle=%d, service type=0x%04x", __func__, s_handle,
+ uuid.uu.uuid16);
- p_rec->s_handle = s_handle;
- p_rec->e_handle = e_handle;
- p_rec->is_primary = is_primary;
- memcpy(&p_rec->uuid, &uuid, sizeof(tBT_UUID));
+ p_rec->s_handle = s_handle;
+ p_rec->e_handle = e_handle;
+ p_rec->is_primary = is_primary;
+ memcpy(&p_rec->uuid, &uuid, sizeof(tBT_UUID));
- p_srvc_cb->total_srvc ++;
- p_srvc_cb->next_avail_idx ++;
- }
- else
- { /* allocate bigger buffer ?? */
- status = GATT_DB_FULL;
+ p_srvc_cb->total_srvc++;
+ p_srvc_cb->next_avail_idx++;
+ } else { /* allocate bigger buffer ?? */
+ status = GATT_DB_FULL;
- APPL_TRACE_ERROR("service not added, no resources or wrong state");
- }
- return status;
+ APPL_TRACE_ERROR("service not added, no resources or wrong state");
+ }
+ return status;
}
/*******************************************************************************
*
@@ -687,47 +663,41 @@
* Returns status
*
******************************************************************************/
-static tBTA_GATT_STATUS bta_gattc_add_char_to_list(tBTA_GATTC_SERV *p_srvc_cb,
- uint16_t decl_handle, uint16_t value_handle,
- tBT_UUID uuid, uint8_t property)
-{
- tBTA_GATTC_ATTR_REC *p_rec = NULL;
- tBTA_GATT_STATUS status = BTA_GATT_OK;
+static tBTA_GATT_STATUS bta_gattc_add_char_to_list(tBTA_GATTC_SERV* p_srvc_cb,
+ uint16_t decl_handle,
+ uint16_t value_handle,
+ tBT_UUID uuid,
+ uint8_t property) {
+ tBTA_GATTC_ATTR_REC* p_rec = NULL;
+ tBTA_GATT_STATUS status = BTA_GATT_OK;
- if (p_srvc_cb->p_srvc_list == NULL)
- {
- APPL_TRACE_ERROR("No service available, unexpected char discovery result");
- status = BTA_GATT_INTERNAL_ERROR;
+ if (p_srvc_cb->p_srvc_list == NULL) {
+ APPL_TRACE_ERROR("No service available, unexpected char discovery result");
+ status = BTA_GATT_INTERNAL_ERROR;
+ } else if (p_srvc_cb->next_avail_idx < BTA_GATTC_MAX_CACHE_CHAR) {
+ p_rec = p_srvc_cb->p_srvc_list + p_srvc_cb->next_avail_idx;
+
+ p_srvc_cb->total_char++;
+
+ p_rec->s_handle = value_handle;
+ p_rec->char_decl_handle = decl_handle;
+ p_rec->property = property;
+ p_rec->e_handle =
+ (p_srvc_cb->p_srvc_list + p_srvc_cb->cur_srvc_idx)->e_handle;
+ memcpy(&p_rec->uuid, &uuid, sizeof(tBT_UUID));
+
+ /* update the endind handle of pervious characteristic if available */
+ if (p_srvc_cb->total_char > 1) {
+ p_rec -= 1;
+ p_rec->e_handle = decl_handle - 1;
}
- else if (p_srvc_cb->next_avail_idx < BTA_GATTC_MAX_CACHE_CHAR)
- {
-
- p_rec = p_srvc_cb->p_srvc_list + p_srvc_cb->next_avail_idx;
-
- p_srvc_cb->total_char ++;
-
- p_rec->s_handle = value_handle;
- p_rec->char_decl_handle = decl_handle;
- p_rec->property = property;
- p_rec->e_handle = (p_srvc_cb->p_srvc_list + p_srvc_cb->cur_srvc_idx)->e_handle;
- memcpy(&p_rec->uuid, &uuid, sizeof(tBT_UUID));
-
- /* update the endind handle of pervious characteristic if available */
- if (p_srvc_cb->total_char > 1)
- {
- p_rec -= 1;
- p_rec->e_handle = decl_handle - 1;
- }
- p_srvc_cb->next_avail_idx ++;
- }
- else
- {
- APPL_TRACE_ERROR("char not added, no resources");
- /* allocate bigger buffer ?? */
- status = BTA_GATT_DB_FULL;
- }
- return status;
-
+ p_srvc_cb->next_avail_idx++;
+ } else {
+ APPL_TRACE_ERROR("char not added, no resources");
+ /* allocate bigger buffer ?? */
+ status = BTA_GATT_DB_FULL;
+ }
+ return status;
}
/*******************************************************************************
@@ -739,72 +709,57 @@
* Returns void
*
******************************************************************************/
-void bta_gattc_sdp_callback(uint16_t sdp_status, void* user_data)
-{
- tSDP_DISC_REC *p_sdp_rec = NULL;
- tBT_UUID service_uuid;
- tSDP_PROTOCOL_ELEM pe;
- uint16_t start_handle = 0, end_handle = 0;
- tBTA_GATTC_CB_DATA *cb_data = (tBTA_GATTC_CB_DATA *)user_data;
- tBTA_GATTC_SERV *p_srvc_cb = bta_gattc_find_scb_by_cid(cb_data->sdp_conn_id);
+void bta_gattc_sdp_callback(uint16_t sdp_status, void* user_data) {
+ tSDP_DISC_REC* p_sdp_rec = NULL;
+ tBT_UUID service_uuid;
+ tSDP_PROTOCOL_ELEM pe;
+ uint16_t start_handle = 0, end_handle = 0;
+ tBTA_GATTC_CB_DATA* cb_data = (tBTA_GATTC_CB_DATA*)user_data;
+ tBTA_GATTC_SERV* p_srvc_cb = bta_gattc_find_scb_by_cid(cb_data->sdp_conn_id);
- if (((sdp_status == SDP_SUCCESS) || (sdp_status == SDP_DB_FULL)) && p_srvc_cb != NULL)
- {
- do
- {
- /* find a service record, report it */
- p_sdp_rec = SDP_FindServiceInDb(cb_data->p_sdp_db, 0, p_sdp_rec);
- if (p_sdp_rec)
- {
- if (SDP_FindServiceUUIDInRec(p_sdp_rec, &service_uuid))
- {
-
- if (SDP_FindProtocolListElemInRec(p_sdp_rec, UUID_PROTOCOL_ATT, &pe))
- {
- start_handle = (uint16_t) pe.params[0];
- end_handle = (uint16_t) pe.params[1];
+ if (((sdp_status == SDP_SUCCESS) || (sdp_status == SDP_DB_FULL)) &&
+ p_srvc_cb != NULL) {
+ do {
+ /* find a service record, report it */
+ p_sdp_rec = SDP_FindServiceInDb(cb_data->p_sdp_db, 0, p_sdp_rec);
+ if (p_sdp_rec) {
+ if (SDP_FindServiceUUIDInRec(p_sdp_rec, &service_uuid)) {
+ if (SDP_FindProtocolListElemInRec(p_sdp_rec, UUID_PROTOCOL_ATT,
+ &pe)) {
+ start_handle = (uint16_t)pe.params[0];
+ end_handle = (uint16_t)pe.params[1];
#if (BTA_GATT_DEBUG == TRUE)
- APPL_TRACE_EVENT("Found ATT service [0x%04x] handle[0x%04x ~ 0x%04x]",
- service_uuid.uu.uuid16, start_handle, end_handle);
+ APPL_TRACE_EVENT(
+ "Found ATT service [0x%04x] handle[0x%04x ~ 0x%04x]",
+ service_uuid.uu.uuid16, start_handle, end_handle);
#endif
- if (GATT_HANDLE_IS_VALID(start_handle) && GATT_HANDLE_IS_VALID(end_handle)&&
- p_srvc_cb != NULL)
- {
- /* discover services result, add services into a service list */
- bta_gattc_add_srvc_to_list(p_srvc_cb,
- start_handle,
- end_handle,
- service_uuid,
- true);
- }
- else
- {
- APPL_TRACE_ERROR("invalid start_handle = %d end_handle = %d",
- start_handle, end_handle);
- }
- }
-
-
- }
+ if (GATT_HANDLE_IS_VALID(start_handle) &&
+ GATT_HANDLE_IS_VALID(end_handle) && p_srvc_cb != NULL) {
+ /* discover services result, add services into a service list */
+ bta_gattc_add_srvc_to_list(p_srvc_cb, start_handle, end_handle,
+ service_uuid, true);
+ } else {
+ APPL_TRACE_ERROR("invalid start_handle = %d end_handle = %d",
+ start_handle, end_handle);
}
- } while (p_sdp_rec);
- }
+ }
+ }
+ }
+ } while (p_sdp_rec);
+ }
- if ( p_srvc_cb != NULL)
- {
- /* start discover primary service */
- bta_gattc_explore_srvc(cb_data->sdp_conn_id, p_srvc_cb);
- }
- else
- {
- APPL_TRACE_ERROR("GATT service discovery is done on unknown connection");
- }
+ if (p_srvc_cb != NULL) {
+ /* start discover primary service */
+ bta_gattc_explore_srvc(cb_data->sdp_conn_id, p_srvc_cb);
+ } else {
+ APPL_TRACE_ERROR("GATT service discovery is done on unknown connection");
+ }
- /* both were allocated in bta_gattc_sdp_service_disc */
- osi_free(cb_data->p_sdp_db);
- osi_free(cb_data);
+ /* both were allocated in bta_gattc_sdp_service_disc */
+ osi_free(cb_data->p_sdp_db);
+ osi_free(cb_data);
}
/*******************************************************************************
*
@@ -815,41 +770,41 @@
* Returns void
*
******************************************************************************/
-static tBTA_GATT_STATUS bta_gattc_sdp_service_disc(uint16_t conn_id, tBTA_GATTC_SERV *p_server_cb)
-{
- tSDP_UUID uuid;
- uint16_t num_attrs = 2;
- uint16_t attr_list[2];
+static tBTA_GATT_STATUS bta_gattc_sdp_service_disc(
+ uint16_t conn_id, tBTA_GATTC_SERV* p_server_cb) {
+ tSDP_UUID uuid;
+ uint16_t num_attrs = 2;
+ uint16_t attr_list[2];
- memset (&uuid, 0, sizeof(tSDP_UUID));
+ memset(&uuid, 0, sizeof(tSDP_UUID));
- uuid.len = LEN_UUID_16;
- uuid.uu.uuid16 = UUID_PROTOCOL_ATT;
+ uuid.len = LEN_UUID_16;
+ uuid.uu.uuid16 = UUID_PROTOCOL_ATT;
- /*
- * On success, cb_data will be freed inside bta_gattc_sdp_callback,
- * otherwise it will be freed within this function.
- */
- tBTA_GATTC_CB_DATA *cb_data =
- (tBTA_GATTC_CB_DATA *)osi_malloc(sizeof(tBTA_GATTC_CB_DATA));
+ /*
+ * On success, cb_data will be freed inside bta_gattc_sdp_callback,
+ * otherwise it will be freed within this function.
+ */
+ tBTA_GATTC_CB_DATA* cb_data =
+ (tBTA_GATTC_CB_DATA*)osi_malloc(sizeof(tBTA_GATTC_CB_DATA));
- cb_data->p_sdp_db = (tSDP_DISCOVERY_DB *)osi_malloc(BTA_GATT_SDP_DB_SIZE);
- attr_list[0] = ATTR_ID_SERVICE_CLASS_ID_LIST;
- attr_list[1] = ATTR_ID_PROTOCOL_DESC_LIST;
+ cb_data->p_sdp_db = (tSDP_DISCOVERY_DB*)osi_malloc(BTA_GATT_SDP_DB_SIZE);
+ attr_list[0] = ATTR_ID_SERVICE_CLASS_ID_LIST;
+ attr_list[1] = ATTR_ID_PROTOCOL_DESC_LIST;
- SDP_InitDiscoveryDb(cb_data->p_sdp_db, BTA_GATT_SDP_DB_SIZE, 1,
- &uuid, num_attrs, attr_list);
+ SDP_InitDiscoveryDb(cb_data->p_sdp_db, BTA_GATT_SDP_DB_SIZE, 1, &uuid,
+ num_attrs, attr_list);
- if (!SDP_ServiceSearchAttributeRequest2(p_server_cb->server_bda,
- cb_data->p_sdp_db, &bta_gattc_sdp_callback, cb_data))
- {
- osi_free(cb_data->p_sdp_db);
- osi_free(cb_data);
- return BTA_GATT_ERROR;
- }
+ if (!SDP_ServiceSearchAttributeRequest2(p_server_cb->server_bda,
+ cb_data->p_sdp_db,
+ &bta_gattc_sdp_callback, cb_data)) {
+ osi_free(cb_data->p_sdp_db);
+ osi_free(cb_data);
+ return BTA_GATT_ERROR;
+ }
- cb_data->sdp_conn_id = conn_id;
- return BTA_GATT_OK;
+ cb_data->sdp_conn_id = conn_id;
+ return BTA_GATT_OK;
}
/*******************************************************************************
*
@@ -861,118 +816,108 @@
* Returns void
*
******************************************************************************/
-void bta_gattc_disc_res_cback (uint16_t conn_id, tGATT_DISC_TYPE disc_type, tGATT_DISC_RES *p_data)
-{
- tBTA_GATTC_SERV * p_srvc_cb = NULL;
- bool pri_srvc;
- tBTA_GATTC_CLCB *p_clcb = bta_gattc_find_clcb_by_conn_id(conn_id);
+void bta_gattc_disc_res_cback(uint16_t conn_id, tGATT_DISC_TYPE disc_type,
+ tGATT_DISC_RES* p_data) {
+ tBTA_GATTC_SERV* p_srvc_cb = NULL;
+ bool pri_srvc;
+ tBTA_GATTC_CLCB* p_clcb = bta_gattc_find_clcb_by_conn_id(conn_id);
- p_srvc_cb = bta_gattc_find_scb_by_cid(conn_id);
+ p_srvc_cb = bta_gattc_find_scb_by_cid(conn_id);
- if (p_srvc_cb != NULL && p_clcb != NULL && p_clcb->state == BTA_GATTC_DISCOVER_ST)
- {
- switch (disc_type)
- {
- case GATT_DISC_SRVC_ALL:
- /* discover services result, add services into a service list */
- bta_gattc_add_srvc_to_list(p_srvc_cb,
- p_data->handle,
- p_data->value.group_value.e_handle,
- p_data->value.group_value.service_type,
- true);
+ if (p_srvc_cb != NULL && p_clcb != NULL &&
+ p_clcb->state == BTA_GATTC_DISCOVER_ST) {
+ switch (disc_type) {
+ case GATT_DISC_SRVC_ALL:
+ /* discover services result, add services into a service list */
+ bta_gattc_add_srvc_to_list(
+ p_srvc_cb, p_data->handle, p_data->value.group_value.e_handle,
+ p_data->value.group_value.service_type, true);
- break;
- case GATT_DISC_SRVC_BY_UUID:
- bta_gattc_add_srvc_to_list(p_srvc_cb,
- p_data->handle,
- p_data->value.group_value.e_handle,
- p_data->value.group_value.service_type,
- true);
- break;
+ break;
+ case GATT_DISC_SRVC_BY_UUID:
+ bta_gattc_add_srvc_to_list(
+ p_srvc_cb, p_data->handle, p_data->value.group_value.e_handle,
+ p_data->value.group_value.service_type, true);
+ break;
- case GATT_DISC_INC_SRVC:
- /* add included service into service list if it's secondary or it never showed up
- in the primary service search */
- pri_srvc = bta_gattc_srvc_in_list(p_srvc_cb,
- p_data->value.incl_service.s_handle,
- p_data->value.incl_service.e_handle,
- p_data->value.incl_service.service_type);
+ case GATT_DISC_INC_SRVC:
+ /* add included service into service list if it's secondary or it never
+ showed up
+ in the primary service search */
+ pri_srvc = bta_gattc_srvc_in_list(
+ p_srvc_cb, p_data->value.incl_service.s_handle,
+ p_data->value.incl_service.e_handle,
+ p_data->value.incl_service.service_type);
- if (!pri_srvc)
- bta_gattc_add_srvc_to_list(p_srvc_cb,
- p_data->value.incl_service.s_handle,
- p_data->value.incl_service.e_handle,
- p_data->value.incl_service.service_type,
- false);
- /* add into database */
- bta_gattc_add_attr_to_cache(p_srvc_cb,
- p_data->handle,
- &p_data->value.incl_service.service_type,
- pri_srvc,
- p_data->value.incl_service.s_handle,
- BTA_GATTC_ATTR_TYPE_INCL_SRVC);
- break;
+ if (!pri_srvc)
+ bta_gattc_add_srvc_to_list(
+ p_srvc_cb, p_data->value.incl_service.s_handle,
+ p_data->value.incl_service.e_handle,
+ p_data->value.incl_service.service_type, false);
+ /* add into database */
+ bta_gattc_add_attr_to_cache(
+ p_srvc_cb, p_data->handle, &p_data->value.incl_service.service_type,
+ pri_srvc, p_data->value.incl_service.s_handle,
+ BTA_GATTC_ATTR_TYPE_INCL_SRVC);
+ break;
- case GATT_DISC_CHAR:
- /* add char value into database */
- bta_gattc_add_char_to_list(p_srvc_cb,
- p_data->handle,
- p_data->value.dclr_value.val_handle,
- p_data->value.dclr_value.char_uuid,
- p_data->value.dclr_value.char_prop);
- break;
+ case GATT_DISC_CHAR:
+ /* add char value into database */
+ bta_gattc_add_char_to_list(p_srvc_cb, p_data->handle,
+ p_data->value.dclr_value.val_handle,
+ p_data->value.dclr_value.char_uuid,
+ p_data->value.dclr_value.char_prop);
+ break;
- case GATT_DISC_CHAR_DSCPT:
- bta_gattc_add_attr_to_cache(p_srvc_cb, p_data->handle, &p_data->type, 0,
- 0 /* incl_srvc_handle */,
- BTA_GATTC_ATTR_TYPE_CHAR_DESCR);
- break;
- }
+ case GATT_DISC_CHAR_DSCPT:
+ bta_gattc_add_attr_to_cache(p_srvc_cb, p_data->handle, &p_data->type, 0,
+ 0 /* incl_srvc_handle */,
+ BTA_GATTC_ATTR_TYPE_CHAR_DESCR);
+ break;
}
+ }
}
-void bta_gattc_disc_cmpl_cback (uint16_t conn_id, tGATT_DISC_TYPE disc_type, tGATT_STATUS status)
-{
- tBTA_GATTC_SERV * p_srvc_cb;
- tBTA_GATTC_CLCB *p_clcb = bta_gattc_find_clcb_by_conn_id(conn_id);
+void bta_gattc_disc_cmpl_cback(uint16_t conn_id, tGATT_DISC_TYPE disc_type,
+ tGATT_STATUS status) {
+ tBTA_GATTC_SERV* p_srvc_cb;
+ tBTA_GATTC_CLCB* p_clcb = bta_gattc_find_clcb_by_conn_id(conn_id);
- if ( p_clcb && (status != GATT_SUCCESS || p_clcb->status != GATT_SUCCESS) )
- {
- if (status == GATT_SUCCESS)
- p_clcb->status = status;
- bta_gattc_sm_execute(p_clcb, BTA_GATTC_DISCOVER_CMPL_EVT, NULL);
- return;
- }
- p_srvc_cb = bta_gattc_find_scb_by_cid(conn_id);
+ if (p_clcb && (status != GATT_SUCCESS || p_clcb->status != GATT_SUCCESS)) {
+ if (status == GATT_SUCCESS) p_clcb->status = status;
+ bta_gattc_sm_execute(p_clcb, BTA_GATTC_DISCOVER_CMPL_EVT, NULL);
+ return;
+ }
+ p_srvc_cb = bta_gattc_find_scb_by_cid(conn_id);
- if (p_srvc_cb != NULL)
- {
- switch (disc_type)
- {
- case GATT_DISC_SRVC_ALL:
- case GATT_DISC_SRVC_BY_UUID:
+ if (p_srvc_cb != NULL) {
+ switch (disc_type) {
+ case GATT_DISC_SRVC_ALL:
+ case GATT_DISC_SRVC_BY_UUID:
#if (BTA_GATT_DEBUG == TRUE)
- bta_gattc_display_explore_record(p_srvc_cb->p_srvc_list, p_srvc_cb->next_avail_idx);
+ bta_gattc_display_explore_record(p_srvc_cb->p_srvc_list,
+ p_srvc_cb->next_avail_idx);
#endif
- bta_gattc_explore_srvc(conn_id, p_srvc_cb);
- break;
+ bta_gattc_explore_srvc(conn_id, p_srvc_cb);
+ break;
- case GATT_DISC_INC_SRVC:
- bta_gattc_incl_srvc_disc_cmpl(conn_id, p_srvc_cb);
+ case GATT_DISC_INC_SRVC:
+ bta_gattc_incl_srvc_disc_cmpl(conn_id, p_srvc_cb);
- break;
+ break;
- case GATT_DISC_CHAR:
+ case GATT_DISC_CHAR:
#if (BTA_GATT_DEBUG == TRUE)
- bta_gattc_display_explore_record(p_srvc_cb->p_srvc_list, p_srvc_cb->next_avail_idx);
+ bta_gattc_display_explore_record(p_srvc_cb->p_srvc_list,
+ p_srvc_cb->next_avail_idx);
#endif
- bta_gattc_char_disc_cmpl(conn_id, p_srvc_cb);
- break;
+ bta_gattc_char_disc_cmpl(conn_id, p_srvc_cb);
+ break;
- case GATT_DISC_CHAR_DSCPT:
- bta_gattc_char_dscpt_disc_cmpl(conn_id, p_srvc_cb);
- break;
- }
+ case GATT_DISC_CHAR_DSCPT:
+ bta_gattc_char_dscpt_disc_cmpl(conn_id, p_srvc_cb);
+ break;
}
+ }
}
/*******************************************************************************
@@ -984,139 +929,141 @@
* Returns false if map can not be found.
*
******************************************************************************/
-void bta_gattc_search_service(tBTA_GATTC_CLCB *p_clcb, tBT_UUID *p_uuid)
-{
- tBTA_GATTC cb_data;
+void bta_gattc_search_service(tBTA_GATTC_CLCB* p_clcb, tBT_UUID* p_uuid) {
+ tBTA_GATTC cb_data;
- if (!p_clcb->p_srcb->p_srvc_cache || list_is_empty(p_clcb->p_srcb->p_srvc_cache))
- return;
+ if (!p_clcb->p_srcb->p_srvc_cache ||
+ list_is_empty(p_clcb->p_srcb->p_srvc_cache))
+ return;
- for (list_node_t *sn = list_begin(p_clcb->p_srcb->p_srvc_cache);
- sn != list_end(p_clcb->p_srcb->p_srvc_cache); sn = list_next(sn)) {
- tBTA_GATTC_SERVICE *p_cache = (tBTA_GATTC_SERVICE*) list_node(sn);
+ for (list_node_t* sn = list_begin(p_clcb->p_srcb->p_srvc_cache);
+ sn != list_end(p_clcb->p_srcb->p_srvc_cache); sn = list_next(sn)) {
+ tBTA_GATTC_SERVICE* p_cache = (tBTA_GATTC_SERVICE*)list_node(sn);
- if (!bta_gattc_uuid_compare(p_uuid, &p_cache->uuid, false))
- continue;
+ if (!bta_gattc_uuid_compare(p_uuid, &p_cache->uuid, false)) continue;
#if (BTA_GATT_DEBUG == TRUE)
- APPL_TRACE_DEBUG("found service [0x%04x], inst[%d] handle [%d]",
- p_cache->uuid.uu.uuid16,
- p_cache->handle,
- p_cache->s_handle);
+ APPL_TRACE_DEBUG("found service [0x%04x], inst[%d] handle [%d]",
+ p_cache->uuid.uu.uuid16, p_cache->handle,
+ p_cache->s_handle);
#endif
- if (!p_clcb->p_rcb->p_cback)
- continue;
+ if (!p_clcb->p_rcb->p_cback) continue;
- memset(&cb_data, 0, sizeof(tBTA_GATTC));
+ memset(&cb_data, 0, sizeof(tBTA_GATTC));
- cb_data.srvc_res.conn_id = p_clcb->bta_conn_id;
- cb_data.srvc_res.service_uuid.inst_id = p_cache->handle;
- memcpy(&cb_data.srvc_res.service_uuid.uuid, &p_cache->uuid, sizeof(tBTA_GATT_ID));
+ cb_data.srvc_res.conn_id = p_clcb->bta_conn_id;
+ cb_data.srvc_res.service_uuid.inst_id = p_cache->handle;
+ memcpy(&cb_data.srvc_res.service_uuid.uuid, &p_cache->uuid,
+ sizeof(tBTA_GATT_ID));
- (* p_clcb->p_rcb->p_cback)(BTA_GATTC_SEARCH_RES_EVT, &cb_data);
- }
+ (*p_clcb->p_rcb->p_cback)(BTA_GATTC_SEARCH_RES_EVT, &cb_data);
+ }
}
-list_t* bta_gattc_get_services_srcb(tBTA_GATTC_SERV *p_srcb) {
- if (!p_srcb || !p_srcb->p_srvc_cache || list_is_empty(p_srcb->p_srvc_cache))
- return NULL;
+list_t* bta_gattc_get_services_srcb(tBTA_GATTC_SERV* p_srcb) {
+ if (!p_srcb || !p_srcb->p_srvc_cache || list_is_empty(p_srcb->p_srvc_cache))
+ return NULL;
- return p_srcb->p_srvc_cache;
+ return p_srcb->p_srvc_cache;
}
const list_t* bta_gattc_get_services(uint16_t conn_id) {
- tBTA_GATTC_CLCB *p_clcb = bta_gattc_find_clcb_by_conn_id(conn_id);
+ tBTA_GATTC_CLCB* p_clcb = bta_gattc_find_clcb_by_conn_id(conn_id);
- if (p_clcb == NULL )
- return NULL;
+ if (p_clcb == NULL) return NULL;
- tBTA_GATTC_SERV *p_srcb = p_clcb->p_srcb;
+ tBTA_GATTC_SERV* p_srcb = p_clcb->p_srcb;
- return bta_gattc_get_services_srcb(p_srcb);
+ return bta_gattc_get_services_srcb(p_srcb);
}
-tBTA_GATTC_SERVICE* bta_gattc_find_matching_service(const list_t *services, uint16_t handle) {
- if (!services || list_is_empty(services))
- return NULL;
+tBTA_GATTC_SERVICE* bta_gattc_find_matching_service(const list_t* services,
+ uint16_t handle) {
+ if (!services || list_is_empty(services)) return NULL;
- for (list_node_t *sn = list_begin(services);
- sn != list_end(services); sn = list_next(sn)) {
- tBTA_GATTC_SERVICE *service = (tBTA_GATTC_SERVICE*) list_node(sn);
+ for (list_node_t* sn = list_begin(services); sn != list_end(services);
+ sn = list_next(sn)) {
+ tBTA_GATTC_SERVICE* service = (tBTA_GATTC_SERVICE*)list_node(sn);
- if (handle >= service->s_handle && handle <= service->e_handle)
- return service;
- }
+ if (handle >= service->s_handle && handle <= service->e_handle)
+ return service;
+ }
+ return NULL;
+}
+
+const tBTA_GATTC_SERVICE* bta_gattc_get_service_for_handle_srcb(
+ tBTA_GATTC_SERV* p_srcb, uint16_t handle) {
+ const list_t* services = bta_gattc_get_services_srcb(p_srcb);
+
+ return bta_gattc_find_matching_service(services, handle);
+}
+
+const tBTA_GATTC_SERVICE* bta_gattc_get_service_for_handle(uint16_t conn_id,
+ uint16_t handle) {
+ const list_t* services = bta_gattc_get_services(conn_id);
+
+ return bta_gattc_find_matching_service(services, handle);
+}
+
+tBTA_GATTC_CHARACTERISTIC* bta_gattc_get_characteristic_srcb(
+ tBTA_GATTC_SERV* p_srcb, uint16_t handle) {
+ const tBTA_GATTC_SERVICE* service =
+ bta_gattc_get_service_for_handle_srcb(p_srcb, handle);
+
+ if (!service) return NULL;
+
+ for (list_node_t* cn = list_begin(service->characteristics);
+ cn != list_end(service->characteristics); cn = list_next(cn)) {
+ tBTA_GATTC_CHARACTERISTIC* p_char =
+ (tBTA_GATTC_CHARACTERISTIC*)list_node(cn);
+ if (handle == p_char->handle) return p_char;
+ }
+
+ return NULL;
+}
+
+tBTA_GATTC_CHARACTERISTIC* bta_gattc_get_characteristic(uint16_t conn_id,
+ uint16_t handle) {
+ tBTA_GATTC_CLCB* p_clcb = bta_gattc_find_clcb_by_conn_id(conn_id);
+
+ if (p_clcb == NULL) return NULL;
+
+ tBTA_GATTC_SERV* p_srcb = p_clcb->p_srcb;
+ return bta_gattc_get_characteristic_srcb(p_srcb, handle);
+}
+
+tBTA_GATTC_DESCRIPTOR* bta_gattc_get_descriptor_srcb(tBTA_GATTC_SERV* p_srcb,
+ uint16_t handle) {
+ const tBTA_GATTC_SERVICE* service =
+ bta_gattc_get_service_for_handle_srcb(p_srcb, handle);
+
+ if (!service) {
return NULL;
-}
+ }
-const tBTA_GATTC_SERVICE* bta_gattc_get_service_for_handle_srcb(tBTA_GATTC_SERV *p_srcb, uint16_t handle) {
- const list_t *services = bta_gattc_get_services_srcb(p_srcb);
-
- return bta_gattc_find_matching_service(services, handle);
-}
-
-const tBTA_GATTC_SERVICE* bta_gattc_get_service_for_handle(uint16_t conn_id, uint16_t handle) {
- const list_t *services = bta_gattc_get_services(conn_id);
-
- return bta_gattc_find_matching_service(services, handle);
-}
-
-tBTA_GATTC_CHARACTERISTIC* bta_gattc_get_characteristic_srcb(tBTA_GATTC_SERV *p_srcb, uint16_t handle) {
- const tBTA_GATTC_SERVICE* service = bta_gattc_get_service_for_handle_srcb(p_srcb, handle);
-
- if (!service)
- return NULL;
-
- for (list_node_t *cn = list_begin(service->characteristics);
- cn != list_end(service->characteristics); cn = list_next(cn)) {
- tBTA_GATTC_CHARACTERISTIC *p_char = (tBTA_GATTC_CHARACTERISTIC*) list_node(cn);
- if (handle == p_char->handle)
- return p_char;
+ for (list_node_t* cn = list_begin(service->characteristics);
+ cn != list_end(service->characteristics); cn = list_next(cn)) {
+ tBTA_GATTC_CHARACTERISTIC* p_char =
+ (tBTA_GATTC_CHARACTERISTIC*)list_node(cn);
+ for (list_node_t* dn = list_begin(p_char->descriptors);
+ dn != list_end(p_char->descriptors); dn = list_next(dn)) {
+ tBTA_GATTC_DESCRIPTOR* p_desc = (tBTA_GATTC_DESCRIPTOR*)list_node(dn);
+ if (handle == p_desc->handle) return p_desc;
}
+ }
- return NULL;
+ return NULL;
}
-tBTA_GATTC_CHARACTERISTIC* bta_gattc_get_characteristic(uint16_t conn_id, uint16_t handle) {
- tBTA_GATTC_CLCB *p_clcb = bta_gattc_find_clcb_by_conn_id(conn_id);
+tBTA_GATTC_DESCRIPTOR* bta_gattc_get_descriptor(uint16_t conn_id,
+ uint16_t handle) {
+ tBTA_GATTC_CLCB* p_clcb = bta_gattc_find_clcb_by_conn_id(conn_id);
- if (p_clcb == NULL )
- return NULL;
+ if (p_clcb == NULL) return NULL;
- tBTA_GATTC_SERV *p_srcb = p_clcb->p_srcb;
- return bta_gattc_get_characteristic_srcb(p_srcb, handle);
-}
-
-tBTA_GATTC_DESCRIPTOR* bta_gattc_get_descriptor_srcb(tBTA_GATTC_SERV *p_srcb, uint16_t handle) {
- const tBTA_GATTC_SERVICE* service = bta_gattc_get_service_for_handle_srcb(p_srcb, handle);
-
- if (!service) {
- return NULL;
- }
-
- for (list_node_t *cn = list_begin(service->characteristics);
- cn != list_end(service->characteristics); cn = list_next(cn)) {
- tBTA_GATTC_CHARACTERISTIC *p_char = (tBTA_GATTC_CHARACTERISTIC*) list_node(cn);
- for (list_node_t *dn = list_begin(p_char->descriptors);
- dn != list_end(p_char->descriptors); dn = list_next(dn)) {
- tBTA_GATTC_DESCRIPTOR *p_desc = (tBTA_GATTC_DESCRIPTOR*) list_node(dn);
- if (handle == p_desc->handle)
- return p_desc;
- }
- }
-
- return NULL;
-}
-
-tBTA_GATTC_DESCRIPTOR* bta_gattc_get_descriptor(uint16_t conn_id, uint16_t handle) {
- tBTA_GATTC_CLCB *p_clcb = bta_gattc_find_clcb_by_conn_id(conn_id);
-
- if (p_clcb == NULL )
- return NULL;
-
- tBTA_GATTC_SERV *p_srcb = p_clcb->p_srcb;
- return bta_gattc_get_descriptor_srcb(p_srcb, handle);
+ tBTA_GATTC_SERV* p_srcb = p_clcb->p_srcb;
+ return bta_gattc_get_descriptor_srcb(p_srcb, handle);
}
/*******************************************************************************
@@ -1128,60 +1075,57 @@
* Returns None.
*
******************************************************************************/
-void bta_gattc_fill_gatt_db_el(btgatt_db_element_t *p_attr,
+void bta_gattc_fill_gatt_db_el(btgatt_db_element_t* p_attr,
bt_gatt_db_attribute_type_t type,
- uint16_t att_handle,
- uint16_t s_handle, uint16_t e_handle,
- uint16_t id, tBT_UUID uuid, uint8_t prop)
-{
- p_attr->type = type;
- p_attr->attribute_handle = att_handle;
- p_attr->start_handle = s_handle;
- p_attr->end_handle = e_handle;
- p_attr->id = id;
- p_attr->properties = prop;
- bta_to_btif_uuid(&p_attr->uuid, &uuid);
+ uint16_t att_handle, uint16_t s_handle,
+ uint16_t e_handle, uint16_t id, tBT_UUID uuid,
+ uint8_t prop) {
+ p_attr->type = type;
+ p_attr->attribute_handle = att_handle;
+ p_attr->start_handle = s_handle;
+ p_attr->end_handle = e_handle;
+ p_attr->id = id;
+ p_attr->properties = prop;
+ bta_to_btif_uuid(&p_attr->uuid, &uuid);
}
/*******************************************************************************
* Returns number of elements inside db from start_handle to end_handle
******************************************************************************/
-static size_t bta_gattc_get_db_size(list_t *services,
- uint16_t start_handle, uint16_t end_handle) {
- if (!services || list_is_empty(services))
- return 0;
+static size_t bta_gattc_get_db_size(list_t* services, uint16_t start_handle,
+ uint16_t end_handle) {
+ if (!services || list_is_empty(services)) return 0;
- size_t db_size = 0;
+ size_t db_size = 0;
- for (list_node_t *sn = list_begin(services);
- sn != list_end(services); sn = list_next(sn)) {
- tBTA_GATTC_SERVICE *p_cur_srvc = (tBTA_GATTC_SERVICE*) list_node(sn);
+ for (list_node_t* sn = list_begin(services); sn != list_end(services);
+ sn = list_next(sn)) {
+ tBTA_GATTC_SERVICE* p_cur_srvc = (tBTA_GATTC_SERVICE*)list_node(sn);
- if (p_cur_srvc->s_handle < start_handle)
- continue;
+ if (p_cur_srvc->s_handle < start_handle) continue;
- if (p_cur_srvc->e_handle > end_handle)
- break;
+ if (p_cur_srvc->e_handle > end_handle) break;
- db_size++;
- if (!p_cur_srvc->characteristics || list_is_empty(p_cur_srvc->characteristics))
- continue;
+ db_size++;
+ if (!p_cur_srvc->characteristics ||
+ list_is_empty(p_cur_srvc->characteristics))
+ continue;
- for (list_node_t *cn = list_begin(p_cur_srvc->characteristics);
- cn != list_end(p_cur_srvc->characteristics); cn = list_next(cn)) {
- tBTA_GATTC_CHARACTERISTIC *p_char = (tBTA_GATTC_CHARACTERISTIC*) list_node(cn);
- db_size++;
+ for (list_node_t* cn = list_begin(p_cur_srvc->characteristics);
+ cn != list_end(p_cur_srvc->characteristics); cn = list_next(cn)) {
+ tBTA_GATTC_CHARACTERISTIC* p_char =
+ (tBTA_GATTC_CHARACTERISTIC*)list_node(cn);
+ db_size++;
- if (p_char->descriptors)
- db_size += list_length(p_char->descriptors);
- }
-
- if (p_cur_srvc->included_svc) {
- db_size += list_length(p_cur_srvc->included_svc);
- }
+ if (p_char->descriptors) db_size += list_length(p_char->descriptors);
}
- return db_size;
+ if (p_cur_srvc->included_svc) {
+ db_size += list_length(p_cur_srvc->included_svc);
+ }
+ }
+
+ return db_size;
}
/*******************************************************************************
@@ -1199,104 +1143,87 @@
* Returns None.
*
******************************************************************************/
-static void bta_gattc_get_gatt_db_impl(tBTA_GATTC_SERV *p_srvc_cb,
- uint16_t start_handle, uint16_t end_handle,
- btgatt_db_element_t **db,
- int *count)
-{
- APPL_TRACE_DEBUG("%s: start_handle 0x%04x, end_handle 0x%04x",
- __func__, start_handle, end_handle);
+static void bta_gattc_get_gatt_db_impl(tBTA_GATTC_SERV* p_srvc_cb,
+ uint16_t start_handle,
+ uint16_t end_handle,
+ btgatt_db_element_t** db, int* count) {
+ APPL_TRACE_DEBUG("%s: start_handle 0x%04x, end_handle 0x%04x", __func__,
+ start_handle, end_handle);
- if (!p_srvc_cb->p_srvc_cache || list_is_empty(p_srvc_cb->p_srvc_cache)) {
- *count = 0;
- *db = NULL;
- return;
- }
+ if (!p_srvc_cb->p_srvc_cache || list_is_empty(p_srvc_cb->p_srvc_cache)) {
+ *count = 0;
+ *db = NULL;
+ return;
+ }
- size_t db_size = bta_gattc_get_db_size(p_srvc_cb->p_srvc_cache, start_handle, end_handle);
+ size_t db_size =
+ bta_gattc_get_db_size(p_srvc_cb->p_srvc_cache, start_handle, end_handle);
- void* buffer = osi_malloc(db_size * sizeof(btgatt_db_element_t));
- btgatt_db_element_t *curr_db_attr = (btgatt_db_element_t*) buffer;
+ void* buffer = osi_malloc(db_size * sizeof(btgatt_db_element_t));
+ btgatt_db_element_t* curr_db_attr = (btgatt_db_element_t*)buffer;
- for (list_node_t *sn = list_begin(p_srvc_cb->p_srvc_cache);
- sn != list_end(p_srvc_cb->p_srvc_cache); sn = list_next(sn)) {
- tBTA_GATTC_SERVICE *p_cur_srvc = (tBTA_GATTC_SERVICE*) list_node(sn);
+ for (list_node_t* sn = list_begin(p_srvc_cb->p_srvc_cache);
+ sn != list_end(p_srvc_cb->p_srvc_cache); sn = list_next(sn)) {
+ tBTA_GATTC_SERVICE* p_cur_srvc = (tBTA_GATTC_SERVICE*)list_node(sn);
- if (p_cur_srvc->s_handle < start_handle)
- continue;
+ if (p_cur_srvc->s_handle < start_handle) continue;
- if (p_cur_srvc->e_handle > end_handle)
- break;
+ if (p_cur_srvc->e_handle > end_handle) break;
- bta_gattc_fill_gatt_db_el(curr_db_attr,
- p_cur_srvc->is_primary ?
- BTGATT_DB_PRIMARY_SERVICE :
- BTGATT_DB_SECONDARY_SERVICE,
- 0 /* att_handle */,
- p_cur_srvc->s_handle,
- p_cur_srvc->e_handle,
- p_cur_srvc->s_handle,
- p_cur_srvc->uuid,
- 0 /* prop */);
+ bta_gattc_fill_gatt_db_el(
+ curr_db_attr, p_cur_srvc->is_primary ? BTGATT_DB_PRIMARY_SERVICE
+ : BTGATT_DB_SECONDARY_SERVICE,
+ 0 /* att_handle */, p_cur_srvc->s_handle, p_cur_srvc->e_handle,
+ p_cur_srvc->s_handle, p_cur_srvc->uuid, 0 /* prop */);
+ curr_db_attr++;
+
+ if (!p_cur_srvc->characteristics ||
+ list_is_empty(p_cur_srvc->characteristics))
+ continue;
+
+ for (list_node_t* cn = list_begin(p_cur_srvc->characteristics);
+ cn != list_end(p_cur_srvc->characteristics); cn = list_next(cn)) {
+ tBTA_GATTC_CHARACTERISTIC* p_char =
+ (tBTA_GATTC_CHARACTERISTIC*)list_node(cn);
+
+ bta_gattc_fill_gatt_db_el(curr_db_attr, BTGATT_DB_CHARACTERISTIC,
+ p_char->handle, 0 /* s_handle */,
+ 0 /* e_handle */, p_char->handle, p_char->uuid,
+ p_char->properties);
+ curr_db_attr++;
+
+ if (!p_char->descriptors || list_is_empty(p_char->descriptors)) continue;
+
+ for (list_node_t* dn = list_begin(p_char->descriptors);
+ dn != list_end(p_char->descriptors); dn = list_next(dn)) {
+ tBTA_GATTC_DESCRIPTOR* p_desc = (tBTA_GATTC_DESCRIPTOR*)list_node(dn);
+
+ bta_gattc_fill_gatt_db_el(curr_db_attr, BTGATT_DB_DESCRIPTOR,
+ p_desc->handle, 0 /* s_handle */,
+ 0 /* e_handle */, p_desc->handle,
+ p_desc->uuid, 0 /* property */);
curr_db_attr++;
-
- if (!p_cur_srvc->characteristics || list_is_empty(p_cur_srvc->characteristics))
- continue;
-
- for (list_node_t *cn = list_begin(p_cur_srvc->characteristics);
- cn != list_end(p_cur_srvc->characteristics); cn = list_next(cn)) {
- tBTA_GATTC_CHARACTERISTIC *p_char = (tBTA_GATTC_CHARACTERISTIC*) list_node(cn);
-
- bta_gattc_fill_gatt_db_el(curr_db_attr,
- BTGATT_DB_CHARACTERISTIC,
- p_char->handle,
- 0 /* s_handle */,
- 0 /* e_handle */,
- p_char->handle,
- p_char->uuid,
- p_char->properties);
- curr_db_attr++;
-
- if (!p_char->descriptors || list_is_empty(p_char->descriptors))
- continue;
-
- for (list_node_t *dn = list_begin(p_char->descriptors);
- dn != list_end(p_char->descriptors); dn = list_next(dn)) {
- tBTA_GATTC_DESCRIPTOR *p_desc = (tBTA_GATTC_DESCRIPTOR*) list_node(dn);
-
- bta_gattc_fill_gatt_db_el(curr_db_attr,
- BTGATT_DB_DESCRIPTOR,
- p_desc->handle,
- 0 /* s_handle */,
- 0 /* e_handle */,
- p_desc->handle,
- p_desc->uuid,
- 0 /* property */);
- curr_db_attr++;
- }
- }
-
- if (!p_cur_srvc->included_svc || list_is_empty(p_cur_srvc->included_svc))
- continue;
-
- for (list_node_t *isn = list_begin(p_cur_srvc->included_svc);
- isn != list_end(p_cur_srvc->included_svc); isn = list_next(isn)) {
- tBTA_GATTC_INCLUDED_SVC *p_isvc = (tBTA_GATTC_INCLUDED_SVC*) list_node(isn);
-
- bta_gattc_fill_gatt_db_el(curr_db_attr,
- BTGATT_DB_INCLUDED_SERVICE,
- p_isvc->handle,
- 0 /* s_handle */,
- 0 /* e_handle */,
- p_isvc->handle,
- p_isvc->uuid,
- 0 /* property */);
- curr_db_attr++;
- }
+ }
}
- *db = (btgatt_db_element_t*) buffer;
- *count = db_size;
+ if (!p_cur_srvc->included_svc || list_is_empty(p_cur_srvc->included_svc))
+ continue;
+
+ for (list_node_t* isn = list_begin(p_cur_srvc->included_svc);
+ isn != list_end(p_cur_srvc->included_svc); isn = list_next(isn)) {
+ tBTA_GATTC_INCLUDED_SVC* p_isvc =
+ (tBTA_GATTC_INCLUDED_SVC*)list_node(isn);
+
+ bta_gattc_fill_gatt_db_el(curr_db_attr, BTGATT_DB_INCLUDED_SERVICE,
+ p_isvc->handle, 0 /* s_handle */,
+ 0 /* e_handle */, p_isvc->handle, p_isvc->uuid,
+ 0 /* property */);
+ curr_db_attr++;
+ }
+ }
+
+ *db = (btgatt_db_element_t*)buffer;
+ *count = db_size;
}
/*******************************************************************************
@@ -1313,29 +1240,32 @@
* Returns None.
*
******************************************************************************/
-void bta_gattc_get_gatt_db(uint16_t conn_id, uint16_t start_handle, uint16_t end_handle, btgatt_db_element_t **db, int *count)
-{
- tBTA_GATTC_CLCB *p_clcb = bta_gattc_find_clcb_by_conn_id(conn_id);
+void bta_gattc_get_gatt_db(uint16_t conn_id, uint16_t start_handle,
+ uint16_t end_handle, btgatt_db_element_t** db,
+ int* count) {
+ tBTA_GATTC_CLCB* p_clcb = bta_gattc_find_clcb_by_conn_id(conn_id);
- LOG_DEBUG(LOG_TAG, "%s", __func__);
- if (p_clcb == NULL) {
- APPL_TRACE_ERROR("Unknown conn ID: %d", conn_id);
- return;
- }
+ LOG_DEBUG(LOG_TAG, "%s", __func__);
+ if (p_clcb == NULL) {
+ APPL_TRACE_ERROR("Unknown conn ID: %d", conn_id);
+ return;
+ }
- if (p_clcb->state != BTA_GATTC_CONN_ST) {
- APPL_TRACE_ERROR("server cache not available, CLCB state = %d",
- p_clcb->state);
- return;
- }
+ if (p_clcb->state != BTA_GATTC_CONN_ST) {
+ APPL_TRACE_ERROR("server cache not available, CLCB state = %d",
+ p_clcb->state);
+ return;
+ }
- if (!p_clcb->p_srcb || p_clcb->p_srcb->p_srvc_list || /* no active discovery */
- !p_clcb->p_srcb->p_srvc_cache) {
- APPL_TRACE_ERROR("No server cache available");
- return;
- }
+ if (!p_clcb->p_srcb ||
+ p_clcb->p_srcb->p_srvc_list || /* no active discovery */
+ !p_clcb->p_srcb->p_srvc_cache) {
+ APPL_TRACE_ERROR("No server cache available");
+ return;
+ }
- bta_gattc_get_gatt_db_impl(p_clcb->p_srcb, start_handle, end_handle, db, count);
+ bta_gattc_get_gatt_db_impl(p_clcb->p_srcb, start_handle, end_handle, db,
+ count);
}
/*******************************************************************************
@@ -1349,49 +1279,39 @@
* Returns None.
*
******************************************************************************/
-void bta_gattc_rebuild_cache(tBTA_GATTC_SERV *p_srvc_cb, uint16_t num_attr,
- tBTA_GATTC_NV_ATTR *p_attr)
-{
- /* first attribute loading, initialize buffer */
- APPL_TRACE_ERROR("%s: bta_gattc_rebuild_cache", __func__);
+void bta_gattc_rebuild_cache(tBTA_GATTC_SERV* p_srvc_cb, uint16_t num_attr,
+ tBTA_GATTC_NV_ATTR* p_attr) {
+ /* first attribute loading, initialize buffer */
+ APPL_TRACE_ERROR("%s: bta_gattc_rebuild_cache", __func__);
- list_free(p_srvc_cb->p_srvc_cache);
- p_srvc_cb->p_srvc_cache = NULL;
+ list_free(p_srvc_cb->p_srvc_cache);
+ p_srvc_cb->p_srvc_cache = NULL;
- while (num_attr > 0 && p_attr != NULL)
- {
- switch (p_attr->attr_type)
- {
- case BTA_GATTC_ATTR_TYPE_SRVC:
- bta_gattc_add_srvc_to_cache(p_srvc_cb,
- p_attr->s_handle,
- p_attr->e_handle,
- &p_attr->uuid,
- p_attr->is_primary);
- break;
+ while (num_attr > 0 && p_attr != NULL) {
+ switch (p_attr->attr_type) {
+ case BTA_GATTC_ATTR_TYPE_SRVC:
+ bta_gattc_add_srvc_to_cache(p_srvc_cb, p_attr->s_handle,
+ p_attr->e_handle, &p_attr->uuid,
+ p_attr->is_primary);
+ break;
- case BTA_GATTC_ATTR_TYPE_CHAR:
- //TODO(jpawlowski): store decl_handle properly.
- bta_gattc_add_char_to_cache(p_srvc_cb,
- p_attr->s_handle,
- p_attr->s_handle,
- &p_attr->uuid,
- p_attr->prop);
- break;
+ case BTA_GATTC_ATTR_TYPE_CHAR:
+ // TODO(jpawlowski): store decl_handle properly.
+ bta_gattc_add_char_to_cache(p_srvc_cb, p_attr->s_handle,
+ p_attr->s_handle, &p_attr->uuid,
+ p_attr->prop);
+ break;
- case BTA_GATTC_ATTR_TYPE_CHAR_DESCR:
- case BTA_GATTC_ATTR_TYPE_INCL_SRVC:
- bta_gattc_add_attr_to_cache(p_srvc_cb,
- p_attr->s_handle,
- &p_attr->uuid,
- p_attr->prop,
- p_attr->incl_srvc_handle,
- p_attr->attr_type);
- break;
- }
- p_attr ++;
- num_attr --;
+ case BTA_GATTC_ATTR_TYPE_CHAR_DESCR:
+ case BTA_GATTC_ATTR_TYPE_INCL_SRVC:
+ bta_gattc_add_attr_to_cache(p_srvc_cb, p_attr->s_handle, &p_attr->uuid,
+ p_attr->prop, p_attr->incl_srvc_handle,
+ p_attr->attr_type);
+ break;
}
+ p_attr++;
+ num_attr--;
+ }
}
/*******************************************************************************
@@ -1403,19 +1323,19 @@
* Returns None.
*
******************************************************************************/
-void bta_gattc_fill_nv_attr(tBTA_GATTC_NV_ATTR *p_attr, uint8_t type, uint16_t s_handle,
- uint16_t e_handle, tBT_UUID uuid, uint8_t prop, uint16_t incl_srvc_handle,
- bool is_primary)
-{
- p_attr->s_handle = s_handle;
- p_attr->e_handle = e_handle;
- p_attr->attr_type = type;
- p_attr->is_primary = is_primary;
- p_attr->id = 0;
- p_attr->prop = prop;
- p_attr->incl_srvc_handle = incl_srvc_handle;
+void bta_gattc_fill_nv_attr(tBTA_GATTC_NV_ATTR* p_attr, uint8_t type,
+ uint16_t s_handle, uint16_t e_handle, tBT_UUID uuid,
+ uint8_t prop, uint16_t incl_srvc_handle,
+ bool is_primary) {
+ p_attr->s_handle = s_handle;
+ p_attr->e_handle = e_handle;
+ p_attr->attr_type = type;
+ p_attr->is_primary = is_primary;
+ p_attr->id = 0;
+ p_attr->prop = prop;
+ p_attr->incl_srvc_handle = incl_srvc_handle;
- memcpy(&p_attr->uuid, &uuid, sizeof(tBT_UUID));
+ memcpy(&p_attr->uuid, &uuid, sizeof(tBT_UUID));
}
/*******************************************************************************
@@ -1427,87 +1347,71 @@
* Returns None.
*
******************************************************************************/
-void bta_gattc_cache_save(tBTA_GATTC_SERV *p_srvc_cb, uint16_t conn_id)
-{
- if (!p_srvc_cb->p_srvc_cache || list_is_empty(p_srvc_cb->p_srvc_cache))
- return;
+void bta_gattc_cache_save(tBTA_GATTC_SERV* p_srvc_cb, uint16_t conn_id) {
+ if (!p_srvc_cb->p_srvc_cache || list_is_empty(p_srvc_cb->p_srvc_cache))
+ return;
- int i = 0;
- size_t db_size = bta_gattc_get_db_size(p_srvc_cb->p_srvc_cache, 0x0000, 0xFFFF);
- tBTA_GATTC_NV_ATTR *nv_attr = (tBTA_GATTC_NV_ATTR*) osi_malloc(db_size * sizeof(tBTA_GATTC_NV_ATTR));
+ int i = 0;
+ size_t db_size =
+ bta_gattc_get_db_size(p_srvc_cb->p_srvc_cache, 0x0000, 0xFFFF);
+ tBTA_GATTC_NV_ATTR* nv_attr =
+ (tBTA_GATTC_NV_ATTR*)osi_malloc(db_size * sizeof(tBTA_GATTC_NV_ATTR));
- for (list_node_t *sn = list_begin(p_srvc_cb->p_srvc_cache);
- sn != list_end(p_srvc_cb->p_srvc_cache); sn = list_next(sn)) {
- tBTA_GATTC_SERVICE *p_cur_srvc = (tBTA_GATTC_SERVICE*) list_node(sn);
+ for (list_node_t* sn = list_begin(p_srvc_cb->p_srvc_cache);
+ sn != list_end(p_srvc_cb->p_srvc_cache); sn = list_next(sn)) {
+ tBTA_GATTC_SERVICE* p_cur_srvc = (tBTA_GATTC_SERVICE*)list_node(sn);
- bta_gattc_fill_nv_attr(&nv_attr[i++],
- BTA_GATTC_ATTR_TYPE_SRVC,
- p_cur_srvc->s_handle,
- p_cur_srvc->e_handle,
- p_cur_srvc->uuid,
- 0 /* properties */,
- 0 /* incl_srvc_handle */,
- p_cur_srvc->is_primary);
+ bta_gattc_fill_nv_attr(&nv_attr[i++], BTA_GATTC_ATTR_TYPE_SRVC,
+ p_cur_srvc->s_handle, p_cur_srvc->e_handle,
+ p_cur_srvc->uuid, 0 /* properties */,
+ 0 /* incl_srvc_handle */, p_cur_srvc->is_primary);
+ }
+
+ for (list_node_t* sn = list_begin(p_srvc_cb->p_srvc_cache);
+ sn != list_end(p_srvc_cb->p_srvc_cache); sn = list_next(sn)) {
+ tBTA_GATTC_SERVICE* p_cur_srvc = (tBTA_GATTC_SERVICE*)list_node(sn);
+
+ if (!p_cur_srvc->characteristics ||
+ list_is_empty(p_cur_srvc->characteristics))
+ continue;
+
+ for (list_node_t* cn = list_begin(p_cur_srvc->characteristics);
+ cn != list_end(p_cur_srvc->characteristics); cn = list_next(cn)) {
+ tBTA_GATTC_CHARACTERISTIC* p_char =
+ (tBTA_GATTC_CHARACTERISTIC*)list_node(cn);
+
+ bta_gattc_fill_nv_attr(
+ &nv_attr[i++], BTA_GATTC_ATTR_TYPE_CHAR, p_char->handle, 0,
+ p_char->uuid, p_char->properties, 0 /* incl_srvc_handle */, false);
+
+ if (!p_char->descriptors || list_is_empty(p_char->descriptors)) continue;
+
+ for (list_node_t* dn = list_begin(p_char->descriptors);
+ dn != list_end(p_char->descriptors); dn = list_next(dn)) {
+ tBTA_GATTC_DESCRIPTOR* p_desc = (tBTA_GATTC_DESCRIPTOR*)list_node(dn);
+
+ bta_gattc_fill_nv_attr(
+ &nv_attr[i++], BTA_GATTC_ATTR_TYPE_CHAR_DESCR, p_desc->handle, 0,
+ p_desc->uuid, 0 /* properties */, 0 /* incl_srvc_handle */, false);
+ }
}
- for (list_node_t *sn = list_begin(p_srvc_cb->p_srvc_cache);
- sn != list_end(p_srvc_cb->p_srvc_cache); sn = list_next(sn)) {
- tBTA_GATTC_SERVICE *p_cur_srvc = (tBTA_GATTC_SERVICE*) list_node(sn);
+ if (!p_cur_srvc->included_svc || list_is_empty(p_cur_srvc->included_svc))
+ continue;
- if (!p_cur_srvc->characteristics || list_is_empty(p_cur_srvc->characteristics))
- continue;
+ for (list_node_t* an = list_begin(p_cur_srvc->included_svc);
+ an != list_end(p_cur_srvc->included_svc); an = list_next(an)) {
+ tBTA_GATTC_INCLUDED_SVC* p_isvc = (tBTA_GATTC_INCLUDED_SVC*)list_node(an);
- for (list_node_t *cn = list_begin(p_cur_srvc->characteristics);
- cn != list_end(p_cur_srvc->characteristics); cn = list_next(cn)) {
- tBTA_GATTC_CHARACTERISTIC *p_char = (tBTA_GATTC_CHARACTERISTIC*) list_node(cn);
-
- bta_gattc_fill_nv_attr(&nv_attr[i++],
- BTA_GATTC_ATTR_TYPE_CHAR,
- p_char->handle,
- 0,
- p_char->uuid,
- p_char->properties,
- 0 /* incl_srvc_handle */,
- false);
-
- if (!p_char->descriptors || list_is_empty(p_char->descriptors))
- continue;
-
- for (list_node_t *dn = list_begin(p_char->descriptors);
- dn != list_end(p_char->descriptors); dn = list_next(dn)) {
- tBTA_GATTC_DESCRIPTOR *p_desc = (tBTA_GATTC_DESCRIPTOR*) list_node(dn);
-
- bta_gattc_fill_nv_attr(&nv_attr[i++],
- BTA_GATTC_ATTR_TYPE_CHAR_DESCR,
- p_desc->handle,
- 0,
- p_desc->uuid,
- 0 /* properties */,
- 0 /* incl_srvc_handle */,
- false);
- }
- }
-
- if (!p_cur_srvc->included_svc || list_is_empty(p_cur_srvc->included_svc))
- continue;
-
- for (list_node_t *an = list_begin(p_cur_srvc->included_svc);
- an != list_end(p_cur_srvc->included_svc); an = list_next(an)) {
- tBTA_GATTC_INCLUDED_SVC *p_isvc = (tBTA_GATTC_INCLUDED_SVC*) list_node(an);
-
- bta_gattc_fill_nv_attr(&nv_attr[i++],
- BTA_GATTC_ATTR_TYPE_INCL_SRVC,
- p_isvc->handle,
- 0,
- p_isvc->uuid,
- 0 /* properties */,
- p_isvc->included_service->s_handle,
- false);
- }
+ bta_gattc_fill_nv_attr(&nv_attr[i++], BTA_GATTC_ATTR_TYPE_INCL_SRVC,
+ p_isvc->handle, 0, p_isvc->uuid,
+ 0 /* properties */,
+ p_isvc->included_service->s_handle, false);
}
+ }
- bta_gattc_cache_write(p_srvc_cb->server_bda, db_size, nv_attr);
- osi_free(nv_attr);
+ bta_gattc_cache_write(p_srvc_cb->server_bda, db_size, nv_attr);
+ osi_free(nv_attr);
}
/*******************************************************************************
@@ -1521,61 +1425,63 @@
* Returns true on success, false otherwise
*
******************************************************************************/
-bool bta_gattc_cache_load(tBTA_GATTC_CLCB *p_clcb)
-{
- char fname[255] = {0};
- bta_gattc_generate_cache_file_name(fname, sizeof(fname), p_clcb->p_srcb->server_bda);
+bool bta_gattc_cache_load(tBTA_GATTC_CLCB* p_clcb) {
+ char fname[255] = {0};
+ bta_gattc_generate_cache_file_name(fname, sizeof(fname),
+ p_clcb->p_srcb->server_bda);
- FILE *fd = fopen(fname, "rb");
- if (!fd) {
- APPL_TRACE_ERROR("%s: can't open GATT cache file %s for reading, error: %s",
- __func__, fname, strerror(errno));
- return false;
- }
+ FILE* fd = fopen(fname, "rb");
+ if (!fd) {
+ APPL_TRACE_ERROR("%s: can't open GATT cache file %s for reading, error: %s",
+ __func__, fname, strerror(errno));
+ return false;
+ }
- uint16_t cache_ver = 0;
- tBTA_GATTC_NV_ATTR *attr = NULL;
- bool success = false;
- uint16_t num_attr = 0;
+ uint16_t cache_ver = 0;
+ tBTA_GATTC_NV_ATTR* attr = NULL;
+ bool success = false;
+ uint16_t num_attr = 0;
- if (fread(&cache_ver, sizeof(uint16_t), 1, fd) != 1) {
- APPL_TRACE_ERROR("%s: can't read GATT cache version from: %s", __func__, fname);
- goto done;
- }
+ if (fread(&cache_ver, sizeof(uint16_t), 1, fd) != 1) {
+ APPL_TRACE_ERROR("%s: can't read GATT cache version from: %s", __func__,
+ fname);
+ goto done;
+ }
- if (cache_ver != GATT_CACHE_VERSION) {
- APPL_TRACE_ERROR("%s: wrong GATT cache version: %s", __func__, fname);
- goto done;
- }
+ if (cache_ver != GATT_CACHE_VERSION) {
+ APPL_TRACE_ERROR("%s: wrong GATT cache version: %s", __func__, fname);
+ goto done;
+ }
+ if (fread(&num_attr, sizeof(uint16_t), 1, fd) != 1) {
+ APPL_TRACE_ERROR("%s: can't read number of GATT attributes: %s", __func__,
+ fname);
+ goto done;
+ }
- if (fread(&num_attr, sizeof(uint16_t), 1, fd) != 1) {
- APPL_TRACE_ERROR("%s: can't read number of GATT attributes: %s", __func__, fname);
- goto done;
- }
+ attr = (tBTA_GATTC_NV_ATTR*)osi_malloc(sizeof(tBTA_GATTC_NV_ATTR) * num_attr);
- attr = (tBTA_GATTC_NV_ATTR*) osi_malloc(sizeof(tBTA_GATTC_NV_ATTR) * num_attr);
+ if (fread(attr, sizeof(tBTA_GATTC_NV_ATTR), 0xFF, fd) != num_attr) {
+ APPL_TRACE_ERROR("%s: can't read GATT attributes: %s", __func__, fname);
+ goto done;
+ }
- if (fread(attr, sizeof(tBTA_GATTC_NV_ATTR), 0xFF, fd) != num_attr) {
- APPL_TRACE_ERROR("%s: can't read GATT attributes: %s", __func__, fname);
- goto done;
- }
+ bta_gattc_rebuild_cache(p_clcb->p_srcb, num_attr, attr);
- bta_gattc_rebuild_cache(p_clcb->p_srcb, num_attr, attr);
-
- success = true;
+ success = true;
done:
- osi_free(attr);
- fclose(fd);
- return success;
+ osi_free(attr);
+ fclose(fd);
+ return success;
}
/*******************************************************************************
*
* Function bta_gattc_cache_write
*
- * Description This callout function is executed by GATT when a server cache
+ * Description This callout function is executed by GATT when a server
+ *cache
* is available to save.
*
* Parameter server_bda: server bd address of this cache belongs to
@@ -1585,37 +1491,39 @@
*
******************************************************************************/
static void bta_gattc_cache_write(BD_ADDR server_bda, uint16_t num_attr,
- tBTA_GATTC_NV_ATTR *attr)
-{
- char fname[255] = {0};
- bta_gattc_generate_cache_file_name(fname, sizeof(fname), server_bda);
+ tBTA_GATTC_NV_ATTR* attr) {
+ char fname[255] = {0};
+ bta_gattc_generate_cache_file_name(fname, sizeof(fname), server_bda);
- FILE *fd = fopen(fname, "wb");
- if (!fd) {
- APPL_TRACE_ERROR("%s: can't open GATT cache file for writing: %s", __func__, fname);
- return;
- }
+ FILE* fd = fopen(fname, "wb");
+ if (!fd) {
+ APPL_TRACE_ERROR("%s: can't open GATT cache file for writing: %s", __func__,
+ fname);
+ return;
+ }
- uint16_t cache_ver = GATT_CACHE_VERSION;
- if (fwrite(&cache_ver, sizeof(uint16_t), 1, fd) != 1) {
- APPL_TRACE_ERROR("%s: can't write GATT cache version: %s", __func__, fname);
- fclose(fd);
- return;
- }
-
- if (fwrite(&num_attr, sizeof(uint16_t), 1, fd) != 1) {
- APPL_TRACE_ERROR("%s: can't write GATT cache attribute count: %s", __func__, fname);
- fclose(fd);
- return;
- }
-
- if (fwrite(attr, sizeof(tBTA_GATTC_NV_ATTR), num_attr, fd) != num_attr) {
- APPL_TRACE_ERROR("%s: can't write GATT cache attributes: %s", __func__, fname);
- fclose(fd);
- return;
- }
-
+ uint16_t cache_ver = GATT_CACHE_VERSION;
+ if (fwrite(&cache_ver, sizeof(uint16_t), 1, fd) != 1) {
+ APPL_TRACE_ERROR("%s: can't write GATT cache version: %s", __func__, fname);
fclose(fd);
+ return;
+ }
+
+ if (fwrite(&num_attr, sizeof(uint16_t), 1, fd) != 1) {
+ APPL_TRACE_ERROR("%s: can't write GATT cache attribute count: %s", __func__,
+ fname);
+ fclose(fd);
+ return;
+ }
+
+ if (fwrite(attr, sizeof(tBTA_GATTC_NV_ATTR), num_attr, fd) != num_attr) {
+ APPL_TRACE_ERROR("%s: can't write GATT cache attributes: %s", __func__,
+ fname);
+ fclose(fd);
+ return;
+ }
+
+ fclose(fd);
}
/*******************************************************************************
@@ -1630,12 +1538,10 @@
* Returns void.
*
******************************************************************************/
-void bta_gattc_cache_reset(BD_ADDR server_bda)
-{
- BTIF_TRACE_DEBUG("%s", __func__);
- char fname[255] = {0};
- bta_gattc_generate_cache_file_name(fname, sizeof(fname), server_bda);
- unlink(fname);
+void bta_gattc_cache_reset(BD_ADDR server_bda) {
+ BTIF_TRACE_DEBUG("%s", __func__);
+ char fname[255] = {0};
+ bta_gattc_generate_cache_file_name(fname, sizeof(fname), server_bda);
+ unlink(fname);
}
#endif /* BTA_GATT_INCLUDED */
-
diff --git a/bta/gatt/bta_gattc_int.h b/bta/gatt/bta_gattc_int.h
index 04ac8da..53c5670 100644
--- a/bta/gatt/bta_gattc_int.h
+++ b/bta/gatt/bta_gattc_int.h
@@ -26,460 +26,479 @@
#include "bt_target.h"
-#include "osi/include/fixed_queue.h"
-#include "bta_sys.h"
#include "bta_gatt_api.h"
+#include "bta_sys.h"
+#include "osi/include/fixed_queue.h"
#include "bt_common.h"
/*****************************************************************************
* Constants and data types
****************************************************************************/
-enum
-{
- BTA_GATTC_API_OPEN_EVT = BTA_SYS_EVT_START(BTA_ID_GATTC),
- BTA_GATTC_INT_OPEN_FAIL_EVT,
- BTA_GATTC_API_CANCEL_OPEN_EVT,
- BTA_GATTC_INT_CANCEL_OPEN_OK_EVT,
+enum {
+ BTA_GATTC_API_OPEN_EVT = BTA_SYS_EVT_START(BTA_ID_GATTC),
+ BTA_GATTC_INT_OPEN_FAIL_EVT,
+ BTA_GATTC_API_CANCEL_OPEN_EVT,
+ BTA_GATTC_INT_CANCEL_OPEN_OK_EVT,
- BTA_GATTC_API_READ_EVT,
- BTA_GATTC_API_WRITE_EVT,
- BTA_GATTC_API_EXEC_EVT,
- BTA_GATTC_API_CFG_MTU_EVT,
+ BTA_GATTC_API_READ_EVT,
+ BTA_GATTC_API_WRITE_EVT,
+ BTA_GATTC_API_EXEC_EVT,
+ BTA_GATTC_API_CFG_MTU_EVT,
- BTA_GATTC_API_CLOSE_EVT,
+ BTA_GATTC_API_CLOSE_EVT,
- BTA_GATTC_API_SEARCH_EVT,
- BTA_GATTC_API_CONFIRM_EVT,
- BTA_GATTC_API_READ_MULTI_EVT,
- BTA_GATTC_API_REFRESH_EVT,
+ BTA_GATTC_API_SEARCH_EVT,
+ BTA_GATTC_API_CONFIRM_EVT,
+ BTA_GATTC_API_READ_MULTI_EVT,
+ BTA_GATTC_API_REFRESH_EVT,
- BTA_GATTC_INT_CONN_EVT,
- BTA_GATTC_INT_DISCOVER_EVT,
- BTA_GATTC_DISCOVER_CMPL_EVT,
- BTA_GATTC_OP_CMPL_EVT,
- BTA_GATTC_INT_DISCONN_EVT,
+ BTA_GATTC_INT_CONN_EVT,
+ BTA_GATTC_INT_DISCOVER_EVT,
+ BTA_GATTC_DISCOVER_CMPL_EVT,
+ BTA_GATTC_OP_CMPL_EVT,
+ BTA_GATTC_INT_DISCONN_EVT,
- BTA_GATTC_INT_START_IF_EVT,
- BTA_GATTC_API_REG_EVT,
- BTA_GATTC_API_DEREG_EVT,
- BTA_GATTC_API_DISABLE_EVT,
- BTA_GATTC_ENC_CMPL_EVT
+ BTA_GATTC_INT_START_IF_EVT,
+ BTA_GATTC_API_REG_EVT,
+ BTA_GATTC_API_DEREG_EVT,
+ BTA_GATTC_API_DISABLE_EVT,
+ BTA_GATTC_ENC_CMPL_EVT
};
typedef uint16_t tBTA_GATTC_INT_EVT;
-#define BTA_GATTC_SERVICE_CHANGED_LEN 4
+#define BTA_GATTC_SERVICE_CHANGED_LEN 4
/* max client application GATTC can support */
-#ifndef BTA_GATTC_CL_MAX
-#define BTA_GATTC_CL_MAX 32
+#ifndef BTA_GATTC_CL_MAX
+#define BTA_GATTC_CL_MAX 32
#endif
/* max known devices GATTC can support */
-#ifndef BTA_GATTC_KNOWN_SR_MAX
-#define BTA_GATTC_KNOWN_SR_MAX 10
+#ifndef BTA_GATTC_KNOWN_SR_MAX
+#define BTA_GATTC_KNOWN_SR_MAX 10
#endif
-#define BTA_GATTC_CONN_MAX GATT_MAX_PHY_CHANNEL
+#define BTA_GATTC_CONN_MAX GATT_MAX_PHY_CHANNEL
#ifndef BTA_GATTC_CLCB_MAX
- #define BTA_GATTC_CLCB_MAX GATT_CL_MAX_LCB
+#define BTA_GATTC_CLCB_MAX GATT_CL_MAX_LCB
#endif
-#define BTA_GATTC_WRITE_PREPARE GATT_WRITE_PREPARE
-
+#define BTA_GATTC_WRITE_PREPARE GATT_WRITE_PREPARE
/* internal strucutre for GATTC register API */
-typedef struct
-{
- BT_HDR hdr;
- tBT_UUID app_uuid;
- tBTA_GATTC_CBACK *p_cback;
-}tBTA_GATTC_API_REG;
+typedef struct {
+ BT_HDR hdr;
+ tBT_UUID app_uuid;
+ tBTA_GATTC_CBACK* p_cback;
+} tBTA_GATTC_API_REG;
-typedef struct
-{
- BT_HDR hdr;
- tBTA_GATTC_IF client_if;
-}tBTA_GATTC_INT_START_IF;
+typedef struct {
+ BT_HDR hdr;
+ tBTA_GATTC_IF client_if;
+} tBTA_GATTC_INT_START_IF;
typedef tBTA_GATTC_INT_START_IF tBTA_GATTC_API_DEREG;
typedef tBTA_GATTC_INT_START_IF tBTA_GATTC_INT_DEREG;
-typedef struct
-{
- BT_HDR hdr;
- BD_ADDR remote_bda;
- tBTA_GATTC_IF client_if;
- bool is_direct;
- tBTA_TRANSPORT transport;
+typedef struct {
+ BT_HDR hdr;
+ BD_ADDR remote_bda;
+ tBTA_GATTC_IF client_if;
+ bool is_direct;
+ tBTA_TRANSPORT transport;
} tBTA_GATTC_API_OPEN;
typedef tBTA_GATTC_API_OPEN tBTA_GATTC_API_CANCEL_OPEN;
-typedef struct
-{
- BT_HDR hdr;
- tBTA_GATT_AUTH_REQ auth_req;
- uint16_t handle;
- tBTA_GATTC_EVT cmpl_evt;
- GATT_READ_OP_CB read_cb;
- void* read_cb_data;
+typedef struct {
+ BT_HDR hdr;
+ tBTA_GATT_AUTH_REQ auth_req;
+ uint16_t handle;
+ tBTA_GATTC_EVT cmpl_evt;
+ GATT_READ_OP_CB read_cb;
+ void* read_cb_data;
} tBTA_GATTC_API_READ;
-typedef struct
-{
- BT_HDR hdr;
- tBTA_GATT_AUTH_REQ auth_req;
- uint16_t handle;
- tBTA_GATTC_WRITE_TYPE write_type;
- uint16_t offset;
- uint16_t len;
- uint8_t *p_value;
- GATT_WRITE_OP_CB write_cb;
- void* write_cb_data;
-}tBTA_GATTC_API_WRITE;
+typedef struct {
+ BT_HDR hdr;
+ tBTA_GATT_AUTH_REQ auth_req;
+ uint16_t handle;
+ tBTA_GATTC_WRITE_TYPE write_type;
+ uint16_t offset;
+ uint16_t len;
+ uint8_t* p_value;
+ GATT_WRITE_OP_CB write_cb;
+ void* write_cb_data;
+} tBTA_GATTC_API_WRITE;
-typedef struct
-{
- BT_HDR hdr;
- bool is_execute;
-}tBTA_GATTC_API_EXEC;
+typedef struct {
+ BT_HDR hdr;
+ bool is_execute;
+} tBTA_GATTC_API_EXEC;
-typedef struct
-{
- BT_HDR hdr;
- uint16_t handle;
+typedef struct {
+ BT_HDR hdr;
+ uint16_t handle;
} tBTA_GATTC_API_CONFIRM;
typedef tGATT_CL_COMPLETE tBTA_GATTC_CMPL;
-typedef struct
-{
- BT_HDR hdr;
- uint8_t op_code;
- tGATT_STATUS status;
- tBTA_GATTC_CMPL *p_cmpl;
-}tBTA_GATTC_OP_CMPL;
+typedef struct {
+ BT_HDR hdr;
+ uint8_t op_code;
+ tGATT_STATUS status;
+ tBTA_GATTC_CMPL* p_cmpl;
+} tBTA_GATTC_OP_CMPL;
-typedef struct
-{
- BT_HDR hdr;
- tBT_UUID *p_srvc_uuid;
-}tBTA_GATTC_API_SEARCH;
+typedef struct {
+ BT_HDR hdr;
+ tBT_UUID* p_srvc_uuid;
+} tBTA_GATTC_API_SEARCH;
-typedef struct
-{
- BT_HDR hdr;
- tBTA_GATT_AUTH_REQ auth_req;
- uint8_t num_attr;
- uint16_t handles[GATT_MAX_READ_MULTI_HANDLES];
-}tBTA_GATTC_API_READ_MULTI;
+typedef struct {
+ BT_HDR hdr;
+ tBTA_GATT_AUTH_REQ auth_req;
+ uint8_t num_attr;
+ uint16_t handles[GATT_MAX_READ_MULTI_HANDLES];
+} tBTA_GATTC_API_READ_MULTI;
-typedef struct
-{
- BT_HDR hdr;
- uint16_t mtu;
-}tBTA_GATTC_API_CFG_MTU;
+typedef struct {
+ BT_HDR hdr;
+ uint16_t mtu;
+} tBTA_GATTC_API_CFG_MTU;
-typedef struct
-{
- BT_HDR hdr;
- BD_ADDR remote_bda;
- tBTA_GATTC_IF client_if;
- uint8_t role;
- tBT_TRANSPORT transport;
- tGATT_DISCONN_REASON reason;
-}tBTA_GATTC_INT_CONN;
+typedef struct {
+ BT_HDR hdr;
+ BD_ADDR remote_bda;
+ tBTA_GATTC_IF client_if;
+ uint8_t role;
+ tBT_TRANSPORT transport;
+ tGATT_DISCONN_REASON reason;
+} tBTA_GATTC_INT_CONN;
-typedef struct
-{
- BT_HDR hdr;
- BD_ADDR remote_bda;
- tBTA_GATTC_IF client_if;
-}tBTA_GATTC_ENC_CMPL;
+typedef struct {
+ BT_HDR hdr;
+ BD_ADDR remote_bda;
+ tBTA_GATTC_IF client_if;
+} tBTA_GATTC_ENC_CMPL;
-typedef union
-{
- BT_HDR hdr;
- tBTA_GATTC_API_REG api_reg;
- tBTA_GATTC_API_DEREG api_dereg;
- tBTA_GATTC_API_OPEN api_conn;
- tBTA_GATTC_API_CANCEL_OPEN api_cancel_conn;
- tBTA_GATTC_API_READ api_read;
- tBTA_GATTC_API_SEARCH api_search;
- tBTA_GATTC_API_WRITE api_write;
- tBTA_GATTC_API_CONFIRM api_confirm;
- tBTA_GATTC_API_EXEC api_exec;
- tBTA_GATTC_API_READ_MULTI api_read_multi;
- tBTA_GATTC_API_CFG_MTU api_mtu;
- tBTA_GATTC_OP_CMPL op_cmpl;
- tBTA_GATTC_INT_CONN int_conn;
- tBTA_GATTC_ENC_CMPL enc_cmpl;
+typedef union {
+ BT_HDR hdr;
+ tBTA_GATTC_API_REG api_reg;
+ tBTA_GATTC_API_DEREG api_dereg;
+ tBTA_GATTC_API_OPEN api_conn;
+ tBTA_GATTC_API_CANCEL_OPEN api_cancel_conn;
+ tBTA_GATTC_API_READ api_read;
+ tBTA_GATTC_API_SEARCH api_search;
+ tBTA_GATTC_API_WRITE api_write;
+ tBTA_GATTC_API_CONFIRM api_confirm;
+ tBTA_GATTC_API_EXEC api_exec;
+ tBTA_GATTC_API_READ_MULTI api_read_multi;
+ tBTA_GATTC_API_CFG_MTU api_mtu;
+ tBTA_GATTC_OP_CMPL op_cmpl;
+ tBTA_GATTC_INT_CONN int_conn;
+ tBTA_GATTC_ENC_CMPL enc_cmpl;
- tBTA_GATTC_INT_START_IF int_start_if;
- tBTA_GATTC_INT_DEREG int_dereg;
+ tBTA_GATTC_INT_START_IF int_start_if;
+ tBTA_GATTC_INT_DEREG int_dereg;
} tBTA_GATTC_DATA;
-
/* GATT server cache on the client */
-typedef struct
-{
- tBT_UUID uuid;
- uint16_t s_handle;
- uint16_t e_handle;
- // this field is set only for characteristic
- uint16_t char_decl_handle;
- bool is_primary;
- tBTA_GATT_CHAR_PROP property;
-}tBTA_GATTC_ATTR_REC;
+typedef struct {
+ tBT_UUID uuid;
+ uint16_t s_handle;
+ uint16_t e_handle;
+ // this field is set only for characteristic
+ uint16_t char_decl_handle;
+ bool is_primary;
+ tBTA_GATT_CHAR_PROP property;
+} tBTA_GATTC_ATTR_REC;
-
-#define BTA_GATTC_MAX_CACHE_CHAR 40
-#define BTA_GATTC_ATTR_LIST_SIZE (BTA_GATTC_MAX_CACHE_CHAR * sizeof(tBTA_GATTC_ATTR_REC))
+#define BTA_GATTC_MAX_CACHE_CHAR 40
+#define BTA_GATTC_ATTR_LIST_SIZE \
+ (BTA_GATTC_MAX_CACHE_CHAR * sizeof(tBTA_GATTC_ATTR_REC))
#ifndef BTA_GATTC_CACHE_SRVR_SIZE
- #define BTA_GATTC_CACHE_SRVR_SIZE 600
+#define BTA_GATTC_CACHE_SRVR_SIZE 600
#endif
-enum
-{
- BTA_GATTC_IDLE_ST = 0, /* Idle */
- BTA_GATTC_W4_CONN_ST, /* Wait for connection - (optional) */
- BTA_GATTC_CONN_ST, /* connected state */
- BTA_GATTC_DISCOVER_ST /* discover is in progress */
+enum {
+ BTA_GATTC_IDLE_ST = 0, /* Idle */
+ BTA_GATTC_W4_CONN_ST, /* Wait for connection - (optional) */
+ BTA_GATTC_CONN_ST, /* connected state */
+ BTA_GATTC_DISCOVER_ST /* discover is in progress */
};
typedef uint8_t tBTA_GATTC_STATE;
-typedef struct
-{
- bool in_use;
- BD_ADDR server_bda;
- bool connected;
+typedef struct {
+ bool in_use;
+ BD_ADDR server_bda;
+ bool connected;
-#define BTA_GATTC_SERV_IDLE 0
-#define BTA_GATTC_SERV_LOAD 1
-#define BTA_GATTC_SERV_SAVE 2
-#define BTA_GATTC_SERV_DISC 3
+#define BTA_GATTC_SERV_IDLE 0
+#define BTA_GATTC_SERV_LOAD 1
+#define BTA_GATTC_SERV_SAVE 2
+#define BTA_GATTC_SERV_DISC 3
#define BTA_GATTC_SERV_DISC_ACT 4
- uint8_t state;
+ uint8_t state;
- list_t *p_srvc_cache; /* list of tBTA_GATTC_SERVICE */
- uint8_t update_count; /* indication received */
- uint8_t num_clcb; /* number of associated CLCB */
+ list_t* p_srvc_cache; /* list of tBTA_GATTC_SERVICE */
+ uint8_t update_count; /* indication received */
+ uint8_t num_clcb; /* number of associated CLCB */
+ tBTA_GATTC_ATTR_REC* p_srvc_list;
+ uint8_t cur_srvc_idx;
+ uint8_t cur_char_idx;
+ uint8_t next_avail_idx;
+ uint8_t total_srvc;
+ uint8_t total_char;
- tBTA_GATTC_ATTR_REC *p_srvc_list;
- uint8_t cur_srvc_idx;
- uint8_t cur_char_idx;
- uint8_t next_avail_idx;
- uint8_t total_srvc;
- uint8_t total_char;
+ uint8_t srvc_hdl_chg; /* service handle change indication pending */
+ uint16_t attr_index; /* cahce NV saving/loading attribute index */
- uint8_t srvc_hdl_chg; /* service handle change indication pending */
- uint16_t attr_index; /* cahce NV saving/loading attribute index */
-
- uint16_t mtu;
+ uint16_t mtu;
} tBTA_GATTC_SERV;
#ifndef BTA_GATTC_NOTIF_REG_MAX
-#define BTA_GATTC_NOTIF_REG_MAX 15
+#define BTA_GATTC_NOTIF_REG_MAX 15
#endif
-typedef struct
-{
- bool in_use;
- BD_ADDR remote_bda;
- uint16_t handle;
-}tBTA_GATTC_NOTIF_REG;
+typedef struct {
+ bool in_use;
+ BD_ADDR remote_bda;
+ uint16_t handle;
+} tBTA_GATTC_NOTIF_REG;
-typedef struct
-{
- tBTA_GATTC_CBACK *p_cback;
- bool in_use;
- tBTA_GATTC_IF client_if; /* client interface with BTE stack for this application */
- uint8_t num_clcb; /* number of associated CLCB */
- bool dereg_pending;
- tBT_UUID app_uuid;
- tBTA_GATTC_NOTIF_REG notif_reg[BTA_GATTC_NOTIF_REG_MAX];
-}tBTA_GATTC_RCB;
+typedef struct {
+ tBTA_GATTC_CBACK* p_cback;
+ bool in_use;
+ tBTA_GATTC_IF
+ client_if; /* client interface with BTE stack for this application */
+ uint8_t num_clcb; /* number of associated CLCB */
+ bool dereg_pending;
+ tBT_UUID app_uuid;
+ tBTA_GATTC_NOTIF_REG notif_reg[BTA_GATTC_NOTIF_REG_MAX];
+} tBTA_GATTC_RCB;
-/* client channel is a mapping between a BTA client(cl_id) and a remote BD address */
-typedef struct
-{
- uint16_t bta_conn_id; /* client channel ID, unique for clcb */
- BD_ADDR bda;
- tBTA_TRANSPORT transport; /* channel transport */
- tBTA_GATTC_RCB *p_rcb; /* pointer to the registration CB */
- tBTA_GATTC_SERV *p_srcb; /* server cache CB */
- tBTA_GATTC_DATA *p_q_cmd; /* command in queue waiting for execution */
+/* client channel is a mapping between a BTA client(cl_id) and a remote BD
+ * address */
+typedef struct {
+ uint16_t bta_conn_id; /* client channel ID, unique for clcb */
+ BD_ADDR bda;
+ tBTA_TRANSPORT transport; /* channel transport */
+ tBTA_GATTC_RCB* p_rcb; /* pointer to the registration CB */
+ tBTA_GATTC_SERV* p_srcb; /* server cache CB */
+ tBTA_GATTC_DATA* p_q_cmd; /* command in queue waiting for execution */
-#define BTA_GATTC_NO_SCHEDULE 0
-#define BTA_GATTC_DISC_WAITING 0x01
-#define BTA_GATTC_REQ_WAITING 0x10
+#define BTA_GATTC_NO_SCHEDULE 0
+#define BTA_GATTC_DISC_WAITING 0x01
+#define BTA_GATTC_REQ_WAITING 0x10
- uint8_t auto_update; /* auto update is waiting */
- bool disc_active;
- bool in_use;
- tBTA_GATTC_STATE state;
- tBTA_GATT_STATUS status;
- uint16_t reason;
+ uint8_t auto_update; /* auto update is waiting */
+ bool disc_active;
+ bool in_use;
+ tBTA_GATTC_STATE state;
+ tBTA_GATT_STATUS status;
+ uint16_t reason;
} tBTA_GATTC_CLCB;
/* back ground connection tracking information */
#if GATT_MAX_APPS <= 8
-typedef uint8_t tBTA_GATTC_CIF_MASK ;
+typedef uint8_t tBTA_GATTC_CIF_MASK;
#elif GATT_MAX_APPS <= 16
typedef uint16_t tBTA_GATTC_CIF_MASK;
#elif GATT_MAX_APPS <= 32
typedef uint32_t tBTA_GATTC_CIF_MASK;
#endif
-typedef struct
-{
- bool in_use;
- BD_ADDR remote_bda;
- tBTA_GATTC_CIF_MASK cif_mask;
+typedef struct {
+ bool in_use;
+ BD_ADDR remote_bda;
+ tBTA_GATTC_CIF_MASK cif_mask;
-}tBTA_GATTC_BG_TCK;
+} tBTA_GATTC_BG_TCK;
-typedef struct
-{
- bool in_use;
- BD_ADDR remote_bda;
-}tBTA_GATTC_CONN;
+typedef struct {
+ bool in_use;
+ BD_ADDR remote_bda;
+} tBTA_GATTC_CONN;
-enum
-{
- BTA_GATTC_STATE_DISABLED,
- BTA_GATTC_STATE_ENABLING,
- BTA_GATTC_STATE_ENABLED,
- BTA_GATTC_STATE_DISABLING
+enum {
+ BTA_GATTC_STATE_DISABLED,
+ BTA_GATTC_STATE_ENABLING,
+ BTA_GATTC_STATE_ENABLED,
+ BTA_GATTC_STATE_DISABLING
};
-typedef struct
-{
- uint8_t state;
+typedef struct {
+ uint8_t state;
- tBTA_GATTC_CONN conn_track[BTA_GATTC_CONN_MAX];
- tBTA_GATTC_BG_TCK bg_track[BTA_GATTC_KNOWN_SR_MAX];
- tBTA_GATTC_RCB cl_rcb[BTA_GATTC_CL_MAX];
+ tBTA_GATTC_CONN conn_track[BTA_GATTC_CONN_MAX];
+ tBTA_GATTC_BG_TCK bg_track[BTA_GATTC_KNOWN_SR_MAX];
+ tBTA_GATTC_RCB cl_rcb[BTA_GATTC_CL_MAX];
- tBTA_GATTC_CLCB clcb[BTA_GATTC_CLCB_MAX];
- tBTA_GATTC_SERV known_server[BTA_GATTC_KNOWN_SR_MAX];
-}tBTA_GATTC_CB;
+ tBTA_GATTC_CLCB clcb[BTA_GATTC_CLCB_MAX];
+ tBTA_GATTC_SERV known_server[BTA_GATTC_KNOWN_SR_MAX];
+} tBTA_GATTC_CB;
/*****************************************************************************
* Global data
****************************************************************************/
/* GATTC control block */
-extern tBTA_GATTC_CB bta_gattc_cb;
+extern tBTA_GATTC_CB bta_gattc_cb;
/*****************************************************************************
* Function prototypes
****************************************************************************/
-extern bool bta_gattc_hdl_event(BT_HDR *p_msg);
-extern bool bta_gattc_sm_execute(tBTA_GATTC_CLCB *p_clcb, uint16_t event, tBTA_GATTC_DATA *p_data);
+extern bool bta_gattc_hdl_event(BT_HDR* p_msg);
+extern bool bta_gattc_sm_execute(tBTA_GATTC_CLCB* p_clcb, uint16_t event,
+ tBTA_GATTC_DATA* p_data);
/* function processed outside SM */
extern void bta_gattc_disable();
-extern void bta_gattc_register(tBTA_GATTC_DATA *p_data);
-extern void bta_gattc_start_if(tBTA_GATTC_DATA *p_data);
-extern void bta_gattc_process_api_open (tBTA_GATTC_DATA * p_msg);
-extern void bta_gattc_process_api_open_cancel (tBTA_GATTC_DATA * p_msg);
-extern void bta_gattc_deregister(tBTA_GATTC_RCB *p_clreg);
-extern void bta_gattc_process_enc_cmpl(tBTA_GATTC_DATA *p_msg);
+extern void bta_gattc_register(tBTA_GATTC_DATA* p_data);
+extern void bta_gattc_start_if(tBTA_GATTC_DATA* p_data);
+extern void bta_gattc_process_api_open(tBTA_GATTC_DATA* p_msg);
+extern void bta_gattc_process_api_open_cancel(tBTA_GATTC_DATA* p_msg);
+extern void bta_gattc_deregister(tBTA_GATTC_RCB* p_clreg);
+extern void bta_gattc_process_enc_cmpl(tBTA_GATTC_DATA* p_msg);
/* function within state machine */
-extern void bta_gattc_open(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data);
-extern void bta_gattc_open_fail(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data);
-extern void bta_gattc_open_error(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data);
+extern void bta_gattc_open(tBTA_GATTC_CLCB* p_clcb, tBTA_GATTC_DATA* p_data);
+extern void bta_gattc_open_fail(tBTA_GATTC_CLCB* p_clcb,
+ tBTA_GATTC_DATA* p_data);
+extern void bta_gattc_open_error(tBTA_GATTC_CLCB* p_clcb,
+ tBTA_GATTC_DATA* p_data);
-extern void bta_gattc_cancel_open(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data);
-extern void bta_gattc_cancel_open_ok(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data);
-extern void bta_gattc_cancel_open_error(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data);
+extern void bta_gattc_cancel_open(tBTA_GATTC_CLCB* p_clcb,
+ tBTA_GATTC_DATA* p_data);
+extern void bta_gattc_cancel_open_ok(tBTA_GATTC_CLCB* p_clcb,
+ tBTA_GATTC_DATA* p_data);
+extern void bta_gattc_cancel_open_error(tBTA_GATTC_CLCB* p_clcb,
+ tBTA_GATTC_DATA* p_data);
-extern void bta_gattc_conn(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data);
+extern void bta_gattc_conn(tBTA_GATTC_CLCB* p_clcb, tBTA_GATTC_DATA* p_data);
-extern void bta_gattc_close(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data);
-extern void bta_gattc_close_fail(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data);
-extern void bta_gattc_disc_close(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data);
+extern void bta_gattc_close(tBTA_GATTC_CLCB* p_clcb, tBTA_GATTC_DATA* p_data);
+extern void bta_gattc_close_fail(tBTA_GATTC_CLCB* p_clcb,
+ tBTA_GATTC_DATA* p_data);
+extern void bta_gattc_disc_close(tBTA_GATTC_CLCB* p_clcb,
+ tBTA_GATTC_DATA* p_data);
-extern void bta_gattc_start_discover(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data);
-extern void bta_gattc_disc_cmpl(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data);
-extern void bta_gattc_read(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data);
-extern void bta_gattc_write(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data);
-extern void bta_gattc_op_cmpl(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data);
-extern void bta_gattc_q_cmd(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data);
-extern void bta_gattc_search(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data);
-extern void bta_gattc_fail(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data);
-extern void bta_gattc_confirm(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data);
-extern void bta_gattc_execute(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data);
-extern void bta_gattc_read_multi(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data);
-extern void bta_gattc_ci_open(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data);
-extern void bta_gattc_ci_close(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data);
-extern void bta_gattc_ignore_op_cmpl(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data);
-extern void bta_gattc_restart_discover(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA * p_msg);
-extern void bta_gattc_init_bk_conn(tBTA_GATTC_API_OPEN *p_data, tBTA_GATTC_RCB *p_clreg);
-extern void bta_gattc_cancel_bk_conn(tBTA_GATTC_API_CANCEL_OPEN *p_data);
-extern void bta_gattc_send_open_cback( tBTA_GATTC_RCB *p_clreg, tBTA_GATT_STATUS status,
- BD_ADDR remote_bda, uint16_t conn_id, tBTA_TRANSPORT transport, uint16_t mtu);
-extern void bta_gattc_process_api_refresh(tBTA_GATTC_DATA * p_msg);
-extern void bta_gattc_cfg_mtu(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data);
+extern void bta_gattc_start_discover(tBTA_GATTC_CLCB* p_clcb,
+ tBTA_GATTC_DATA* p_data);
+extern void bta_gattc_disc_cmpl(tBTA_GATTC_CLCB* p_clcb,
+ tBTA_GATTC_DATA* p_data);
+extern void bta_gattc_read(tBTA_GATTC_CLCB* p_clcb, tBTA_GATTC_DATA* p_data);
+extern void bta_gattc_write(tBTA_GATTC_CLCB* p_clcb, tBTA_GATTC_DATA* p_data);
+extern void bta_gattc_op_cmpl(tBTA_GATTC_CLCB* p_clcb, tBTA_GATTC_DATA* p_data);
+extern void bta_gattc_q_cmd(tBTA_GATTC_CLCB* p_clcb, tBTA_GATTC_DATA* p_data);
+extern void bta_gattc_search(tBTA_GATTC_CLCB* p_clcb, tBTA_GATTC_DATA* p_data);
+extern void bta_gattc_fail(tBTA_GATTC_CLCB* p_clcb, tBTA_GATTC_DATA* p_data);
+extern void bta_gattc_confirm(tBTA_GATTC_CLCB* p_clcb, tBTA_GATTC_DATA* p_data);
+extern void bta_gattc_execute(tBTA_GATTC_CLCB* p_clcb, tBTA_GATTC_DATA* p_data);
+extern void bta_gattc_read_multi(tBTA_GATTC_CLCB* p_clcb,
+ tBTA_GATTC_DATA* p_data);
+extern void bta_gattc_ci_open(tBTA_GATTC_CLCB* p_clcb, tBTA_GATTC_DATA* p_data);
+extern void bta_gattc_ci_close(tBTA_GATTC_CLCB* p_clcb,
+ tBTA_GATTC_DATA* p_data);
+extern void bta_gattc_ignore_op_cmpl(tBTA_GATTC_CLCB* p_clcb,
+ tBTA_GATTC_DATA* p_data);
+extern void bta_gattc_restart_discover(tBTA_GATTC_CLCB* p_clcb,
+ tBTA_GATTC_DATA* p_msg);
+extern void bta_gattc_init_bk_conn(tBTA_GATTC_API_OPEN* p_data,
+ tBTA_GATTC_RCB* p_clreg);
+extern void bta_gattc_cancel_bk_conn(tBTA_GATTC_API_CANCEL_OPEN* p_data);
+extern void bta_gattc_send_open_cback(tBTA_GATTC_RCB* p_clreg,
+ tBTA_GATT_STATUS status,
+ BD_ADDR remote_bda, uint16_t conn_id,
+ tBTA_TRANSPORT transport, uint16_t mtu);
+extern void bta_gattc_process_api_refresh(tBTA_GATTC_DATA* p_msg);
+extern void bta_gattc_cfg_mtu(tBTA_GATTC_CLCB* p_clcb, tBTA_GATTC_DATA* p_data);
#if (BLE_INCLUDED == TRUE)
-extern void bta_gattc_listen(tBTA_GATTC_DATA * p_msg);
-extern void bta_gattc_broadcast(tBTA_GATTC_DATA * p_msg);
+extern void bta_gattc_listen(tBTA_GATTC_DATA* p_msg);
+extern void bta_gattc_broadcast(tBTA_GATTC_DATA* p_msg);
#endif
/* utility functions */
-extern tBTA_GATTC_CLCB * bta_gattc_find_clcb_by_cif (uint8_t client_if, BD_ADDR remote_bda, tBTA_TRANSPORT transport);
-extern tBTA_GATTC_CLCB * bta_gattc_find_clcb_by_conn_id (uint16_t conn_id);
-extern tBTA_GATTC_CLCB * bta_gattc_clcb_alloc(tBTA_GATTC_IF client_if, BD_ADDR remote_bda, tBTA_TRANSPORT transport);
-extern void bta_gattc_clcb_dealloc(tBTA_GATTC_CLCB *p_clcb);
-extern tBTA_GATTC_CLCB * bta_gattc_find_alloc_clcb(tBTA_GATTC_IF client_if, BD_ADDR remote_bda, tBTA_TRANSPORT transport);
-extern tBTA_GATTC_RCB * bta_gattc_cl_get_regcb(uint8_t client_if);
-extern tBTA_GATTC_SERV * bta_gattc_find_srcb(BD_ADDR bda);
-extern tBTA_GATTC_SERV * bta_gattc_srcb_alloc(BD_ADDR bda);
-extern tBTA_GATTC_SERV * bta_gattc_find_scb_by_cid (uint16_t conn_id);
-extern tBTA_GATTC_CLCB * bta_gattc_find_int_conn_clcb(tBTA_GATTC_DATA *p_msg);
-extern tBTA_GATTC_CLCB * bta_gattc_find_int_disconn_clcb(tBTA_GATTC_DATA *p_msg);
+extern tBTA_GATTC_CLCB* bta_gattc_find_clcb_by_cif(uint8_t client_if,
+ BD_ADDR remote_bda,
+ tBTA_TRANSPORT transport);
+extern tBTA_GATTC_CLCB* bta_gattc_find_clcb_by_conn_id(uint16_t conn_id);
+extern tBTA_GATTC_CLCB* bta_gattc_clcb_alloc(tBTA_GATTC_IF client_if,
+ BD_ADDR remote_bda,
+ tBTA_TRANSPORT transport);
+extern void bta_gattc_clcb_dealloc(tBTA_GATTC_CLCB* p_clcb);
+extern tBTA_GATTC_CLCB* bta_gattc_find_alloc_clcb(tBTA_GATTC_IF client_if,
+ BD_ADDR remote_bda,
+ tBTA_TRANSPORT transport);
+extern tBTA_GATTC_RCB* bta_gattc_cl_get_regcb(uint8_t client_if);
+extern tBTA_GATTC_SERV* bta_gattc_find_srcb(BD_ADDR bda);
+extern tBTA_GATTC_SERV* bta_gattc_srcb_alloc(BD_ADDR bda);
+extern tBTA_GATTC_SERV* bta_gattc_find_scb_by_cid(uint16_t conn_id);
+extern tBTA_GATTC_CLCB* bta_gattc_find_int_conn_clcb(tBTA_GATTC_DATA* p_msg);
+extern tBTA_GATTC_CLCB* bta_gattc_find_int_disconn_clcb(tBTA_GATTC_DATA* p_msg);
-extern bool bta_gattc_enqueue(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data);
+extern bool bta_gattc_enqueue(tBTA_GATTC_CLCB* p_clcb, tBTA_GATTC_DATA* p_data);
-extern bool bta_gattc_uuid_compare (const tBT_UUID *p_src, const tBT_UUID *p_tar, bool is_precise);
-extern bool bta_gattc_check_notif_registry(tBTA_GATTC_RCB *p_clreg, tBTA_GATTC_SERV *p_srcb, tBTA_GATTC_NOTIFY *p_notify);
-extern bool bta_gattc_mark_bg_conn (tBTA_GATTC_IF client_if, BD_ADDR_PTR remote_bda, bool add);
-extern bool bta_gattc_check_bg_conn (tBTA_GATTC_IF client_if, BD_ADDR remote_bda, uint8_t role);
+extern bool bta_gattc_uuid_compare(const tBT_UUID* p_src, const tBT_UUID* p_tar,
+ bool is_precise);
+extern bool bta_gattc_check_notif_registry(tBTA_GATTC_RCB* p_clreg,
+ tBTA_GATTC_SERV* p_srcb,
+ tBTA_GATTC_NOTIFY* p_notify);
+extern bool bta_gattc_mark_bg_conn(tBTA_GATTC_IF client_if,
+ BD_ADDR_PTR remote_bda, bool add);
+extern bool bta_gattc_check_bg_conn(tBTA_GATTC_IF client_if, BD_ADDR remote_bda,
+ uint8_t role);
extern uint8_t bta_gattc_num_reg_app(void);
-extern void bta_gattc_clear_notif_registration(tBTA_GATTC_SERV *p_srcb, uint16_t conn_id, uint16_t start_handle, uint16_t end_handle);
-extern tBTA_GATTC_SERV * bta_gattc_find_srvr_cache(BD_ADDR bda);
+extern void bta_gattc_clear_notif_registration(tBTA_GATTC_SERV* p_srcb,
+ uint16_t conn_id,
+ uint16_t start_handle,
+ uint16_t end_handle);
+extern tBTA_GATTC_SERV* bta_gattc_find_srvr_cache(BD_ADDR bda);
/* discovery functions */
-extern void bta_gattc_disc_res_cback (uint16_t conn_id, tGATT_DISC_TYPE disc_type, tGATT_DISC_RES *p_data);
-extern void bta_gattc_disc_cmpl_cback (uint16_t conn_id, tGATT_DISC_TYPE disc_type, tGATT_STATUS status);
-extern tBTA_GATT_STATUS bta_gattc_discover_procedure(uint16_t conn_id, tBTA_GATTC_SERV *p_server_cb, uint8_t disc_type);
-extern tBTA_GATT_STATUS bta_gattc_discover_pri_service(uint16_t conn_id, tBTA_GATTC_SERV *p_server_cb, uint8_t disc_type);
-extern void bta_gattc_search_service(tBTA_GATTC_CLCB *p_clcb, tBT_UUID *p_uuid);
+extern void bta_gattc_disc_res_cback(uint16_t conn_id,
+ tGATT_DISC_TYPE disc_type,
+ tGATT_DISC_RES* p_data);
+extern void bta_gattc_disc_cmpl_cback(uint16_t conn_id,
+ tGATT_DISC_TYPE disc_type,
+ tGATT_STATUS status);
+extern tBTA_GATT_STATUS bta_gattc_discover_procedure(
+ uint16_t conn_id, tBTA_GATTC_SERV* p_server_cb, uint8_t disc_type);
+extern tBTA_GATT_STATUS bta_gattc_discover_pri_service(
+ uint16_t conn_id, tBTA_GATTC_SERV* p_server_cb, uint8_t disc_type);
+extern void bta_gattc_search_service(tBTA_GATTC_CLCB* p_clcb, tBT_UUID* p_uuid);
extern const list_t* bta_gattc_get_services(uint16_t conn_id);
-extern const tBTA_GATTC_SERVICE* bta_gattc_get_service_for_handle(uint16_t conn_id, uint16_t handle);
-tBTA_GATTC_CHARACTERISTIC* bta_gattc_get_characteristic_srcb(tBTA_GATTC_SERV *p_srcb, uint16_t handle);
-extern tBTA_GATTC_CHARACTERISTIC* bta_gattc_get_characteristic(uint16_t conn_id, uint16_t handle);
-extern tBTA_GATTC_DESCRIPTOR* bta_gattc_get_descriptor(uint16_t conn_id, uint16_t handle);
-extern void bta_gattc_get_gatt_db(uint16_t conn_id, uint16_t start_handle, uint16_t end_handle, btgatt_db_element_t **db, int *count);
-extern tBTA_GATT_STATUS bta_gattc_init_cache(tBTA_GATTC_SERV *p_srvc_cb);
-extern void bta_gattc_rebuild_cache(tBTA_GATTC_SERV *p_srcv, uint16_t num_attr, tBTA_GATTC_NV_ATTR *attr);
-extern void bta_gattc_cache_save(tBTA_GATTC_SERV *p_srvc_cb, uint16_t conn_id);
-extern void bta_gattc_reset_discover_st(tBTA_GATTC_SERV *p_srcb, tBTA_GATT_STATUS status);
+extern const tBTA_GATTC_SERVICE* bta_gattc_get_service_for_handle(
+ uint16_t conn_id, uint16_t handle);
+tBTA_GATTC_CHARACTERISTIC* bta_gattc_get_characteristic_srcb(
+ tBTA_GATTC_SERV* p_srcb, uint16_t handle);
+extern tBTA_GATTC_CHARACTERISTIC* bta_gattc_get_characteristic(uint16_t conn_id,
+ uint16_t handle);
+extern tBTA_GATTC_DESCRIPTOR* bta_gattc_get_descriptor(uint16_t conn_id,
+ uint16_t handle);
+extern void bta_gattc_get_gatt_db(uint16_t conn_id, uint16_t start_handle,
+ uint16_t end_handle, btgatt_db_element_t** db,
+ int* count);
+extern tBTA_GATT_STATUS bta_gattc_init_cache(tBTA_GATTC_SERV* p_srvc_cb);
+extern void bta_gattc_rebuild_cache(tBTA_GATTC_SERV* p_srcv, uint16_t num_attr,
+ tBTA_GATTC_NV_ATTR* attr);
+extern void bta_gattc_cache_save(tBTA_GATTC_SERV* p_srvc_cb, uint16_t conn_id);
+extern void bta_gattc_reset_discover_st(tBTA_GATTC_SERV* p_srcb,
+ tBTA_GATT_STATUS status);
-extern tBTA_GATTC_CONN * bta_gattc_conn_alloc(BD_ADDR remote_bda);
-extern tBTA_GATTC_CONN * bta_gattc_conn_find(BD_ADDR remote_bda);
-extern tBTA_GATTC_CONN * bta_gattc_conn_find_alloc(BD_ADDR remote_bda);
+extern tBTA_GATTC_CONN* bta_gattc_conn_alloc(BD_ADDR remote_bda);
+extern tBTA_GATTC_CONN* bta_gattc_conn_find(BD_ADDR remote_bda);
+extern tBTA_GATTC_CONN* bta_gattc_conn_find_alloc(BD_ADDR remote_bda);
extern bool bta_gattc_conn_dealloc(BD_ADDR remote_bda);
-extern bool bta_gattc_cache_load(tBTA_GATTC_CLCB *p_clcb);
+extern bool bta_gattc_cache_load(tBTA_GATTC_CLCB* p_clcb);
extern void bta_gattc_cache_reset(BD_ADDR server_bda);
#endif /* BTA_GATTC_INT_H */
diff --git a/bta/gatt/bta_gattc_main.cc b/bta/gatt/bta_gattc_main.cc
index b69cd59..667b78a 100644
--- a/bta/gatt/bta_gattc_main.cc
+++ b/bta/gatt/bta_gattc_main.cc
@@ -28,201 +28,247 @@
#include <string.h>
-#include "bta_gattc_int.h"
#include "bt_common.h"
-
+#include "bta_gattc_int.h"
/*****************************************************************************
* Constants and types
****************************************************************************/
-
/* state machine action enumeration list */
-enum
-{
- BTA_GATTC_OPEN,
- BTA_GATTC_OPEN_FAIL,
- BTA_GATTC_OPEN_ERROR,
- BTA_GATTC_CANCEL_OPEN,
- BTA_GATTC_CANCEL_OPEN_OK,
- BTA_GATTC_CANCEL_OPEN_ERROR,
- BTA_GATTC_CONN,
- BTA_GATTC_START_DISCOVER,
- BTA_GATTC_DISC_CMPL,
+enum {
+ BTA_GATTC_OPEN,
+ BTA_GATTC_OPEN_FAIL,
+ BTA_GATTC_OPEN_ERROR,
+ BTA_GATTC_CANCEL_OPEN,
+ BTA_GATTC_CANCEL_OPEN_OK,
+ BTA_GATTC_CANCEL_OPEN_ERROR,
+ BTA_GATTC_CONN,
+ BTA_GATTC_START_DISCOVER,
+ BTA_GATTC_DISC_CMPL,
- BTA_GATTC_Q_CMD,
- BTA_GATTC_CLOSE,
- BTA_GATTC_CLOSE_FAIL,
- BTA_GATTC_READ,
- BTA_GATTC_WRITE,
+ BTA_GATTC_Q_CMD,
+ BTA_GATTC_CLOSE,
+ BTA_GATTC_CLOSE_FAIL,
+ BTA_GATTC_READ,
+ BTA_GATTC_WRITE,
- BTA_GATTC_OP_CMPL,
- BTA_GATTC_SEARCH,
- BTA_GATTC_FAIL,
- BTA_GATTC_CONFIRM,
- BTA_GATTC_EXEC,
- BTA_GATTC_READ_MULTI,
- BTA_GATTC_IGNORE_OP_CMPL,
- BTA_GATTC_DISC_CLOSE,
- BTA_GATTC_RESTART_DISCOVER,
- BTA_GATTC_CFG_MTU,
+ BTA_GATTC_OP_CMPL,
+ BTA_GATTC_SEARCH,
+ BTA_GATTC_FAIL,
+ BTA_GATTC_CONFIRM,
+ BTA_GATTC_EXEC,
+ BTA_GATTC_READ_MULTI,
+ BTA_GATTC_IGNORE_OP_CMPL,
+ BTA_GATTC_DISC_CLOSE,
+ BTA_GATTC_RESTART_DISCOVER,
+ BTA_GATTC_CFG_MTU,
- BTA_GATTC_IGNORE
+ BTA_GATTC_IGNORE
};
/* type for action functions */
-typedef void (*tBTA_GATTC_ACTION)(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data);
+typedef void (*tBTA_GATTC_ACTION)(tBTA_GATTC_CLCB* p_clcb,
+ tBTA_GATTC_DATA* p_data);
/* action function list */
-const tBTA_GATTC_ACTION bta_gattc_action[] =
-{
- bta_gattc_open,
- bta_gattc_open_fail,
- bta_gattc_open_error,
- bta_gattc_cancel_open,
- bta_gattc_cancel_open_ok,
- bta_gattc_cancel_open_error,
- bta_gattc_conn,
- bta_gattc_start_discover,
- bta_gattc_disc_cmpl,
+const tBTA_GATTC_ACTION bta_gattc_action[] = {bta_gattc_open,
+ bta_gattc_open_fail,
+ bta_gattc_open_error,
+ bta_gattc_cancel_open,
+ bta_gattc_cancel_open_ok,
+ bta_gattc_cancel_open_error,
+ bta_gattc_conn,
+ bta_gattc_start_discover,
+ bta_gattc_disc_cmpl,
- bta_gattc_q_cmd,
- bta_gattc_close,
- bta_gattc_close_fail,
- bta_gattc_read,
- bta_gattc_write,
+ bta_gattc_q_cmd,
+ bta_gattc_close,
+ bta_gattc_close_fail,
+ bta_gattc_read,
+ bta_gattc_write,
- bta_gattc_op_cmpl,
- bta_gattc_search,
- bta_gattc_fail,
- bta_gattc_confirm,
- bta_gattc_execute,
- bta_gattc_read_multi,
- bta_gattc_ignore_op_cmpl,
- bta_gattc_disc_close,
- bta_gattc_restart_discover,
- bta_gattc_cfg_mtu
-};
-
+ bta_gattc_op_cmpl,
+ bta_gattc_search,
+ bta_gattc_fail,
+ bta_gattc_confirm,
+ bta_gattc_execute,
+ bta_gattc_read_multi,
+ bta_gattc_ignore_op_cmpl,
+ bta_gattc_disc_close,
+ bta_gattc_restart_discover,
+ bta_gattc_cfg_mtu};
/* state table information */
-#define BTA_GATTC_ACTIONS 1 /* number of actions */
-#define BTA_GATTC_NEXT_STATE 1 /* position of next state */
-#define BTA_GATTC_NUM_COLS 2 /* number of columns in state tables */
+#define BTA_GATTC_ACTIONS 1 /* number of actions */
+#define BTA_GATTC_NEXT_STATE 1 /* position of next state */
+#define BTA_GATTC_NUM_COLS 2 /* number of columns in state tables */
/* state table for idle state */
-static const uint8_t bta_gattc_st_idle[][BTA_GATTC_NUM_COLS] =
-{
-/* Event Action 1 Next state */
-/* BTA_GATTC_API_OPEN_EVT */ {BTA_GATTC_OPEN, BTA_GATTC_W4_CONN_ST},
-/* BTA_GATTC_INT_OPEN_FAIL_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_IDLE_ST},
-/* BTA_GATTC_API_CANCEL_OPEN_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_IDLE_ST},
-/* BTA_GATTC_INT_CANCEL_OPEN_OK_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_IDLE_ST},
+static const uint8_t bta_gattc_st_idle[][BTA_GATTC_NUM_COLS] = {
+ /* Event Action 1 Next state */
+ /* BTA_GATTC_API_OPEN_EVT */ {BTA_GATTC_OPEN,
+ BTA_GATTC_W4_CONN_ST},
+ /* BTA_GATTC_INT_OPEN_FAIL_EVT */ {BTA_GATTC_IGNORE,
+ BTA_GATTC_IDLE_ST},
+ /* BTA_GATTC_API_CANCEL_OPEN_EVT */ {BTA_GATTC_IGNORE,
+ BTA_GATTC_IDLE_ST},
+ /* BTA_GATTC_INT_CANCEL_OPEN_OK_EVT */ {BTA_GATTC_IGNORE,
+ BTA_GATTC_IDLE_ST},
-/* BTA_GATTC_API_READ_EVT */ {BTA_GATTC_FAIL, BTA_GATTC_IDLE_ST},
-/* BTA_GATTC_API_WRITE_EVT */ {BTA_GATTC_FAIL, BTA_GATTC_IDLE_ST},
-/* BTA_GATTC_API_EXEC_EVT */ {BTA_GATTC_FAIL, BTA_GATTC_IDLE_ST},
-/* BTA_GATTC_API_CFG_MTU_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_IDLE_ST},
+ /* BTA_GATTC_API_READ_EVT */ {BTA_GATTC_FAIL, BTA_GATTC_IDLE_ST},
+ /* BTA_GATTC_API_WRITE_EVT */ {BTA_GATTC_FAIL, BTA_GATTC_IDLE_ST},
+ /* BTA_GATTC_API_EXEC_EVT */ {BTA_GATTC_FAIL, BTA_GATTC_IDLE_ST},
+ /* BTA_GATTC_API_CFG_MTU_EVT */ {BTA_GATTC_IGNORE,
+ BTA_GATTC_IDLE_ST},
-/* BTA_GATTC_API_CLOSE_EVT */ {BTA_GATTC_CLOSE_FAIL, BTA_GATTC_IDLE_ST},
+ /* BTA_GATTC_API_CLOSE_EVT */ {BTA_GATTC_CLOSE_FAIL,
+ BTA_GATTC_IDLE_ST},
-/* BTA_GATTC_API_SEARCH_EVT */ {BTA_GATTC_FAIL, BTA_GATTC_IDLE_ST},
-/* BTA_GATTC_API_CONFIRM_EVT */ {BTA_GATTC_FAIL, BTA_GATTC_IDLE_ST},
-/* BTA_GATTC_API_READ_MULTI_EVT */ {BTA_GATTC_FAIL, BTA_GATTC_IDLE_ST},
-/* BTA_GATTC_API_REFRESH_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_IDLE_ST},
+ /* BTA_GATTC_API_SEARCH_EVT */ {BTA_GATTC_FAIL, BTA_GATTC_IDLE_ST},
+ /* BTA_GATTC_API_CONFIRM_EVT */ {BTA_GATTC_FAIL, BTA_GATTC_IDLE_ST},
+ /* BTA_GATTC_API_READ_MULTI_EVT */ {BTA_GATTC_FAIL, BTA_GATTC_IDLE_ST},
+ /* BTA_GATTC_API_REFRESH_EVT */ {BTA_GATTC_IGNORE,
+ BTA_GATTC_IDLE_ST},
-/* BTA_GATTC_INT_CONN_EVT */ {BTA_GATTC_CONN, BTA_GATTC_CONN_ST},
-/* BTA_GATTC_INT_DISCOVER_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_IDLE_ST},
-/* BTA_GATTC_DISCOVER_CMPL_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_IDLE_ST},
-/* BTA_GATTC_OP_CMPL_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_IDLE_ST},
-/* BTA_GATTC_INT_DISCONN_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_IDLE_ST},
+ /* BTA_GATTC_INT_CONN_EVT */ {BTA_GATTC_CONN, BTA_GATTC_CONN_ST},
+ /* BTA_GATTC_INT_DISCOVER_EVT */ {BTA_GATTC_IGNORE,
+ BTA_GATTC_IDLE_ST},
+ /* BTA_GATTC_DISCOVER_CMPL_EVT */ {BTA_GATTC_IGNORE,
+ BTA_GATTC_IDLE_ST},
+ /* BTA_GATTC_OP_CMPL_EVT */ {BTA_GATTC_IGNORE,
+ BTA_GATTC_IDLE_ST},
+ /* BTA_GATTC_INT_DISCONN_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_IDLE_ST},
};
/* state table for wait for open state */
-static const uint8_t bta_gattc_st_w4_conn[][BTA_GATTC_NUM_COLS] =
-{
-/* Event Action 1 Next state */
-/* BTA_GATTC_API_OPEN_EVT */ {BTA_GATTC_OPEN, BTA_GATTC_W4_CONN_ST},
-/* BTA_GATTC_INT_OPEN_FAIL_EVT */ {BTA_GATTC_OPEN_FAIL, BTA_GATTC_IDLE_ST},
-/* BTA_GATTC_API_CANCEL_OPEN_EVT */ {BTA_GATTC_CANCEL_OPEN, BTA_GATTC_W4_CONN_ST},
-/* BTA_GATTC_INT_CANCEL_OPEN_OK_EVT */ {BTA_GATTC_CANCEL_OPEN_OK, BTA_GATTC_IDLE_ST},
+static const uint8_t bta_gattc_st_w4_conn[][BTA_GATTC_NUM_COLS] = {
+ /* Event Action 1 Next state */
+ /* BTA_GATTC_API_OPEN_EVT */ {BTA_GATTC_OPEN,
+ BTA_GATTC_W4_CONN_ST},
+ /* BTA_GATTC_INT_OPEN_FAIL_EVT */ {BTA_GATTC_OPEN_FAIL,
+ BTA_GATTC_IDLE_ST},
+ /* BTA_GATTC_API_CANCEL_OPEN_EVT */ {BTA_GATTC_CANCEL_OPEN,
+ BTA_GATTC_W4_CONN_ST},
+ /* BTA_GATTC_INT_CANCEL_OPEN_OK_EVT */ {BTA_GATTC_CANCEL_OPEN_OK,
+ BTA_GATTC_IDLE_ST},
-/* BTA_GATTC_API_READ_EVT */ {BTA_GATTC_FAIL, BTA_GATTC_W4_CONN_ST},
-/* BTA_GATTC_API_WRITE_EVT */ {BTA_GATTC_FAIL, BTA_GATTC_W4_CONN_ST},
-/* BTA_GATTC_API_EXEC_EVT */ {BTA_GATTC_FAIL, BTA_GATTC_W4_CONN_ST},
-/* BTA_GATTC_API_CFG_MTU_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_W4_CONN_ST},
+ /* BTA_GATTC_API_READ_EVT */ {BTA_GATTC_FAIL,
+ BTA_GATTC_W4_CONN_ST},
+ /* BTA_GATTC_API_WRITE_EVT */ {BTA_GATTC_FAIL,
+ BTA_GATTC_W4_CONN_ST},
+ /* BTA_GATTC_API_EXEC_EVT */ {BTA_GATTC_FAIL,
+ BTA_GATTC_W4_CONN_ST},
+ /* BTA_GATTC_API_CFG_MTU_EVT */ {BTA_GATTC_IGNORE,
+ BTA_GATTC_W4_CONN_ST},
-/* BTA_GATTC_API_CLOSE_EVT */ {BTA_GATTC_CANCEL_OPEN, BTA_GATTC_W4_CONN_ST},
+ /* BTA_GATTC_API_CLOSE_EVT */ {BTA_GATTC_CANCEL_OPEN,
+ BTA_GATTC_W4_CONN_ST},
-/* BTA_GATTC_API_SEARCH_EVT */ {BTA_GATTC_FAIL, BTA_GATTC_W4_CONN_ST},
-/* BTA_GATTC_API_CONFIRM_EVT */ {BTA_GATTC_FAIL, BTA_GATTC_W4_CONN_ST},
-/* BTA_GATTC_API_READ_MULTI_EVT */ {BTA_GATTC_FAIL, BTA_GATTC_W4_CONN_ST},
-/* BTA_GATTC_API_REFRESH_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_W4_CONN_ST},
+ /* BTA_GATTC_API_SEARCH_EVT */ {BTA_GATTC_FAIL,
+ BTA_GATTC_W4_CONN_ST},
+ /* BTA_GATTC_API_CONFIRM_EVT */ {BTA_GATTC_FAIL,
+ BTA_GATTC_W4_CONN_ST},
+ /* BTA_GATTC_API_READ_MULTI_EVT */ {BTA_GATTC_FAIL,
+ BTA_GATTC_W4_CONN_ST},
+ /* BTA_GATTC_API_REFRESH_EVT */ {BTA_GATTC_IGNORE,
+ BTA_GATTC_W4_CONN_ST},
-/* BTA_GATTC_INT_CONN_EVT */ {BTA_GATTC_CONN, BTA_GATTC_CONN_ST},
-/* BTA_GATTC_INT_DISCOVER_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_W4_CONN_ST},
-/* BTA_GATTC_DISCOVER_CMPL_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_W4_CONN_ST},
-/* BTA_GATTC_OP_CMPL_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_W4_CONN_ST},
-/* BTA_GATTC_INT_DISCONN_EVT */ {BTA_GATTC_OPEN_FAIL, BTA_GATTC_IDLE_ST},
+ /* BTA_GATTC_INT_CONN_EVT */ {BTA_GATTC_CONN, BTA_GATTC_CONN_ST},
+ /* BTA_GATTC_INT_DISCOVER_EVT */ {BTA_GATTC_IGNORE,
+ BTA_GATTC_W4_CONN_ST},
+ /* BTA_GATTC_DISCOVER_CMPL_EVT */ {BTA_GATTC_IGNORE,
+ BTA_GATTC_W4_CONN_ST},
+ /* BTA_GATTC_OP_CMPL_EVT */ {BTA_GATTC_IGNORE,
+ BTA_GATTC_W4_CONN_ST},
+ /* BTA_GATTC_INT_DISCONN_EVT */ {BTA_GATTC_OPEN_FAIL,
+ BTA_GATTC_IDLE_ST},
};
/* state table for open state */
-static const uint8_t bta_gattc_st_connected[][BTA_GATTC_NUM_COLS] =
-{
-/* Event Action 1 Next state */
-/* BTA_GATTC_API_OPEN_EVT */ {BTA_GATTC_OPEN, BTA_GATTC_CONN_ST},
-/* BTA_GATTC_INT_OPEN_FAIL_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_CONN_ST},
-/* BTA_GATTC_API_CANCEL_OPEN_EVT */ {BTA_GATTC_CANCEL_OPEN_ERROR, BTA_GATTC_CONN_ST},
-/* BTA_GATTC_INT_CANCEL_OPEN_OK_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_CONN_ST},
+static const uint8_t bta_gattc_st_connected[][BTA_GATTC_NUM_COLS] = {
+ /* Event Action 1 Next state */
+ /* BTA_GATTC_API_OPEN_EVT */ {BTA_GATTC_OPEN, BTA_GATTC_CONN_ST},
+ /* BTA_GATTC_INT_OPEN_FAIL_EVT */ {BTA_GATTC_IGNORE,
+ BTA_GATTC_CONN_ST},
+ /* BTA_GATTC_API_CANCEL_OPEN_EVT */ {BTA_GATTC_CANCEL_OPEN_ERROR,
+ BTA_GATTC_CONN_ST},
+ /* BTA_GATTC_INT_CANCEL_OPEN_OK_EVT */ {BTA_GATTC_IGNORE,
+ BTA_GATTC_CONN_ST},
-/* BTA_GATTC_API_READ_EVT */ {BTA_GATTC_READ, BTA_GATTC_CONN_ST},
-/* BTA_GATTC_API_WRITE_EVT */ {BTA_GATTC_WRITE, BTA_GATTC_CONN_ST},
-/* BTA_GATTC_API_EXEC_EVT */ {BTA_GATTC_EXEC, BTA_GATTC_CONN_ST},
-/* BTA_GATTC_API_CFG_MTU_EVT */ {BTA_GATTC_CFG_MTU, BTA_GATTC_CONN_ST},
+ /* BTA_GATTC_API_READ_EVT */ {BTA_GATTC_READ, BTA_GATTC_CONN_ST},
+ /* BTA_GATTC_API_WRITE_EVT */ {BTA_GATTC_WRITE, BTA_GATTC_CONN_ST},
+ /* BTA_GATTC_API_EXEC_EVT */ {BTA_GATTC_EXEC, BTA_GATTC_CONN_ST},
+ /* BTA_GATTC_API_CFG_MTU_EVT */ {BTA_GATTC_CFG_MTU,
+ BTA_GATTC_CONN_ST},
-/* BTA_GATTC_API_CLOSE_EVT */ {BTA_GATTC_CLOSE, BTA_GATTC_IDLE_ST},
+ /* BTA_GATTC_API_CLOSE_EVT */ {BTA_GATTC_CLOSE, BTA_GATTC_IDLE_ST},
-/* BTA_GATTC_API_SEARCH_EVT */ {BTA_GATTC_SEARCH, BTA_GATTC_CONN_ST},
-/* BTA_GATTC_API_CONFIRM_EVT */ {BTA_GATTC_CONFIRM, BTA_GATTC_CONN_ST},
-/* BTA_GATTC_API_READ_MULTI_EVT */ {BTA_GATTC_READ_MULTI, BTA_GATTC_CONN_ST},
-/* BTA_GATTC_API_REFRESH_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_CONN_ST},
+ /* BTA_GATTC_API_SEARCH_EVT */ {BTA_GATTC_SEARCH,
+ BTA_GATTC_CONN_ST},
+ /* BTA_GATTC_API_CONFIRM_EVT */ {BTA_GATTC_CONFIRM,
+ BTA_GATTC_CONN_ST},
+ /* BTA_GATTC_API_READ_MULTI_EVT */ {BTA_GATTC_READ_MULTI,
+ BTA_GATTC_CONN_ST},
+ /* BTA_GATTC_API_REFRESH_EVT */ {BTA_GATTC_IGNORE,
+ BTA_GATTC_CONN_ST},
-/* BTA_GATTC_INT_CONN_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_CONN_ST},
-/* BTA_GATTC_INT_DISCOVER_EVT */ {BTA_GATTC_START_DISCOVER, BTA_GATTC_DISCOVER_ST},
-/* BTA_GATTC_DISCOVER_CMPL_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_CONN_ST},
-/* BTA_GATTC_OP_CMPL_EVT */ {BTA_GATTC_OP_CMPL, BTA_GATTC_CONN_ST},
+ /* BTA_GATTC_INT_CONN_EVT */ {BTA_GATTC_IGNORE,
+ BTA_GATTC_CONN_ST},
+ /* BTA_GATTC_INT_DISCOVER_EVT */ {BTA_GATTC_START_DISCOVER,
+ BTA_GATTC_DISCOVER_ST},
+ /* BTA_GATTC_DISCOVER_CMPL_EVT */ {BTA_GATTC_IGNORE,
+ BTA_GATTC_CONN_ST},
+ /* BTA_GATTC_OP_CMPL_EVT */ {BTA_GATTC_OP_CMPL,
+ BTA_GATTC_CONN_ST},
-/* BTA_GATTC_INT_DISCONN_EVT */ {BTA_GATTC_CLOSE, BTA_GATTC_IDLE_ST},
+ /* BTA_GATTC_INT_DISCONN_EVT */ {BTA_GATTC_CLOSE, BTA_GATTC_IDLE_ST},
};
/* state table for discover state */
-static const uint8_t bta_gattc_st_discover[][BTA_GATTC_NUM_COLS] =
-{
-/* Event Action 1 Next state */
-/* BTA_GATTC_API_OPEN_EVT */ {BTA_GATTC_OPEN, BTA_GATTC_DISCOVER_ST},
-/* BTA_GATTC_INT_OPEN_FAIL_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_DISCOVER_ST},
-/* BTA_GATTC_API_CANCEL_OPEN_EVT */ {BTA_GATTC_CANCEL_OPEN_ERROR, BTA_GATTC_DISCOVER_ST},
-/* BTA_GATTC_INT_CANCEL_OPEN_OK_EVT */ {BTA_GATTC_FAIL, BTA_GATTC_DISCOVER_ST},
+static const uint8_t bta_gattc_st_discover[][BTA_GATTC_NUM_COLS] = {
+ /* Event Action 1 Next state */
+ /* BTA_GATTC_API_OPEN_EVT */ {BTA_GATTC_OPEN,
+ BTA_GATTC_DISCOVER_ST},
+ /* BTA_GATTC_INT_OPEN_FAIL_EVT */ {BTA_GATTC_IGNORE,
+ BTA_GATTC_DISCOVER_ST},
+ /* BTA_GATTC_API_CANCEL_OPEN_EVT */ {BTA_GATTC_CANCEL_OPEN_ERROR,
+ BTA_GATTC_DISCOVER_ST},
+ /* BTA_GATTC_INT_CANCEL_OPEN_OK_EVT */ {BTA_GATTC_FAIL,
+ BTA_GATTC_DISCOVER_ST},
-/* BTA_GATTC_API_READ_EVT */ {BTA_GATTC_Q_CMD, BTA_GATTC_DISCOVER_ST},
-/* BTA_GATTC_API_WRITE_EVT */ {BTA_GATTC_Q_CMD, BTA_GATTC_DISCOVER_ST},
-/* BTA_GATTC_API_EXEC_EVT */ {BTA_GATTC_Q_CMD, BTA_GATTC_DISCOVER_ST},
-/* BTA_GATTC_API_CFG_MTU_EVT */ {BTA_GATTC_Q_CMD, BTA_GATTC_DISCOVER_ST},
+ /* BTA_GATTC_API_READ_EVT */ {BTA_GATTC_Q_CMD,
+ BTA_GATTC_DISCOVER_ST},
+ /* BTA_GATTC_API_WRITE_EVT */ {BTA_GATTC_Q_CMD,
+ BTA_GATTC_DISCOVER_ST},
+ /* BTA_GATTC_API_EXEC_EVT */ {BTA_GATTC_Q_CMD,
+ BTA_GATTC_DISCOVER_ST},
+ /* BTA_GATTC_API_CFG_MTU_EVT */ {BTA_GATTC_Q_CMD,
+ BTA_GATTC_DISCOVER_ST},
-/* BTA_GATTC_API_CLOSE_EVT */ {BTA_GATTC_DISC_CLOSE, BTA_GATTC_DISCOVER_ST},
+ /* BTA_GATTC_API_CLOSE_EVT */ {BTA_GATTC_DISC_CLOSE,
+ BTA_GATTC_DISCOVER_ST},
-/* BTA_GATTC_API_SEARCH_EVT */ {BTA_GATTC_Q_CMD, BTA_GATTC_DISCOVER_ST},
-/* BTA_GATTC_API_CONFIRM_EVT */ {BTA_GATTC_CONFIRM, BTA_GATTC_DISCOVER_ST},
-/* BTA_GATTC_API_READ_MULTI_EVT */ {BTA_GATTC_Q_CMD, BTA_GATTC_DISCOVER_ST},
-/* BTA_GATTC_API_REFRESH_EVT */ {BTA_GATTC_IGNORE, BTA_GATTC_DISCOVER_ST},
+ /* BTA_GATTC_API_SEARCH_EVT */ {BTA_GATTC_Q_CMD,
+ BTA_GATTC_DISCOVER_ST},
+ /* BTA_GATTC_API_CONFIRM_EVT */ {BTA_GATTC_CONFIRM,
+ BTA_GATTC_DISCOVER_ST},
+ /* BTA_GATTC_API_READ_MULTI_EVT */ {BTA_GATTC_Q_CMD,
+ BTA_GATTC_DISCOVER_ST},
+ /* BTA_GATTC_API_REFRESH_EVT */ {BTA_GATTC_IGNORE,
+ BTA_GATTC_DISCOVER_ST},
-/* BTA_GATTC_INT_CONN_EVT */ {BTA_GATTC_CONN, BTA_GATTC_DISCOVER_ST},
-/* BTA_GATTC_INT_DISCOVER_EVT */ {BTA_GATTC_RESTART_DISCOVER, BTA_GATTC_DISCOVER_ST},
-/* BTA_GATTC_DISCOVER_CMPL_EVT */ {BTA_GATTC_DISC_CMPL, BTA_GATTC_CONN_ST},
-/* BTA_GATTC_OP_CMPL_EVT */ {BTA_GATTC_IGNORE_OP_CMPL, BTA_GATTC_DISCOVER_ST},
-/* BTA_GATTC_INT_DISCONN_EVT */ {BTA_GATTC_CLOSE, BTA_GATTC_IDLE_ST},
+ /* BTA_GATTC_INT_CONN_EVT */ {BTA_GATTC_CONN,
+ BTA_GATTC_DISCOVER_ST},
+ /* BTA_GATTC_INT_DISCOVER_EVT */ {BTA_GATTC_RESTART_DISCOVER,
+ BTA_GATTC_DISCOVER_ST},
+ /* BTA_GATTC_DISCOVER_CMPL_EVT */ {BTA_GATTC_DISC_CMPL,
+ BTA_GATTC_CONN_ST},
+ /* BTA_GATTC_OP_CMPL_EVT */ {BTA_GATTC_IGNORE_OP_CMPL,
+ BTA_GATTC_DISCOVER_ST},
+ /* BTA_GATTC_INT_DISCONN_EVT */ {BTA_GATTC_CLOSE, BTA_GATTC_IDLE_ST},
};
@@ -230,24 +276,20 @@
typedef const uint8_t (*tBTA_GATTC_ST_TBL)[BTA_GATTC_NUM_COLS];
/* state table */
-const tBTA_GATTC_ST_TBL bta_gattc_st_tbl[] =
-{
- bta_gattc_st_idle,
- bta_gattc_st_w4_conn,
- bta_gattc_st_connected,
- bta_gattc_st_discover
-};
+const tBTA_GATTC_ST_TBL bta_gattc_st_tbl[] = {
+ bta_gattc_st_idle, bta_gattc_st_w4_conn, bta_gattc_st_connected,
+ bta_gattc_st_discover};
/*****************************************************************************
* Global data
****************************************************************************/
/* GATTC control block */
-tBTA_GATTC_CB bta_gattc_cb;
+tBTA_GATTC_CB bta_gattc_cb;
#if (BTA_GATT_DEBUG == TRUE)
-static char *gattc_evt_code(tBTA_GATTC_INT_EVT evt_code);
-static char *gattc_state_code(tBTA_GATTC_STATE state_code);
+static char* gattc_evt_code(tBTA_GATTC_INT_EVT evt_code);
+static char* gattc_state_code(tBTA_GATTC_STATE state_code);
#endif
/*******************************************************************************
@@ -257,63 +299,56 @@
* Description State machine event handling function for GATTC
*
*
- * Returns bool : true if queued client request buffer can be immediately released
+ * Returns bool : true if queued client request buffer can be
+ *immediately released
* else false
*
******************************************************************************/
-bool bta_gattc_sm_execute(tBTA_GATTC_CLCB *p_clcb, uint16_t event, tBTA_GATTC_DATA *p_data)
-{
- tBTA_GATTC_ST_TBL state_table;
- uint8_t action;
- int i;
- bool rt = true;
+bool bta_gattc_sm_execute(tBTA_GATTC_CLCB* p_clcb, uint16_t event,
+ tBTA_GATTC_DATA* p_data) {
+ tBTA_GATTC_ST_TBL state_table;
+ uint8_t action;
+ int i;
+ bool rt = true;
#if (BTA_GATT_DEBUG == TRUE)
- tBTA_GATTC_STATE in_state = p_clcb->state;
- uint16_t in_event = event;
- APPL_TRACE_DEBUG("bta_gattc_sm_execute: State 0x%02x [%s], Event 0x%x[%s]", in_state,
- gattc_state_code(in_state),
- in_event,
- gattc_evt_code(in_event));
+ tBTA_GATTC_STATE in_state = p_clcb->state;
+ uint16_t in_event = event;
+ APPL_TRACE_DEBUG("bta_gattc_sm_execute: State 0x%02x [%s], Event 0x%x[%s]",
+ in_state, gattc_state_code(in_state), in_event,
+ gattc_evt_code(in_event));
#endif
+ /* look up the state table for the current state */
+ state_table = bta_gattc_st_tbl[p_clcb->state];
- /* look up the state table for the current state */
- state_table = bta_gattc_st_tbl[p_clcb->state];
+ event &= 0x00FF;
- event &= 0x00FF;
+ /* set next state */
+ p_clcb->state = state_table[event][BTA_GATTC_NEXT_STATE];
- /* set next state */
- p_clcb->state = state_table[event][BTA_GATTC_NEXT_STATE];
-
- /* execute action functions */
- for (i = 0; i < BTA_GATTC_ACTIONS; i++)
- {
- if ((action = state_table[event][i]) != BTA_GATTC_IGNORE)
- {
- (*bta_gattc_action[action])(p_clcb, p_data);
- if (p_clcb->p_q_cmd == p_data) {
- /* buffer is queued, don't free in the bta dispatcher.
- * we free it ourselves when a completion event is received.
- */
- rt = false;
- }
- }
- else
- {
- break;
- }
+ /* execute action functions */
+ for (i = 0; i < BTA_GATTC_ACTIONS; i++) {
+ if ((action = state_table[event][i]) != BTA_GATTC_IGNORE) {
+ (*bta_gattc_action[action])(p_clcb, p_data);
+ if (p_clcb->p_q_cmd == p_data) {
+ /* buffer is queued, don't free in the bta dispatcher.
+ * we free it ourselves when a completion event is received.
+ */
+ rt = false;
+ }
+ } else {
+ break;
}
+ }
#if (BTA_GATT_DEBUG == TRUE)
- if (in_state != p_clcb->state)
- {
- APPL_TRACE_DEBUG("GATTC State Change: [%s] -> [%s] after Event [%s]",
- gattc_state_code(in_state),
- gattc_state_code(p_clcb->state),
- gattc_evt_code(in_event));
- }
+ if (in_state != p_clcb->state) {
+ APPL_TRACE_DEBUG("GATTC State Change: [%s] -> [%s] after Event [%s]",
+ gattc_state_code(in_state),
+ gattc_state_code(p_clcb->state), gattc_evt_code(in_event));
+ }
#endif
- return rt;
+ return rt;
}
/*******************************************************************************
@@ -326,74 +361,70 @@
* Returns bool
*
******************************************************************************/
-bool bta_gattc_hdl_event(BT_HDR *p_msg)
-{
- tBTA_GATTC_CLCB *p_clcb = NULL;
- tBTA_GATTC_RCB *p_clreg;
- bool rt = true;
+bool bta_gattc_hdl_event(BT_HDR* p_msg) {
+ tBTA_GATTC_CLCB* p_clcb = NULL;
+ tBTA_GATTC_RCB* p_clreg;
+ bool rt = true;
#if (BTA_GATT_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_gattc_hdl_event: Event [%s]", gattc_evt_code(p_msg->event));
+ APPL_TRACE_DEBUG("bta_gattc_hdl_event: Event [%s]",
+ gattc_evt_code(p_msg->event));
#endif
- switch (p_msg->event)
- {
- case BTA_GATTC_API_DISABLE_EVT:
- bta_gattc_disable();
- break;
+ switch (p_msg->event) {
+ case BTA_GATTC_API_DISABLE_EVT:
+ bta_gattc_disable();
+ break;
- case BTA_GATTC_API_REG_EVT:
- bta_gattc_register((tBTA_GATTC_DATA *) p_msg);
- break;
+ case BTA_GATTC_API_REG_EVT:
+ bta_gattc_register((tBTA_GATTC_DATA*)p_msg);
+ break;
- case BTA_GATTC_INT_START_IF_EVT:
- bta_gattc_start_if((tBTA_GATTC_DATA *) p_msg);
- break;
+ case BTA_GATTC_INT_START_IF_EVT:
+ bta_gattc_start_if((tBTA_GATTC_DATA*)p_msg);
+ break;
- case BTA_GATTC_API_DEREG_EVT:
- p_clreg = bta_gattc_cl_get_regcb(((tBTA_GATTC_DATA *)p_msg)->api_dereg.client_if);
- bta_gattc_deregister(p_clreg);
- break;
+ case BTA_GATTC_API_DEREG_EVT:
+ p_clreg = bta_gattc_cl_get_regcb(
+ ((tBTA_GATTC_DATA*)p_msg)->api_dereg.client_if);
+ bta_gattc_deregister(p_clreg);
+ break;
- case BTA_GATTC_API_OPEN_EVT:
- bta_gattc_process_api_open((tBTA_GATTC_DATA *) p_msg);
- break;
+ case BTA_GATTC_API_OPEN_EVT:
+ bta_gattc_process_api_open((tBTA_GATTC_DATA*)p_msg);
+ break;
- case BTA_GATTC_API_CANCEL_OPEN_EVT:
- bta_gattc_process_api_open_cancel((tBTA_GATTC_DATA *) p_msg);
- break;
+ case BTA_GATTC_API_CANCEL_OPEN_EVT:
+ bta_gattc_process_api_open_cancel((tBTA_GATTC_DATA*)p_msg);
+ break;
- case BTA_GATTC_API_REFRESH_EVT:
- bta_gattc_process_api_refresh((tBTA_GATTC_DATA *) p_msg);
- break;
+ case BTA_GATTC_API_REFRESH_EVT:
+ bta_gattc_process_api_refresh((tBTA_GATTC_DATA*)p_msg);
+ break;
- case BTA_GATTC_ENC_CMPL_EVT:
- bta_gattc_process_enc_cmpl((tBTA_GATTC_DATA *) p_msg);
- break;
+ case BTA_GATTC_ENC_CMPL_EVT:
+ bta_gattc_process_enc_cmpl((tBTA_GATTC_DATA*)p_msg);
+ break;
- default:
- if (p_msg->event == BTA_GATTC_INT_CONN_EVT)
- p_clcb = bta_gattc_find_int_conn_clcb((tBTA_GATTC_DATA *) p_msg);
- else if (p_msg->event == BTA_GATTC_INT_DISCONN_EVT)
- p_clcb = bta_gattc_find_int_disconn_clcb((tBTA_GATTC_DATA *) p_msg);
- else
- p_clcb = bta_gattc_find_clcb_by_conn_id(p_msg->layer_specific);
+ default:
+ if (p_msg->event == BTA_GATTC_INT_CONN_EVT)
+ p_clcb = bta_gattc_find_int_conn_clcb((tBTA_GATTC_DATA*)p_msg);
+ else if (p_msg->event == BTA_GATTC_INT_DISCONN_EVT)
+ p_clcb = bta_gattc_find_int_disconn_clcb((tBTA_GATTC_DATA*)p_msg);
+ else
+ p_clcb = bta_gattc_find_clcb_by_conn_id(p_msg->layer_specific);
- if (p_clcb != NULL)
- {
- rt = bta_gattc_sm_execute(p_clcb, p_msg->event, (tBTA_GATTC_DATA *) p_msg);
- }
- else
- {
- APPL_TRACE_DEBUG("Ignore unknown conn ID: %d", p_msg->layer_specific);
- }
+ if (p_clcb != NULL) {
+ rt =
+ bta_gattc_sm_execute(p_clcb, p_msg->event, (tBTA_GATTC_DATA*)p_msg);
+ } else {
+ APPL_TRACE_DEBUG("Ignore unknown conn ID: %d", p_msg->layer_specific);
+ }
- break;
- }
+ break;
+ }
-
- return rt;
+ return rt;
}
-
/*****************************************************************************
* Debug Functions
****************************************************************************/
@@ -408,57 +439,55 @@
* Returns void
*
******************************************************************************/
-static char *gattc_evt_code(tBTA_GATTC_INT_EVT evt_code)
-{
- switch (evt_code)
- {
- case BTA_GATTC_API_OPEN_EVT:
- return "BTA_GATTC_API_OPEN_EVT";
- case BTA_GATTC_INT_OPEN_FAIL_EVT:
- return "BTA_GATTC_INT_OPEN_FAIL_EVT";
- case BTA_GATTC_API_CANCEL_OPEN_EVT:
- return "BTA_GATTC_API_CANCEL_OPEN_EVT";
- case BTA_GATTC_INT_CANCEL_OPEN_OK_EVT:
- return "BTA_GATTC_INT_CANCEL_OPEN_OK_EVT";
- case BTA_GATTC_API_READ_EVT:
- return "BTA_GATTC_API_READ_EVT";
- case BTA_GATTC_API_WRITE_EVT:
- return "BTA_GATTC_API_WRITE_EVT";
- case BTA_GATTC_API_EXEC_EVT:
- return "BTA_GATTC_API_EXEC_EVT";
- case BTA_GATTC_API_CLOSE_EVT:
- return "BTA_GATTC_API_CLOSE_EVT";
- case BTA_GATTC_API_SEARCH_EVT:
- return "BTA_GATTC_API_SEARCH_EVT";
- case BTA_GATTC_API_CONFIRM_EVT:
- return "BTA_GATTC_API_CONFIRM_EVT";
- case BTA_GATTC_API_READ_MULTI_EVT:
- return "BTA_GATTC_API_READ_MULTI_EVT";
- case BTA_GATTC_INT_CONN_EVT:
- return "BTA_GATTC_INT_CONN_EVT";
- case BTA_GATTC_INT_DISCOVER_EVT:
- return "BTA_GATTC_INT_DISCOVER_EVT";
- case BTA_GATTC_DISCOVER_CMPL_EVT:
- return "BTA_GATTC_DISCOVER_CMPL_EVT";
- case BTA_GATTC_OP_CMPL_EVT:
- return "BTA_GATTC_OP_CMPL_EVT";
- case BTA_GATTC_INT_DISCONN_EVT:
- return "BTA_GATTC_INT_DISCONN_EVT";
- case BTA_GATTC_INT_START_IF_EVT:
- return "BTA_GATTC_INT_START_IF_EVT";
- case BTA_GATTC_API_REG_EVT:
- return "BTA_GATTC_API_REG_EVT";
- case BTA_GATTC_API_DEREG_EVT:
- return "BTA_GATTC_API_DEREG_EVT";
- case BTA_GATTC_API_REFRESH_EVT:
- return "BTA_GATTC_API_REFRESH_EVT";
- case BTA_GATTC_API_DISABLE_EVT:
- return "BTA_GATTC_API_DISABLE_EVT";
- case BTA_GATTC_API_CFG_MTU_EVT:
- return "BTA_GATTC_API_CFG_MTU_EVT";
- default:
- return "unknown GATTC event code";
- }
+static char* gattc_evt_code(tBTA_GATTC_INT_EVT evt_code) {
+ switch (evt_code) {
+ case BTA_GATTC_API_OPEN_EVT:
+ return "BTA_GATTC_API_OPEN_EVT";
+ case BTA_GATTC_INT_OPEN_FAIL_EVT:
+ return "BTA_GATTC_INT_OPEN_FAIL_EVT";
+ case BTA_GATTC_API_CANCEL_OPEN_EVT:
+ return "BTA_GATTC_API_CANCEL_OPEN_EVT";
+ case BTA_GATTC_INT_CANCEL_OPEN_OK_EVT:
+ return "BTA_GATTC_INT_CANCEL_OPEN_OK_EVT";
+ case BTA_GATTC_API_READ_EVT:
+ return "BTA_GATTC_API_READ_EVT";
+ case BTA_GATTC_API_WRITE_EVT:
+ return "BTA_GATTC_API_WRITE_EVT";
+ case BTA_GATTC_API_EXEC_EVT:
+ return "BTA_GATTC_API_EXEC_EVT";
+ case BTA_GATTC_API_CLOSE_EVT:
+ return "BTA_GATTC_API_CLOSE_EVT";
+ case BTA_GATTC_API_SEARCH_EVT:
+ return "BTA_GATTC_API_SEARCH_EVT";
+ case BTA_GATTC_API_CONFIRM_EVT:
+ return "BTA_GATTC_API_CONFIRM_EVT";
+ case BTA_GATTC_API_READ_MULTI_EVT:
+ return "BTA_GATTC_API_READ_MULTI_EVT";
+ case BTA_GATTC_INT_CONN_EVT:
+ return "BTA_GATTC_INT_CONN_EVT";
+ case BTA_GATTC_INT_DISCOVER_EVT:
+ return "BTA_GATTC_INT_DISCOVER_EVT";
+ case BTA_GATTC_DISCOVER_CMPL_EVT:
+ return "BTA_GATTC_DISCOVER_CMPL_EVT";
+ case BTA_GATTC_OP_CMPL_EVT:
+ return "BTA_GATTC_OP_CMPL_EVT";
+ case BTA_GATTC_INT_DISCONN_EVT:
+ return "BTA_GATTC_INT_DISCONN_EVT";
+ case BTA_GATTC_INT_START_IF_EVT:
+ return "BTA_GATTC_INT_START_IF_EVT";
+ case BTA_GATTC_API_REG_EVT:
+ return "BTA_GATTC_API_REG_EVT";
+ case BTA_GATTC_API_DEREG_EVT:
+ return "BTA_GATTC_API_DEREG_EVT";
+ case BTA_GATTC_API_REFRESH_EVT:
+ return "BTA_GATTC_API_REFRESH_EVT";
+ case BTA_GATTC_API_DISABLE_EVT:
+ return "BTA_GATTC_API_DISABLE_EVT";
+ case BTA_GATTC_API_CFG_MTU_EVT:
+ return "BTA_GATTC_API_CFG_MTU_EVT";
+ default:
+ return "unknown GATTC event code";
+ }
}
/*******************************************************************************
@@ -470,22 +499,20 @@
* Returns void
*
******************************************************************************/
-static char *gattc_state_code(tBTA_GATTC_STATE state_code)
-{
- switch (state_code)
- {
- case BTA_GATTC_IDLE_ST:
- return "GATTC_IDLE_ST";
- case BTA_GATTC_W4_CONN_ST:
- return "GATTC_W4_CONN_ST";
- case BTA_GATTC_CONN_ST:
- return "GATTC_CONN_ST";
- case BTA_GATTC_DISCOVER_ST:
- return "GATTC_DISCOVER_ST";
- default:
- return "unknown GATTC state code";
- }
+static char* gattc_state_code(tBTA_GATTC_STATE state_code) {
+ switch (state_code) {
+ case BTA_GATTC_IDLE_ST:
+ return "GATTC_IDLE_ST";
+ case BTA_GATTC_W4_CONN_ST:
+ return "GATTC_W4_CONN_ST";
+ case BTA_GATTC_CONN_ST:
+ return "GATTC_CONN_ST";
+ case BTA_GATTC_DISCOVER_ST:
+ return "GATTC_DISCOVER_ST";
+ default:
+ return "unknown GATTC state code";
+ }
}
-#endif /* Debug Functions */
+#endif /* Debug Functions */
#endif /* BTA_GATT_INCLUDED */
diff --git a/bta/gatt/bta_gattc_utils.cc b/bta/gatt/bta_gattc_utils.cc
index 9790228..b575af8 100644
--- a/bta/gatt/bta_gattc_utils.cc
+++ b/bta/gatt/bta_gattc_utils.cc
@@ -30,10 +30,10 @@
#include <string.h>
+#include "bt_common.h"
#include "bta_gattc_int.h"
#include "bta_sys.h"
#include "btcore/include/bdaddr.h"
-#include "bt_common.h"
#include "l2c_api.h"
#include "utl.h"
@@ -41,10 +41,11 @@
* Constants
****************************************************************************/
-static const uint8_t base_uuid[LEN_UUID_128] = {0xFB, 0x34, 0x9B, 0x5F, 0x80, 0x00, 0x00, 0x80,
+static const uint8_t base_uuid[LEN_UUID_128] = {
+ 0xFB, 0x34, 0x9B, 0x5F, 0x80, 0x00, 0x00, 0x80,
0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
-static const BD_ADDR dummy_bda = {0,0,0,0,0,0};
+static const BD_ADDR dummy_bda = {0, 0, 0, 0, 0, 0};
/*******************************************************************************
*
@@ -55,13 +56,13 @@
* Returns true if two uuid match; false otherwise.
*
******************************************************************************/
-void bta_gatt_convert_uuid16_to_uuid128(uint8_t uuid_128[LEN_UUID_128], uint16_t uuid_16)
-{
- uint8_t *p = &uuid_128[LEN_UUID_128 - 4];
+void bta_gatt_convert_uuid16_to_uuid128(uint8_t uuid_128[LEN_UUID_128],
+ uint16_t uuid_16) {
+ uint8_t* p = &uuid_128[LEN_UUID_128 - 4];
- memcpy (uuid_128, base_uuid, LEN_UUID_128);
+ memcpy(uuid_128, base_uuid, LEN_UUID_128);
- UINT16_TO_STREAM(p, uuid_16);
+ UINT16_TO_STREAM(p, uuid_16);
}
/*******************************************************************************
*
@@ -72,46 +73,40 @@
* Returns true if two uuid match; false otherwise.
*
******************************************************************************/
-bool bta_gattc_uuid_compare (const tBT_UUID *p_src, const tBT_UUID *p_tar, bool is_precise)
-{
- uint8_t su[LEN_UUID_128], tu[LEN_UUID_128];
- const uint8_t *ps, *pt;
+bool bta_gattc_uuid_compare(const tBT_UUID* p_src, const tBT_UUID* p_tar,
+ bool is_precise) {
+ uint8_t su[LEN_UUID_128], tu[LEN_UUID_128];
+ const uint8_t *ps, *pt;
- /* any of the UUID is unspecified */
- if (p_src == 0 || p_tar == 0)
- {
- if (is_precise)
- return false;
- else
- return true;
- }
-
- /* If both are 16-bit, we can do a simple compare */
- if (p_src->len == 2 && p_tar->len == 2)
- {
- return p_src->uu.uuid16 == p_tar->uu.uuid16;
- }
-
- /* One or both of the UUIDs is 128-bit */
- if (p_src->len == LEN_UUID_16)
- {
- /* convert a 16 bits UUID to 128 bits value */
- bta_gatt_convert_uuid16_to_uuid128(su, p_src->uu.uuid16);
- ps = su;
- }
+ /* any of the UUID is unspecified */
+ if (p_src == 0 || p_tar == 0) {
+ if (is_precise)
+ return false;
else
- ps = p_src->uu.uuid128;
+ return true;
+ }
- if (p_tar->len == LEN_UUID_16)
- {
- /* convert a 16 bits UUID to 128 bits value */
- bta_gatt_convert_uuid16_to_uuid128(tu, p_tar->uu.uuid16);
- pt = tu;
- }
- else
- pt = p_tar->uu.uuid128;
+ /* If both are 16-bit, we can do a simple compare */
+ if (p_src->len == 2 && p_tar->len == 2) {
+ return p_src->uu.uuid16 == p_tar->uu.uuid16;
+ }
- return(memcmp(ps, pt, LEN_UUID_128) == 0);
+ /* One or both of the UUIDs is 128-bit */
+ if (p_src->len == LEN_UUID_16) {
+ /* convert a 16 bits UUID to 128 bits value */
+ bta_gatt_convert_uuid16_to_uuid128(su, p_src->uu.uuid16);
+ ps = su;
+ } else
+ ps = p_src->uu.uuid128;
+
+ if (p_tar->len == LEN_UUID_16) {
+ /* convert a 16 bits UUID to 128 bits value */
+ bta_gatt_convert_uuid16_to_uuid128(tu, p_tar->uu.uuid16);
+ pt = tu;
+ } else
+ pt = p_tar->uu.uuid128;
+
+ return (memcmp(ps, pt, LEN_UUID_128) == 0);
}
/*******************************************************************************
@@ -123,18 +118,14 @@
* Returns pointer to the regcb
*
******************************************************************************/
-tBTA_GATTC_RCB * bta_gattc_cl_get_regcb(uint8_t client_if)
-{
- uint8_t i = 0;
- tBTA_GATTC_RCB *p_clrcb = &bta_gattc_cb.cl_rcb[0];
+tBTA_GATTC_RCB* bta_gattc_cl_get_regcb(uint8_t client_if) {
+ uint8_t i = 0;
+ tBTA_GATTC_RCB* p_clrcb = &bta_gattc_cb.cl_rcb[0];
- for (i = 0; i < BTA_GATTC_CL_MAX; i ++, p_clrcb ++)
- {
- if (p_clrcb->in_use &&
- p_clrcb->client_if == client_if)
- return p_clrcb;
- }
- return NULL;
+ for (i = 0; i < BTA_GATTC_CL_MAX; i++, p_clrcb++) {
+ if (p_clrcb->in_use && p_clrcb->client_if == client_if) return p_clrcb;
+ }
+ return NULL;
}
/*******************************************************************************
*
@@ -145,16 +136,13 @@
* Returns pointer to the regcb
*
******************************************************************************/
-uint8_t bta_gattc_num_reg_app(void)
-{
- uint8_t i = 0, j = 0;
+uint8_t bta_gattc_num_reg_app(void) {
+ uint8_t i = 0, j = 0;
- for (i = 0; i < BTA_GATTC_CL_MAX; i ++)
- {
- if (bta_gattc_cb.cl_rcb[i].in_use)
- j ++;
- }
- return j;
+ for (i = 0; i < BTA_GATTC_CL_MAX; i++) {
+ if (bta_gattc_cb.cl_rcb[i].in_use) j++;
+ }
+ return j;
}
/*******************************************************************************
*
@@ -165,21 +153,18 @@
* Returns pointer to the clcb
*
******************************************************************************/
-tBTA_GATTC_CLCB * bta_gattc_find_clcb_by_cif (uint8_t client_if, BD_ADDR remote_bda,
- tBTA_TRANSPORT transport)
-{
- tBTA_GATTC_CLCB *p_clcb = &bta_gattc_cb.clcb[0];
- uint8_t i;
+tBTA_GATTC_CLCB* bta_gattc_find_clcb_by_cif(uint8_t client_if,
+ BD_ADDR remote_bda,
+ tBTA_TRANSPORT transport) {
+ tBTA_GATTC_CLCB* p_clcb = &bta_gattc_cb.clcb[0];
+ uint8_t i;
- for (i = 0; i < BTA_GATTC_CLCB_MAX; i ++, p_clcb ++)
- {
- if (p_clcb->in_use &&
- p_clcb->p_rcb->client_if == client_if &&
- p_clcb->transport == transport &&
- bdcmp(p_clcb->bda, remote_bda) == 0)
- return p_clcb;
- }
- return NULL;
+ for (i = 0; i < BTA_GATTC_CLCB_MAX; i++, p_clcb++) {
+ if (p_clcb->in_use && p_clcb->p_rcb->client_if == client_if &&
+ p_clcb->transport == transport && bdcmp(p_clcb->bda, remote_bda) == 0)
+ return p_clcb;
+ }
+ return NULL;
}
/*******************************************************************************
*
@@ -190,18 +175,14 @@
* Returns pointer to the clcb
*
******************************************************************************/
-tBTA_GATTC_CLCB * bta_gattc_find_clcb_by_conn_id (uint16_t conn_id)
-{
- tBTA_GATTC_CLCB *p_clcb = &bta_gattc_cb.clcb[0];
- uint8_t i;
+tBTA_GATTC_CLCB* bta_gattc_find_clcb_by_conn_id(uint16_t conn_id) {
+ tBTA_GATTC_CLCB* p_clcb = &bta_gattc_cb.clcb[0];
+ uint8_t i;
- for (i = 0; i < BTA_GATTC_CLCB_MAX; i ++, p_clcb ++)
- {
- if (p_clcb->in_use &&
- p_clcb->bta_conn_id == conn_id)
- return p_clcb;
- }
- return NULL;
+ for (i = 0; i < BTA_GATTC_CLCB_MAX; i++, p_clcb++) {
+ if (p_clcb->in_use && p_clcb->bta_conn_id == conn_id) return p_clcb;
+ }
+ return NULL;
}
/*******************************************************************************
@@ -213,45 +194,41 @@
* Returns pointer to the clcb
*
******************************************************************************/
-tBTA_GATTC_CLCB * bta_gattc_clcb_alloc(tBTA_GATTC_IF client_if, BD_ADDR remote_bda,
- tBTA_TRANSPORT transport)
-{
- uint8_t i_clcb = 0;
- tBTA_GATTC_CLCB *p_clcb = NULL;
+tBTA_GATTC_CLCB* bta_gattc_clcb_alloc(tBTA_GATTC_IF client_if,
+ BD_ADDR remote_bda,
+ tBTA_TRANSPORT transport) {
+ uint8_t i_clcb = 0;
+ tBTA_GATTC_CLCB* p_clcb = NULL;
- for (i_clcb = 0; i_clcb < BTA_GATTC_CLCB_MAX; i_clcb++)
- {
- if (!bta_gattc_cb.clcb[i_clcb].in_use)
- {
+ for (i_clcb = 0; i_clcb < BTA_GATTC_CLCB_MAX; i_clcb++) {
+ if (!bta_gattc_cb.clcb[i_clcb].in_use) {
#if (BTA_GATT_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_gattc_clcb_alloc: found clcb[%d] available",i_clcb);
+ APPL_TRACE_DEBUG("bta_gattc_clcb_alloc: found clcb[%d] available",
+ i_clcb);
#endif
- p_clcb = &bta_gattc_cb.clcb[i_clcb];
- p_clcb->in_use = true;
- p_clcb->status = BTA_GATT_OK;
- p_clcb->transport = transport;
- bdcpy(p_clcb->bda, remote_bda);
+ p_clcb = &bta_gattc_cb.clcb[i_clcb];
+ p_clcb->in_use = true;
+ p_clcb->status = BTA_GATT_OK;
+ p_clcb->transport = transport;
+ bdcpy(p_clcb->bda, remote_bda);
- p_clcb->p_rcb = bta_gattc_cl_get_regcb(client_if);
+ p_clcb->p_rcb = bta_gattc_cl_get_regcb(client_if);
- if ((p_clcb->p_srcb = bta_gattc_find_srcb(remote_bda)) == NULL)
- p_clcb->p_srcb = bta_gattc_srcb_alloc(remote_bda);
+ if ((p_clcb->p_srcb = bta_gattc_find_srcb(remote_bda)) == NULL)
+ p_clcb->p_srcb = bta_gattc_srcb_alloc(remote_bda);
- if (p_clcb->p_rcb != NULL && p_clcb->p_srcb != NULL)
- {
- p_clcb->p_srcb->num_clcb ++;
- p_clcb->p_rcb->num_clcb ++;
- }
- else
- {
- /* release this clcb if clcb or srcb allocation failed */
- p_clcb->in_use = false;
- p_clcb = NULL;
- }
- break;
- }
+ if (p_clcb->p_rcb != NULL && p_clcb->p_srcb != NULL) {
+ p_clcb->p_srcb->num_clcb++;
+ p_clcb->p_rcb->num_clcb++;
+ } else {
+ /* release this clcb if clcb or srcb allocation failed */
+ p_clcb->in_use = false;
+ p_clcb = NULL;
+ }
+ break;
}
- return p_clcb;
+ }
+ return p_clcb;
}
/*******************************************************************************
*
@@ -262,16 +239,16 @@
* Returns pointer to the clcb
*
******************************************************************************/
-tBTA_GATTC_CLCB *bta_gattc_find_alloc_clcb(tBTA_GATTC_IF client_if, BD_ADDR remote_bda,
- tBTA_TRANSPORT transport)
-{
- tBTA_GATTC_CLCB *p_clcb ;
+tBTA_GATTC_CLCB* bta_gattc_find_alloc_clcb(tBTA_GATTC_IF client_if,
+ BD_ADDR remote_bda,
+ tBTA_TRANSPORT transport) {
+ tBTA_GATTC_CLCB* p_clcb;
- if ((p_clcb = bta_gattc_find_clcb_by_cif(client_if, remote_bda, transport)) == NULL)
- {
- p_clcb = bta_gattc_clcb_alloc(client_if, remote_bda, transport);
- }
- return p_clcb;
+ if ((p_clcb = bta_gattc_find_clcb_by_cif(client_if, remote_bda, transport)) ==
+ NULL) {
+ p_clcb = bta_gattc_clcb_alloc(client_if, remote_bda, transport);
+ }
+ return p_clcb;
}
/*******************************************************************************
@@ -283,32 +260,27 @@
* Returns pointer to the clcb
*
******************************************************************************/
-void bta_gattc_clcb_dealloc(tBTA_GATTC_CLCB *p_clcb)
-{
- tBTA_GATTC_SERV *p_srcb = NULL;
+void bta_gattc_clcb_dealloc(tBTA_GATTC_CLCB* p_clcb) {
+ tBTA_GATTC_SERV* p_srcb = NULL;
- if (p_clcb)
- {
- p_srcb = p_clcb->p_srcb;
- if (p_srcb->num_clcb)
- p_srcb->num_clcb --;
+ if (p_clcb) {
+ p_srcb = p_clcb->p_srcb;
+ if (p_srcb->num_clcb) p_srcb->num_clcb--;
- if (p_clcb->p_rcb->num_clcb)
- p_clcb->p_rcb->num_clcb --;
+ if (p_clcb->p_rcb->num_clcb) p_clcb->p_rcb->num_clcb--;
- /* if the srcb is no longer needed, reset the state */
- if ( p_srcb->num_clcb == 0)
- {
- p_srcb->connected = false;
- p_srcb->state = BTA_GATTC_SERV_IDLE;
- p_srcb->mtu = 0;
- }
-
- osi_free_and_reset((void **)&p_clcb->p_q_cmd);
- memset(p_clcb, 0, sizeof(tBTA_GATTC_CLCB));
- } else {
- APPL_TRACE_ERROR("bta_gattc_clcb_dealloc p_clcb=NULL");
+ /* if the srcb is no longer needed, reset the state */
+ if (p_srcb->num_clcb == 0) {
+ p_srcb->connected = false;
+ p_srcb->state = BTA_GATTC_SERV_IDLE;
+ p_srcb->mtu = 0;
}
+
+ osi_free_and_reset((void**)&p_clcb->p_q_cmd);
+ memset(p_clcb, 0, sizeof(tBTA_GATTC_CLCB));
+ } else {
+ APPL_TRACE_ERROR("bta_gattc_clcb_dealloc p_clcb=NULL");
+ }
}
/*******************************************************************************
@@ -320,17 +292,14 @@
* Returns pointer to the server cache.
*
******************************************************************************/
-tBTA_GATTC_SERV * bta_gattc_find_srcb(BD_ADDR bda)
-{
- tBTA_GATTC_SERV *p_srcb = &bta_gattc_cb.known_server[0];
- uint8_t i;
+tBTA_GATTC_SERV* bta_gattc_find_srcb(BD_ADDR bda) {
+ tBTA_GATTC_SERV* p_srcb = &bta_gattc_cb.known_server[0];
+ uint8_t i;
- for (i = 0; i < BTA_GATTC_KNOWN_SR_MAX; i ++, p_srcb ++)
- {
- if (p_srcb->in_use && bdcmp(p_srcb->server_bda, bda) == 0)
- return p_srcb;
- }
- return NULL;
+ for (i = 0; i < BTA_GATTC_KNOWN_SR_MAX; i++, p_srcb++) {
+ if (p_srcb->in_use && bdcmp(p_srcb->server_bda, bda) == 0) return p_srcb;
+ }
+ return NULL;
}
/*******************************************************************************
@@ -342,17 +311,14 @@
* Returns pointer to the server cache.
*
******************************************************************************/
-tBTA_GATTC_SERV * bta_gattc_find_srvr_cache(BD_ADDR bda)
-{
- tBTA_GATTC_SERV *p_srcb = &bta_gattc_cb.known_server[0];
- uint8_t i;
+tBTA_GATTC_SERV* bta_gattc_find_srvr_cache(BD_ADDR bda) {
+ tBTA_GATTC_SERV* p_srcb = &bta_gattc_cb.known_server[0];
+ uint8_t i;
- for (i = 0; i < BTA_GATTC_KNOWN_SR_MAX; i ++, p_srcb ++)
- {
- if (bdcmp(p_srcb->server_bda, bda) == 0)
- return p_srcb;
- }
- return NULL;
+ for (i = 0; i < BTA_GATTC_KNOWN_SR_MAX; i++, p_srcb++) {
+ if (bdcmp(p_srcb->server_bda, bda) == 0) return p_srcb;
+ }
+ return NULL;
}
/*******************************************************************************
*
@@ -363,14 +329,13 @@
* Returns pointer to the server cache.
*
******************************************************************************/
-tBTA_GATTC_SERV * bta_gattc_find_scb_by_cid (uint16_t conn_id)
-{
- tBTA_GATTC_CLCB *p_clcb = bta_gattc_find_clcb_by_conn_id(conn_id);
+tBTA_GATTC_SERV* bta_gattc_find_scb_by_cid(uint16_t conn_id) {
+ tBTA_GATTC_CLCB* p_clcb = bta_gattc_find_clcb_by_conn_id(conn_id);
- if (p_clcb)
- return p_clcb->p_srcb;
- else
- return NULL;
+ if (p_clcb)
+ return p_clcb->p_srcb;
+ else
+ return NULL;
}
/*******************************************************************************
*
@@ -381,44 +346,36 @@
* Returns pointer to the server cache.
*
******************************************************************************/
-tBTA_GATTC_SERV * bta_gattc_srcb_alloc(BD_ADDR bda)
-{
- tBTA_GATTC_SERV *p_tcb = &bta_gattc_cb.known_server[0],
- *p_recycle = NULL;
- bool found = false;
- uint8_t i;
+tBTA_GATTC_SERV* bta_gattc_srcb_alloc(BD_ADDR bda) {
+ tBTA_GATTC_SERV *p_tcb = &bta_gattc_cb.known_server[0], *p_recycle = NULL;
+ bool found = false;
+ uint8_t i;
- for (i = 0; i < BTA_GATTC_KNOWN_SR_MAX; i ++, p_tcb ++)
- {
- if (!p_tcb->in_use)
- {
- found = true;
- break;
- }
- else if (!p_tcb->connected)
- {
- p_recycle = p_tcb;
- }
+ for (i = 0; i < BTA_GATTC_KNOWN_SR_MAX; i++, p_tcb++) {
+ if (!p_tcb->in_use) {
+ found = true;
+ break;
+ } else if (!p_tcb->connected) {
+ p_recycle = p_tcb;
}
+ }
- /* if not found, try to recycle one known device */
- if (!found && !p_recycle)
- p_tcb = NULL;
- else if (!found && p_recycle)
- p_tcb = p_recycle;
+ /* if not found, try to recycle one known device */
+ if (!found && !p_recycle)
+ p_tcb = NULL;
+ else if (!found && p_recycle)
+ p_tcb = p_recycle;
- if (p_tcb != NULL)
- {
- if (p_tcb->p_srvc_cache != NULL)
- list_free(p_tcb->p_srvc_cache);
+ if (p_tcb != NULL) {
+ if (p_tcb->p_srvc_cache != NULL) list_free(p_tcb->p_srvc_cache);
- osi_free_and_reset((void **)&p_tcb->p_srvc_list);
- memset(p_tcb, 0 , sizeof(tBTA_GATTC_SERV));
+ osi_free_and_reset((void**)&p_tcb->p_srvc_list);
+ memset(p_tcb, 0, sizeof(tBTA_GATTC_SERV));
- p_tcb->in_use = true;
- bdcpy(p_tcb->server_bda, bda);
- }
- return p_tcb;
+ p_tcb->in_use = true;
+ bdcpy(p_tcb->server_bda, bda);
+ }
+ return p_tcb;
}
/*******************************************************************************
*
@@ -429,18 +386,15 @@
* Returns success or failure.
*
******************************************************************************/
-bool bta_gattc_enqueue(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_DATA *p_data)
-{
+bool bta_gattc_enqueue(tBTA_GATTC_CLCB* p_clcb, tBTA_GATTC_DATA* p_data) {
+ if (p_clcb->p_q_cmd == NULL) {
+ p_clcb->p_q_cmd = p_data;
+ return true;
+ }
- if (p_clcb->p_q_cmd == NULL)
- {
- p_clcb->p_q_cmd = p_data;
- return true;
- }
-
- APPL_TRACE_ERROR ("%s: already has a pending command!!", __func__);
- /* skip the callback now. ----- need to send callback ? */
- return false;
+ APPL_TRACE_ERROR("%s: already has a pending command!!", __func__);
+ /* skip the callback now. ----- need to send callback ? */
+ return false;
}
/*******************************************************************************
@@ -452,29 +406,27 @@
* Returns
*
******************************************************************************/
-bool bta_gattc_check_notif_registry(tBTA_GATTC_RCB *p_clreg, tBTA_GATTC_SERV *p_srcb,
- tBTA_GATTC_NOTIFY *p_notify)
-{
- uint8_t i;
+bool bta_gattc_check_notif_registry(tBTA_GATTC_RCB* p_clreg,
+ tBTA_GATTC_SERV* p_srcb,
+ tBTA_GATTC_NOTIFY* p_notify) {
+ uint8_t i;
- for (i = 0 ; i < BTA_GATTC_NOTIF_REG_MAX; i ++)
- {
- if (p_clreg->notif_reg[i].in_use &&
- bdcmp(p_clreg->notif_reg[i].remote_bda, p_srcb->server_bda) == 0 &&
- p_clreg->notif_reg[i].handle == p_notify->handle)
- {
- APPL_TRACE_DEBUG("Notification registered!");
- return true;
- }
+ for (i = 0; i < BTA_GATTC_NOTIF_REG_MAX; i++) {
+ if (p_clreg->notif_reg[i].in_use &&
+ bdcmp(p_clreg->notif_reg[i].remote_bda, p_srcb->server_bda) == 0 &&
+ p_clreg->notif_reg[i].handle == p_notify->handle) {
+ APPL_TRACE_DEBUG("Notification registered!");
+ return true;
}
- return false;
-
+ }
+ return false;
}
/*******************************************************************************
*
* Function bta_gattc_clear_notif_registration
*
- * Description Clear up the notification registration information by BD_ADDR.
+ * Description Clear up the notification registration information by
+ *BD_ADDR.
* Where handle is between start_handle and end_handle, and
* start_handle and end_handle are boundaries of service
* containing characteristic.
@@ -482,140 +434,131 @@
* Returns None.
*
******************************************************************************/
-void bta_gattc_clear_notif_registration(tBTA_GATTC_SERV *p_srcb, uint16_t conn_id,
- uint16_t start_handle, uint16_t end_handle)
-{
- BD_ADDR remote_bda;
- tBTA_GATTC_IF gatt_if;
- tBTA_GATTC_RCB *p_clrcb ;
- uint8_t i;
- tGATT_TRANSPORT transport;
- uint16_t handle;
+void bta_gattc_clear_notif_registration(tBTA_GATTC_SERV* p_srcb,
+ uint16_t conn_id, uint16_t start_handle,
+ uint16_t end_handle) {
+ BD_ADDR remote_bda;
+ tBTA_GATTC_IF gatt_if;
+ tBTA_GATTC_RCB* p_clrcb;
+ uint8_t i;
+ tGATT_TRANSPORT transport;
+ uint16_t handle;
- if (GATT_GetConnectionInfor(conn_id, &gatt_if, remote_bda, &transport)) {
- if ((p_clrcb = bta_gattc_cl_get_regcb(gatt_if)) != NULL) {
- for (i = 0 ; i < BTA_GATTC_NOTIF_REG_MAX; i ++) {
- if (p_clrcb->notif_reg[i].in_use &&
- !bdcmp(p_clrcb->notif_reg[i].remote_bda, remote_bda)) {
-
- /* It's enough to get service or characteristic handle, as
- * clear boundaries are always around service.
- */
- handle = p_clrcb->notif_reg[i].handle;
- if (handle >= start_handle && handle <= end_handle)
- memset(&p_clrcb->notif_reg[i], 0, sizeof(tBTA_GATTC_NOTIF_REG));
- }
- }
+ if (GATT_GetConnectionInfor(conn_id, &gatt_if, remote_bda, &transport)) {
+ if ((p_clrcb = bta_gattc_cl_get_regcb(gatt_if)) != NULL) {
+ for (i = 0; i < BTA_GATTC_NOTIF_REG_MAX; i++) {
+ if (p_clrcb->notif_reg[i].in_use &&
+ !bdcmp(p_clrcb->notif_reg[i].remote_bda, remote_bda)) {
+ /* It's enough to get service or characteristic handle, as
+ * clear boundaries are always around service.
+ */
+ handle = p_clrcb->notif_reg[i].handle;
+ if (handle >= start_handle && handle <= end_handle)
+ memset(&p_clrcb->notif_reg[i], 0, sizeof(tBTA_GATTC_NOTIF_REG));
}
- } else {
- APPL_TRACE_ERROR("can not clear indication/notif registration for unknown app");
+ }
}
- return;
+ } else {
+ APPL_TRACE_ERROR(
+ "can not clear indication/notif registration for unknown app");
+ }
+ return;
}
/*******************************************************************************
*
* Function bta_gattc_mark_bg_conn
*
- * Description mark background connection status when a bg connection is initiated
+ * Description mark background connection status when a bg connection is
+ *initiated
* or terminated.
*
* Returns true if success; false otherwise.
*
******************************************************************************/
-bool bta_gattc_mark_bg_conn (tBTA_GATTC_IF client_if, BD_ADDR_PTR remote_bda_ptr,
- bool add)
-{
- tBTA_GATTC_BG_TCK *p_bg_tck = &bta_gattc_cb.bg_track[0];
- uint8_t i = 0;
- tBTA_GATTC_CIF_MASK *p_cif_mask;
+bool bta_gattc_mark_bg_conn(tBTA_GATTC_IF client_if, BD_ADDR_PTR remote_bda_ptr,
+ bool add) {
+ tBTA_GATTC_BG_TCK* p_bg_tck = &bta_gattc_cb.bg_track[0];
+ uint8_t i = 0;
+ tBTA_GATTC_CIF_MASK* p_cif_mask;
- for (i = 0; i < BTA_GATTC_KNOWN_SR_MAX; i ++, p_bg_tck ++)
- {
- if (p_bg_tck->in_use &&
- ((remote_bda_ptr != NULL && bdcmp(p_bg_tck->remote_bda, remote_bda_ptr) == 0) ||
- (remote_bda_ptr == NULL && bdcmp(p_bg_tck->remote_bda, dummy_bda) == 0)))
- {
- p_cif_mask = &p_bg_tck->cif_mask;
+ for (i = 0; i < BTA_GATTC_KNOWN_SR_MAX; i++, p_bg_tck++) {
+ if (p_bg_tck->in_use &&
+ ((remote_bda_ptr != NULL &&
+ bdcmp(p_bg_tck->remote_bda, remote_bda_ptr) == 0) ||
+ (remote_bda_ptr == NULL &&
+ bdcmp(p_bg_tck->remote_bda, dummy_bda) == 0))) {
+ p_cif_mask = &p_bg_tck->cif_mask;
- if (add)
- /* mask on the cif bit */
- *p_cif_mask |= (1 <<(client_if - 1));
- else
- {
- if (client_if != 0)
- *p_cif_mask &= (~(1 <<(client_if - 1)));
- else
- *p_cif_mask = 0;
- }
- /* no BG connection for this device, make it available */
- if (p_bg_tck->cif_mask == 0)
- {
- memset(p_bg_tck, 0, sizeof(tBTA_GATTC_BG_TCK));
- }
- return true;
- }
+ if (add) /* mask on the cif bit */
+ *p_cif_mask |= (1 << (client_if - 1));
+ else {
+ if (client_if != 0)
+ *p_cif_mask &= (~(1 << (client_if - 1)));
+ else
+ *p_cif_mask = 0;
+ }
+ /* no BG connection for this device, make it available */
+ if (p_bg_tck->cif_mask == 0) {
+ memset(p_bg_tck, 0, sizeof(tBTA_GATTC_BG_TCK));
+ }
+ return true;
}
- if (!add)
- {
+ }
+ if (!add) {
+ if (remote_bda_ptr) {
+ bdstr_t bdstr = {0};
+ APPL_TRACE_ERROR(
+ "%s unable to find the bg connection mask for: %s", __func__,
+ bdaddr_to_string((bt_bdaddr_t*)remote_bda_ptr, bdstr, sizeof(bdstr)));
+ }
+ return false;
+ } else /* adding a new device mask */
+ {
+ for (i = 0, p_bg_tck = &bta_gattc_cb.bg_track[0];
+ i < BTA_GATTC_KNOWN_SR_MAX; i++, p_bg_tck++) {
+ if (!p_bg_tck->in_use) {
+ p_bg_tck->in_use = true;
if (remote_bda_ptr)
- {
- bdstr_t bdstr = {0};
- APPL_TRACE_ERROR("%s unable to find the bg connection mask for: %s", __func__,
- bdaddr_to_string((bt_bdaddr_t *)remote_bda_ptr, bdstr, sizeof(bdstr)));
- }
- return false;
- }
- else /* adding a new device mask */
- {
- for (i = 0, p_bg_tck = &bta_gattc_cb.bg_track[0];
- i < BTA_GATTC_KNOWN_SR_MAX; i ++, p_bg_tck ++)
- {
- if (!p_bg_tck->in_use)
- {
- p_bg_tck->in_use = true;
- if (remote_bda_ptr)
- bdcpy(p_bg_tck->remote_bda, remote_bda_ptr);
- else
- bdcpy(p_bg_tck->remote_bda, dummy_bda);
+ bdcpy(p_bg_tck->remote_bda, remote_bda_ptr);
+ else
+ bdcpy(p_bg_tck->remote_bda, dummy_bda);
- p_cif_mask = &p_bg_tck->cif_mask;
+ p_cif_mask = &p_bg_tck->cif_mask;
- *p_cif_mask = (1 <<(client_if - 1));
- return true;
- }
- }
- APPL_TRACE_ERROR("no available space to mark the bg connection status");
- return false;
+ *p_cif_mask = (1 << (client_if - 1));
+ return true;
+ }
}
+ APPL_TRACE_ERROR("no available space to mark the bg connection status");
+ return false;
+ }
}
/*******************************************************************************
*
* Function bta_gattc_check_bg_conn
*
- * Description check if this is a background connection background connection.
+ * Description check if this is a background connection background
+ *connection.
*
* Returns true if success; false otherwise.
*
******************************************************************************/
-bool bta_gattc_check_bg_conn (tBTA_GATTC_IF client_if, BD_ADDR remote_bda, uint8_t role)
-{
- tBTA_GATTC_BG_TCK *p_bg_tck = &bta_gattc_cb.bg_track[0];
- uint8_t i = 0;
- bool is_bg_conn = false;
+bool bta_gattc_check_bg_conn(tBTA_GATTC_IF client_if, BD_ADDR remote_bda,
+ uint8_t role) {
+ tBTA_GATTC_BG_TCK* p_bg_tck = &bta_gattc_cb.bg_track[0];
+ uint8_t i = 0;
+ bool is_bg_conn = false;
- for (i = 0; i < BTA_GATTC_KNOWN_SR_MAX && !is_bg_conn; i ++, p_bg_tck ++)
- {
- if (p_bg_tck->in_use &&
- (bdcmp(p_bg_tck->remote_bda, remote_bda) == 0 ||
- bdcmp(p_bg_tck->remote_bda, dummy_bda) == 0))
- {
- if (((p_bg_tck->cif_mask &(1 <<(client_if - 1))) != 0) &&
- role == HCI_ROLE_MASTER)
- is_bg_conn = true;
- }
+ for (i = 0; i < BTA_GATTC_KNOWN_SR_MAX && !is_bg_conn; i++, p_bg_tck++) {
+ if (p_bg_tck->in_use && (bdcmp(p_bg_tck->remote_bda, remote_bda) == 0 ||
+ bdcmp(p_bg_tck->remote_bda, dummy_bda) == 0)) {
+ if (((p_bg_tck->cif_mask & (1 << (client_if - 1))) != 0) &&
+ role == HCI_ROLE_MASTER)
+ is_bg_conn = true;
}
- return is_bg_conn;
+ }
+ return is_bg_conn;
}
/*******************************************************************************
*
@@ -626,25 +569,23 @@
* Returns
*
******************************************************************************/
-void bta_gattc_send_open_cback( tBTA_GATTC_RCB *p_clreg, tBTA_GATT_STATUS status,
- BD_ADDR remote_bda, uint16_t conn_id,
- tBTA_TRANSPORT transport, uint16_t mtu)
-{
- tBTA_GATTC cb_data;
+void bta_gattc_send_open_cback(tBTA_GATTC_RCB* p_clreg, tBTA_GATT_STATUS status,
+ BD_ADDR remote_bda, uint16_t conn_id,
+ tBTA_TRANSPORT transport, uint16_t mtu) {
+ tBTA_GATTC cb_data;
- if (p_clreg->p_cback)
- {
- memset(&cb_data, 0, sizeof(tBTA_GATTC));
+ if (p_clreg->p_cback) {
+ memset(&cb_data, 0, sizeof(tBTA_GATTC));
- cb_data.open.status = status;
- cb_data.open.client_if = p_clreg->client_if;
- cb_data.open.conn_id = conn_id;
- cb_data.open.mtu = mtu;
- cb_data.open.transport = transport;
- bdcpy(cb_data.open.remote_bda, remote_bda);
+ cb_data.open.status = status;
+ cb_data.open.client_if = p_clreg->client_if;
+ cb_data.open.conn_id = conn_id;
+ cb_data.open.mtu = mtu;
+ cb_data.open.transport = transport;
+ bdcpy(cb_data.open.remote_bda, remote_bda);
- (*p_clreg->p_cback)(BTA_GATTC_OPEN_EVT, &cb_data);
- }
+ (*p_clreg->p_cback)(BTA_GATTC_OPEN_EVT, &cb_data);
+ }
}
/*******************************************************************************
*
@@ -655,24 +596,22 @@
* Returns pointer to the clcb
*
******************************************************************************/
-tBTA_GATTC_CONN * bta_gattc_conn_alloc(BD_ADDR remote_bda)
-{
- uint8_t i_conn = 0;
- tBTA_GATTC_CONN *p_conn = &bta_gattc_cb.conn_track[0];
+tBTA_GATTC_CONN* bta_gattc_conn_alloc(BD_ADDR remote_bda) {
+ uint8_t i_conn = 0;
+ tBTA_GATTC_CONN* p_conn = &bta_gattc_cb.conn_track[0];
- for (i_conn = 0; i_conn < BTA_GATTC_CONN_MAX; i_conn++, p_conn ++)
- {
- if (!p_conn->in_use)
- {
+ for (i_conn = 0; i_conn < BTA_GATTC_CONN_MAX; i_conn++, p_conn++) {
+ if (!p_conn->in_use) {
#if (BTA_GATT_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_gattc_conn_alloc: found conn_track[%d] available",i_conn);
+ APPL_TRACE_DEBUG("bta_gattc_conn_alloc: found conn_track[%d] available",
+ i_conn);
#endif
- p_conn->in_use = true;
- bdcpy(p_conn->remote_bda, remote_bda);
- return p_conn;
- }
+ p_conn->in_use = true;
+ bdcpy(p_conn->remote_bda, remote_bda);
+ return p_conn;
}
- return NULL;
+ }
+ return NULL;
}
/*******************************************************************************
@@ -684,22 +623,20 @@
* Returns pointer to the clcb
*
******************************************************************************/
-tBTA_GATTC_CONN * bta_gattc_conn_find(BD_ADDR remote_bda)
-{
- uint8_t i_conn = 0;
- tBTA_GATTC_CONN *p_conn = &bta_gattc_cb.conn_track[0];
+tBTA_GATTC_CONN* bta_gattc_conn_find(BD_ADDR remote_bda) {
+ uint8_t i_conn = 0;
+ tBTA_GATTC_CONN* p_conn = &bta_gattc_cb.conn_track[0];
- for (i_conn = 0; i_conn < BTA_GATTC_CONN_MAX; i_conn++, p_conn ++)
- {
- if (p_conn->in_use && bdcmp(remote_bda, p_conn->remote_bda) == 0)
- {
+ for (i_conn = 0; i_conn < BTA_GATTC_CONN_MAX; i_conn++, p_conn++) {
+ if (p_conn->in_use && bdcmp(remote_bda, p_conn->remote_bda) == 0) {
#if (BTA_GATT_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_gattc_conn_find: found conn_track[%d] matched",i_conn);
+ APPL_TRACE_DEBUG("bta_gattc_conn_find: found conn_track[%d] matched",
+ i_conn);
#endif
- return p_conn;
- }
+ return p_conn;
}
- return NULL;
+ }
+ return NULL;
}
/*******************************************************************************
@@ -711,15 +648,13 @@
* Returns pointer to the clcb
*
******************************************************************************/
-tBTA_GATTC_CONN * bta_gattc_conn_find_alloc(BD_ADDR remote_bda)
-{
- tBTA_GATTC_CONN *p_conn = bta_gattc_conn_find (remote_bda);
+tBTA_GATTC_CONN* bta_gattc_conn_find_alloc(BD_ADDR remote_bda) {
+ tBTA_GATTC_CONN* p_conn = bta_gattc_conn_find(remote_bda);
- if (p_conn == NULL)
- {
- p_conn = bta_gattc_conn_alloc(remote_bda);
- }
- return p_conn;
+ if (p_conn == NULL) {
+ p_conn = bta_gattc_conn_alloc(remote_bda);
+ }
+ return p_conn;
}
/*******************************************************************************
@@ -731,82 +666,77 @@
* Returns pointer to the clcb
*
******************************************************************************/
-bool bta_gattc_conn_dealloc(BD_ADDR remote_bda)
-{
- tBTA_GATTC_CONN *p_conn = bta_gattc_conn_find (remote_bda);
+bool bta_gattc_conn_dealloc(BD_ADDR remote_bda) {
+ tBTA_GATTC_CONN* p_conn = bta_gattc_conn_find(remote_bda);
- if (p_conn != NULL)
- {
- p_conn->in_use = false;
- memset(p_conn->remote_bda, 0, BD_ADDR_LEN);
- return true;
- }
- return false;
+ if (p_conn != NULL) {
+ p_conn->in_use = false;
+ memset(p_conn->remote_bda, 0, BD_ADDR_LEN);
+ return true;
+ }
+ return false;
}
/*******************************************************************************
*
* Function bta_gattc_find_int_conn_clcb
*
- * Description try to locate a clcb when an internal connecion event arrives.
+ * Description try to locate a clcb when an internal connecion event
+ *arrives.
*
* Returns pointer to the clcb
*
******************************************************************************/
-tBTA_GATTC_CLCB * bta_gattc_find_int_conn_clcb(tBTA_GATTC_DATA *p_msg)
-{
- tBTA_GATTC_CLCB *p_clcb = NULL;
+tBTA_GATTC_CLCB* bta_gattc_find_int_conn_clcb(tBTA_GATTC_DATA* p_msg) {
+ tBTA_GATTC_CLCB* p_clcb = NULL;
- if (p_msg->int_conn.role == HCI_ROLE_SLAVE)
- bta_gattc_conn_find_alloc(p_msg->int_conn.remote_bda);
+ if (p_msg->int_conn.role == HCI_ROLE_SLAVE)
+ bta_gattc_conn_find_alloc(p_msg->int_conn.remote_bda);
- /* try to locate a logic channel */
- if ((p_clcb = bta_gattc_find_clcb_by_cif(p_msg->int_conn.client_if,
- p_msg->int_conn.remote_bda,
- p_msg->int_conn.transport)) == NULL)
- {
- /* for a background connection or listening connection */
- if (/*p_msg->int_conn.role == HCI_ROLE_SLAVE || */
- bta_gattc_check_bg_conn(p_msg->int_conn.client_if,
+ /* try to locate a logic channel */
+ if ((p_clcb = bta_gattc_find_clcb_by_cif(
+ p_msg->int_conn.client_if, p_msg->int_conn.remote_bda,
+ p_msg->int_conn.transport)) == NULL) {
+ /* for a background connection or listening connection */
+ if (/*p_msg->int_conn.role == HCI_ROLE_SLAVE || */
+ bta_gattc_check_bg_conn(p_msg->int_conn.client_if,
+ p_msg->int_conn.remote_bda,
+ p_msg->int_conn.role)) {
+ /* allocate a new channel */
+ p_clcb = bta_gattc_clcb_alloc(p_msg->int_conn.client_if,
p_msg->int_conn.remote_bda,
- p_msg->int_conn.role))
- {
- /* allocate a new channel */
- p_clcb = bta_gattc_clcb_alloc(p_msg->int_conn.client_if,
- p_msg->int_conn.remote_bda,
- p_msg->int_conn.transport);
- }
+ p_msg->int_conn.transport);
}
- return p_clcb;
+ }
+ return p_clcb;
}
/*******************************************************************************
*
* Function bta_gattc_find_int_disconn_clcb
*
- * Description try to locate a clcb when an internal disconnect callback arrives.
+ * Description try to locate a clcb when an internal disconnect callback
+ *arrives.
*
* Returns pointer to the clcb
*
******************************************************************************/
-tBTA_GATTC_CLCB * bta_gattc_find_int_disconn_clcb(tBTA_GATTC_DATA *p_msg)
-{
- tBTA_GATTC_CLCB *p_clcb = NULL;
+tBTA_GATTC_CLCB* bta_gattc_find_int_disconn_clcb(tBTA_GATTC_DATA* p_msg) {
+ tBTA_GATTC_CLCB* p_clcb = NULL;
- bta_gattc_conn_dealloc(p_msg->int_conn.remote_bda);
- if ((p_clcb = bta_gattc_find_clcb_by_conn_id(p_msg->int_conn.hdr.layer_specific)) == NULL)
- {
- /* connection attempt failed, send connection callback event */
- p_clcb = bta_gattc_find_clcb_by_cif(p_msg->int_conn.client_if,
- p_msg->int_conn.remote_bda,
- p_msg->int_conn.transport);
- }
- if (p_clcb == NULL)
- {
- APPL_TRACE_DEBUG(" disconnection ID: [%d] not used by BTA",
- p_msg->int_conn.hdr.layer_specific);
- }
- return p_clcb;
+ bta_gattc_conn_dealloc(p_msg->int_conn.remote_bda);
+ if ((p_clcb = bta_gattc_find_clcb_by_conn_id(
+ p_msg->int_conn.hdr.layer_specific)) == NULL) {
+ /* connection attempt failed, send connection callback event */
+ p_clcb = bta_gattc_find_clcb_by_cif(p_msg->int_conn.client_if,
+ p_msg->int_conn.remote_bda,
+ p_msg->int_conn.transport);
+ }
+ if (p_clcb == NULL) {
+ APPL_TRACE_DEBUG(" disconnection ID: [%d] not used by BTA",
+ p_msg->int_conn.hdr.layer_specific);
+ }
+ return p_clcb;
}
#endif /* BTA_GATT_INCLUDED */
diff --git a/bta/gatt/bta_gatts_act.cc b/bta/gatt/bta_gatts_act.cc
index 768b5a6..61179bc 100644
--- a/bta/gatt/bta_gatts_act.cc
+++ b/bta/gatt/bta_gatts_act.cc
@@ -23,49 +23,41 @@
*
******************************************************************************/
-
#include "bt_target.h"
#if (BTA_GATT_INCLUDED == TRUE)
-#include "utl.h"
-#include "bt_common.h"
-#include "bta_sys.h"
-#include "bta_gatts_int.h"
-#include "bta_gatts_co.h"
-#include "btm_ble_api.h"
-#include "btif/include/btif_debug_conn.h"
-#include "osi/include/osi.h"
#include <string.h>
+#include "bt_common.h"
+#include "bta_gatts_co.h"
+#include "bta_gatts_int.h"
+#include "bta_sys.h"
+#include "btif/include/btif_debug_conn.h"
+#include "btm_ble_api.h"
+#include "osi/include/osi.h"
+#include "utl.h"
-static void bta_gatts_nv_save_cback(bool is_saved, tGATTS_HNDL_RANGE *p_hndl_range);
-static bool bta_gatts_nv_srv_chg_cback(tGATTS_SRV_CHG_CMD cmd, tGATTS_SRV_CHG_REQ *p_req,
- tGATTS_SRV_CHG_RSP *p_rsp);
+static void bta_gatts_nv_save_cback(bool is_saved,
+ tGATTS_HNDL_RANGE* p_hndl_range);
+static bool bta_gatts_nv_srv_chg_cback(tGATTS_SRV_CHG_CMD cmd,
+ tGATTS_SRV_CHG_REQ* p_req,
+ tGATTS_SRV_CHG_RSP* p_rsp);
-static void bta_gatts_conn_cback (tGATT_IF gatt_if, BD_ADDR bda, uint16_t conn_id,
- bool connected, tGATT_DISCONN_REASON reason,
- tGATT_TRANSPORT transport);
-static void bta_gatts_send_request_cback (uint16_t conn_id,
- uint32_t trans_id,
- tGATTS_REQ_TYPE req_type, tGATTS_DATA *p_data);
-static void bta_gatts_cong_cback (uint16_t conn_id, bool congested);
+static void bta_gatts_conn_cback(tGATT_IF gatt_if, BD_ADDR bda,
+ uint16_t conn_id, bool connected,
+ tGATT_DISCONN_REASON reason,
+ tGATT_TRANSPORT transport);
+static void bta_gatts_send_request_cback(uint16_t conn_id, uint32_t trans_id,
+ tGATTS_REQ_TYPE req_type,
+ tGATTS_DATA* p_data);
+static void bta_gatts_cong_cback(uint16_t conn_id, bool congested);
-static tGATT_CBACK bta_gatts_cback =
-{
- bta_gatts_conn_cback,
- NULL,
- NULL,
- NULL,
- bta_gatts_send_request_cback,
- NULL,
- bta_gatts_cong_cback
-};
+static tGATT_CBACK bta_gatts_cback = {
+ bta_gatts_conn_cback, NULL, NULL, NULL, bta_gatts_send_request_cback, NULL,
+ bta_gatts_cong_cback};
-tGATT_APPL_INFO bta_gatts_nv_cback =
-{
- bta_gatts_nv_save_cback,
- bta_gatts_nv_srv_chg_cback
-};
+tGATT_APPL_INFO bta_gatts_nv_cback = {bta_gatts_nv_save_cback,
+ bta_gatts_nv_srv_chg_cback};
/*******************************************************************************
*
@@ -73,35 +65,36 @@
*
* Description NV save callback function.
*
- * Parameter is_add: true is to add a handle range; otherwise is to delete.
+ * Parameter is_add: true is to add a handle range; otherwise is to
+ *delete.
* Returns none.
*
******************************************************************************/
-static void bta_gatts_nv_save_cback(bool is_add, tGATTS_HNDL_RANGE *p_hndl_range)
-{
- bta_gatts_co_update_handle_range(is_add, (tBTA_GATTS_HNDL_RANGE *)p_hndl_range);
+static void bta_gatts_nv_save_cback(bool is_add,
+ tGATTS_HNDL_RANGE* p_hndl_range) {
+ bta_gatts_co_update_handle_range(is_add,
+ (tBTA_GATTS_HNDL_RANGE*)p_hndl_range);
}
-
/*******************************************************************************
*
* Function bta_gatts_nv_srv_chg_cback
*
* Description NV save callback function.
*
- * Parameter is_add: true is to add a handle range; otherwise is to delete.
+ * Parameter is_add: true is to add a handle range; otherwise is to
+ *delete.
* Returns none.
*
******************************************************************************/
static bool bta_gatts_nv_srv_chg_cback(tGATTS_SRV_CHG_CMD cmd,
- tGATTS_SRV_CHG_REQ *p_req, tGATTS_SRV_CHG_RSP *p_rsp)
-{
- return bta_gatts_co_srv_chg((tBTA_GATTS_SRV_CHG_CMD) cmd,
- (tBTA_GATTS_SRV_CHG_REQ *) p_req,
- (tBTA_GATTS_SRV_CHG_RSP *) p_rsp);
+ tGATTS_SRV_CHG_REQ* p_req,
+ tGATTS_SRV_CHG_RSP* p_rsp) {
+ return bta_gatts_co_srv_chg((tBTA_GATTS_SRV_CHG_CMD)cmd,
+ (tBTA_GATTS_SRV_CHG_REQ*)p_req,
+ (tBTA_GATTS_SRV_CHG_RSP*)p_rsp);
}
-
/*******************************************************************************
*
* Function bta_gatts_enable
@@ -111,35 +104,29 @@
* Returns none.
*
******************************************************************************/
-void bta_gatts_enable(tBTA_GATTS_CB *p_cb)
-{
- uint8_t index=0;
- tBTA_GATTS_HNDL_RANGE handle_range;
+void bta_gatts_enable(tBTA_GATTS_CB* p_cb) {
+ uint8_t index = 0;
+ tBTA_GATTS_HNDL_RANGE handle_range;
- if (p_cb->enabled)
- {
- APPL_TRACE_DEBUG("GATTS already enabled.");
+ if (p_cb->enabled) {
+ APPL_TRACE_DEBUG("GATTS already enabled.");
+ } else {
+ memset(p_cb, 0, sizeof(tBTA_GATTS_CB));
+
+ p_cb->enabled = true;
+
+ while (bta_gatts_co_load_handle_range(index, &handle_range)) {
+ GATTS_AddHandleRange((tGATTS_HNDL_RANGE*)&handle_range);
+ memset(&handle_range, 0, sizeof(tGATTS_HNDL_RANGE));
+ index++;
}
- else
- {
- memset(p_cb, 0, sizeof(tBTA_GATTS_CB));
- p_cb->enabled = true;
+ APPL_TRACE_DEBUG("bta_gatts_enable: num of handle range added=%d", index);
- while ( bta_gatts_co_load_handle_range(index, &handle_range))
- {
- GATTS_AddHandleRange((tGATTS_HNDL_RANGE *)&handle_range);
- memset(&handle_range, 0, sizeof(tGATTS_HNDL_RANGE));
- index++;
- }
-
- APPL_TRACE_DEBUG("bta_gatts_enable: num of handle range added=%d", index);
-
- if (!GATTS_NVRegister(&bta_gatts_nv_cback))
- {
- APPL_TRACE_ERROR("BTA GATTS NV register failed.");
- }
+ if (!GATTS_NVRegister(&bta_gatts_nv_cback)) {
+ APPL_TRACE_ERROR("BTA GATTS NV register failed.");
}
+ }
}
/*******************************************************************************
@@ -151,25 +138,19 @@
* Returns none.
*
******************************************************************************/
-void bta_gatts_api_disable(tBTA_GATTS_CB *p_cb)
-{
- uint8_t i;
+void bta_gatts_api_disable(tBTA_GATTS_CB* p_cb) {
+ uint8_t i;
- if (p_cb->enabled)
- {
- for (i = 0; i < BTA_GATTS_MAX_APP_NUM; i ++)
- {
- if (p_cb->rcb[i].in_use)
- {
- GATT_Deregister(p_cb->rcb[i].gatt_if);
- }
- }
- memset(p_cb, 0, sizeof(tBTA_GATTS_CB));
+ if (p_cb->enabled) {
+ for (i = 0; i < BTA_GATTS_MAX_APP_NUM; i++) {
+ if (p_cb->rcb[i].in_use) {
+ GATT_Deregister(p_cb->rcb[i].gatt_if);
+ }
}
- else
- {
- APPL_TRACE_ERROR("GATTS not enabled");
- }
+ memset(p_cb, 0, sizeof(tBTA_GATTS_CB));
+ } else {
+ APPL_TRACE_ERROR("GATTS not enabled");
+ }
}
/*******************************************************************************
@@ -181,74 +162,65 @@
* Returns none.
*
******************************************************************************/
-void bta_gatts_register(tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA *p_msg)
-{
- tBTA_GATTS cb_data;
- tBTA_GATT_STATUS status = BTA_GATT_OK;
- uint8_t i, first_unuse = 0xff;
+void bta_gatts_register(tBTA_GATTS_CB* p_cb, tBTA_GATTS_DATA* p_msg) {
+ tBTA_GATTS cb_data;
+ tBTA_GATT_STATUS status = BTA_GATT_OK;
+ uint8_t i, first_unuse = 0xff;
- if (p_cb->enabled == false)
- {
- bta_gatts_enable(p_cb);
+ if (p_cb->enabled == false) {
+ bta_gatts_enable(p_cb);
+ }
+
+ for (i = 0; i < BTA_GATTS_MAX_APP_NUM; i++) {
+ if (p_cb->rcb[i].in_use) {
+ if (bta_gatts_uuid_compare(p_cb->rcb[i].app_uuid,
+ p_msg->api_reg.app_uuid)) {
+ APPL_TRACE_ERROR("application already registered.");
+ status = BTA_GATT_DUP_REG;
+ break;
+ }
+ }
+ }
+
+ if (status == BTA_GATT_OK) {
+ for (i = 0; i < BTA_GATTS_MAX_APP_NUM; i++) {
+ if (first_unuse == 0xff && !p_cb->rcb[i].in_use) {
+ first_unuse = i;
+ break;
+ }
}
- for (i = 0; i < BTA_GATTS_MAX_APP_NUM; i ++)
- {
- if (p_cb->rcb[i].in_use)
- {
- if (bta_gatts_uuid_compare(p_cb->rcb[i].app_uuid, p_msg->api_reg.app_uuid))
- {
- APPL_TRACE_ERROR("application already registered.");
- status = BTA_GATT_DUP_REG;
- break;
- }
- }
+ cb_data.reg_oper.server_if = BTA_GATTS_INVALID_IF;
+ memcpy(&cb_data.reg_oper.uuid, &p_msg->api_reg.app_uuid, sizeof(tBT_UUID));
+ if (first_unuse != 0xff) {
+ APPL_TRACE_ERROR("register application first_unuse rcb_idx = %d",
+ first_unuse);
+
+ p_cb->rcb[first_unuse].in_use = true;
+ p_cb->rcb[first_unuse].p_cback = p_msg->api_reg.p_cback;
+ memcpy(&p_cb->rcb[first_unuse].app_uuid, &p_msg->api_reg.app_uuid,
+ sizeof(tBT_UUID));
+ cb_data.reg_oper.server_if = p_cb->rcb[first_unuse].gatt_if =
+ GATT_Register(&p_msg->api_reg.app_uuid, &bta_gatts_cback);
+ if (!p_cb->rcb[first_unuse].gatt_if) {
+ status = BTA_GATT_NO_RESOURCES;
+ } else {
+ tBTA_GATTS_INT_START_IF* p_buf = (tBTA_GATTS_INT_START_IF*)osi_malloc(
+ sizeof(tBTA_GATTS_INT_START_IF));
+ p_buf->hdr.event = BTA_GATTS_INT_START_IF_EVT;
+ p_buf->server_if = p_cb->rcb[first_unuse].gatt_if;
+
+ bta_sys_sendmsg(p_buf);
+ }
+ } else {
+ status = BTA_GATT_NO_RESOURCES;
}
-
- if (status == BTA_GATT_OK)
- {
- for (i = 0; i < BTA_GATTS_MAX_APP_NUM; i ++)
- {
- if (first_unuse == 0xff && !p_cb->rcb[i].in_use)
- {
- first_unuse = i;
- break;
- }
- }
-
- cb_data.reg_oper.server_if = BTA_GATTS_INVALID_IF;
- memcpy(&cb_data.reg_oper.uuid, &p_msg->api_reg.app_uuid, sizeof(tBT_UUID));
- if (first_unuse != 0xff)
- {
- APPL_TRACE_ERROR("register application first_unuse rcb_idx = %d", first_unuse);
-
- p_cb->rcb[first_unuse].in_use = true;
- p_cb->rcb[first_unuse].p_cback = p_msg->api_reg.p_cback;
- memcpy(&p_cb->rcb[first_unuse].app_uuid, &p_msg->api_reg.app_uuid, sizeof(tBT_UUID));
- cb_data.reg_oper.server_if =
- p_cb->rcb[first_unuse].gatt_if =
- GATT_Register(&p_msg->api_reg.app_uuid, &bta_gatts_cback);
- if ( !p_cb->rcb[first_unuse].gatt_if) {
- status = BTA_GATT_NO_RESOURCES;
- } else {
- tBTA_GATTS_INT_START_IF *p_buf =
- (tBTA_GATTS_INT_START_IF *)osi_malloc(sizeof(tBTA_GATTS_INT_START_IF));
- p_buf->hdr.event = BTA_GATTS_INT_START_IF_EVT;
- p_buf->server_if = p_cb->rcb[first_unuse].gatt_if;
-
- bta_sys_sendmsg(p_buf);
- }
- } else {
- status = BTA_GATT_NO_RESOURCES;
- }
-
- }
- cb_data.reg_oper.status = status;
- if (p_msg->api_reg.p_cback)
- (*p_msg->api_reg.p_cback)(BTA_GATTS_REG_EVT, &cb_data);
+ }
+ cb_data.reg_oper.status = status;
+ if (p_msg->api_reg.p_cback)
+ (*p_msg->api_reg.p_cback)(BTA_GATTS_REG_EVT, &cb_data);
}
-
/*******************************************************************************
*
* Function bta_gatts_start_if
@@ -258,17 +230,14 @@
* Returns none.
*
******************************************************************************/
-void bta_gatts_start_if(UNUSED_ATTR tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA *p_msg)
-{
- if (bta_gatts_find_app_rcb_by_app_if(p_msg->int_start_if.server_if))
- {
- GATT_StartIf(p_msg->int_start_if.server_if);
- }
- else
- {
- APPL_TRACE_ERROR("Unable to start app.: Unknown interface =%d",
- p_msg->int_start_if.server_if );
- }
+void bta_gatts_start_if(UNUSED_ATTR tBTA_GATTS_CB* p_cb,
+ tBTA_GATTS_DATA* p_msg) {
+ if (bta_gatts_find_app_rcb_by_app_if(p_msg->int_start_if.server_if)) {
+ GATT_StartIf(p_msg->int_start_if.server_if);
+ } else {
+ APPL_TRACE_ERROR("Unable to start app.: Unknown interface =%d",
+ p_msg->int_start_if.server_if);
+ }
}
/*******************************************************************************
*
@@ -279,41 +248,36 @@
* Returns none.
*
******************************************************************************/
-void bta_gatts_deregister(tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA *p_msg)
-{
- tBTA_GATT_STATUS status = BTA_GATT_ERROR;
- tBTA_GATTS_CBACK *p_cback = NULL;
- uint8_t i;
- tBTA_GATTS cb_data;
+void bta_gatts_deregister(tBTA_GATTS_CB* p_cb, tBTA_GATTS_DATA* p_msg) {
+ tBTA_GATT_STATUS status = BTA_GATT_ERROR;
+ tBTA_GATTS_CBACK* p_cback = NULL;
+ uint8_t i;
+ tBTA_GATTS cb_data;
- cb_data.reg_oper.server_if = p_msg->api_dereg.server_if;
- cb_data.reg_oper.status = status;
+ cb_data.reg_oper.server_if = p_msg->api_dereg.server_if;
+ cb_data.reg_oper.status = status;
- for (i = 0; i < BTA_GATTS_MAX_APP_NUM; i ++)
- {
- if (p_cb->rcb[i].in_use && p_cb->rcb[i].gatt_if == p_msg->api_dereg.server_if)
- {
- p_cback = p_cb->rcb[i].p_cback;
- status = BTA_GATT_OK;
+ for (i = 0; i < BTA_GATTS_MAX_APP_NUM; i++) {
+ if (p_cb->rcb[i].in_use &&
+ p_cb->rcb[i].gatt_if == p_msg->api_dereg.server_if) {
+ p_cback = p_cb->rcb[i].p_cback;
+ status = BTA_GATT_OK;
- /* deregister the app */
- GATT_Deregister(p_cb->rcb[i].gatt_if);
+ /* deregister the app */
+ GATT_Deregister(p_cb->rcb[i].gatt_if);
- /* reset cb */
- memset(&p_cb->rcb[i], 0, sizeof(tBTA_GATTS_RCB));
- cb_data.reg_oper.status = status;
- break;
- }
+ /* reset cb */
+ memset(&p_cb->rcb[i], 0, sizeof(tBTA_GATTS_RCB));
+ cb_data.reg_oper.status = status;
+ break;
}
+ }
- if (p_cback)
- {
- (*p_cback)(BTA_GATTS_DEREG_EVT, &cb_data);
- }
- else
- {
- APPL_TRACE_ERROR("application not registered.");
- }
+ if (p_cback) {
+ (*p_cback)(BTA_GATTS_DEREG_EVT, &cb_data);
+ } else {
+ APPL_TRACE_ERROR("application not registered.");
+ }
}
/*******************************************************************************
@@ -325,29 +289,23 @@
* Returns none.
*
******************************************************************************/
-void bta_gatts_delete_service(tBTA_GATTS_SRVC_CB *p_srvc_cb, tBTA_GATTS_DATA * p_msg)
-{
- tBTA_GATTS_RCB *p_rcb = &bta_gatts_cb.rcb[p_srvc_cb->rcb_idx];
- tBTA_GATTS cb_data;
+void bta_gatts_delete_service(tBTA_GATTS_SRVC_CB* p_srvc_cb,
+ tBTA_GATTS_DATA* p_msg) {
+ tBTA_GATTS_RCB* p_rcb = &bta_gatts_cb.rcb[p_srvc_cb->rcb_idx];
+ tBTA_GATTS cb_data;
- cb_data.srvc_oper.server_if = p_rcb->gatt_if;
- // cb_data.srvc_oper.service_id = p_msg->api_add_incl_srvc.hdr.layer_specific;
+ cb_data.srvc_oper.server_if = p_rcb->gatt_if;
+ // cb_data.srvc_oper.service_id = p_msg->api_add_incl_srvc.hdr.layer_specific;
- if (GATTS_DeleteService(p_rcb->gatt_if,
- &p_srvc_cb->service_uuid,
- p_srvc_cb->service_id))
- {
- cb_data.srvc_oper.status = BTA_GATT_OK;
- memset(p_srvc_cb, 0, sizeof(tBTA_GATTS_SRVC_CB));
- }
- else
- {
- cb_data.srvc_oper.status = BTA_GATT_ERROR;
- }
+ if (GATTS_DeleteService(p_rcb->gatt_if, &p_srvc_cb->service_uuid,
+ p_srvc_cb->service_id)) {
+ cb_data.srvc_oper.status = BTA_GATT_OK;
+ memset(p_srvc_cb, 0, sizeof(tBTA_GATTS_SRVC_CB));
+ } else {
+ cb_data.srvc_oper.status = BTA_GATT_ERROR;
+ }
- if (p_rcb->p_cback)
- (*p_rcb->p_cback)(BTA_GATTS_DELELTE_EVT, &cb_data);
-
+ if (p_rcb->p_cback) (*p_rcb->p_cback)(BTA_GATTS_DELELTE_EVT, &cb_data);
}
/*******************************************************************************
@@ -359,21 +317,19 @@
* Returns none.
*
******************************************************************************/
-void bta_gatts_stop_service(tBTA_GATTS_SRVC_CB *p_srvc_cb,
- UNUSED_ATTR tBTA_GATTS_DATA *p_msg)
-{
- tBTA_GATTS_RCB *p_rcb = &bta_gatts_cb.rcb[p_srvc_cb->rcb_idx];
- tBTA_GATTS cb_data;
+void bta_gatts_stop_service(tBTA_GATTS_SRVC_CB* p_srvc_cb,
+ UNUSED_ATTR tBTA_GATTS_DATA* p_msg) {
+ tBTA_GATTS_RCB* p_rcb = &bta_gatts_cb.rcb[p_srvc_cb->rcb_idx];
+ tBTA_GATTS cb_data;
- GATTS_StopService(p_srvc_cb->service_id);
- cb_data.srvc_oper.server_if = p_rcb->gatt_if;
- cb_data.srvc_oper.service_id = p_srvc_cb->service_id;
- cb_data.srvc_oper.status = BTA_GATT_OK;
- APPL_TRACE_ERROR("bta_gatts_stop_service service_id= %d", p_srvc_cb->service_id);
+ GATTS_StopService(p_srvc_cb->service_id);
+ cb_data.srvc_oper.server_if = p_rcb->gatt_if;
+ cb_data.srvc_oper.service_id = p_srvc_cb->service_id;
+ cb_data.srvc_oper.status = BTA_GATT_OK;
+ APPL_TRACE_ERROR("bta_gatts_stop_service service_id= %d",
+ p_srvc_cb->service_id);
- if (p_rcb->p_cback)
- (*p_rcb->p_cback)(BTA_GATTS_STOP_EVT, &cb_data);
-
+ if (p_rcb->p_cback) (*p_rcb->p_cback)(BTA_GATTS_STOP_EVT, &cb_data);
}
/*******************************************************************************
*
@@ -384,16 +340,13 @@
* Returns none.
*
******************************************************************************/
-void bta_gatts_send_rsp (UNUSED_ATTR tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA * p_msg)
-{
- if (GATTS_SendRsp (p_msg->api_rsp.hdr.layer_specific,
- p_msg->api_rsp.trans_id,
- p_msg->api_rsp.status,
- (tGATTS_RSP *)p_msg->api_rsp.p_rsp) != GATT_SUCCESS)
- {
- APPL_TRACE_ERROR("Sending response failed");
- }
-
+void bta_gatts_send_rsp(UNUSED_ATTR tBTA_GATTS_CB* p_cb,
+ tBTA_GATTS_DATA* p_msg) {
+ if (GATTS_SendRsp(p_msg->api_rsp.hdr.layer_specific, p_msg->api_rsp.trans_id,
+ p_msg->api_rsp.status,
+ (tGATTS_RSP*)p_msg->api_rsp.p_rsp) != GATT_SUCCESS) {
+ APPL_TRACE_ERROR("Sending response failed");
+ }
}
/*******************************************************************************
*
@@ -404,67 +357,56 @@
* Returns none.
*
******************************************************************************/
-void bta_gatts_indicate_handle (tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA * p_msg)
-{
- tBTA_GATTS_SRVC_CB *p_srvc_cb;
- tBTA_GATTS_RCB *p_rcb = NULL;
- tBTA_GATT_STATUS status = BTA_GATT_ILLEGAL_PARAMETER;
- tGATT_IF gatt_if;
- BD_ADDR remote_bda;
- tBTA_TRANSPORT transport;
- tBTA_GATTS cb_data;
+void bta_gatts_indicate_handle(tBTA_GATTS_CB* p_cb, tBTA_GATTS_DATA* p_msg) {
+ tBTA_GATTS_SRVC_CB* p_srvc_cb;
+ tBTA_GATTS_RCB* p_rcb = NULL;
+ tBTA_GATT_STATUS status = BTA_GATT_ILLEGAL_PARAMETER;
+ tGATT_IF gatt_if;
+ BD_ADDR remote_bda;
+ tBTA_TRANSPORT transport;
+ tBTA_GATTS cb_data;
- p_srvc_cb = bta_gatts_find_srvc_cb_by_attr_id (p_cb, p_msg->api_indicate.attr_id);
+ p_srvc_cb =
+ bta_gatts_find_srvc_cb_by_attr_id(p_cb, p_msg->api_indicate.attr_id);
- if (p_srvc_cb )
- {
- if (GATT_GetConnectionInfor(p_msg->api_indicate.hdr.layer_specific,
- &gatt_if, remote_bda, &transport))
- {
- p_rcb = bta_gatts_find_app_rcb_by_app_if(gatt_if);
+ if (p_srvc_cb) {
+ if (GATT_GetConnectionInfor(p_msg->api_indicate.hdr.layer_specific,
+ &gatt_if, remote_bda, &transport)) {
+ p_rcb = bta_gatts_find_app_rcb_by_app_if(gatt_if);
- if (p_msg->api_indicate.need_confirm)
+ if (p_msg->api_indicate.need_confirm)
- status = GATTS_HandleValueIndication (p_msg->api_indicate.hdr.layer_specific,
- p_msg->api_indicate.attr_id,
- p_msg->api_indicate.len,
- p_msg->api_indicate.value);
- else
- status = GATTS_HandleValueNotification (p_msg->api_indicate.hdr.layer_specific,
- p_msg->api_indicate.attr_id,
- p_msg->api_indicate.len,
- p_msg->api_indicate.value);
+ status = GATTS_HandleValueIndication(
+ p_msg->api_indicate.hdr.layer_specific, p_msg->api_indicate.attr_id,
+ p_msg->api_indicate.len, p_msg->api_indicate.value);
+ else
+ status = GATTS_HandleValueNotification(
+ p_msg->api_indicate.hdr.layer_specific, p_msg->api_indicate.attr_id,
+ p_msg->api_indicate.len, p_msg->api_indicate.value);
- /* if over BR_EDR, inform PM for mode change */
- if (transport == BTA_TRANSPORT_BR_EDR)
- {
- bta_sys_busy(BTA_ID_GATTS, BTA_ALL_APP_ID, remote_bda);
- bta_sys_idle(BTA_ID_GATTS, BTA_ALL_APP_ID, remote_bda);
- }
- }
- else
- {
- APPL_TRACE_ERROR("Unknown connection ID: %d fail sending notification",
- p_msg->api_indicate.hdr.layer_specific);
- }
-
- if ((status != GATT_SUCCESS || !p_msg->api_indicate.need_confirm) &&
- p_rcb && p_cb->rcb[p_srvc_cb->rcb_idx].p_cback)
- {
- cb_data.req_data.status = status;
- cb_data.req_data.conn_id = p_msg->api_indicate.hdr.layer_specific;
-
- (*p_rcb->p_cback)(BTA_GATTS_CONF_EVT, &cb_data);
- }
+ /* if over BR_EDR, inform PM for mode change */
+ if (transport == BTA_TRANSPORT_BR_EDR) {
+ bta_sys_busy(BTA_ID_GATTS, BTA_ALL_APP_ID, remote_bda);
+ bta_sys_idle(BTA_ID_GATTS, BTA_ALL_APP_ID, remote_bda);
+ }
+ } else {
+ APPL_TRACE_ERROR("Unknown connection ID: %d fail sending notification",
+ p_msg->api_indicate.hdr.layer_specific);
}
- else
- {
- APPL_TRACE_ERROR("Not an registered servce attribute ID: 0x%04x",
- p_msg->api_indicate.attr_id);
+
+ if ((status != GATT_SUCCESS || !p_msg->api_indicate.need_confirm) &&
+ p_rcb && p_cb->rcb[p_srvc_cb->rcb_idx].p_cback) {
+ cb_data.req_data.status = status;
+ cb_data.req_data.conn_id = p_msg->api_indicate.hdr.layer_specific;
+
+ (*p_rcb->p_cback)(BTA_GATTS_CONF_EVT, &cb_data);
}
+ } else {
+ APPL_TRACE_ERROR("Not an registered servce attribute ID: 0x%04x",
+ p_msg->api_indicate.attr_id);
+ }
}
-
/*******************************************************************************
*
* Function bta_gatts_open
@@ -474,35 +416,30 @@
* Returns none.
*
******************************************************************************/
-void bta_gatts_open (UNUSED_ATTR tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA * p_msg)
-{
- tBTA_GATTS_RCB *p_rcb=NULL;
- tBTA_GATT_STATUS status= BTA_GATT_ERROR;
- uint16_t conn_id;
+void bta_gatts_open(UNUSED_ATTR tBTA_GATTS_CB* p_cb, tBTA_GATTS_DATA* p_msg) {
+ tBTA_GATTS_RCB* p_rcb = NULL;
+ tBTA_GATT_STATUS status = BTA_GATT_ERROR;
+ uint16_t conn_id;
- if ((p_rcb = bta_gatts_find_app_rcb_by_app_if(p_msg->api_open.server_if)) != NULL)
- {
- /* should always get the connection ID */
- if (GATT_Connect(p_rcb->gatt_if, p_msg->api_open.remote_bda,
- p_msg->api_open.is_direct, p_msg->api_open.transport, false))
- {
- status = BTA_GATT_OK;
+ if ((p_rcb = bta_gatts_find_app_rcb_by_app_if(p_msg->api_open.server_if)) !=
+ NULL) {
+ /* should always get the connection ID */
+ if (GATT_Connect(p_rcb->gatt_if, p_msg->api_open.remote_bda,
+ p_msg->api_open.is_direct, p_msg->api_open.transport,
+ false)) {
+ status = BTA_GATT_OK;
- if (GATT_GetConnIdIfConnected(p_rcb->gatt_if, p_msg->api_open.remote_bda,
- &conn_id, p_msg->api_open.transport))
- {
- status = BTA_GATT_ALREADY_OPEN;
- }
- }
+ if (GATT_GetConnIdIfConnected(p_rcb->gatt_if, p_msg->api_open.remote_bda,
+ &conn_id, p_msg->api_open.transport)) {
+ status = BTA_GATT_ALREADY_OPEN;
+ }
}
- else
- {
- APPL_TRACE_ERROR("Inavlide server_if=%d", p_msg->api_open.server_if);
- }
+ } else {
+ APPL_TRACE_ERROR("Inavlide server_if=%d", p_msg->api_open.server_if);
+ }
- if (p_rcb && p_rcb->p_cback)
- (*p_rcb->p_cback)(BTA_GATTS_OPEN_EVT, (tBTA_GATTS *)&status);
-
+ if (p_rcb && p_rcb->p_cback)
+ (*p_rcb->p_cback)(BTA_GATTS_OPEN_EVT, (tBTA_GATTS*)&status);
}
/*******************************************************************************
*
@@ -513,30 +450,25 @@
* Returns none.
*
******************************************************************************/
-void bta_gatts_cancel_open (UNUSED_ATTR tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA * p_msg)
-{
- tBTA_GATTS_RCB *p_rcb;
- tBTA_GATT_STATUS status= BTA_GATT_ERROR;
+void bta_gatts_cancel_open(UNUSED_ATTR tBTA_GATTS_CB* p_cb,
+ tBTA_GATTS_DATA* p_msg) {
+ tBTA_GATTS_RCB* p_rcb;
+ tBTA_GATT_STATUS status = BTA_GATT_ERROR;
- if ((p_rcb = bta_gatts_find_app_rcb_by_app_if(p_msg->api_cancel_open.server_if)) != NULL)
- {
- if (!GATT_CancelConnect(p_rcb->gatt_if, p_msg->api_cancel_open.remote_bda,
- p_msg->api_cancel_open.is_direct))
- {
- APPL_TRACE_ERROR("bta_gatts_cancel_open failed for open request");
- }
- else
- {
- status= BTA_GATT_OK;
- }
+ if ((p_rcb = bta_gatts_find_app_rcb_by_app_if(
+ p_msg->api_cancel_open.server_if)) != NULL) {
+ if (!GATT_CancelConnect(p_rcb->gatt_if, p_msg->api_cancel_open.remote_bda,
+ p_msg->api_cancel_open.is_direct)) {
+ APPL_TRACE_ERROR("bta_gatts_cancel_open failed for open request");
+ } else {
+ status = BTA_GATT_OK;
}
- else
- {
- APPL_TRACE_ERROR("Inavlide server_if=%d", p_msg->api_cancel_open.server_if);
- }
+ } else {
+ APPL_TRACE_ERROR("Inavlide server_if=%d", p_msg->api_cancel_open.server_if);
+ }
- if (p_rcb && p_rcb->p_cback)
- (*p_rcb->p_cback)(BTA_GATTS_CANCEL_OPEN_EVT, (tBTA_GATTS *)&status);
+ if (p_rcb && p_rcb->p_cback)
+ (*p_rcb->p_cback)(BTA_GATTS_CANCEL_OPEN_EVT, (tBTA_GATTS*)&status);
}
/*******************************************************************************
*
@@ -547,40 +479,33 @@
* Returns none.
*
******************************************************************************/
-void bta_gatts_close (UNUSED_ATTR tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA * p_msg)
-{
- tBTA_GATTS_RCB *p_rcb;
- tBTA_GATT_STATUS status= BTA_GATT_ERROR;
- tGATT_IF gatt_if;
- BD_ADDR remote_bda;
- tBTA_GATT_TRANSPORT transport;
+void bta_gatts_close(UNUSED_ATTR tBTA_GATTS_CB* p_cb, tBTA_GATTS_DATA* p_msg) {
+ tBTA_GATTS_RCB* p_rcb;
+ tBTA_GATT_STATUS status = BTA_GATT_ERROR;
+ tGATT_IF gatt_if;
+ BD_ADDR remote_bda;
+ tBTA_GATT_TRANSPORT transport;
- if (GATT_GetConnectionInfor(p_msg->hdr.layer_specific, &gatt_if, remote_bda, &transport))
- {
- if (GATT_Disconnect(p_msg->hdr.layer_specific) != GATT_SUCCESS)
- {
- APPL_TRACE_ERROR("bta_gatts_close fail conn_id=%d", p_msg->hdr.layer_specific);
- }
- else
- {
- status= BTA_GATT_OK;
- }
-
- p_rcb = bta_gatts_find_app_rcb_by_app_if(gatt_if);
-
- if (p_rcb && p_rcb->p_cback)
- {
- if (transport == BTA_TRANSPORT_BR_EDR)
- bta_sys_conn_close( BTA_ID_GATTS ,BTA_ALL_APP_ID, remote_bda);
-
- (*p_rcb->p_cback)(BTA_GATTS_CLOSE_EVT, (tBTA_GATTS *)&status);
- }
- }
- else
- {
- APPL_TRACE_ERROR("Unknown connection ID: %d", p_msg->hdr.layer_specific);
+ if (GATT_GetConnectionInfor(p_msg->hdr.layer_specific, &gatt_if, remote_bda,
+ &transport)) {
+ if (GATT_Disconnect(p_msg->hdr.layer_specific) != GATT_SUCCESS) {
+ APPL_TRACE_ERROR("bta_gatts_close fail conn_id=%d",
+ p_msg->hdr.layer_specific);
+ } else {
+ status = BTA_GATT_OK;
}
+ p_rcb = bta_gatts_find_app_rcb_by_app_if(gatt_if);
+
+ if (p_rcb && p_rcb->p_cback) {
+ if (transport == BTA_TRANSPORT_BR_EDR)
+ bta_sys_conn_close(BTA_ID_GATTS, BTA_ALL_APP_ID, remote_bda);
+
+ (*p_rcb->p_cback)(BTA_GATTS_CLOSE_EVT, (tBTA_GATTS*)&status);
+ }
+ } else {
+ APPL_TRACE_ERROR("Unknown connection ID: %d", p_msg->hdr.layer_specific);
+ }
}
/*******************************************************************************
@@ -592,48 +517,42 @@
* Returns none.
*
******************************************************************************/
-static void bta_gatts_send_request_cback (uint16_t conn_id,
- uint32_t trans_id,
- tGATTS_REQ_TYPE req_type, tGATTS_DATA *p_data)
-{
- tBTA_GATTS cb_data;
- tBTA_GATTS_RCB *p_rcb;
- tGATT_IF gatt_if;
- tBTA_GATT_TRANSPORT transport;
+static void bta_gatts_send_request_cback(uint16_t conn_id, uint32_t trans_id,
+ tGATTS_REQ_TYPE req_type,
+ tGATTS_DATA* p_data) {
+ tBTA_GATTS cb_data;
+ tBTA_GATTS_RCB* p_rcb;
+ tGATT_IF gatt_if;
+ tBTA_GATT_TRANSPORT transport;
- memset(&cb_data, 0 , sizeof(tBTA_GATTS));
+ memset(&cb_data, 0, sizeof(tBTA_GATTS));
- if (GATT_GetConnectionInfor(conn_id, &gatt_if, cb_data.req_data.remote_bda, &transport))
- {
- p_rcb = bta_gatts_find_app_rcb_by_app_if(gatt_if);
+ if (GATT_GetConnectionInfor(conn_id, &gatt_if, cb_data.req_data.remote_bda,
+ &transport)) {
+ p_rcb = bta_gatts_find_app_rcb_by_app_if(gatt_if);
- APPL_TRACE_DEBUG("%s: conn_id=%d trans_id=%d req_type=%d",
- __func__, conn_id, trans_id, req_type);
+ APPL_TRACE_DEBUG("%s: conn_id=%d trans_id=%d req_type=%d", __func__,
+ conn_id, trans_id, req_type);
- if (p_rcb && p_rcb->p_cback)
- {
- /* if over BR_EDR, inform PM for mode change */
- if (transport == BTA_TRANSPORT_BR_EDR)
- {
- bta_sys_busy(BTA_ID_GATTS, BTA_ALL_APP_ID, cb_data.req_data.remote_bda);
- bta_sys_idle(BTA_ID_GATTS, BTA_ALL_APP_ID, cb_data.req_data.remote_bda);
- }
+ if (p_rcb && p_rcb->p_cback) {
+ /* if over BR_EDR, inform PM for mode change */
+ if (transport == BTA_TRANSPORT_BR_EDR) {
+ bta_sys_busy(BTA_ID_GATTS, BTA_ALL_APP_ID, cb_data.req_data.remote_bda);
+ bta_sys_idle(BTA_ID_GATTS, BTA_ALL_APP_ID, cb_data.req_data.remote_bda);
+ }
- cb_data.req_data.conn_id = conn_id;
- cb_data.req_data.trans_id = trans_id;
- cb_data.req_data.p_data = (tBTA_GATTS_REQ_DATA *)p_data;
+ cb_data.req_data.conn_id = conn_id;
+ cb_data.req_data.trans_id = trans_id;
+ cb_data.req_data.p_data = (tBTA_GATTS_REQ_DATA*)p_data;
- (*p_rcb->p_cback)(req_type, &cb_data);
- }
- else
- {
- APPL_TRACE_ERROR("connection request on gatt_if[%d] is not interested", gatt_if);
- }
+ (*p_rcb->p_cback)(req_type, &cb_data);
+ } else {
+ APPL_TRACE_ERROR("connection request on gatt_if[%d] is not interested",
+ gatt_if);
}
- else
- {
- APPL_TRACE_ERROR("request received on unknown connectino ID: %d", conn_id);
- }
+ } else {
+ APPL_TRACE_ERROR("request received on unknown connectino ID: %d", conn_id);
+ }
}
/*******************************************************************************
@@ -645,50 +564,47 @@
* Returns none.
*
******************************************************************************/
-static void bta_gatts_conn_cback (tGATT_IF gatt_if, BD_ADDR bda, uint16_t conn_id,
- bool connected, tGATT_DISCONN_REASON reason,
- tGATT_TRANSPORT transport)
-{
- tBTA_GATTS cb_data;
- uint8_t evt = connected ? BTA_GATTS_CONNECT_EVT: BTA_GATTS_DISCONNECT_EVT;
- tBTA_GATTS_RCB *p_reg;
+static void bta_gatts_conn_cback(tGATT_IF gatt_if, BD_ADDR bda,
+ uint16_t conn_id, bool connected,
+ tGATT_DISCONN_REASON reason,
+ tGATT_TRANSPORT transport) {
+ tBTA_GATTS cb_data;
+ uint8_t evt = connected ? BTA_GATTS_CONNECT_EVT : BTA_GATTS_DISCONNECT_EVT;
+ tBTA_GATTS_RCB* p_reg;
- APPL_TRACE_DEBUG ("bta_gatts_conn_cback gatt_if=%d conn_id=%d connected=%d reason = 0x%04d",
- gatt_if, conn_id, connected, reason);
- APPL_TRACE_DEBUG("bta_gatts_conn_cback bda :%02x-%02x-%02x-%02x-%02x-%02x ",
- bda[0], bda[1], bda[2], bda[3], bda[4], bda[5]);
+ APPL_TRACE_DEBUG(
+ "bta_gatts_conn_cback gatt_if=%d conn_id=%d connected=%d reason = 0x%04d",
+ gatt_if, conn_id, connected, reason);
+ APPL_TRACE_DEBUG("bta_gatts_conn_cback bda :%02x-%02x-%02x-%02x-%02x-%02x ",
+ bda[0], bda[1], bda[2], bda[3], bda[4], bda[5]);
- bt_bdaddr_t bdaddr;
- bdcpy(bdaddr.address, bda);
- if (connected)
- btif_debug_conn_state(bdaddr, BTIF_DEBUG_CONNECTED, GATT_CONN_UNKNOWN);
- else
- btif_debug_conn_state(bdaddr, BTIF_DEBUG_DISCONNECTED, reason);
+ bt_bdaddr_t bdaddr;
+ bdcpy(bdaddr.address, bda);
+ if (connected)
+ btif_debug_conn_state(bdaddr, BTIF_DEBUG_CONNECTED, GATT_CONN_UNKNOWN);
+ else
+ btif_debug_conn_state(bdaddr, BTIF_DEBUG_DISCONNECTED, reason);
- p_reg = bta_gatts_find_app_rcb_by_app_if(gatt_if);
+ p_reg = bta_gatts_find_app_rcb_by_app_if(gatt_if);
- if (p_reg && p_reg->p_cback)
- {
- /* there is no RM for GATT */
- if (transport == BTA_TRANSPORT_BR_EDR)
- {
- if (connected)
- bta_sys_conn_open(BTA_ID_GATTS, BTA_ALL_APP_ID, bda);
- else
- bta_sys_conn_close( BTA_ID_GATTS ,BTA_ALL_APP_ID, bda);
- }
-
- cb_data.conn.conn_id = conn_id;
- cb_data.conn.server_if = gatt_if;
- cb_data.conn.reason = reason;
- cb_data.conn.transport = transport;
- memcpy(cb_data.conn.remote_bda, bda, BD_ADDR_LEN);
- (*p_reg->p_cback)(evt, &cb_data);
+ if (p_reg && p_reg->p_cback) {
+ /* there is no RM for GATT */
+ if (transport == BTA_TRANSPORT_BR_EDR) {
+ if (connected)
+ bta_sys_conn_open(BTA_ID_GATTS, BTA_ALL_APP_ID, bda);
+ else
+ bta_sys_conn_close(BTA_ID_GATTS, BTA_ALL_APP_ID, bda);
}
- else
- {
- APPL_TRACE_ERROR("bta_gatts_conn_cback server_if=%d not found",gatt_if);
- }
+
+ cb_data.conn.conn_id = conn_id;
+ cb_data.conn.server_if = gatt_if;
+ cb_data.conn.reason = reason;
+ cb_data.conn.transport = transport;
+ memcpy(cb_data.conn.remote_bda, bda, BD_ADDR_LEN);
+ (*p_reg->p_cback)(evt, &cb_data);
+ } else {
+ APPL_TRACE_ERROR("bta_gatts_conn_cback server_if=%d not found", gatt_if);
+ }
}
/*******************************************************************************
@@ -700,24 +616,22 @@
* Returns none.
*
******************************************************************************/
-static void bta_gatts_cong_cback (uint16_t conn_id, bool congested)
-{
- tBTA_GATTS_RCB *p_rcb;
- tGATT_IF gatt_if;
- tBTA_GATT_TRANSPORT transport;
- tBTA_GATTS cb_data;
+static void bta_gatts_cong_cback(uint16_t conn_id, bool congested) {
+ tBTA_GATTS_RCB* p_rcb;
+ tGATT_IF gatt_if;
+ tBTA_GATT_TRANSPORT transport;
+ tBTA_GATTS cb_data;
- if (GATT_GetConnectionInfor(conn_id, &gatt_if, cb_data.req_data.remote_bda, &transport))
- {
- p_rcb = bta_gatts_find_app_rcb_by_app_if(gatt_if);
+ if (GATT_GetConnectionInfor(conn_id, &gatt_if, cb_data.req_data.remote_bda,
+ &transport)) {
+ p_rcb = bta_gatts_find_app_rcb_by_app_if(gatt_if);
- if (p_rcb && p_rcb->p_cback)
- {
- cb_data.congest.conn_id = conn_id;
- cb_data.congest.congested = congested;
+ if (p_rcb && p_rcb->p_cback) {
+ cb_data.congest.conn_id = conn_id;
+ cb_data.congest.congested = congested;
- (*p_rcb->p_cback)(BTA_GATTS_CONGEST_EVT, &cb_data);
- }
+ (*p_rcb->p_cback)(BTA_GATTS_CONGEST_EVT, &cb_data);
}
+ }
}
#endif /* BTA_GATT_INCLUDED */
diff --git a/bta/gatt/bta_gatts_api.cc b/bta/gatt/bta_gatts_api.cc
index 4321edb..e6f9d04 100644
--- a/bta/gatt/bta_gatts_api.cc
+++ b/bta/gatt/bta_gatts_api.cc
@@ -29,21 +29,18 @@
#include <string.h>
#include "bt_common.h"
-#include "bta_sys.h"
#include "bta_gatt_api.h"
#include "bta_gatts_int.h"
+#include "bta_sys.h"
-void btif_to_bta_uuid(tBT_UUID *p_dest, const bt_uuid_t *p_src);
+void btif_to_bta_uuid(tBT_UUID* p_dest, const bt_uuid_t* p_src);
/*****************************************************************************
* Constants
****************************************************************************/
-static const tBTA_SYS_REG bta_gatts_reg =
-{
- bta_gatts_hdl_event,
- BTA_GATTS_Disable
-};
+static const tBTA_SYS_REG bta_gatts_reg = {bta_gatts_hdl_event,
+ BTA_GATTS_Disable};
/*******************************************************************************
*
@@ -56,18 +53,16 @@
* Returns None
*
******************************************************************************/
-void BTA_GATTS_Disable(void)
-{
- if (bta_sys_is_register(BTA_ID_GATTS) == false)
- {
- APPL_TRACE_WARNING("GATTS Module not enabled/already disabled");
- return;
- }
+void BTA_GATTS_Disable(void) {
+ if (bta_sys_is_register(BTA_ID_GATTS) == false) {
+ APPL_TRACE_WARNING("GATTS Module not enabled/already disabled");
+ return;
+ }
- BT_HDR *p_buf = (BT_HDR *)osi_malloc(sizeof(BT_HDR));
- p_buf->event = BTA_GATTS_API_DISABLE_EVT;
- bta_sys_sendmsg(p_buf);
- bta_sys_deregister(BTA_ID_GATTS);
+ BT_HDR* p_buf = (BT_HDR*)osi_malloc(sizeof(BT_HDR));
+ p_buf->event = BTA_GATTS_API_DISABLE_EVT;
+ bta_sys_sendmsg(p_buf);
+ bta_sys_deregister(BTA_ID_GATTS);
}
/*******************************************************************************
@@ -83,25 +78,22 @@
* Returns None
*
******************************************************************************/
-void BTA_GATTS_AppRegister(tBT_UUID *p_app_uuid, tBTA_GATTS_CBACK *p_cback)
-{
- tBTA_GATTS_API_REG *p_buf =
- (tBTA_GATTS_API_REG *)osi_malloc(sizeof(tBTA_GATTS_API_REG));
+void BTA_GATTS_AppRegister(tBT_UUID* p_app_uuid, tBTA_GATTS_CBACK* p_cback) {
+ tBTA_GATTS_API_REG* p_buf =
+ (tBTA_GATTS_API_REG*)osi_malloc(sizeof(tBTA_GATTS_API_REG));
- /* register with BTA system manager */
- if (bta_sys_is_register(BTA_ID_GATTS) == false)
- bta_sys_register(BTA_ID_GATTS, &bta_gatts_reg);
+ /* register with BTA system manager */
+ if (bta_sys_is_register(BTA_ID_GATTS) == false)
+ bta_sys_register(BTA_ID_GATTS, &bta_gatts_reg);
- p_buf->hdr.event = BTA_GATTS_API_REG_EVT;
- if (p_app_uuid != NULL)
- memcpy(&p_buf->app_uuid, p_app_uuid, sizeof(tBT_UUID));
- p_buf->p_cback = p_cback;
+ p_buf->hdr.event = BTA_GATTS_API_REG_EVT;
+ if (p_app_uuid != NULL)
+ memcpy(&p_buf->app_uuid, p_app_uuid, sizeof(tBT_UUID));
+ p_buf->p_cback = p_cback;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
-
-
/*******************************************************************************
*
* Function BTA_GATTS_AppDeregister
@@ -113,15 +105,14 @@
* Returns void
*
******************************************************************************/
-void BTA_GATTS_AppDeregister(tBTA_GATTS_IF server_if)
-{
- tBTA_GATTS_API_DEREG *p_buf =
- (tBTA_GATTS_API_DEREG *)osi_malloc(sizeof(tBTA_GATTS_API_DEREG));
+void BTA_GATTS_AppDeregister(tBTA_GATTS_IF server_if) {
+ tBTA_GATTS_API_DEREG* p_buf =
+ (tBTA_GATTS_API_DEREG*)osi_malloc(sizeof(tBTA_GATTS_API_DEREG));
- p_buf->hdr.event = BTA_GATTS_API_DEREG_EVT;
- p_buf->server_if = server_if;
+ p_buf->hdr.event = BTA_GATTS_API_DEREG_EVT;
+ p_buf->server_if = server_if;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -139,56 +130,57 @@
* service cannot be added.
*
******************************************************************************/
-extern uint16_t BTA_GATTS_AddService(tBTA_GATTS_IF server_if, vector<btgatt_db_element_t> &service)
-{
- uint8_t rcb_idx = bta_gatts_find_app_rcb_idx_by_app_if(&bta_gatts_cb, server_if);
+extern uint16_t BTA_GATTS_AddService(tBTA_GATTS_IF server_if,
+ vector<btgatt_db_element_t>& service) {
+ uint8_t rcb_idx =
+ bta_gatts_find_app_rcb_idx_by_app_if(&bta_gatts_cb, server_if);
- APPL_TRACE_ERROR("%s: rcb_idx = %d", __func__, rcb_idx);
+ APPL_TRACE_ERROR("%s: rcb_idx = %d", __func__, rcb_idx);
- if (rcb_idx == BTA_GATTS_INVALID_APP)
- return BTA_GATT_ERROR;
+ if (rcb_idx == BTA_GATTS_INVALID_APP) return BTA_GATT_ERROR;
- uint8_t srvc_idx = bta_gatts_alloc_srvc_cb(&bta_gatts_cb, rcb_idx);
- if (srvc_idx == BTA_GATTS_INVALID_APP)
- return BTA_GATT_ERROR;
+ uint8_t srvc_idx = bta_gatts_alloc_srvc_cb(&bta_gatts_cb, rcb_idx);
+ if (srvc_idx == BTA_GATTS_INVALID_APP) return BTA_GATT_ERROR;
- uint16_t status = GATTS_AddService(server_if, service.data(), service.size());
+ uint16_t status = GATTS_AddService(server_if, service.data(), service.size());
- if (status == GATT_SERVICE_STARTED) {
- btif_to_bta_uuid(&bta_gatts_cb.srvc_cb[srvc_idx].service_uuid, &service[0].uuid);
+ if (status == GATT_SERVICE_STARTED) {
+ btif_to_bta_uuid(&bta_gatts_cb.srvc_cb[srvc_idx].service_uuid,
+ &service[0].uuid);
- // service_id is equal to service start handle
- bta_gatts_cb.srvc_cb[srvc_idx].service_id = service[0].attribute_handle;
- bta_gatts_cb.srvc_cb[srvc_idx].idx = srvc_idx;
+ // service_id is equal to service start handle
+ bta_gatts_cb.srvc_cb[srvc_idx].service_id = service[0].attribute_handle;
+ bta_gatts_cb.srvc_cb[srvc_idx].idx = srvc_idx;
- return BTA_GATT_OK;
- }else {
- memset(&bta_gatts_cb.srvc_cb[srvc_idx], 0, sizeof(tBTA_GATTS_SRVC_CB));
- APPL_TRACE_ERROR("%s: service creation failed.", __func__);
- return BTA_GATT_ERROR;
- }
+ return BTA_GATT_OK;
+ } else {
+ memset(&bta_gatts_cb.srvc_cb[srvc_idx], 0, sizeof(tBTA_GATTS_SRVC_CB));
+ APPL_TRACE_ERROR("%s: service creation failed.", __func__);
+ return BTA_GATT_ERROR;
+ }
}
/*******************************************************************************
*
* Function BTA_GATTS_DeleteService
*
- * Description This function is called to delete a service. When this is done,
- * a callback event BTA_GATTS_DELETE_EVT is report with the status.
+ * Description This function is called to delete a service. When this is
+ *done,
+ * a callback event BTA_GATTS_DELETE_EVT is report with the
+ *status.
*
* Parameters service_id: service_id to be deleted.
*
* Returns returns none.
*
******************************************************************************/
-void BTA_GATTS_DeleteService(uint16_t service_id)
-{
- BT_HDR *p_buf = (BT_HDR *)osi_malloc(sizeof(BT_HDR));
+void BTA_GATTS_DeleteService(uint16_t service_id) {
+ BT_HDR* p_buf = (BT_HDR*)osi_malloc(sizeof(BT_HDR));
- p_buf->event = BTA_GATTS_API_DEL_SRVC_EVT;
- p_buf->layer_specific = service_id;
+ p_buf->event = BTA_GATTS_API_DEL_SRVC_EVT;
+ p_buf->layer_specific = service_id;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -202,46 +194,47 @@
* Returns None
*
******************************************************************************/
-void BTA_GATTS_StopService(uint16_t service_id)
-{
- BT_HDR *p_buf = (BT_HDR *)osi_malloc(sizeof(BT_HDR));
+void BTA_GATTS_StopService(uint16_t service_id) {
+ BT_HDR* p_buf = (BT_HDR*)osi_malloc(sizeof(BT_HDR));
- p_buf->event = BTA_GATTS_API_STOP_SRVC_EVT;
- p_buf->layer_specific = service_id;
+ p_buf->event = BTA_GATTS_API_STOP_SRVC_EVT;
+ p_buf->layer_specific = service_id;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
*
* Function BTA_GATTS_HandleValueIndication
*
- * Description This function is called to read a characteristics descriptor.
+ * Description This function is called to read a characteristics
+ *descriptor.
*
* Parameters bda - remote device bd address to indicate.
* attr_id - attribute ID to indicate.
* value - data to indicate.
- * need_confirm - if this indication expects a confirmation or not.
+ * need_confirm - if this indication expects a confirmation or
+ *not.
*
* Returns None
*
******************************************************************************/
-void BTA_GATTS_HandleValueIndication (uint16_t conn_id, uint16_t attr_id,
- std::vector<uint8_t> value, bool need_confirm)
-{
- tBTA_GATTS_API_INDICATION *p_buf =
- (tBTA_GATTS_API_INDICATION *)osi_calloc(sizeof(tBTA_GATTS_API_INDICATION));
+void BTA_GATTS_HandleValueIndication(uint16_t conn_id, uint16_t attr_id,
+ std::vector<uint8_t> value,
+ bool need_confirm) {
+ tBTA_GATTS_API_INDICATION* p_buf =
+ (tBTA_GATTS_API_INDICATION*)osi_calloc(sizeof(tBTA_GATTS_API_INDICATION));
- p_buf->hdr.event = BTA_GATTS_API_INDICATION_EVT;
- p_buf->hdr.layer_specific = conn_id;
- p_buf->attr_id = attr_id;
- p_buf->need_confirm = need_confirm;
- if (value.size() > 0) {
- p_buf->len = value.size();
- memcpy(p_buf->value, value.data(), value.size());
- }
+ p_buf->hdr.event = BTA_GATTS_API_INDICATION_EVT;
+ p_buf->hdr.layer_specific = conn_id;
+ p_buf->attr_id = attr_id;
+ p_buf->need_confirm = need_confirm;
+ if (value.size() > 0) {
+ p_buf->len = value.size();
+ memcpy(p_buf->value, value.data(), value.size());
+ }
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -258,59 +251,60 @@
* Returns None
*
******************************************************************************/
-void BTA_GATTS_SendRsp (uint16_t conn_id, uint32_t trans_id,
- tBTA_GATT_STATUS status, tBTA_GATTS_RSP *p_msg)
-{
- const size_t len = sizeof(tBTA_GATTS_API_RSP) + sizeof(tBTA_GATTS_RSP);
- tBTA_GATTS_API_RSP *p_buf = (tBTA_GATTS_API_RSP *)osi_calloc(len);
+void BTA_GATTS_SendRsp(uint16_t conn_id, uint32_t trans_id,
+ tBTA_GATT_STATUS status, tBTA_GATTS_RSP* p_msg) {
+ const size_t len = sizeof(tBTA_GATTS_API_RSP) + sizeof(tBTA_GATTS_RSP);
+ tBTA_GATTS_API_RSP* p_buf = (tBTA_GATTS_API_RSP*)osi_calloc(len);
- p_buf->hdr.event = BTA_GATTS_API_RSP_EVT;
- p_buf->hdr.layer_specific = conn_id;
- p_buf->trans_id = trans_id;
- p_buf->status = status;
- if (p_msg != NULL) {
- p_buf->p_rsp = (tBTA_GATTS_RSP *)(p_buf + 1);
- memcpy(p_buf->p_rsp, p_msg, sizeof(tBTA_GATTS_RSP));
- }
+ p_buf->hdr.event = BTA_GATTS_API_RSP_EVT;
+ p_buf->hdr.layer_specific = conn_id;
+ p_buf->trans_id = trans_id;
+ p_buf->status = status;
+ if (p_msg != NULL) {
+ p_buf->p_rsp = (tBTA_GATTS_RSP*)(p_buf + 1);
+ memcpy(p_buf->p_rsp, p_msg, sizeof(tBTA_GATTS_RSP));
+ }
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
*
* Function BTA_GATTS_Open
*
- * Description Open a direct open connection or add a background auto connection
+ * Description Open a direct open connection or add a background auto
+ *connection
* bd address
*
* Parameters server_if: server interface.
* remote_bda: remote device BD address.
* is_direct: direct connection or background auto connection
- * transport : Transport on which GATT connection to be opened (BR/EDR or LE)
+ * transport : Transport on which GATT connection to be opened
+ *(BR/EDR or LE)
*
* Returns void
*
******************************************************************************/
void BTA_GATTS_Open(tBTA_GATTS_IF server_if, BD_ADDR remote_bda, bool is_direct,
- tBTA_GATT_TRANSPORT transport)
-{
- tBTA_GATTS_API_OPEN *p_buf =
- (tBTA_GATTS_API_OPEN *)osi_malloc(sizeof(tBTA_GATTS_API_OPEN));
+ tBTA_GATT_TRANSPORT transport) {
+ tBTA_GATTS_API_OPEN* p_buf =
+ (tBTA_GATTS_API_OPEN*)osi_malloc(sizeof(tBTA_GATTS_API_OPEN));
- p_buf->hdr.event = BTA_GATTS_API_OPEN_EVT;
- p_buf->server_if = server_if;
- p_buf->is_direct = is_direct;
- p_buf->transport = transport;
- memcpy(p_buf->remote_bda, remote_bda, BD_ADDR_LEN);
+ p_buf->hdr.event = BTA_GATTS_API_OPEN_EVT;
+ p_buf->server_if = server_if;
+ p_buf->is_direct = is_direct;
+ p_buf->transport = transport;
+ memcpy(p_buf->remote_bda, remote_bda, BD_ADDR_LEN);
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
*
* Function BTA_GATTS_CancelOpen
*
- * Description Cancel a direct open connection or remove a background auto connection
+ * Description Cancel a direct open connection or remove a background auto
+ *connection
* bd address
*
* Parameters server_if: server interface.
@@ -320,17 +314,17 @@
* Returns void
*
******************************************************************************/
-void BTA_GATTS_CancelOpen(tBTA_GATTS_IF server_if, BD_ADDR remote_bda, bool is_direct)
-{
- tBTA_GATTS_API_CANCEL_OPEN *p_buf =
- (tBTA_GATTS_API_CANCEL_OPEN *)osi_malloc(sizeof(tBTA_GATTS_API_CANCEL_OPEN));
+void BTA_GATTS_CancelOpen(tBTA_GATTS_IF server_if, BD_ADDR remote_bda,
+ bool is_direct) {
+ tBTA_GATTS_API_CANCEL_OPEN* p_buf = (tBTA_GATTS_API_CANCEL_OPEN*)osi_malloc(
+ sizeof(tBTA_GATTS_API_CANCEL_OPEN));
- p_buf->hdr.event = BTA_GATTS_API_CANCEL_OPEN_EVT;
- p_buf->server_if = server_if;
- p_buf->is_direct = is_direct;
- memcpy(p_buf->remote_bda, remote_bda, BD_ADDR_LEN);
+ p_buf->hdr.event = BTA_GATTS_API_CANCEL_OPEN_EVT;
+ p_buf->server_if = server_if;
+ p_buf->is_direct = is_direct;
+ memcpy(p_buf->remote_bda, remote_bda, BD_ADDR_LEN);
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -344,14 +338,13 @@
* Returns void
*
******************************************************************************/
-void BTA_GATTS_Close(uint16_t conn_id)
-{
- BT_HDR *p_buf = (BT_HDR *)osi_malloc(sizeof(BT_HDR));
+void BTA_GATTS_Close(uint16_t conn_id) {
+ BT_HDR* p_buf = (BT_HDR*)osi_malloc(sizeof(BT_HDR));
- p_buf->event = BTA_GATTS_API_CLOSE_EVT;
- p_buf->layer_specific = conn_id;
+ p_buf->event = BTA_GATTS_API_CLOSE_EVT;
+ p_buf->layer_specific = conn_id;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
#endif /* BTA_GATT_INCLUDED */
diff --git a/bta/gatt/bta_gatts_int.h b/bta/gatt/bta_gatts_int.h
index b6dfba1..91bd9fe 100644
--- a/bta/gatt/bta_gatts_int.h
+++ b/bta/gatt/bta_gatts_int.h
@@ -25,8 +25,8 @@
#define BTA_GATTS_INT_H
#include "bt_target.h"
-#include "bta_sys.h"
#include "bta_gatt_api.h"
+#include "bta_sys.h"
#include "gatt_api.h"
#include "bt_common.h"
@@ -34,168 +34,156 @@
/*****************************************************************************
* Constants and data types
****************************************************************************/
-enum
-{
- BTA_GATTS_API_REG_EVT = BTA_SYS_EVT_START(BTA_ID_GATTS),
- BTA_GATTS_INT_START_IF_EVT,
- BTA_GATTS_API_DEREG_EVT,
- BTA_GATTS_API_INDICATION_EVT,
+enum {
+ BTA_GATTS_API_REG_EVT = BTA_SYS_EVT_START(BTA_ID_GATTS),
+ BTA_GATTS_INT_START_IF_EVT,
+ BTA_GATTS_API_DEREG_EVT,
+ BTA_GATTS_API_INDICATION_EVT,
- BTA_GATTS_API_DEL_SRVC_EVT,
- BTA_GATTS_API_STOP_SRVC_EVT,
- BTA_GATTS_API_RSP_EVT,
- BTA_GATTS_API_OPEN_EVT,
- BTA_GATTS_API_CANCEL_OPEN_EVT,
- BTA_GATTS_API_CLOSE_EVT,
- BTA_GATTS_API_DISABLE_EVT
+ BTA_GATTS_API_DEL_SRVC_EVT,
+ BTA_GATTS_API_STOP_SRVC_EVT,
+ BTA_GATTS_API_RSP_EVT,
+ BTA_GATTS_API_OPEN_EVT,
+ BTA_GATTS_API_CANCEL_OPEN_EVT,
+ BTA_GATTS_API_CLOSE_EVT,
+ BTA_GATTS_API_DISABLE_EVT
};
typedef uint16_t tBTA_GATTS_INT_EVT;
/* max number of application allowed on device */
-#define BTA_GATTS_MAX_APP_NUM GATT_MAX_SR_PROFILES
+#define BTA_GATTS_MAX_APP_NUM GATT_MAX_SR_PROFILES
/* max number of services allowed in the device */
-#define BTA_GATTS_MAX_SRVC_NUM GATT_MAX_SR_PROFILES
+#define BTA_GATTS_MAX_SRVC_NUM GATT_MAX_SR_PROFILES
/* internal strucutre for GATTC register API */
-typedef struct
-{
- BT_HDR hdr;
- tBT_UUID app_uuid;
- tBTA_GATTS_CBACK *p_cback;
-}tBTA_GATTS_API_REG;
+typedef struct {
+ BT_HDR hdr;
+ tBT_UUID app_uuid;
+ tBTA_GATTS_CBACK* p_cback;
+} tBTA_GATTS_API_REG;
-typedef struct
-{
- BT_HDR hdr;
- tBTA_GATTS_IF server_if;
-}tBTA_GATTS_INT_START_IF;
+typedef struct {
+ BT_HDR hdr;
+ tBTA_GATTS_IF server_if;
+} tBTA_GATTS_INT_START_IF;
typedef tBTA_GATTS_INT_START_IF tBTA_GATTS_API_DEREG;
-typedef struct
-{
- BT_HDR hdr;
- tBTA_GATTS_IF server_if;
- btgatt_db_element_t *service;
- uint16_t count;
+typedef struct {
+ BT_HDR hdr;
+ tBTA_GATTS_IF server_if;
+ btgatt_db_element_t* service;
+ uint16_t count;
} tBTA_GATTS_API_ADD_SERVICE;
-typedef struct
-{
- BT_HDR hdr;
- uint16_t attr_id;
- uint16_t len;
- bool need_confirm;
- uint8_t value[BTA_GATT_MAX_ATTR_LEN];
-}tBTA_GATTS_API_INDICATION;
+typedef struct {
+ BT_HDR hdr;
+ uint16_t attr_id;
+ uint16_t len;
+ bool need_confirm;
+ uint8_t value[BTA_GATT_MAX_ATTR_LEN];
+} tBTA_GATTS_API_INDICATION;
-typedef struct
-{
- BT_HDR hdr;
- uint32_t trans_id;
- tBTA_GATT_STATUS status;
- tBTA_GATTS_RSP *p_rsp;
-}tBTA_GATTS_API_RSP;
+typedef struct {
+ BT_HDR hdr;
+ uint32_t trans_id;
+ tBTA_GATT_STATUS status;
+ tBTA_GATTS_RSP* p_rsp;
+} tBTA_GATTS_API_RSP;
-typedef struct
-{
- BT_HDR hdr;
- tBTA_GATT_TRANSPORT transport;
-}tBTA_GATTS_API_START;
+typedef struct {
+ BT_HDR hdr;
+ tBTA_GATT_TRANSPORT transport;
+} tBTA_GATTS_API_START;
+typedef struct {
+ BT_HDR hdr;
+ BD_ADDR remote_bda;
+ tBTA_GATTS_IF server_if;
+ bool is_direct;
+ tBTA_GATT_TRANSPORT transport;
-typedef struct
-{
- BT_HDR hdr;
- BD_ADDR remote_bda;
- tBTA_GATTS_IF server_if;
- bool is_direct;
- tBTA_GATT_TRANSPORT transport;
-
-}tBTA_GATTS_API_OPEN;
+} tBTA_GATTS_API_OPEN;
typedef tBTA_GATTS_API_OPEN tBTA_GATTS_API_CANCEL_OPEN;
-typedef union
-{
- BT_HDR hdr;
- tBTA_GATTS_API_REG api_reg;
- tBTA_GATTS_API_DEREG api_dereg;
- tBTA_GATTS_API_ADD_SERVICE api_add_service;
- tBTA_GATTS_API_INDICATION api_indicate;
- tBTA_GATTS_API_RSP api_rsp;
- tBTA_GATTS_API_OPEN api_open;
- tBTA_GATTS_API_CANCEL_OPEN api_cancel_open;
+typedef union {
+ BT_HDR hdr;
+ tBTA_GATTS_API_REG api_reg;
+ tBTA_GATTS_API_DEREG api_dereg;
+ tBTA_GATTS_API_ADD_SERVICE api_add_service;
+ tBTA_GATTS_API_INDICATION api_indicate;
+ tBTA_GATTS_API_RSP api_rsp;
+ tBTA_GATTS_API_OPEN api_open;
+ tBTA_GATTS_API_CANCEL_OPEN api_cancel_open;
- tBTA_GATTS_INT_START_IF int_start_if;
+ tBTA_GATTS_INT_START_IF int_start_if;
} tBTA_GATTS_DATA;
/* application registration control block */
-typedef struct
-{
- bool in_use;
- tBT_UUID app_uuid;
- tBTA_GATTS_CBACK *p_cback;
- tBTA_GATTS_IF gatt_if;
-}tBTA_GATTS_RCB;
+typedef struct {
+ bool in_use;
+ tBT_UUID app_uuid;
+ tBTA_GATTS_CBACK* p_cback;
+ tBTA_GATTS_IF gatt_if;
+} tBTA_GATTS_RCB;
/* service registration control block */
-typedef struct
-{
- tBT_UUID service_uuid; /* service UUID */
- uint16_t service_id; /* service start handle */
- uint8_t rcb_idx;
- uint8_t idx; /* self index of serviec CB */
- bool in_use;
-}tBTA_GATTS_SRVC_CB;
-
+typedef struct {
+ tBT_UUID service_uuid; /* service UUID */
+ uint16_t service_id; /* service start handle */
+ uint8_t rcb_idx;
+ uint8_t idx; /* self index of serviec CB */
+ bool in_use;
+} tBTA_GATTS_SRVC_CB;
/* GATT server control block */
-typedef struct
-{
- bool enabled;
- tBTA_GATTS_RCB rcb[BTA_GATTS_MAX_APP_NUM];
- tBTA_GATTS_SRVC_CB srvc_cb[BTA_GATTS_MAX_SRVC_NUM];
-}tBTA_GATTS_CB;
-
-
+typedef struct {
+ bool enabled;
+ tBTA_GATTS_RCB rcb[BTA_GATTS_MAX_APP_NUM];
+ tBTA_GATTS_SRVC_CB srvc_cb[BTA_GATTS_MAX_SRVC_NUM];
+} tBTA_GATTS_CB;
/*****************************************************************************
* Global data
****************************************************************************/
/* GATTC control block */
-extern tBTA_GATTS_CB bta_gatts_cb;
+extern tBTA_GATTS_CB bta_gatts_cb;
/*****************************************************************************
* Function prototypes
****************************************************************************/
-extern bool bta_gatts_hdl_event(BT_HDR *p_msg);
+extern bool bta_gatts_hdl_event(BT_HDR* p_msg);
-extern void bta_gatts_api_disable(tBTA_GATTS_CB *p_cb);
-extern void bta_gatts_api_enable(tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA *p_data);
-extern void bta_gatts_register(tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA *p_msg);
-extern void bta_gatts_start_if(tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA *p_msg);
-extern void bta_gatts_deregister(tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA *p_msg);
-extern void bta_gatts_delete_service(tBTA_GATTS_SRVC_CB *p_srvc_cb, tBTA_GATTS_DATA * p_msg);
-extern void bta_gatts_stop_service(tBTA_GATTS_SRVC_CB *p_srvc_cb, tBTA_GATTS_DATA * p_msg);
+extern void bta_gatts_api_disable(tBTA_GATTS_CB* p_cb);
+extern void bta_gatts_api_enable(tBTA_GATTS_CB* p_cb, tBTA_GATTS_DATA* p_data);
+extern void bta_gatts_register(tBTA_GATTS_CB* p_cb, tBTA_GATTS_DATA* p_msg);
+extern void bta_gatts_start_if(tBTA_GATTS_CB* p_cb, tBTA_GATTS_DATA* p_msg);
+extern void bta_gatts_deregister(tBTA_GATTS_CB* p_cb, tBTA_GATTS_DATA* p_msg);
+extern void bta_gatts_delete_service(tBTA_GATTS_SRVC_CB* p_srvc_cb,
+ tBTA_GATTS_DATA* p_msg);
+extern void bta_gatts_stop_service(tBTA_GATTS_SRVC_CB* p_srvc_cb,
+ tBTA_GATTS_DATA* p_msg);
-extern void bta_gatts_send_rsp(tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA * p_msg);
-extern void bta_gatts_indicate_handle (tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA * p_msg);
+extern void bta_gatts_send_rsp(tBTA_GATTS_CB* p_cb, tBTA_GATTS_DATA* p_msg);
+extern void bta_gatts_indicate_handle(tBTA_GATTS_CB* p_cb,
+ tBTA_GATTS_DATA* p_msg);
-
-extern void bta_gatts_open (tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA * p_msg);
-extern void bta_gatts_cancel_open (tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA * p_msg);
-extern void bta_gatts_close (tBTA_GATTS_CB *p_cb, tBTA_GATTS_DATA * p_msg);
+extern void bta_gatts_open(tBTA_GATTS_CB* p_cb, tBTA_GATTS_DATA* p_msg);
+extern void bta_gatts_cancel_open(tBTA_GATTS_CB* p_cb, tBTA_GATTS_DATA* p_msg);
+extern void bta_gatts_close(tBTA_GATTS_CB* p_cb, tBTA_GATTS_DATA* p_msg);
extern bool bta_gatts_uuid_compare(tBT_UUID tar, tBT_UUID src);
-extern tBTA_GATTS_RCB *bta_gatts_find_app_rcb_by_app_if(tBTA_GATTS_IF server_if);
-extern uint8_t bta_gatts_find_app_rcb_idx_by_app_if(tBTA_GATTS_CB *p_cb, tBTA_GATTS_IF server_if);
-extern uint8_t bta_gatts_alloc_srvc_cb(tBTA_GATTS_CB *p_cb, uint8_t rcb_idx);
-extern tBTA_GATTS_SRVC_CB * bta_gatts_find_srvc_cb_by_srvc_id(tBTA_GATTS_CB *p_cb, uint16_t service_id);
-extern tBTA_GATTS_SRVC_CB * bta_gatts_find_srvc_cb_by_attr_id(tBTA_GATTS_CB *p_cb, uint16_t attr_id);
-
+extern tBTA_GATTS_RCB* bta_gatts_find_app_rcb_by_app_if(
+ tBTA_GATTS_IF server_if);
+extern uint8_t bta_gatts_find_app_rcb_idx_by_app_if(tBTA_GATTS_CB* p_cb,
+ tBTA_GATTS_IF server_if);
+extern uint8_t bta_gatts_alloc_srvc_cb(tBTA_GATTS_CB* p_cb, uint8_t rcb_idx);
+extern tBTA_GATTS_SRVC_CB* bta_gatts_find_srvc_cb_by_srvc_id(
+ tBTA_GATTS_CB* p_cb, uint16_t service_id);
+extern tBTA_GATTS_SRVC_CB* bta_gatts_find_srvc_cb_by_attr_id(
+ tBTA_GATTS_CB* p_cb, uint16_t attr_id);
#endif /* BTA_GATTS_INT_H */
-
diff --git a/bta/gatt/bta_gatts_main.cc b/bta/gatt/bta_gatts_main.cc
index f082267..8c97314 100644
--- a/bta/gatt/bta_gatts_main.cc
+++ b/bta/gatt/bta_gatts_main.cc
@@ -28,11 +28,11 @@
#include <string.h>
-#include "bta_gatts_int.h"
#include "bt_common.h"
+#include "bta_gatts_int.h"
/* GATTS control block */
-tBTA_GATTS_CB bta_gatts_cb;
+tBTA_GATTS_CB bta_gatts_cb;
/*******************************************************************************
*
@@ -44,80 +44,76 @@
* Returns void
*
******************************************************************************/
-bool bta_gatts_hdl_event(BT_HDR *p_msg)
-{
- tBTA_GATTS_CB *p_cb = &bta_gatts_cb;
+bool bta_gatts_hdl_event(BT_HDR* p_msg) {
+ tBTA_GATTS_CB* p_cb = &bta_gatts_cb;
- switch (p_msg->event)
- {
- case BTA_GATTS_API_DISABLE_EVT:
- bta_gatts_api_disable(p_cb);
- break;
+ switch (p_msg->event) {
+ case BTA_GATTS_API_DISABLE_EVT:
+ bta_gatts_api_disable(p_cb);
+ break;
- case BTA_GATTS_API_REG_EVT:
- bta_gatts_register(p_cb, (tBTA_GATTS_DATA *) p_msg);
- break;
+ case BTA_GATTS_API_REG_EVT:
+ bta_gatts_register(p_cb, (tBTA_GATTS_DATA*)p_msg);
+ break;
- case BTA_GATTS_INT_START_IF_EVT:
- bta_gatts_start_if(p_cb, (tBTA_GATTS_DATA *) p_msg);
- break;
+ case BTA_GATTS_INT_START_IF_EVT:
+ bta_gatts_start_if(p_cb, (tBTA_GATTS_DATA*)p_msg);
+ break;
- case BTA_GATTS_API_DEREG_EVT:
- bta_gatts_deregister(p_cb, (tBTA_GATTS_DATA *) p_msg);
- break;
+ case BTA_GATTS_API_DEREG_EVT:
+ bta_gatts_deregister(p_cb, (tBTA_GATTS_DATA*)p_msg);
+ break;
- case BTA_GATTS_API_INDICATION_EVT:
- bta_gatts_indicate_handle(p_cb,(tBTA_GATTS_DATA *) p_msg);
- break;
+ case BTA_GATTS_API_INDICATION_EVT:
+ bta_gatts_indicate_handle(p_cb, (tBTA_GATTS_DATA*)p_msg);
+ break;
- case BTA_GATTS_API_OPEN_EVT:
- bta_gatts_open(p_cb,(tBTA_GATTS_DATA *) p_msg);
- break;
+ case BTA_GATTS_API_OPEN_EVT:
+ bta_gatts_open(p_cb, (tBTA_GATTS_DATA*)p_msg);
+ break;
- case BTA_GATTS_API_CANCEL_OPEN_EVT:
- bta_gatts_cancel_open(p_cb,(tBTA_GATTS_DATA *) p_msg);
- break;
+ case BTA_GATTS_API_CANCEL_OPEN_EVT:
+ bta_gatts_cancel_open(p_cb, (tBTA_GATTS_DATA*)p_msg);
+ break;
- case BTA_GATTS_API_CLOSE_EVT:
- bta_gatts_close(p_cb,(tBTA_GATTS_DATA *) p_msg);
- break;
+ case BTA_GATTS_API_CLOSE_EVT:
+ bta_gatts_close(p_cb, (tBTA_GATTS_DATA*)p_msg);
+ break;
- case BTA_GATTS_API_RSP_EVT:
- bta_gatts_send_rsp(p_cb,(tBTA_GATTS_DATA *) p_msg);
- break;
+ case BTA_GATTS_API_RSP_EVT:
+ bta_gatts_send_rsp(p_cb, (tBTA_GATTS_DATA*)p_msg);
+ break;
- case BTA_GATTS_API_DEL_SRVC_EVT:
- {
- tBTA_GATTS_SRVC_CB *p_srvc_cb = bta_gatts_find_srvc_cb_by_srvc_id(p_cb,
- ((tBTA_GATTS_DATA *)p_msg)->api_add_service.hdr.layer_specific);
+ case BTA_GATTS_API_DEL_SRVC_EVT: {
+ tBTA_GATTS_SRVC_CB* p_srvc_cb = bta_gatts_find_srvc_cb_by_srvc_id(
+ p_cb, ((tBTA_GATTS_DATA*)p_msg)->api_add_service.hdr.layer_specific);
- if (p_srvc_cb != NULL)
- bta_gatts_delete_service(p_srvc_cb, (tBTA_GATTS_DATA *) p_msg);
- else
- APPL_TRACE_ERROR("%s: can't delete service - no srvc_cb found", __func__);
+ if (p_srvc_cb != NULL)
+ bta_gatts_delete_service(p_srvc_cb, (tBTA_GATTS_DATA*)p_msg);
+ else
+ APPL_TRACE_ERROR("%s: can't delete service - no srvc_cb found",
+ __func__);
- break;
- }
-
- case BTA_GATTS_API_STOP_SRVC_EVT:
- {
- tBTA_GATTS_SRVC_CB *p_srvc_cb = bta_gatts_find_srvc_cb_by_srvc_id(p_cb,
- ((tBTA_GATTS_DATA *)p_msg)->api_add_service.hdr.layer_specific);
-
- if (p_srvc_cb != NULL)
- bta_gatts_stop_service(p_srvc_cb, (tBTA_GATTS_DATA *) p_msg);
- else
- APPL_TRACE_ERROR("%s: can't stop service - no srvc_cb found", __func__);
-
- break;
- }
-
- default:
- break;
+ break;
}
+ case BTA_GATTS_API_STOP_SRVC_EVT: {
+ tBTA_GATTS_SRVC_CB* p_srvc_cb = bta_gatts_find_srvc_cb_by_srvc_id(
+ p_cb, ((tBTA_GATTS_DATA*)p_msg)->api_add_service.hdr.layer_specific);
- return (true);
+ if (p_srvc_cb != NULL)
+ bta_gatts_stop_service(p_srvc_cb, (tBTA_GATTS_DATA*)p_msg);
+ else
+ APPL_TRACE_ERROR("%s: can't stop service - no srvc_cb found", __func__);
+
+ break;
+ }
+
+ default:
+ break;
+ }
+
+ return (true);
}
#endif /* BTA_GATT_INCLUDED */
diff --git a/bta/gatt/bta_gatts_utils.cc b/bta/gatt/bta_gatts_utils.cc
index 8bd8562..3301293 100644
--- a/bta/gatt/bta_gatts_utils.cc
+++ b/bta/gatt/bta_gatts_utils.cc
@@ -28,12 +28,13 @@
#include <string.h>
-#include "utl.h"
#include "bt_common.h"
-#include "bta_sys.h"
#include "bta_gatts_int.h"
+#include "bta_sys.h"
+#include "utl.h"
-static const uint8_t base_uuid[LEN_UUID_128] = {0xFB, 0x34, 0x9B, 0x5F, 0x80, 0x00, 0x00, 0x80,
+static const uint8_t base_uuid[LEN_UUID_128] = {
+ 0xFB, 0x34, 0x9B, 0x5F, 0x80, 0x00, 0x00, 0x80,
0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
/*******************************************************************************
@@ -45,13 +46,13 @@
* Returns true if two uuid match; false otherwise.
*
******************************************************************************/
-static void bta_gatt_convert_uuid16_to_uuid128(uint8_t uuid_128[LEN_UUID_128], uint16_t uuid_16)
-{
- uint8_t *p = &uuid_128[LEN_UUID_128 - 4];
+static void bta_gatt_convert_uuid16_to_uuid128(uint8_t uuid_128[LEN_UUID_128],
+ uint16_t uuid_16) {
+ uint8_t* p = &uuid_128[LEN_UUID_128 - 4];
- memcpy (uuid_128, base_uuid, LEN_UUID_128);
+ memcpy(uuid_128, base_uuid, LEN_UUID_128);
- UINT16_TO_STREAM(p, uuid_16);
+ UINT16_TO_STREAM(p, uuid_16);
}
/*******************************************************************************
*
@@ -62,20 +63,17 @@
* Returns pointer to the control block, or otherwise NULL when failed.
*
******************************************************************************/
-uint8_t bta_gatts_alloc_srvc_cb(tBTA_GATTS_CB *p_cb, uint8_t rcb_idx)
-{
- uint8_t i;
+uint8_t bta_gatts_alloc_srvc_cb(tBTA_GATTS_CB* p_cb, uint8_t rcb_idx) {
+ uint8_t i;
- for (i = 0; i < BTA_GATTS_MAX_SRVC_NUM; i ++)
- {
- if (!p_cb->srvc_cb[i].in_use)
- {
- p_cb->srvc_cb[i].in_use = true;
- p_cb->srvc_cb[i].rcb_idx = rcb_idx;
- return i;
- }
+ for (i = 0; i < BTA_GATTS_MAX_SRVC_NUM; i++) {
+ if (!p_cb->srvc_cb[i].in_use) {
+ p_cb->srvc_cb[i].in_use = true;
+ p_cb->srvc_cb[i].rcb_idx = rcb_idx;
+ return i;
}
- return BTA_GATTS_INVALID_APP;
+ }
+ return BTA_GATTS_INVALID_APP;
}
/*******************************************************************************
@@ -87,17 +85,15 @@
* Returns pointer to the control block if success, otherwise NULL
*
******************************************************************************/
-tBTA_GATTS_RCB *bta_gatts_find_app_rcb_by_app_if(tBTA_GATTS_IF server_if)
-{
- uint8_t i;
- tBTA_GATTS_RCB *p_reg;
+tBTA_GATTS_RCB* bta_gatts_find_app_rcb_by_app_if(tBTA_GATTS_IF server_if) {
+ uint8_t i;
+ tBTA_GATTS_RCB* p_reg;
- for (i = 0, p_reg = bta_gatts_cb.rcb; i < BTA_GATTS_MAX_APP_NUM; i ++, p_reg++)
- {
- if (p_reg->in_use && p_reg->gatt_if == server_if)
- return p_reg;
- }
- return NULL;
+ for (i = 0, p_reg = bta_gatts_cb.rcb; i < BTA_GATTS_MAX_APP_NUM;
+ i++, p_reg++) {
+ if (p_reg->in_use && p_reg->gatt_if == server_if) return p_reg;
+ }
+ return NULL;
}
/*******************************************************************************
@@ -106,20 +102,19 @@
*
* Description find the index of the application control block by app ID.
*
- * Returns index of the control block, or BTA_GATTS_INVALID_APP if failed.
+ * Returns index of the control block, or BTA_GATTS_INVALID_APP if
+ *failed.
*
******************************************************************************/
-uint8_t bta_gatts_find_app_rcb_idx_by_app_if(tBTA_GATTS_CB *p_cb, tBTA_GATTS_IF server_if)
-{
- uint8_t i;
+uint8_t bta_gatts_find_app_rcb_idx_by_app_if(tBTA_GATTS_CB* p_cb,
+ tBTA_GATTS_IF server_if) {
+ uint8_t i;
- for (i = 0; i < BTA_GATTS_MAX_APP_NUM; i ++)
- {
- if (p_cb->rcb[i].in_use && p_cb->rcb[i].gatt_if == server_if)
- return i;
- }
- return BTA_GATTS_INVALID_APP;
+ for (i = 0; i < BTA_GATTS_MAX_APP_NUM; i++) {
+ if (p_cb->rcb[i].in_use && p_cb->rcb[i].gatt_if == server_if) return i;
+ }
+ return BTA_GATTS_INVALID_APP;
}
/*******************************************************************************
*
@@ -130,20 +125,19 @@
* Returns pointer to the rcb.
*
******************************************************************************/
-tBTA_GATTS_SRVC_CB * bta_gatts_find_srvc_cb_by_srvc_id(tBTA_GATTS_CB *p_cb, uint16_t service_id)
-{
- uint8_t i;
- APPL_TRACE_DEBUG("bta_gatts_find_srvc_cb_by_srvc_id service_id=%d", service_id);
- for (i = 0; i < BTA_GATTS_MAX_SRVC_NUM; i ++)
- {
- if (p_cb->srvc_cb[i].in_use &&
- p_cb->srvc_cb[i].service_id == service_id)
- {
- APPL_TRACE_DEBUG("bta_gatts_find_srvc_cb_by_srvc_id found service cb index =%d", i);
- return &p_cb->srvc_cb[i];
- }
+tBTA_GATTS_SRVC_CB* bta_gatts_find_srvc_cb_by_srvc_id(tBTA_GATTS_CB* p_cb,
+ uint16_t service_id) {
+ uint8_t i;
+ APPL_TRACE_DEBUG("bta_gatts_find_srvc_cb_by_srvc_id service_id=%d",
+ service_id);
+ for (i = 0; i < BTA_GATTS_MAX_SRVC_NUM; i++) {
+ if (p_cb->srvc_cb[i].in_use && p_cb->srvc_cb[i].service_id == service_id) {
+ APPL_TRACE_DEBUG(
+ "bta_gatts_find_srvc_cb_by_srvc_id found service cb index =%d", i);
+ return &p_cb->srvc_cb[i];
}
- return NULL;
+ }
+ return NULL;
}
/*******************************************************************************
*
@@ -154,32 +148,27 @@
* Returns pointer to the rcb.
*
******************************************************************************/
-tBTA_GATTS_SRVC_CB * bta_gatts_find_srvc_cb_by_attr_id(tBTA_GATTS_CB *p_cb, uint16_t attr_id)
-{
- uint8_t i;
+tBTA_GATTS_SRVC_CB* bta_gatts_find_srvc_cb_by_attr_id(tBTA_GATTS_CB* p_cb,
+ uint16_t attr_id) {
+ uint8_t i;
- for (i = 0; i < (BTA_GATTS_MAX_SRVC_NUM); i ++)
- {
- if (/* middle service */
- (i < (BTA_GATTS_MAX_SRVC_NUM - 1) &&
- p_cb->srvc_cb[i].in_use &&
- p_cb->srvc_cb[i + 1].in_use &&
- attr_id >= p_cb->srvc_cb[i].service_id &&
- attr_id < p_cb->srvc_cb[i + 1].service_id) ||
- /* last active service */
- (i < (BTA_GATTS_MAX_SRVC_NUM - 1) &&
- p_cb->srvc_cb[i].in_use &&
- !p_cb->srvc_cb[i + 1].in_use &&
- attr_id >= p_cb->srvc_cb[i].service_id) ||
- /* last service incb */
- (i == (BTA_GATTS_MAX_SRVC_NUM - 1) &&
- attr_id >= p_cb->srvc_cb[i].service_id)
- )
- {
- return &p_cb->srvc_cb[i];
- }
+ for (i = 0; i < (BTA_GATTS_MAX_SRVC_NUM); i++) {
+ if (/* middle service */
+ (i < (BTA_GATTS_MAX_SRVC_NUM - 1) && p_cb->srvc_cb[i].in_use &&
+ p_cb->srvc_cb[i + 1].in_use &&
+ attr_id >= p_cb->srvc_cb[i].service_id &&
+ attr_id < p_cb->srvc_cb[i + 1].service_id) ||
+ /* last active service */
+ (i < (BTA_GATTS_MAX_SRVC_NUM - 1) && p_cb->srvc_cb[i].in_use &&
+ !p_cb->srvc_cb[i + 1].in_use &&
+ attr_id >= p_cb->srvc_cb[i].service_id) ||
+ /* last service incb */
+ (i == (BTA_GATTS_MAX_SRVC_NUM - 1) &&
+ attr_id >= p_cb->srvc_cb[i].service_id)) {
+ return &p_cb->srvc_cb[i];
}
- return NULL;
+ }
+ return NULL;
}
/*******************************************************************************
*
@@ -190,46 +179,36 @@
* Returns true if two uuid match; false otherwise.
*
******************************************************************************/
-bool bta_gatts_uuid_compare(tBT_UUID tar, tBT_UUID src)
-{
- uint8_t su[LEN_UUID_128], tu[LEN_UUID_128];
- uint8_t *ps, *pt;
+bool bta_gatts_uuid_compare(tBT_UUID tar, tBT_UUID src) {
+ uint8_t su[LEN_UUID_128], tu[LEN_UUID_128];
+ uint8_t *ps, *pt;
- /* any of the UUID is unspecified */
- if (src.len == 0 || tar.len == 0)
- {
- return true;
- }
+ /* any of the UUID is unspecified */
+ if (src.len == 0 || tar.len == 0) {
+ return true;
+ }
- /* If both are 16-bit, we can do a simple compare */
- if (src.len == 2 && tar.len == 2)
- {
- return src.uu.uuid16 == tar.uu.uuid16;
- }
+ /* If both are 16-bit, we can do a simple compare */
+ if (src.len == 2 && tar.len == 2) {
+ return src.uu.uuid16 == tar.uu.uuid16;
+ }
- /* One or both of the UUIDs is 128-bit */
- if (src.len == LEN_UUID_16)
- {
- /* convert a 16 bits UUID to 128 bits value */
- bta_gatt_convert_uuid16_to_uuid128(su, src.uu.uuid16);
- ps = su;
- }
- else
- ps = src.uu.uuid128;
+ /* One or both of the UUIDs is 128-bit */
+ if (src.len == LEN_UUID_16) {
+ /* convert a 16 bits UUID to 128 bits value */
+ bta_gatt_convert_uuid16_to_uuid128(su, src.uu.uuid16);
+ ps = su;
+ } else
+ ps = src.uu.uuid128;
- if (tar.len == LEN_UUID_16)
- {
- /* convert a 16 bits UUID to 128 bits value */
- bta_gatt_convert_uuid16_to_uuid128(tu, tar.uu.uuid16);
- pt = tu;
- }
- else
- pt = tar.uu.uuid128;
+ if (tar.len == LEN_UUID_16) {
+ /* convert a 16 bits UUID to 128 bits value */
+ bta_gatt_convert_uuid16_to_uuid128(tu, tar.uu.uuid16);
+ pt = tu;
+ } else
+ pt = tar.uu.uuid128;
- return(memcmp(ps, pt, LEN_UUID_128) == 0);
+ return (memcmp(ps, pt, LEN_UUID_128) == 0);
}
-
-
-
#endif
diff --git a/bta/hf_client/bta_hf_client_act.cc b/bta/hf_client/bta_hf_client_act.cc
index 2ef22a5..9724d26 100644
--- a/bta/hf_client/bta_hf_client_act.cc
+++ b/bta/hf_client/bta_hf_client_act.cc
@@ -23,25 +23,25 @@
*
******************************************************************************/
+#include <string.h>
+#include "bt_utils.h"
#include "bta_api.h"
#include "bta_dm_api.h"
#include "bta_hf_client_api.h"
#include "bta_hf_client_int.h"
-#include "l2c_api.h"
-#include "port_api.h"
#include "bta_sys.h"
-#include "utl.h"
-#include "bt_utils.h"
+#include "l2c_api.h"
#include "osi/include/compat.h"
#include "osi/include/osi.h"
-#include <string.h>
+#include "port_api.h"
+#include "utl.h"
/*****************************************************************************
* Constants
****************************************************************************/
/* maximum length of data to read from RFCOMM */
-#define BTA_HF_CLIENT_RFC_READ_MAX 512
+#define BTA_HF_CLIENT_RFC_READ_MAX 512
/*******************************************************************************
*
@@ -54,35 +54,34 @@
* Returns void
*
******************************************************************************/
-void bta_hf_client_register(tBTA_HF_CLIENT_DATA *p_data)
-{
- tBTA_HF_CLIENT evt;
- tBTA_UTL_COD cod;
+void bta_hf_client_register(tBTA_HF_CLIENT_DATA* p_data) {
+ tBTA_HF_CLIENT evt;
+ tBTA_UTL_COD cod;
- memset(&evt, 0, sizeof(evt));
+ memset(&evt, 0, sizeof(evt));
- /* initialize control block */
- bta_hf_client_scb_init();
+ /* initialize control block */
+ bta_hf_client_scb_init();
- bta_hf_client_cb.scb.serv_sec_mask = p_data->api_register.sec_mask;
- bta_hf_client_cb.scb.features = p_data->api_register.features;
+ bta_hf_client_cb.scb.serv_sec_mask = p_data->api_register.sec_mask;
+ bta_hf_client_cb.scb.features = p_data->api_register.features;
- /* initialize AT control block */
- bta_hf_client_at_init();
+ /* initialize AT control block */
+ bta_hf_client_at_init();
- /* create SDP records */
- bta_hf_client_create_record(p_data);
+ /* create SDP records */
+ bta_hf_client_create_record(p_data);
- /* Set the Audio service class bit */
- cod.service = BTM_COD_SERVICE_AUDIO;
- utl_set_device_class(&cod, BTA_UTL_SET_COD_SERVICE_CLASS);
+ /* Set the Audio service class bit */
+ cod.service = BTM_COD_SERVICE_AUDIO;
+ utl_set_device_class(&cod, BTA_UTL_SET_COD_SERVICE_CLASS);
- /* start RFCOMM server */
- bta_hf_client_start_server();
+ /* start RFCOMM server */
+ bta_hf_client_start_server();
- /* call app callback with register event */
- evt.reg.status = BTA_HF_CLIENT_SUCCESS;
- (*bta_hf_client_cb.p_cback)(BTA_HF_CLIENT_REGISTER_EVT, &evt);
+ /* call app callback with register event */
+ evt.reg.status = BTA_HF_CLIENT_SUCCESS;
+ (*bta_hf_client_cb.p_cback)(BTA_HF_CLIENT_REGISTER_EVT, &evt);
}
/*******************************************************************************
@@ -96,18 +95,17 @@
* Returns void
*
******************************************************************************/
-void bta_hf_client_deregister(tBTA_HF_CLIENT_DATA *p_data)
-{
- bta_hf_client_cb.scb.deregister = true;
+void bta_hf_client_deregister(tBTA_HF_CLIENT_DATA* p_data) {
+ bta_hf_client_cb.scb.deregister = true;
- /* remove sdp record */
- bta_hf_client_del_record(p_data);
+ /* remove sdp record */
+ bta_hf_client_del_record(p_data);
- /* remove rfcomm server */
- bta_hf_client_close_server();
+ /* remove rfcomm server */
+ bta_hf_client_close_server();
- /* disable */
- bta_hf_client_scb_disable();
+ /* disable */
+ bta_hf_client_scb_disable();
}
/*******************************************************************************
@@ -120,12 +118,11 @@
* Returns void
*
******************************************************************************/
-void bta_hf_client_start_dereg(tBTA_HF_CLIENT_DATA *p_data)
-{
- bta_hf_client_cb.scb.deregister = true;
+void bta_hf_client_start_dereg(tBTA_HF_CLIENT_DATA* p_data) {
+ bta_hf_client_cb.scb.deregister = true;
- /* remove sdp record */
- bta_hf_client_del_record(p_data);
+ /* remove sdp record */
+ bta_hf_client_del_record(p_data);
}
/*******************************************************************************
@@ -138,24 +135,21 @@
* Returns void
*
******************************************************************************/
-void bta_hf_client_start_close(tBTA_HF_CLIENT_DATA *p_data)
-{
- /* Take the link out of sniff and set L2C idle time to 0 */
- bta_dm_pm_active(bta_hf_client_cb.scb.peer_addr);
- L2CA_SetIdleTimeoutByBdAddr(bta_hf_client_cb.scb.peer_addr, 0, BT_TRANSPORT_BR_EDR);
+void bta_hf_client_start_close(tBTA_HF_CLIENT_DATA* p_data) {
+ /* Take the link out of sniff and set L2C idle time to 0 */
+ bta_dm_pm_active(bta_hf_client_cb.scb.peer_addr);
+ L2CA_SetIdleTimeoutByBdAddr(bta_hf_client_cb.scb.peer_addr, 0,
+ BT_TRANSPORT_BR_EDR);
- /* if SCO is open close SCO and wait on RFCOMM close */
- if (bta_hf_client_cb.scb.sco_state == BTA_HF_CLIENT_SCO_OPEN_ST)
- {
- bta_hf_client_cb.scb.sco_close_rfc = true;
- }
- else
- {
- bta_hf_client_rfc_do_close(p_data);
- }
+ /* if SCO is open close SCO and wait on RFCOMM close */
+ if (bta_hf_client_cb.scb.sco_state == BTA_HF_CLIENT_SCO_OPEN_ST) {
+ bta_hf_client_cb.scb.sco_close_rfc = true;
+ } else {
+ bta_hf_client_rfc_do_close(p_data);
+ }
- /* always do SCO shutdown to handle all SCO corner cases */
- bta_hf_client_sco_shutdown(NULL);
+ /* always do SCO shutdown to handle all SCO corner cases */
+ bta_hf_client_sco_shutdown(NULL);
}
/*******************************************************************************
@@ -168,35 +162,33 @@
* Returns void
*
******************************************************************************/
-void bta_hf_client_start_open(tBTA_HF_CLIENT_DATA *p_data)
-{
- BD_ADDR pending_bd_addr;
+void bta_hf_client_start_open(tBTA_HF_CLIENT_DATA* p_data) {
+ BD_ADDR pending_bd_addr;
- /* store parameters */
- if (p_data)
- {
- bdcpy(bta_hf_client_cb.scb.peer_addr, p_data->api_open.bd_addr);
- bta_hf_client_cb.scb.cli_sec_mask = p_data->api_open.sec_mask;
- }
+ /* store parameters */
+ if (p_data) {
+ bdcpy(bta_hf_client_cb.scb.peer_addr, p_data->api_open.bd_addr);
+ bta_hf_client_cb.scb.cli_sec_mask = p_data->api_open.sec_mask;
+ }
- /* Check if RFCOMM has any incoming connection to avoid collision. */
- if (PORT_IsOpening (pending_bd_addr))
- {
- /* Let the incoming connection goes through. */
- /* Issue collision for now. */
- /* We will decide what to do when we find incoming connection later.*/
- bta_hf_client_collision_cback (0, BTA_ID_HS, 0, bta_hf_client_cb.scb.peer_addr);
- return;
- }
+ /* Check if RFCOMM has any incoming connection to avoid collision. */
+ if (PORT_IsOpening(pending_bd_addr)) {
+ /* Let the incoming connection goes through. */
+ /* Issue collision for now. */
+ /* We will decide what to do when we find incoming connection later.*/
+ bta_hf_client_collision_cback(0, BTA_ID_HS, 0,
+ bta_hf_client_cb.scb.peer_addr);
+ return;
+ }
- /* close server */
- bta_hf_client_close_server();
+ /* close server */
+ bta_hf_client_close_server();
- /* set role */
- bta_hf_client_cb.scb.role = BTA_HF_CLIENT_INT;
+ /* set role */
+ bta_hf_client_cb.scb.role = BTA_HF_CLIENT_INT;
- /* do service search */
- bta_hf_client_do_disc();
+ /* do service search */
+ bta_hf_client_do_disc();
}
/*******************************************************************************
@@ -209,25 +201,23 @@
* Returns void
*
******************************************************************************/
-static void bta_hf_client_cback_open(tBTA_HF_CLIENT_DATA *p_data, tBTA_HF_CLIENT_STATUS status)
-{
- tBTA_HF_CLIENT evt;
+static void bta_hf_client_cback_open(tBTA_HF_CLIENT_DATA* p_data,
+ tBTA_HF_CLIENT_STATUS status) {
+ tBTA_HF_CLIENT evt;
- memset(&evt, 0, sizeof(evt));
+ memset(&evt, 0, sizeof(evt));
- /* call app callback with open event */
- evt.open.status = status;
- if(p_data)
- {
- /* if p_data is provided then we need to pick the bd address from the open api structure */
- bdcpy(evt.open.bd_addr, p_data->api_open.bd_addr);
- }
- else
- {
- bdcpy(evt.open.bd_addr, bta_hf_client_cb.scb.peer_addr);
- }
+ /* call app callback with open event */
+ evt.open.status = status;
+ if (p_data) {
+ /* if p_data is provided then we need to pick the bd address from the open
+ * api structure */
+ bdcpy(evt.open.bd_addr, p_data->api_open.bd_addr);
+ } else {
+ bdcpy(evt.open.bd_addr, bta_hf_client_cb.scb.peer_addr);
+ }
- (*bta_hf_client_cb.p_cback)(BTA_HF_CLIENT_OPEN_EVT, &evt);
+ (*bta_hf_client_cb.p_cback)(BTA_HF_CLIENT_OPEN_EVT, &evt);
}
/*******************************************************************************
@@ -240,14 +230,13 @@
* Returns void
*
******************************************************************************/
-void bta_hf_client_rfc_open(UNUSED_ATTR tBTA_HF_CLIENT_DATA *p_data)
-{
- bta_sys_conn_open(BTA_ID_HS, 1, bta_hf_client_cb.scb.peer_addr);
+void bta_hf_client_rfc_open(UNUSED_ATTR tBTA_HF_CLIENT_DATA* p_data) {
+ bta_sys_conn_open(BTA_ID_HS, 1, bta_hf_client_cb.scb.peer_addr);
- bta_hf_client_cback_open(NULL, BTA_HF_CLIENT_SUCCESS);
+ bta_hf_client_cback_open(NULL, BTA_HF_CLIENT_SUCCESS);
- /* start SLC procedure */
- bta_hf_client_slc_seq(false);
+ /* start SLC procedure */
+ bta_hf_client_slc_seq(false);
}
/*******************************************************************************
@@ -260,48 +249,49 @@
* Returns void
*
******************************************************************************/
-void bta_hf_client_rfc_acp_open(tBTA_HF_CLIENT_DATA *p_data)
-{
- uint16_t lcid;
- BD_ADDR dev_addr;
- int status;
+void bta_hf_client_rfc_acp_open(tBTA_HF_CLIENT_DATA* p_data) {
+ uint16_t lcid;
+ BD_ADDR dev_addr;
+ int status;
- /* set role */
- bta_hf_client_cb.scb.role = BTA_HF_CLIENT_ACP;
+ /* set role */
+ bta_hf_client_cb.scb.role = BTA_HF_CLIENT_ACP;
- APPL_TRACE_DEBUG ("bta_hf_client_rfc_acp_open: serv_handle = %d rfc.port_handle = %d",
- bta_hf_client_cb.scb.serv_handle, p_data->rfc.port_handle);
+ APPL_TRACE_DEBUG(
+ "bta_hf_client_rfc_acp_open: serv_handle = %d rfc.port_handle = %d",
+ bta_hf_client_cb.scb.serv_handle, p_data->rfc.port_handle);
- /* get bd addr of peer */
- if (PORT_SUCCESS != (status=PORT_CheckConnection(p_data->rfc.port_handle, dev_addr, &lcid)))
- {
- APPL_TRACE_DEBUG ("bta_hf_client_rfc_acp_open error PORT_CheckConnection returned status %d", status);
+ /* get bd addr of peer */
+ if (PORT_SUCCESS != (status = PORT_CheckConnection(p_data->rfc.port_handle,
+ dev_addr, &lcid))) {
+ APPL_TRACE_DEBUG(
+ "bta_hf_client_rfc_acp_open error PORT_CheckConnection returned status "
+ "%d",
+ status);
+ }
+
+ /* Collision Handling */
+ if (alarm_is_scheduled(bta_hf_client_cb.scb.collision_timer)) {
+ alarm_cancel(bta_hf_client_cb.scb.collision_timer);
+
+ if (bdcmp(dev_addr, bta_hf_client_cb.scb.peer_addr) == 0) {
+ /* If incoming and outgoing device are same, nothing more to do. */
+ /* Outgoing conn will be aborted because we have successful incoming conn.
+ */
+ } else {
+ /* Resume outgoing connection. */
+ bta_hf_client_resume_open();
}
+ }
- /* Collision Handling */
- if (alarm_is_scheduled(bta_hf_client_cb.scb.collision_timer)) {
- alarm_cancel(bta_hf_client_cb.scb.collision_timer);
+ bdcpy(bta_hf_client_cb.scb.peer_addr, dev_addr);
+ bta_hf_client_cb.scb.conn_handle = p_data->rfc.port_handle;
- if (bdcmp (dev_addr, bta_hf_client_cb.scb.peer_addr) == 0)
- {
- /* If incoming and outgoing device are same, nothing more to do. */
- /* Outgoing conn will be aborted because we have successful incoming conn. */
- }
- else
- {
- /* Resume outgoing connection. */
- bta_hf_client_resume_open ();
- }
- }
+ /* do service discovery to get features */
+ bta_hf_client_do_disc();
- bdcpy (bta_hf_client_cb.scb.peer_addr, dev_addr);
- bta_hf_client_cb.scb.conn_handle = p_data->rfc.port_handle;
-
- /* do service discovery to get features */
- bta_hf_client_do_disc();
-
- /* continue with open processing */
- bta_hf_client_rfc_open(p_data);
+ /* continue with open processing */
+ bta_hf_client_rfc_open(p_data);
}
/*******************************************************************************
@@ -314,24 +304,23 @@
* Returns void
*
******************************************************************************/
-void bta_hf_client_rfc_fail(UNUSED_ATTR tBTA_HF_CLIENT_DATA *p_data)
-{
- /* reinitialize stuff */
- bta_hf_client_cb.scb.conn_handle = 0;
- bta_hf_client_cb.scb.peer_features = 0;
- bta_hf_client_cb.scb.chld_features = 0;
- bta_hf_client_cb.scb.role = BTA_HF_CLIENT_ACP;
- bta_hf_client_cb.scb.svc_conn = false;
- bta_hf_client_cb.scb.send_at_reply = false;
- bta_hf_client_cb.scb.negotiated_codec = BTM_SCO_CODEC_CVSD;
+void bta_hf_client_rfc_fail(UNUSED_ATTR tBTA_HF_CLIENT_DATA* p_data) {
+ /* reinitialize stuff */
+ bta_hf_client_cb.scb.conn_handle = 0;
+ bta_hf_client_cb.scb.peer_features = 0;
+ bta_hf_client_cb.scb.chld_features = 0;
+ bta_hf_client_cb.scb.role = BTA_HF_CLIENT_ACP;
+ bta_hf_client_cb.scb.svc_conn = false;
+ bta_hf_client_cb.scb.send_at_reply = false;
+ bta_hf_client_cb.scb.negotiated_codec = BTM_SCO_CODEC_CVSD;
- bta_hf_client_at_reset();
+ bta_hf_client_at_reset();
- /* reopen server */
- bta_hf_client_start_server();
+ /* reopen server */
+ bta_hf_client_start_server();
- /* call open cback w. failure */
- bta_hf_client_cback_open(NULL, BTA_HF_CLIENT_FAIL_RFCOMM);
+ /* call open cback w. failure */
+ bta_hf_client_cback_open(NULL, BTA_HF_CLIENT_FAIL_RFCOMM);
}
/*******************************************************************************
@@ -344,15 +333,14 @@
* Returns void
*
******************************************************************************/
-void bta_hf_client_disc_fail(UNUSED_ATTR tBTA_HF_CLIENT_DATA *p_data)
-{
- /* reopen server */
- bta_hf_client_start_server();
+void bta_hf_client_disc_fail(UNUSED_ATTR tBTA_HF_CLIENT_DATA* p_data) {
+ /* reopen server */
+ bta_hf_client_start_server();
- /* reinitialize stuff */
+ /* reinitialize stuff */
- /* call open cback w. failure */
- bta_hf_client_cback_open(NULL, BTA_HF_CLIENT_FAIL_SDP);
+ /* call open cback w. failure */
+ bta_hf_client_cback_open(NULL, BTA_HF_CLIENT_FAIL_SDP);
}
/*******************************************************************************
@@ -365,10 +353,9 @@
* Returns void
*
******************************************************************************/
-void bta_hf_client_open_fail(tBTA_HF_CLIENT_DATA *p_data)
-{
- /* call open cback w. failure */
- bta_hf_client_cback_open(p_data, BTA_HF_CLIENT_FAIL_RESOURCES);
+void bta_hf_client_open_fail(tBTA_HF_CLIENT_DATA* p_data) {
+ /* call open cback w. failure */
+ bta_hf_client_cback_open(p_data, BTA_HF_CLIENT_FAIL_RESOURCES);
}
/*******************************************************************************
@@ -381,45 +368,42 @@
* Returns void
*
******************************************************************************/
-void bta_hf_client_rfc_close(UNUSED_ATTR tBTA_HF_CLIENT_DATA *p_data)
-{
- /* reinitialize stuff */
- bta_hf_client_cb.scb.peer_features = 0;
- bta_hf_client_cb.scb.chld_features = 0;
- bta_hf_client_cb.scb.role = BTA_HF_CLIENT_ACP;
- bta_hf_client_cb.scb.svc_conn = false;
- bta_hf_client_cb.scb.send_at_reply = false;
- bta_hf_client_cb.scb.negotiated_codec = BTM_SCO_CODEC_CVSD;
+void bta_hf_client_rfc_close(UNUSED_ATTR tBTA_HF_CLIENT_DATA* p_data) {
+ /* reinitialize stuff */
+ bta_hf_client_cb.scb.peer_features = 0;
+ bta_hf_client_cb.scb.chld_features = 0;
+ bta_hf_client_cb.scb.role = BTA_HF_CLIENT_ACP;
+ bta_hf_client_cb.scb.svc_conn = false;
+ bta_hf_client_cb.scb.send_at_reply = false;
+ bta_hf_client_cb.scb.negotiated_codec = BTM_SCO_CODEC_CVSD;
- bta_hf_client_at_reset();
+ bta_hf_client_at_reset();
- bta_sys_conn_close(BTA_ID_HS, 1, bta_hf_client_cb.scb.peer_addr);
+ bta_sys_conn_close(BTA_ID_HS, 1, bta_hf_client_cb.scb.peer_addr);
- /* call close cback */
- (*bta_hf_client_cb.p_cback)(BTA_HF_CLIENT_CLOSE_EVT, NULL);
+ /* call close cback */
+ (*bta_hf_client_cb.p_cback)(BTA_HF_CLIENT_CLOSE_EVT, NULL);
- /* if not deregistering reopen server */
- if (bta_hf_client_cb.scb.deregister == false)
- {
- /* Clear peer bd_addr so instance can be reused */
- bdcpy(bta_hf_client_cb.scb.peer_addr, bd_addr_null);
+ /* if not deregistering reopen server */
+ if (bta_hf_client_cb.scb.deregister == false) {
+ /* Clear peer bd_addr so instance can be reused */
+ bdcpy(bta_hf_client_cb.scb.peer_addr, bd_addr_null);
- /* start server as it might got closed on open*/
- bta_hf_client_start_server();
+ /* start server as it might got closed on open*/
+ bta_hf_client_start_server();
- bta_hf_client_cb.scb.conn_handle = 0;
+ bta_hf_client_cb.scb.conn_handle = 0;
- /* Make sure SCO is shutdown */
- bta_hf_client_sco_shutdown(NULL);
+ /* Make sure SCO is shutdown */
+ bta_hf_client_sco_shutdown(NULL);
- bta_sys_sco_unuse(BTA_ID_HS, 1, bta_hf_client_cb.scb.peer_addr);
- }
- /* else close port and deallocate scb */
- else
- {
- bta_hf_client_close_server();
- bta_hf_client_scb_disable();
- }
+ bta_sys_sco_unuse(BTA_ID_HS, 1, bta_hf_client_cb.scb.peer_addr);
+ }
+ /* else close port and deallocate scb */
+ else {
+ bta_hf_client_close_server();
+ bta_hf_client_scb_disable();
+ }
}
/*******************************************************************************
@@ -432,28 +416,26 @@
* Returns void
*
******************************************************************************/
-void bta_hf_client_disc_int_res(tBTA_HF_CLIENT_DATA *p_data)
-{
- uint16_t event = BTA_HF_CLIENT_DISC_FAIL_EVT;
+void bta_hf_client_disc_int_res(tBTA_HF_CLIENT_DATA* p_data) {
+ uint16_t event = BTA_HF_CLIENT_DISC_FAIL_EVT;
- APPL_TRACE_DEBUG ("bta_hf_client_disc_int_res: Status: %d", p_data->disc_result.status);
+ APPL_TRACE_DEBUG("bta_hf_client_disc_int_res: Status: %d",
+ p_data->disc_result.status);
- /* if found service */
- if (p_data->disc_result.status == SDP_SUCCESS ||
- p_data->disc_result.status == SDP_DB_FULL)
- {
- /* get attributes */
- if (bta_hf_client_sdp_find_attr())
- {
- event = BTA_HF_CLIENT_DISC_OK_EVT;
- }
+ /* if found service */
+ if (p_data->disc_result.status == SDP_SUCCESS ||
+ p_data->disc_result.status == SDP_DB_FULL) {
+ /* get attributes */
+ if (bta_hf_client_sdp_find_attr()) {
+ event = BTA_HF_CLIENT_DISC_OK_EVT;
}
+ }
- /* free discovery db */
- bta_hf_client_free_db(p_data);
+ /* free discovery db */
+ bta_hf_client_free_db(p_data);
- /* send ourselves sdp ok/fail event */
- bta_hf_client_sm_execute(event, p_data);
+ /* send ourselves sdp ok/fail event */
+ bta_hf_client_sm_execute(event, p_data);
}
/*******************************************************************************
@@ -466,18 +448,16 @@
* Returns void
*
******************************************************************************/
-void bta_hf_client_disc_acp_res(tBTA_HF_CLIENT_DATA *p_data)
-{
- /* if found service */
- if (p_data->disc_result.status == SDP_SUCCESS ||
- p_data->disc_result.status == SDP_DB_FULL)
- {
- /* get attributes */
- bta_hf_client_sdp_find_attr();
- }
+void bta_hf_client_disc_acp_res(tBTA_HF_CLIENT_DATA* p_data) {
+ /* if found service */
+ if (p_data->disc_result.status == SDP_SUCCESS ||
+ p_data->disc_result.status == SDP_DB_FULL) {
+ /* get attributes */
+ bta_hf_client_sdp_find_attr();
+ }
- /* free discovery db */
- bta_hf_client_free_db(p_data);
+ /* free discovery db */
+ bta_hf_client_free_db(p_data);
}
/*******************************************************************************
@@ -490,30 +470,27 @@
* Returns void
*
******************************************************************************/
-void bta_hf_client_rfc_data(UNUSED_ATTR tBTA_HF_CLIENT_DATA *p_data)
-{
- uint16_t len;
- char buf[BTA_HF_CLIENT_RFC_READ_MAX];
+void bta_hf_client_rfc_data(UNUSED_ATTR tBTA_HF_CLIENT_DATA* p_data) {
+ uint16_t len;
+ char buf[BTA_HF_CLIENT_RFC_READ_MAX];
- memset(buf, 0, sizeof(buf));
+ memset(buf, 0, sizeof(buf));
- /* read data from rfcomm; if bad status, we're done */
- while (PORT_ReadData(bta_hf_client_cb.scb.conn_handle, buf, BTA_HF_CLIENT_RFC_READ_MAX, &len) == PORT_SUCCESS)
- {
- /* if no data, we're done */
- if (len == 0)
- {
- break;
- }
-
- bta_hf_client_at_parse(buf, len);
-
- /* no more data to read, we're done */
- if (len < BTA_HF_CLIENT_RFC_READ_MAX)
- {
- break;
- }
+ /* read data from rfcomm; if bad status, we're done */
+ while (PORT_ReadData(bta_hf_client_cb.scb.conn_handle, buf,
+ BTA_HF_CLIENT_RFC_READ_MAX, &len) == PORT_SUCCESS) {
+ /* if no data, we're done */
+ if (len == 0) {
+ break;
}
+
+ bta_hf_client_at_parse(buf, len);
+
+ /* no more data to read, we're done */
+ if (len < BTA_HF_CLIENT_RFC_READ_MAX) {
+ break;
+ }
+ }
}
/*******************************************************************************
@@ -526,23 +503,21 @@
* Returns void
*
******************************************************************************/
-void bta_hf_client_svc_conn_open(UNUSED_ATTR tBTA_HF_CLIENT_DATA *p_data)
-{
- tBTA_HF_CLIENT evt;
+void bta_hf_client_svc_conn_open(UNUSED_ATTR tBTA_HF_CLIENT_DATA* p_data) {
+ tBTA_HF_CLIENT evt;
- memset(&evt, 0, sizeof(evt));
+ memset(&evt, 0, sizeof(evt));
- if (!bta_hf_client_cb.scb.svc_conn)
- {
- /* set state variable */
- bta_hf_client_cb.scb.svc_conn = true;
+ if (!bta_hf_client_cb.scb.svc_conn) {
+ /* set state variable */
+ bta_hf_client_cb.scb.svc_conn = true;
- /* call callback */
- evt.conn.peer_feat = bta_hf_client_cb.scb.peer_features;
- evt.conn.chld_feat = bta_hf_client_cb.scb.chld_features;
+ /* call callback */
+ evt.conn.peer_feat = bta_hf_client_cb.scb.peer_features;
+ evt.conn.chld_feat = bta_hf_client_cb.scb.chld_features;
- (*bta_hf_client_cb.p_cback)(BTA_HF_CLIENT_CONN_EVT, &evt);
- }
+ (*bta_hf_client_cb.p_cback)(BTA_HF_CLIENT_CONN_EVT, &evt);
+ }
}
/*******************************************************************************
@@ -554,16 +529,15 @@
* Returns void
*
******************************************************************************/
-void bta_hf_client_ind(tBTA_HF_CLIENT_IND_TYPE type, uint16_t value)
-{
- tBTA_HF_CLIENT evt;
+void bta_hf_client_ind(tBTA_HF_CLIENT_IND_TYPE type, uint16_t value) {
+ tBTA_HF_CLIENT evt;
- memset(&evt, 0, sizeof(evt));
+ memset(&evt, 0, sizeof(evt));
- evt.ind.type = type;
- evt.ind.value = value;
+ evt.ind.type = type;
+ evt.ind.value = value;
- (*bta_hf_client_cb.p_cback)(BTA_HF_CLIENT_IND_EVT, &evt);
+ (*bta_hf_client_cb.p_cback)(BTA_HF_CLIENT_IND_EVT, &evt);
}
/*******************************************************************************
@@ -577,15 +551,14 @@
* Returns void
*
******************************************************************************/
-void bta_hf_client_evt_val(tBTA_HF_CLIENT_EVT type, uint16_t value)
-{
- tBTA_HF_CLIENT evt;
+void bta_hf_client_evt_val(tBTA_HF_CLIENT_EVT type, uint16_t value) {
+ tBTA_HF_CLIENT evt;
- memset(&evt, 0, sizeof(evt));
+ memset(&evt, 0, sizeof(evt));
- evt.val.value = value;
+ evt.val.value = value;
- (*bta_hf_client_cb.p_cback)(type, &evt);
+ (*bta_hf_client_cb.p_cback)(type, &evt);
}
/*******************************************************************************
@@ -598,19 +571,17 @@
* Returns void
*
******************************************************************************/
-void bta_hf_client_operator_name(char *name)
-{
- tBTA_HF_CLIENT evt;
+void bta_hf_client_operator_name(char* name) {
+ tBTA_HF_CLIENT evt;
- memset(&evt, 0, sizeof(evt));
+ memset(&evt, 0, sizeof(evt));
- strlcpy(evt.operator_name.name, name, BTA_HF_CLIENT_OPERATOR_NAME_LEN + 1);
- evt.operator_name.name[BTA_HF_CLIENT_OPERATOR_NAME_LEN] = '\0';
+ strlcpy(evt.operator_name.name, name, BTA_HF_CLIENT_OPERATOR_NAME_LEN + 1);
+ evt.operator_name.name[BTA_HF_CLIENT_OPERATOR_NAME_LEN] = '\0';
- (*bta_hf_client_cb.p_cback)(BTA_HF_CLIENT_OPERATOR_NAME_EVT, &evt);
+ (*bta_hf_client_cb.p_cback)(BTA_HF_CLIENT_OPERATOR_NAME_EVT, &evt);
}
-
/*******************************************************************************
*
* Function bta_hf_client_clip
@@ -621,16 +592,15 @@
* Returns void
*
******************************************************************************/
-void bta_hf_client_clip(char *number)
-{
- tBTA_HF_CLIENT evt;
+void bta_hf_client_clip(char* number) {
+ tBTA_HF_CLIENT evt;
- memset(&evt, 0, sizeof(evt));
+ memset(&evt, 0, sizeof(evt));
- strlcpy(evt.number.number, number, BTA_HF_CLIENT_NUMBER_LEN + 1);
- evt.number.number[BTA_HF_CLIENT_NUMBER_LEN] = '\0';
+ strlcpy(evt.number.number, number, BTA_HF_CLIENT_NUMBER_LEN + 1);
+ evt.number.number[BTA_HF_CLIENT_NUMBER_LEN] = '\0';
- (*bta_hf_client_cb.p_cback)(BTA_HF_CLIENT_CLIP_EVT, &evt);
+ (*bta_hf_client_cb.p_cback)(BTA_HF_CLIENT_CLIP_EVT, &evt);
}
/*******************************************************************************
@@ -643,16 +613,15 @@
* Returns void
*
******************************************************************************/
-void bta_hf_client_ccwa(char *number)
-{
- tBTA_HF_CLIENT evt;
+void bta_hf_client_ccwa(char* number) {
+ tBTA_HF_CLIENT evt;
- memset(&evt, 0, sizeof(evt));
+ memset(&evt, 0, sizeof(evt));
- strlcpy(evt.number.number, number, BTA_HF_CLIENT_NUMBER_LEN + 1);
- evt.number.number[BTA_HF_CLIENT_NUMBER_LEN] = '\0';
+ strlcpy(evt.number.number, number, BTA_HF_CLIENT_NUMBER_LEN + 1);
+ evt.number.number[BTA_HF_CLIENT_NUMBER_LEN] = '\0';
- (*bta_hf_client_cb.p_cback)(BTA_HF_CLIENT_CCWA_EVT, &evt);
+ (*bta_hf_client_cb.p_cback)(BTA_HF_CLIENT_CCWA_EVT, &evt);
}
/*******************************************************************************
@@ -665,16 +634,15 @@
* Returns void
*
******************************************************************************/
-void bta_hf_client_at_result(tBTA_HF_CLIENT_AT_RESULT_TYPE type, uint16_t cme)
-{
- tBTA_HF_CLIENT evt;
+void bta_hf_client_at_result(tBTA_HF_CLIENT_AT_RESULT_TYPE type, uint16_t cme) {
+ tBTA_HF_CLIENT evt;
- memset(&evt, 0, sizeof(evt));
+ memset(&evt, 0, sizeof(evt));
- evt.result.type = type;
- evt.result.cme = cme;
+ evt.result.type = type;
+ evt.result.cme = cme;
- (*bta_hf_client_cb.p_cback)(BTA_HF_CLIENT_AT_RESULT_EVT, &evt);
+ (*bta_hf_client_cb.p_cback)(BTA_HF_CLIENT_AT_RESULT_EVT, &evt);
}
/*******************************************************************************
@@ -687,25 +655,24 @@
* Returns void
*
******************************************************************************/
-void bta_hf_client_clcc(uint32_t idx, bool incoming, uint8_t status, bool mpty, char *number)
-{
- tBTA_HF_CLIENT evt;
+void bta_hf_client_clcc(uint32_t idx, bool incoming, uint8_t status, bool mpty,
+ char* number) {
+ tBTA_HF_CLIENT evt;
- memset(&evt, 0, sizeof(evt));
+ memset(&evt, 0, sizeof(evt));
- evt.clcc.idx = idx;
- evt.clcc.inc = incoming;
- evt.clcc.status = status;
- evt.clcc.mpty = mpty;
+ evt.clcc.idx = idx;
+ evt.clcc.inc = incoming;
+ evt.clcc.status = status;
+ evt.clcc.mpty = mpty;
- if (number)
- {
- evt.clcc.number_present = true;
- strlcpy(evt.clcc.number, number, BTA_HF_CLIENT_NUMBER_LEN + 1);
- evt.clcc.number[BTA_HF_CLIENT_NUMBER_LEN] = '\0';
- }
+ if (number) {
+ evt.clcc.number_present = true;
+ strlcpy(evt.clcc.number, number, BTA_HF_CLIENT_NUMBER_LEN + 1);
+ evt.clcc.number[BTA_HF_CLIENT_NUMBER_LEN] = '\0';
+ }
- (*bta_hf_client_cb.p_cback)(BTA_HF_CLIENT_CLCC_EVT, &evt);
+ (*bta_hf_client_cb.p_cback)(BTA_HF_CLIENT_CLCC_EVT, &evt);
}
/*******************************************************************************
@@ -718,17 +685,16 @@
* Returns void
*
******************************************************************************/
-void bta_hf_client_cnum(char *number, uint16_t service)
-{
- tBTA_HF_CLIENT evt;
+void bta_hf_client_cnum(char* number, uint16_t service) {
+ tBTA_HF_CLIENT evt;
- memset(&evt, 0, sizeof(evt));
+ memset(&evt, 0, sizeof(evt));
- evt.cnum.service = service;
- strlcpy(evt.cnum.number, number, BTA_HF_CLIENT_NUMBER_LEN + 1);
- evt.cnum.number[BTA_HF_CLIENT_NUMBER_LEN] = '\0';
+ evt.cnum.service = service;
+ strlcpy(evt.cnum.number, number, BTA_HF_CLIENT_NUMBER_LEN + 1);
+ evt.cnum.number[BTA_HF_CLIENT_NUMBER_LEN] = '\0';
- (*bta_hf_client_cb.p_cback)(BTA_HF_CLIENT_CNUM_EVT, &evt);
+ (*bta_hf_client_cb.p_cback)(BTA_HF_CLIENT_CNUM_EVT, &evt);
}
/*******************************************************************************
@@ -741,14 +707,13 @@
* Returns void
*
******************************************************************************/
-void bta_hf_client_binp(char *number)
-{
- tBTA_HF_CLIENT evt;
+void bta_hf_client_binp(char* number) {
+ tBTA_HF_CLIENT evt;
- memset(&evt, 0, sizeof(evt));
+ memset(&evt, 0, sizeof(evt));
- strlcpy(evt.number.number, number, BTA_HF_CLIENT_NUMBER_LEN + 1);
- evt.number.number[BTA_HF_CLIENT_NUMBER_LEN] = '\0';
+ strlcpy(evt.number.number, number, BTA_HF_CLIENT_NUMBER_LEN + 1);
+ evt.number.number[BTA_HF_CLIENT_NUMBER_LEN] = '\0';
- (*bta_hf_client_cb.p_cback)(BTA_HF_CLIENT_BINP_EVT, &evt);
+ (*bta_hf_client_cb.p_cback)(BTA_HF_CLIENT_BINP_EVT, &evt);
}
diff --git a/bta/hf_client/bta_hf_client_api.cc b/bta/hf_client/bta_hf_client_api.cc
index a253d15..e932661 100644
--- a/bta/hf_client/bta_hf_client_api.cc
+++ b/bta/hf_client/bta_hf_client_api.cc
@@ -33,12 +33,8 @@
/*****************************************************************************
* Constants and data types
****************************************************************************/
-static const tBTA_SYS_REG bta_hf_client_reg =
-{
- bta_hf_client_hdl_event,
- BTA_HfClientDisable
-};
-
+static const tBTA_SYS_REG bta_hf_client_reg = {bta_hf_client_hdl_event,
+ BTA_HfClientDisable};
/*****************************************************************************
* External Function Declarations
@@ -57,25 +53,23 @@
* Returns BTA_SUCCESS if OK, BTA_FAILURE otherwise.
*
******************************************************************************/
-tBTA_STATUS BTA_HfClientEnable(tBTA_HF_CLIENT_CBACK *p_cback)
-{
- if (bta_sys_is_register (BTA_ID_HS))
- {
- APPL_TRACE_ERROR("BTA HF Client is already enabled, ignoring ...");
- return BTA_FAILURE;
- }
+tBTA_STATUS BTA_HfClientEnable(tBTA_HF_CLIENT_CBACK* p_cback) {
+ if (bta_sys_is_register(BTA_ID_HS)) {
+ APPL_TRACE_ERROR("BTA HF Client is already enabled, ignoring ...");
+ return BTA_FAILURE;
+ }
- /* register with BTA system manager */
- bta_sys_register(BTA_ID_HS, &bta_hf_client_reg);
+ /* register with BTA system manager */
+ bta_sys_register(BTA_ID_HS, &bta_hf_client_reg);
- tBTA_HF_CLIENT_API_ENABLE *p_buf =
- (tBTA_HF_CLIENT_API_ENABLE *)osi_malloc(sizeof(tBTA_HF_CLIENT_API_ENABLE));
- p_buf->hdr.event = BTA_HF_CLIENT_API_ENABLE_EVT;
- p_buf->p_cback = p_cback;
+ tBTA_HF_CLIENT_API_ENABLE* p_buf =
+ (tBTA_HF_CLIENT_API_ENABLE*)osi_malloc(sizeof(tBTA_HF_CLIENT_API_ENABLE));
+ p_buf->hdr.event = BTA_HF_CLIENT_API_ENABLE_EVT;
+ p_buf->p_cback = p_cback;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
- return BTA_SUCCESS;
+ return BTA_SUCCESS;
}
/*******************************************************************************
@@ -88,13 +82,12 @@
* Returns void
*
******************************************************************************/
-void BTA_HfClientDisable(void)
-{
- BT_HDR *p_buf = (BT_HDR *)osi_malloc(sizeof(BT_HDR));
+void BTA_HfClientDisable(void) {
+ BT_HDR* p_buf = (BT_HDR*)osi_malloc(sizeof(BT_HDR));
- p_buf->event = BTA_HF_CLIENT_API_DISABLE_EVT;
+ p_buf->event = BTA_HF_CLIENT_API_DISABLE_EVT;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -108,20 +101,19 @@
*
******************************************************************************/
void BTA_HfClientRegister(tBTA_SEC sec_mask, tBTA_HF_CLIENT_FEAT features,
- const char *p_service_name)
-{
- tBTA_HF_CLIENT_API_REGISTER *p_buf =
- (tBTA_HF_CLIENT_API_REGISTER *)osi_malloc(sizeof(tBTA_HF_CLIENT_API_REGISTER));
+ const char* p_service_name) {
+ tBTA_HF_CLIENT_API_REGISTER* p_buf = (tBTA_HF_CLIENT_API_REGISTER*)osi_malloc(
+ sizeof(tBTA_HF_CLIENT_API_REGISTER));
- p_buf->hdr.event = BTA_HF_CLIENT_API_REGISTER_EVT;
- p_buf->features = features;
- p_buf->sec_mask = sec_mask;
- if (p_service_name)
- strlcpy(p_buf->name, p_service_name, BTA_SERVICE_NAME_LEN);
- else
- p_buf->name[0] = 0;
+ p_buf->hdr.event = BTA_HF_CLIENT_API_REGISTER_EVT;
+ p_buf->features = features;
+ p_buf->sec_mask = sec_mask;
+ if (p_service_name)
+ strlcpy(p_buf->name, p_service_name, BTA_SERVICE_NAME_LEN);
+ else
+ p_buf->name[0] = 0;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -134,14 +126,13 @@
* Returns void
*
******************************************************************************/
-void BTA_HfClientDeregister(uint16_t handle)
-{
- BT_HDR *p_buf = (BT_HDR *)osi_malloc(sizeof(BT_HDR));
+void BTA_HfClientDeregister(uint16_t handle) {
+ BT_HDR* p_buf = (BT_HDR*)osi_malloc(sizeof(BT_HDR));
- p_buf->event = BTA_HF_CLIENT_API_DEREGISTER_EVT;
- p_buf->layer_specific = handle;
+ p_buf->event = BTA_HF_CLIENT_API_DEREGISTER_EVT;
+ p_buf->layer_specific = handle;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -157,17 +148,16 @@
* Returns void
*
******************************************************************************/
-void BTA_HfClientOpen(uint16_t handle, BD_ADDR bd_addr, tBTA_SEC sec_mask)
-{
- tBTA_HF_CLIENT_API_OPEN *p_buf =
- (tBTA_HF_CLIENT_API_OPEN *)osi_malloc(sizeof(tBTA_HF_CLIENT_API_OPEN));
+void BTA_HfClientOpen(uint16_t handle, BD_ADDR bd_addr, tBTA_SEC sec_mask) {
+ tBTA_HF_CLIENT_API_OPEN* p_buf =
+ (tBTA_HF_CLIENT_API_OPEN*)osi_malloc(sizeof(tBTA_HF_CLIENT_API_OPEN));
- p_buf->hdr.event = BTA_HF_CLIENT_API_OPEN_EVT;
- p_buf->hdr.layer_specific = handle;
- bdcpy(p_buf->bd_addr, bd_addr);
- p_buf->sec_mask = sec_mask;
+ p_buf->hdr.event = BTA_HF_CLIENT_API_OPEN_EVT;
+ p_buf->hdr.layer_specific = handle;
+ bdcpy(p_buf->bd_addr, bd_addr);
+ p_buf->sec_mask = sec_mask;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -181,14 +171,13 @@
* Returns void
*
******************************************************************************/
-void BTA_HfClientClose(uint16_t handle)
-{
- BT_HDR *p_buf = (BT_HDR *)osi_malloc(sizeof(BT_HDR));
+void BTA_HfClientClose(uint16_t handle) {
+ BT_HDR* p_buf = (BT_HDR*)osi_malloc(sizeof(BT_HDR));
- p_buf->event = BTA_HF_CLIENT_API_CLOSE_EVT;
- p_buf->layer_specific = handle;
+ p_buf->event = BTA_HF_CLIENT_API_CLOSE_EVT;
+ p_buf->layer_specific = handle;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -202,14 +191,13 @@
* Returns void
*
******************************************************************************/
-void BTA_HfClientAudioOpen(uint16_t handle)
-{
- BT_HDR *p_buf = (BT_HDR *)osi_malloc(sizeof(BT_HDR));
+void BTA_HfClientAudioOpen(uint16_t handle) {
+ BT_HDR* p_buf = (BT_HDR*)osi_malloc(sizeof(BT_HDR));
- p_buf->event = BTA_HF_CLIENT_API_AUDIO_OPEN_EVT;
- p_buf->layer_specific = handle;
+ p_buf->event = BTA_HF_CLIENT_API_AUDIO_OPEN_EVT;
+ p_buf->layer_specific = handle;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -223,14 +211,13 @@
* Returns void
*
******************************************************************************/
-void BTA_HfClientAudioClose(uint16_t handle)
-{
- BT_HDR *p_buf = (BT_HDR *)osi_malloc(sizeof(BT_HDR));
+void BTA_HfClientAudioClose(uint16_t handle) {
+ BT_HDR* p_buf = (BT_HDR*)osi_malloc(sizeof(BT_HDR));
- p_buf->event = BTA_HF_CLIENT_API_AUDIO_CLOSE_EVT;
- p_buf->layer_specific = handle;
+ p_buf->event = BTA_HF_CLIENT_API_AUDIO_CLOSE_EVT;
+ p_buf->layer_specific = handle;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -243,24 +230,24 @@
* Returns void
*
******************************************************************************/
-void BTA_HfClientSendAT(uint16_t handle, tBTA_HF_CLIENT_AT_CMD_TYPE at, uint32_t val1, uint32_t val2, const char *str)
-{
- tBTA_HF_CLIENT_DATA_VAL *p_buf =
- (tBTA_HF_CLIENT_DATA_VAL *)osi_malloc(sizeof(tBTA_HF_CLIENT_DATA_VAL));
+void BTA_HfClientSendAT(uint16_t handle, tBTA_HF_CLIENT_AT_CMD_TYPE at,
+ uint32_t val1, uint32_t val2, const char* str) {
+ tBTA_HF_CLIENT_DATA_VAL* p_buf =
+ (tBTA_HF_CLIENT_DATA_VAL*)osi_malloc(sizeof(tBTA_HF_CLIENT_DATA_VAL));
- p_buf->hdr.event = BTA_HF_CLIENT_SEND_AT_CMD_EVT;
- p_buf->uint8_val = at;
- p_buf->uint32_val1 = val1;
- p_buf->uint32_val2 = val2;
+ p_buf->hdr.event = BTA_HF_CLIENT_SEND_AT_CMD_EVT;
+ p_buf->uint8_val = at;
+ p_buf->uint32_val1 = val1;
+ p_buf->uint32_val2 = val2;
- if (str) {
- strlcpy(p_buf->str, str, BTA_HF_CLIENT_NUMBER_LEN + 1);
- p_buf->str[BTA_HF_CLIENT_NUMBER_LEN] = '\0';
- } else {
- p_buf->str[0] = '\0';
- }
+ if (str) {
+ strlcpy(p_buf->str, str, BTA_HF_CLIENT_NUMBER_LEN + 1);
+ p_buf->str[BTA_HF_CLIENT_NUMBER_LEN] = '\0';
+ } else {
+ p_buf->str[0] = '\0';
+ }
- p_buf->hdr.layer_specific = handle;
+ p_buf->hdr.layer_specific = handle;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
diff --git a/bta/hf_client/bta_hf_client_at.cc b/bta/hf_client/bta_hf_client_at.cc
index 03f31d0..54c3a01 100644
--- a/bta/hf_client/bta_hf_client_at.cc
+++ b/bta/hf_client/bta_hf_client_at.cc
@@ -20,13 +20,13 @@
#define LOG_TAG "bt_hf_client"
#include <errno.h>
-#include <string.h>
#include <stdio.h>
+#include <string.h>
-#include "osi/include/osi.h"
#include "bta_hf_client_api.h"
#include "bta_hf_client_int.h"
#include "osi/include/log.h"
+#include "osi/include/osi.h"
#include "port_api.h"
/* Uncomment to enable AT traffic dumping */
@@ -47,55 +47,65 @@
*
******************************************************************************/
/* BRSF: store received values here */
-extern tBTA_HF_CLIENT_CB bta_hf_client_cb;
+extern tBTA_HF_CLIENT_CB bta_hf_client_cb;
-extern fixed_queue_t *btu_bta_alarm_queue;
+extern fixed_queue_t* btu_bta_alarm_queue;
/******************************************************************************
* SUPPORTED EVENT MESSAGES
******************************************************************************/
/* CIND: supported indicator names */
-#define BTA_HF_CLIENT_INDICATOR_BATTERYCHG "battchg"
-#define BTA_HF_CLIENT_INDICATOR_SIGNAL "signal"
-#define BTA_HF_CLIENT_INDICATOR_SERVICE "service"
-#define BTA_HF_CLIENT_INDICATOR_CALL "call"
-#define BTA_HF_CLIENT_INDICATOR_ROAM "roam"
-#define BTA_HF_CLIENT_INDICATOR_CALLSETUP "callsetup"
-#define BTA_HF_CLIENT_INDICATOR_CALLHELD "callheld"
+#define BTA_HF_CLIENT_INDICATOR_BATTERYCHG "battchg"
+#define BTA_HF_CLIENT_INDICATOR_SIGNAL "signal"
+#define BTA_HF_CLIENT_INDICATOR_SERVICE "service"
+#define BTA_HF_CLIENT_INDICATOR_CALL "call"
+#define BTA_HF_CLIENT_INDICATOR_ROAM "roam"
+#define BTA_HF_CLIENT_INDICATOR_CALLSETUP "callsetup"
+#define BTA_HF_CLIENT_INDICATOR_CALLHELD "callheld"
-#define MIN(a, b) \
- ({ __typeof__(a) _a = (a); __typeof__(b) _b = (b); (_a < _b) ? _a : _b; })
+#define MIN(a, b) \
+ ({ \
+ __typeof__(a) _a = (a); \
+ __typeof__(b) _b = (b); \
+ (_a < _b) ? _a : _b; \
+ })
/* CIND: represents each indicators boundaries */
-typedef struct
-{
- const char* name;
- uint8_t min;
- uint8_t max;
- uint8_t namelen;
+typedef struct {
+ const char* name;
+ uint8_t min;
+ uint8_t max;
+ uint8_t namelen;
} tBTA_HF_CLIENT_INDICATOR;
#define BTA_HF_CLIENT_AT_SUPPORTED_INDICATOR_COUNT 7
/* CIND: storage room for indicators value range and their statuses */
-static const tBTA_HF_CLIENT_INDICATOR bta_hf_client_indicators[BTA_HF_CLIENT_AT_SUPPORTED_INDICATOR_COUNT] =
-{
- /* name | min | max | name length - used by parser */
- {BTA_HF_CLIENT_INDICATOR_BATTERYCHG, 0, 5, sizeof(BTA_HF_CLIENT_INDICATOR_BATTERYCHG)},
- {BTA_HF_CLIENT_INDICATOR_SIGNAL, 0, 5, sizeof(BTA_HF_CLIENT_INDICATOR_SIGNAL)},
- {BTA_HF_CLIENT_INDICATOR_SERVICE, 0, 1, sizeof(BTA_HF_CLIENT_INDICATOR_SERVICE)},
- {BTA_HF_CLIENT_INDICATOR_CALL, 0, 1, sizeof(BTA_HF_CLIENT_INDICATOR_CALL)},
- {BTA_HF_CLIENT_INDICATOR_ROAM, 0, 1, sizeof(BTA_HF_CLIENT_INDICATOR_ROAM)},
- {BTA_HF_CLIENT_INDICATOR_CALLSETUP, 0, 3, sizeof(BTA_HF_CLIENT_INDICATOR_CALLSETUP)},
- {BTA_HF_CLIENT_INDICATOR_CALLHELD, 0, 2, sizeof(BTA_HF_CLIENT_INDICATOR_CALLHELD)}
-};
+static const tBTA_HF_CLIENT_INDICATOR
+ bta_hf_client_indicators[BTA_HF_CLIENT_AT_SUPPORTED_INDICATOR_COUNT] = {
+ /* name | min | max | name length -
+ used by parser */
+ {BTA_HF_CLIENT_INDICATOR_BATTERYCHG, 0, 5,
+ sizeof(BTA_HF_CLIENT_INDICATOR_BATTERYCHG)},
+ {BTA_HF_CLIENT_INDICATOR_SIGNAL, 0, 5,
+ sizeof(BTA_HF_CLIENT_INDICATOR_SIGNAL)},
+ {BTA_HF_CLIENT_INDICATOR_SERVICE, 0, 1,
+ sizeof(BTA_HF_CLIENT_INDICATOR_SERVICE)},
+ {BTA_HF_CLIENT_INDICATOR_CALL, 0, 1,
+ sizeof(BTA_HF_CLIENT_INDICATOR_CALL)},
+ {BTA_HF_CLIENT_INDICATOR_ROAM, 0, 1,
+ sizeof(BTA_HF_CLIENT_INDICATOR_ROAM)},
+ {BTA_HF_CLIENT_INDICATOR_CALLSETUP, 0, 3,
+ sizeof(BTA_HF_CLIENT_INDICATOR_CALLSETUP)},
+ {BTA_HF_CLIENT_INDICATOR_CALLHELD, 0, 2,
+ sizeof(BTA_HF_CLIENT_INDICATOR_CALLHELD)}};
/* +VGM/+VGS - gain min/max values */
-#define BTA_HF_CLIENT_VGS_MIN 0
-#define BTA_HF_CLIENT_VGS_MAX 15
-#define BTA_HF_CLIENT_VGM_MIN 0
-#define BTA_HF_CLIENT_VGM_MAX 15
+#define BTA_HF_CLIENT_VGS_MIN 0
+#define BTA_HF_CLIENT_VGS_MAX 15
+#define BTA_HF_CLIENT_VGM_MIN 0
+#define BTA_HF_CLIENT_VGM_MAX 15
uint32_t service_index = 0;
bool service_availability = true;
@@ -103,48 +113,46 @@
static void bta_hf_client_handle_ok();
-static void bta_hf_client_clear_queued_at(void)
-{
- tBTA_HF_CLIENT_AT_QCMD *cur = bta_hf_client_cb.scb.at_cb.queued_cmd;
- tBTA_HF_CLIENT_AT_QCMD *next;
+static void bta_hf_client_clear_queued_at(void) {
+ tBTA_HF_CLIENT_AT_QCMD* cur = bta_hf_client_cb.scb.at_cb.queued_cmd;
+ tBTA_HF_CLIENT_AT_QCMD* next;
- while (cur != NULL) {
- next = cur->next;
- osi_free(cur);
- cur = next;
- }
+ while (cur != NULL) {
+ next = cur->next;
+ osi_free(cur);
+ cur = next;
+ }
- bta_hf_client_cb.scb.at_cb.queued_cmd = NULL;
+ bta_hf_client_cb.scb.at_cb.queued_cmd = NULL;
}
-static void bta_hf_client_queue_at(tBTA_HF_CLIENT_AT_CMD cmd, const char *buf, uint16_t buf_len)
-{
- tBTA_HF_CLIENT_AT_QCMD *new_cmd =
- (tBTA_HF_CLIENT_AT_QCMD *)osi_malloc(sizeof(tBTA_HF_CLIENT_AT_QCMD));
+static void bta_hf_client_queue_at(tBTA_HF_CLIENT_AT_CMD cmd, const char* buf,
+ uint16_t buf_len) {
+ tBTA_HF_CLIENT_AT_QCMD* new_cmd =
+ (tBTA_HF_CLIENT_AT_QCMD*)osi_malloc(sizeof(tBTA_HF_CLIENT_AT_QCMD));
- APPL_TRACE_DEBUG("%s", __func__);
+ APPL_TRACE_DEBUG("%s", __func__);
- new_cmd->cmd = cmd;
- new_cmd->buf_len = buf_len;
- new_cmd->next = NULL;
- memcpy(new_cmd->buf, buf, buf_len);
+ new_cmd->cmd = cmd;
+ new_cmd->buf_len = buf_len;
+ new_cmd->next = NULL;
+ memcpy(new_cmd->buf, buf, buf_len);
- if (bta_hf_client_cb.scb.at_cb.queued_cmd != NULL) {
- tBTA_HF_CLIENT_AT_QCMD *qcmd = bta_hf_client_cb.scb.at_cb.queued_cmd;
+ if (bta_hf_client_cb.scb.at_cb.queued_cmd != NULL) {
+ tBTA_HF_CLIENT_AT_QCMD* qcmd = bta_hf_client_cb.scb.at_cb.queued_cmd;
- while (qcmd->next != NULL)
- qcmd = qcmd->next;
+ while (qcmd->next != NULL) qcmd = qcmd->next;
- qcmd->next = new_cmd;
- } else {
- bta_hf_client_cb.scb.at_cb.queued_cmd = new_cmd;
- }
+ qcmd->next = new_cmd;
+ } else {
+ bta_hf_client_cb.scb.at_cb.queued_cmd = new_cmd;
+ }
}
-static void bta_hf_client_at_resp_timer_cback(UNUSED_ATTR void *data)
-{
+static void bta_hf_client_at_resp_timer_cback(UNUSED_ATTR void* data) {
if (bta_hf_client_cb.scb.at_cb.current_cmd == BTA_HF_CLIENT_AT_CNUM) {
- LOG_INFO(LOG_TAG, "%s timed out waiting for AT+CNUM response; spoofing OK.", __func__);
+ LOG_INFO(LOG_TAG, "%s timed out waiting for AT+CNUM response; spoofing OK.",
+ __func__);
bta_hf_client_handle_ok();
} else {
APPL_TRACE_ERROR("HFPClient: AT response timeout, disconnecting");
@@ -152,428 +160,374 @@
}
}
-static void bta_hf_client_start_at_resp_timer(void)
-{
- alarm_set_on_queue(bta_hf_client_cb.scb.at_cb.resp_timer,
- BTA_HF_CLIENT_AT_TIMEOUT,
- bta_hf_client_at_resp_timer_cback,
- NULL,
- btu_bta_alarm_queue);
+static void bta_hf_client_start_at_resp_timer(void) {
+ alarm_set_on_queue(
+ bta_hf_client_cb.scb.at_cb.resp_timer, BTA_HF_CLIENT_AT_TIMEOUT,
+ bta_hf_client_at_resp_timer_cback, NULL, btu_bta_alarm_queue);
}
-static void bta_hf_client_stop_at_resp_timer(void)
-{
- alarm_cancel(bta_hf_client_cb.scb.at_cb.resp_timer);
+static void bta_hf_client_stop_at_resp_timer(void) {
+ alarm_cancel(bta_hf_client_cb.scb.at_cb.resp_timer);
}
-static void bta_hf_client_send_at(tBTA_HF_CLIENT_AT_CMD cmd, const char *buf,
- uint16_t buf_len)
-{
- if ((bta_hf_client_cb.scb.at_cb.current_cmd == BTA_HF_CLIENT_AT_NONE ||
- bta_hf_client_cb.scb.svc_conn == false) &&
- !alarm_is_scheduled(bta_hf_client_cb.scb.at_cb.hold_timer))
- {
- uint16_t len;
+static void bta_hf_client_send_at(tBTA_HF_CLIENT_AT_CMD cmd, const char* buf,
+ uint16_t buf_len) {
+ if ((bta_hf_client_cb.scb.at_cb.current_cmd == BTA_HF_CLIENT_AT_NONE ||
+ bta_hf_client_cb.scb.svc_conn == false) &&
+ !alarm_is_scheduled(bta_hf_client_cb.scb.at_cb.hold_timer)) {
+ uint16_t len;
#ifdef BTA_HF_CLIENT_AT_DUMP
- APPL_TRACE_DEBUG("%s %.*s", __func__, buf_len - 1, buf);
+ APPL_TRACE_DEBUG("%s %.*s", __func__, buf_len - 1, buf);
#endif
- bta_hf_client_cb.scb.at_cb.current_cmd = cmd;
- /* Generate fake responses for these because they won't reliably work */
- if (!service_availability &&
- (cmd == BTA_HF_CLIENT_AT_CNUM || cmd == BTA_HF_CLIENT_AT_COPS))
- {
- APPL_TRACE_WARNING("%s: No service, skipping %d command", __func__, cmd);
- bta_hf_client_handle_ok();
- return;
- }
-
- PORT_WriteData(bta_hf_client_cb.scb.conn_handle, buf, buf_len, &len);
-
- bta_hf_client_start_at_resp_timer();
-
- return;
+ bta_hf_client_cb.scb.at_cb.current_cmd = cmd;
+ /* Generate fake responses for these because they won't reliably work */
+ if (!service_availability &&
+ (cmd == BTA_HF_CLIENT_AT_CNUM || cmd == BTA_HF_CLIENT_AT_COPS)) {
+ APPL_TRACE_WARNING("%s: No service, skipping %d command", __func__, cmd);
+ bta_hf_client_handle_ok();
+ return;
}
- bta_hf_client_queue_at(cmd, buf, buf_len);
+ PORT_WriteData(bta_hf_client_cb.scb.conn_handle, buf, buf_len, &len);
+
+ bta_hf_client_start_at_resp_timer();
+
+ return;
+ }
+
+ bta_hf_client_queue_at(cmd, buf, buf_len);
}
-static void bta_hf_client_send_queued_at(void)
-{
- tBTA_HF_CLIENT_AT_QCMD *cur = bta_hf_client_cb.scb.at_cb.queued_cmd;
+static void bta_hf_client_send_queued_at(void) {
+ tBTA_HF_CLIENT_AT_QCMD* cur = bta_hf_client_cb.scb.at_cb.queued_cmd;
- APPL_TRACE_DEBUG("%s", __func__);
+ APPL_TRACE_DEBUG("%s", __func__);
- if (cur != NULL)
- {
- bta_hf_client_cb.scb.at_cb.queued_cmd = cur->next;
+ if (cur != NULL) {
+ bta_hf_client_cb.scb.at_cb.queued_cmd = cur->next;
- bta_hf_client_send_at(cur->cmd, cur->buf, cur->buf_len);
+ bta_hf_client_send_at(cur->cmd, cur->buf, cur->buf_len);
- osi_free(cur);
- }
+ osi_free(cur);
+ }
}
-static void bta_hf_client_at_hold_timer_cback(UNUSED_ATTR void *data)
-{
- APPL_TRACE_DEBUG("%s", __func__);
- bta_hf_client_send_queued_at();
+static void bta_hf_client_at_hold_timer_cback(UNUSED_ATTR void* data) {
+ APPL_TRACE_DEBUG("%s", __func__);
+ bta_hf_client_send_queued_at();
}
-static void bta_hf_client_stop_at_hold_timer(void)
-{
- APPL_TRACE_DEBUG("%s", __func__);
- alarm_cancel(bta_hf_client_cb.scb.at_cb.hold_timer);
+static void bta_hf_client_stop_at_hold_timer(void) {
+ APPL_TRACE_DEBUG("%s", __func__);
+ alarm_cancel(bta_hf_client_cb.scb.at_cb.hold_timer);
}
-static void bta_hf_client_start_at_hold_timer(void)
-{
- APPL_TRACE_DEBUG("%s", __func__);
- alarm_set_on_queue(bta_hf_client_cb.scb.at_cb.hold_timer,
- BTA_HF_CLIENT_AT_HOLD_TIMEOUT,
- bta_hf_client_at_hold_timer_cback,
- NULL,
- btu_bta_alarm_queue);
+static void bta_hf_client_start_at_hold_timer(void) {
+ APPL_TRACE_DEBUG("%s", __func__);
+ alarm_set_on_queue(
+ bta_hf_client_cb.scb.at_cb.hold_timer, BTA_HF_CLIENT_AT_HOLD_TIMEOUT,
+ bta_hf_client_at_hold_timer_cback, NULL, btu_bta_alarm_queue);
}
/******************************************************************************
*
* COMMON AT EVENT HANDLING funcS
*
- * Receives data (strings, ints, etc.) from the parser and processes this data.
+ * Receives data (strings, ints, etc.) from the parser and processes this
+ *data.
* No buffer parsing is being done here.
******************************************************************************/
-static void bta_hf_client_handle_ok()
-{
- APPL_TRACE_DEBUG("%s", __func__);
+static void bta_hf_client_handle_ok() {
+ APPL_TRACE_DEBUG("%s", __func__);
- bta_hf_client_stop_at_resp_timer();
+ bta_hf_client_stop_at_resp_timer();
- if (!bta_hf_client_cb.scb.svc_conn)
- {
- bta_hf_client_slc_seq(false);
- return;
- }
+ if (!bta_hf_client_cb.scb.svc_conn) {
+ bta_hf_client_slc_seq(false);
+ return;
+ }
- switch(bta_hf_client_cb.scb.at_cb.current_cmd)
- {
- case BTA_HF_CLIENT_AT_BIA:
- case BTA_HF_CLIENT_AT_BCC:
- break;
- case BTA_HF_CLIENT_AT_BCS:
- bta_hf_client_start_at_hold_timer();
- bta_hf_client_cb.scb.at_cb.current_cmd = BTA_HF_CLIENT_AT_NONE;
- return;
- case BTA_HF_CLIENT_AT_CLIP: //last cmd is post slc seq
- if (bta_hf_client_cb.scb.send_at_reply == false)
- {
- bta_hf_client_cb.scb.send_at_reply = true;
- }
- break;
- case BTA_HF_CLIENT_AT_NONE:
- bta_hf_client_stop_at_hold_timer();
- break;
- default:
- if (bta_hf_client_cb.scb.send_at_reply)
- {
- bta_hf_client_at_result(BTA_HF_CLIENT_AT_RESULT_OK, 0);
- }
- break;
- }
+ switch (bta_hf_client_cb.scb.at_cb.current_cmd) {
+ case BTA_HF_CLIENT_AT_BIA:
+ case BTA_HF_CLIENT_AT_BCC:
+ break;
+ case BTA_HF_CLIENT_AT_BCS:
+ bta_hf_client_start_at_hold_timer();
+ bta_hf_client_cb.scb.at_cb.current_cmd = BTA_HF_CLIENT_AT_NONE;
+ return;
+ case BTA_HF_CLIENT_AT_CLIP: // last cmd is post slc seq
+ if (bta_hf_client_cb.scb.send_at_reply == false) {
+ bta_hf_client_cb.scb.send_at_reply = true;
+ }
+ break;
+ case BTA_HF_CLIENT_AT_NONE:
+ bta_hf_client_stop_at_hold_timer();
+ break;
+ default:
+ if (bta_hf_client_cb.scb.send_at_reply) {
+ bta_hf_client_at_result(BTA_HF_CLIENT_AT_RESULT_OK, 0);
+ }
+ break;
+ }
- bta_hf_client_cb.scb.at_cb.current_cmd = BTA_HF_CLIENT_AT_NONE;
+ bta_hf_client_cb.scb.at_cb.current_cmd = BTA_HF_CLIENT_AT_NONE;
- bta_hf_client_send_queued_at();
+ bta_hf_client_send_queued_at();
}
-static void bta_hf_client_handle_error(tBTA_HF_CLIENT_AT_RESULT_TYPE type, uint16_t cme)
-{
- APPL_TRACE_DEBUG("%s %u %u", __func__, type, cme);
+static void bta_hf_client_handle_error(tBTA_HF_CLIENT_AT_RESULT_TYPE type,
+ uint16_t cme) {
+ APPL_TRACE_DEBUG("%s %u %u", __func__, type, cme);
- bta_hf_client_stop_at_resp_timer();
+ bta_hf_client_stop_at_resp_timer();
- if (!bta_hf_client_cb.scb.svc_conn)
- {
- bta_hf_client_slc_seq(true);
- return;
- }
+ if (!bta_hf_client_cb.scb.svc_conn) {
+ bta_hf_client_slc_seq(true);
+ return;
+ }
- switch(bta_hf_client_cb.scb.at_cb.current_cmd)
- {
- case BTA_HF_CLIENT_AT_BIA:
- break;
- case BTA_HF_CLIENT_AT_BCC:
- case BTA_HF_CLIENT_AT_BCS:
- bta_hf_client_cback_sco(BTA_HF_CLIENT_AUDIO_CLOSE_EVT);
- break;
- case BTA_HF_CLIENT_AT_CLIP: //last cmd is post slc seq
- if (bta_hf_client_cb.scb.send_at_reply == false)
- {
- bta_hf_client_cb.scb.send_at_reply = true;
- }
- break;
- default:
- if (bta_hf_client_cb.scb.send_at_reply)
- {
- bta_hf_client_at_result(type, cme);
- }
- break;
- }
+ switch (bta_hf_client_cb.scb.at_cb.current_cmd) {
+ case BTA_HF_CLIENT_AT_BIA:
+ break;
+ case BTA_HF_CLIENT_AT_BCC:
+ case BTA_HF_CLIENT_AT_BCS:
+ bta_hf_client_cback_sco(BTA_HF_CLIENT_AUDIO_CLOSE_EVT);
+ break;
+ case BTA_HF_CLIENT_AT_CLIP: // last cmd is post slc seq
+ if (bta_hf_client_cb.scb.send_at_reply == false) {
+ bta_hf_client_cb.scb.send_at_reply = true;
+ }
+ break;
+ default:
+ if (bta_hf_client_cb.scb.send_at_reply) {
+ bta_hf_client_at_result(type, cme);
+ }
+ break;
+ }
- bta_hf_client_cb.scb.at_cb.current_cmd = BTA_HF_CLIENT_AT_NONE;
+ bta_hf_client_cb.scb.at_cb.current_cmd = BTA_HF_CLIENT_AT_NONE;
- bta_hf_client_send_queued_at();
+ bta_hf_client_send_queued_at();
}
-static void bta_hf_client_handle_ring()
-{
- APPL_TRACE_DEBUG("%s", __func__);
- bta_hf_client_evt_val(BTA_HF_CLIENT_RING_INDICATION,0);
+static void bta_hf_client_handle_ring() {
+ APPL_TRACE_DEBUG("%s", __func__);
+ bta_hf_client_evt_val(BTA_HF_CLIENT_RING_INDICATION, 0);
}
-static void bta_hf_client_handle_brsf(uint32_t value)
-{
- APPL_TRACE_DEBUG("%s 0x%x", __func__, value);
- bta_hf_client_cb.scb.peer_features = value;
+static void bta_hf_client_handle_brsf(uint32_t value) {
+ APPL_TRACE_DEBUG("%s 0x%x", __func__, value);
+ bta_hf_client_cb.scb.peer_features = value;
}
-/* handles a single indicator descriptor - registers it for value changing events */
-static void bta_hf_client_handle_cind_list_item(char *name, uint32_t min, uint32_t max, uint32_t index)
-{
+/* handles a single indicator descriptor - registers it for value changing
+ * events */
+static void bta_hf_client_handle_cind_list_item(char* name, uint32_t min,
+ uint32_t max, uint32_t index) {
+ uint8_t i = 0;
- uint8_t i = 0;
+ APPL_TRACE_DEBUG("%s %lu.%s <%lu:%lu>", __func__, index, name, min, max);
- APPL_TRACE_DEBUG("%s %lu.%s <%lu:%lu>", __func__, index, name, min, max);
-
- /* look for a matching indicator on list of supported ones */
- for(i = 0; i < BTA_HF_CLIENT_AT_SUPPORTED_INDICATOR_COUNT; i++)
- {
- if (strcmp(name,BTA_HF_CLIENT_INDICATOR_SERVICE) == 0)
- {
- service_index = index;
- }
- /* look for a match - search one sign further than indicators name to check for string end */
- /* It will distinguish 'callheld' which could be matched by strncmp as 'call'. */
- if (strncmp(name, bta_hf_client_indicators[i].name, bta_hf_client_indicators[i].namelen) != 0)
- continue;
-
- /* index - enumerates value position in the incoming sequence */
- /* if name matches one of the known indicators, add its incoming position */
- /* to lookup table for easy value->indicator matching later, when only values come */
- bta_hf_client_cb.scb.at_cb.indicator_lookup[index] = i;
-
- return;
+ /* look for a matching indicator on list of supported ones */
+ for (i = 0; i < BTA_HF_CLIENT_AT_SUPPORTED_INDICATOR_COUNT; i++) {
+ if (strcmp(name, BTA_HF_CLIENT_INDICATOR_SERVICE) == 0) {
+ service_index = index;
}
+ /* look for a match - search one sign further than indicators name to check
+ * for string end */
+ /* It will distinguish 'callheld' which could be matched by strncmp as
+ * 'call'. */
+ if (strncmp(name, bta_hf_client_indicators[i].name,
+ bta_hf_client_indicators[i].namelen) != 0)
+ continue;
+
+ /* index - enumerates value position in the incoming sequence */
+ /* if name matches one of the known indicators, add its incoming position */
+ /* to lookup table for easy value->indicator matching later, when only
+ * values come */
+ bta_hf_client_cb.scb.at_cb.indicator_lookup[index] = i;
+
+ return;
+ }
}
-static void bta_hf_client_handle_cind_value(uint32_t index, uint32_t value)
-{
- APPL_TRACE_DEBUG("%s index: %u value: %u", __func__, index, value);
+static void bta_hf_client_handle_cind_value(uint32_t index, uint32_t value) {
+ APPL_TRACE_DEBUG("%s index: %u value: %u", __func__, index, value);
- if (index >= BTA_HF_CLIENT_AT_INDICATOR_COUNT)
- {
- return;
+ if (index >= BTA_HF_CLIENT_AT_INDICATOR_COUNT) {
+ return;
+ }
+
+ if (service_index == index) {
+ if (value == 0) {
+ service_availability = false;
+ } else {
+ service_availability = true;
+ }
+ }
+ if (bta_hf_client_cb.scb.at_cb.indicator_lookup[index] == -1) {
+ return;
+ }
+
+ /* get the real array index from lookup table */
+ index = bta_hf_client_cb.scb.at_cb.indicator_lookup[index];
+
+ /* Ignore out of range values */
+ if (value > bta_hf_client_indicators[index].max ||
+ value < bta_hf_client_indicators[index].min) {
+ return;
+ }
+
+ /* tBTA_HF_CLIENT_IND_TYPE match index in bta_hf_client_indicators */
+ bta_hf_client_ind(index, value);
+}
+
+static void bta_hf_client_handle_chld(uint32_t mask) {
+ APPL_TRACE_DEBUG("%s 0x%x", __func__, mask);
+
+ bta_hf_client_cb.scb.chld_features |= mask;
+}
+
+static void bta_hf_client_handle_ciev(uint32_t index, uint32_t value) {
+ int8_t realind = -1;
+
+ APPL_TRACE_DEBUG("%s index: %u value: %u", __func__, index, value);
+
+ if (index == 0 || index > BTA_HF_CLIENT_AT_INDICATOR_COUNT) {
+ return;
+ }
+
+ if (service_index == index - 1) {
+ service_availability = value == 0 ? false : true;
+ }
+
+ realind = bta_hf_client_cb.scb.at_cb.indicator_lookup[index - 1];
+
+ if (realind >= 0 && realind < BTA_HF_CLIENT_AT_SUPPORTED_INDICATOR_COUNT) {
+ /* get the real in-array index from lookup table by index it comes at */
+ /* if there is no bug it should automatically be correctly calculated */
+ if (value > bta_hf_client_indicators[realind].max ||
+ value < bta_hf_client_indicators[realind].min) {
+ return;
}
- if (service_index == index)
- {
- if (value == 0)
- {
- service_availability = false;
- }
- else
- {
- service_availability = true;
- }
- }
- if (bta_hf_client_cb.scb.at_cb.indicator_lookup[index] == -1)
- {
- return;
- }
-
- /* get the real array index from lookup table */
- index = bta_hf_client_cb.scb.at_cb.indicator_lookup[index];
-
- /* Ignore out of range values */
- if(value > bta_hf_client_indicators[index].max ||
- value < bta_hf_client_indicators[index].min)
- {
- return;
+ /* update service availability on +ciev from AG. */
+ if (service_index == (index - 1)) {
+ if (value == 1) {
+ service_availability = true;
+ } else {
+ service_availability = false;
+ }
}
/* tBTA_HF_CLIENT_IND_TYPE match index in bta_hf_client_indicators */
- bta_hf_client_ind(index, value);
+ bta_hf_client_ind(realind, value);
+ }
}
-static void bta_hf_client_handle_chld(uint32_t mask)
-{
- APPL_TRACE_DEBUG("%s 0x%x", __func__, mask);
+static void bta_hf_client_handle_bcs(uint32_t codec) {
+ APPL_TRACE_DEBUG("%s %u", __func__, codec);
- bta_hf_client_cb.scb.chld_features |= mask;
+ if (codec == BTM_SCO_CODEC_CVSD ||
+ (codec == BTM_SCO_CODEC_MSBC && bta_hf_client_cb.msbc_enabled == true)) {
+ bta_hf_client_cb.scb.negotiated_codec = codec;
+ bta_hf_client_send_at_bcs(codec);
+ } else {
+ bta_hf_client_cb.scb.negotiated_codec = BTM_SCO_CODEC_CVSD;
+ bta_hf_client_send_at_bac();
+ }
}
-static void bta_hf_client_handle_ciev(uint32_t index, uint32_t value)
-{
- int8_t realind = -1;
+static void bta_hf_client_handle_bsir(uint32_t provided) {
+ APPL_TRACE_DEBUG("%s %u", __func__, provided);
- APPL_TRACE_DEBUG("%s index: %u value: %u", __func__, index, value);
-
- if(index == 0 || index > BTA_HF_CLIENT_AT_INDICATOR_COUNT)
- {
- return;
- }
-
- if (service_index == index - 1)
- {
- service_availability = value == 0 ? false : true;
- }
-
- realind = bta_hf_client_cb.scb.at_cb.indicator_lookup[index - 1];
-
- if(realind >= 0 && realind < BTA_HF_CLIENT_AT_SUPPORTED_INDICATOR_COUNT)
- {
- /* get the real in-array index from lookup table by index it comes at */
- /* if there is no bug it should automatically be correctly calculated */
- if(value > bta_hf_client_indicators[realind].max || value < bta_hf_client_indicators[realind].min)
- {
- return;
- }
-
- /* update service availability on +ciev from AG. */
- if (service_index == (index - 1))
- {
- if (value == 1)
- {
- service_availability = true;
- }
- else
- {
- service_availability = false;
- }
- }
-
- /* tBTA_HF_CLIENT_IND_TYPE match index in bta_hf_client_indicators */
- bta_hf_client_ind(realind, value);
- }
+ bta_hf_client_evt_val(BTA_HF_CLIENT_BSIR_EVT, provided);
}
-static void bta_hf_client_handle_bcs(uint32_t codec)
-{
- APPL_TRACE_DEBUG("%s %u", __func__, codec);
-
- if (codec == BTM_SCO_CODEC_CVSD ||
- (codec == BTM_SCO_CODEC_MSBC && bta_hf_client_cb.msbc_enabled == true))
- {
- bta_hf_client_cb.scb.negotiated_codec = codec;
- bta_hf_client_send_at_bcs(codec);
- }
- else
- {
- bta_hf_client_cb.scb.negotiated_codec = BTM_SCO_CODEC_CVSD;
- bta_hf_client_send_at_bac();
- }
+static void bta_hf_client_handle_cmeerror(uint32_t code) {
+ bta_hf_client_handle_error(BTA_HF_CLIENT_AT_RESULT_CME, code);
}
-static void bta_hf_client_handle_bsir(uint32_t provided)
-{
- APPL_TRACE_DEBUG("%s %u", __func__, provided);
+static void bta_hf_client_handle_vgm(uint32_t value) {
+ APPL_TRACE_DEBUG("%s %lu", __func__, value);
- bta_hf_client_evt_val(BTA_HF_CLIENT_BSIR_EVT, provided);
+ if (value <= BTA_HF_CLIENT_VGM_MAX) {
+ bta_hf_client_evt_val(BTA_HF_CLIENT_MIC_EVT, value);
+ }
}
-static void bta_hf_client_handle_cmeerror(uint32_t code)
-{
- bta_hf_client_handle_error(BTA_HF_CLIENT_AT_RESULT_CME, code);
+static void bta_hf_client_handle_vgs(uint32_t value) {
+ APPL_TRACE_DEBUG("%s %lu", __func__, value);
+
+ if (value <= BTA_HF_CLIENT_VGS_MAX) {
+ bta_hf_client_evt_val(BTA_HF_CLIENT_SPK_EVT, value);
+ }
}
-static void bta_hf_client_handle_vgm(uint32_t value)
-{
- APPL_TRACE_DEBUG("%s %lu", __func__, value);
+static void bta_hf_client_handle_bvra(uint32_t value) {
+ APPL_TRACE_DEBUG("%s %lu", __func__, value);
- if(value <= BTA_HF_CLIENT_VGM_MAX)
- {
- bta_hf_client_evt_val(BTA_HF_CLIENT_MIC_EVT, value);
- }
+ if (value > 1) {
+ return;
+ }
+
+ bta_hf_client_evt_val(BTA_HF_CLIENT_VOICE_REC_EVT, value);
}
-static void bta_hf_client_handle_vgs(uint32_t value)
-{
- APPL_TRACE_DEBUG("%s %lu", __func__, value);
+static void bta_hf_client_handle_clip(char* numstr, uint32_t type) {
+ APPL_TRACE_DEBUG("%s %u %s", __func__, type, numstr);
- if(value <= BTA_HF_CLIENT_VGS_MAX)
- {
- bta_hf_client_evt_val(BTA_HF_CLIENT_SPK_EVT, value);
- }
+ bta_hf_client_clip(numstr);
}
-static void bta_hf_client_handle_bvra(uint32_t value)
-{
- APPL_TRACE_DEBUG("%s %lu", __func__, value);
+static void bta_hf_client_handle_ccwa(char* numstr, uint32_t type) {
+ APPL_TRACE_DEBUG("%s %u %s", __func__, type, numstr);
- if (value > 1)
- {
- return;
- }
-
- bta_hf_client_evt_val(BTA_HF_CLIENT_VOICE_REC_EVT, value);
+ bta_hf_client_ccwa(numstr);
}
-static void bta_hf_client_handle_clip(char *numstr, uint32_t type)
-{
- APPL_TRACE_DEBUG("%s %u %s", __func__, type, numstr);
+static void bta_hf_client_handle_cops(char* opstr, uint32_t mode) {
+ APPL_TRACE_DEBUG("%s %u %s", __func__, mode, opstr);
- bta_hf_client_clip(numstr);
+ bta_hf_client_operator_name(opstr);
}
-static void bta_hf_client_handle_ccwa(char *numstr, uint32_t type)
-{
- APPL_TRACE_DEBUG("%s %u %s", __func__, type, numstr);
+static void bta_hf_client_handle_binp(char* numstr) {
+ APPL_TRACE_DEBUG("%s %s", __func__, numstr);
- bta_hf_client_ccwa(numstr);
+ bta_hf_client_binp(numstr);
}
-static void bta_hf_client_handle_cops(char *opstr, uint32_t mode)
-{
- APPL_TRACE_DEBUG("%s %u %s", __func__, mode, opstr);
+static void bta_hf_client_handle_clcc(uint16_t idx, uint16_t dir,
+ uint16_t status, uint16_t mode,
+ uint16_t mpty, char* numstr,
+ uint16_t type) {
+ APPL_TRACE_DEBUG("%s idx: %u dir: %u status: %u mode: %u mpty: %u", __func__,
+ idx, dir, status, mode, mpty);
- bta_hf_client_operator_name(opstr);
+ if (numstr) {
+ APPL_TRACE_DEBUG("%s number: %s type: %u", __func__, numstr, type);
+ }
+
+ bta_hf_client_clcc(idx, dir, status, mpty, numstr);
}
-static void bta_hf_client_handle_binp(char *numstr)
-{
- APPL_TRACE_DEBUG("%s %s", __func__, numstr);
+static void bta_hf_client_handle_cnum(char* numstr, uint16_t type,
+ uint16_t service) {
+ APPL_TRACE_DEBUG("%s number: %s type: %u service: %u", __func__, numstr, type,
+ service);
- bta_hf_client_binp(numstr);
+ /* TODO: should number be modified according to type? */
+ bta_hf_client_cnum(numstr, service);
}
-static void bta_hf_client_handle_clcc(uint16_t idx, uint16_t dir, uint16_t status, uint16_t mode, uint16_t mpty, char *numstr, uint16_t type)
-{
- APPL_TRACE_DEBUG("%s idx: %u dir: %u status: %u mode: %u mpty: %u",
- __func__, idx, dir, status, mode, mpty);
+static void bta_hf_client_handle_btrh(uint16_t code) {
+ APPL_TRACE_DEBUG("%s %lu", __func__, code);
- if (numstr)
- {
- APPL_TRACE_DEBUG("%s number: %s type: %u", __func__, numstr, type);
- }
-
- bta_hf_client_clcc(idx, dir, status, mpty, numstr);
-}
-
-static void bta_hf_client_handle_cnum( char *numstr, uint16_t type, uint16_t service)
-{
- APPL_TRACE_DEBUG("%s number: %s type: %u service: %u", __func__, numstr, type, service);
-
- /* TODO: should number be modified according to type? */
- bta_hf_client_cnum(numstr, service);
-}
-
-static void bta_hf_client_handle_btrh( uint16_t code)
-{
- APPL_TRACE_DEBUG("%s %lu", __func__, code);
-
- bta_hf_client_evt_val(BTA_HF_CLIENT_BTRH_EVT, code);
+ bta_hf_client_evt_val(BTA_HF_CLIENT_BTRH_EVT, code);
}
/******************************************************************************
@@ -583,722 +537,636 @@
******************************************************************************/
/* Check if prefix match and skip spaces if any */
-#define AT_CHECK_EVENT(buf, event) \
-do { \
+#define AT_CHECK_EVENT(buf, event) \
+ do { \
if (strncmp("\r\n" event, buf, sizeof("\r\n" event) - 1) != 0) return buf; \
- (buf) += sizeof("\r\n" event) - 1; \
- while (*(buf) == ' ') (buf)++; \
-} while (0)
+ (buf) += sizeof("\r\n" event) - 1; \
+ while (*(buf) == ' ') (buf)++; \
+ } while (0)
/* check for <cr><lf> and forward buffer if match */
-#define AT_CHECK_RN(buf) \
-do { \
- if (strncmp("\r\n", buf, sizeof("\r\n") - 1) != 0) { \
- APPL_TRACE_DEBUG("%s missing end <cr><lf>", __func__); \
- return NULL; \
- } \
- (buf) += sizeof("\r\n") - 1; \
-} while (0)
+#define AT_CHECK_RN(buf) \
+ do { \
+ if (strncmp("\r\n", buf, sizeof("\r\n") - 1) != 0) { \
+ APPL_TRACE_DEBUG("%s missing end <cr><lf>", __func__); \
+ return NULL; \
+ } \
+ (buf) += sizeof("\r\n") - 1; \
+ } while (0)
/* skip rest of AT string up to <cr> */
-#define AT_SKIP_REST(buf) \
-do { \
- while(*(buf) != '\r') (buf)++; \
-} while (0)
+#define AT_SKIP_REST(buf) \
+ do { \
+ while (*(buf) != '\r') (buf)++; \
+ } while (0)
-static char *bta_hf_client_parse_ok(char *buffer)
-{
- AT_CHECK_EVENT(buffer, "OK");
- AT_CHECK_RN(buffer);
+static char* bta_hf_client_parse_ok(char* buffer) {
+ AT_CHECK_EVENT(buffer, "OK");
+ AT_CHECK_RN(buffer);
- bta_hf_client_handle_ok();
+ bta_hf_client_handle_ok();
- return buffer;
+ return buffer;
}
-static char *bta_hf_client_parse_error(char *buffer)
-{
- AT_CHECK_EVENT(buffer, "ERROR");
- AT_CHECK_RN(buffer);
+static char* bta_hf_client_parse_error(char* buffer) {
+ AT_CHECK_EVENT(buffer, "ERROR");
+ AT_CHECK_RN(buffer);
- bta_hf_client_handle_error(BTA_HF_CLIENT_AT_RESULT_ERROR, 0);
+ bta_hf_client_handle_error(BTA_HF_CLIENT_AT_RESULT_ERROR, 0);
- return buffer;
+ return buffer;
}
-static char *bta_hf_client_parse_ring(char *buffer)
-{
- AT_CHECK_EVENT(buffer, "RING");
- AT_CHECK_RN(buffer);
+static char* bta_hf_client_parse_ring(char* buffer) {
+ AT_CHECK_EVENT(buffer, "RING");
+ AT_CHECK_RN(buffer);
- bta_hf_client_handle_ring();
+ bta_hf_client_handle_ring();
- return buffer;
+ return buffer;
}
/* generic uint32 parser */
-static char *bta_hf_client_parse_uint32(char *buffer, void (*handler_callback)(uint32_t))
-{
- uint32_t value;
- int res;
- int offset;
+static char* bta_hf_client_parse_uint32(char* buffer,
+ void (*handler_callback)(uint32_t)) {
+ uint32_t value;
+ int res;
+ int offset;
- res = sscanf(buffer, "%u%n", &value, &offset);
- if (res < 1)
- {
- return NULL;
- }
+ res = sscanf(buffer, "%u%n", &value, &offset);
+ if (res < 1) {
+ return NULL;
+ }
+
+ buffer += offset;
+
+ AT_CHECK_RN(buffer);
+
+ handler_callback(value);
+ return buffer;
+}
+
+static char* bta_hf_client_parse_brsf(char* buffer) {
+ AT_CHECK_EVENT(buffer, "+BRSF:");
+
+ return bta_hf_client_parse_uint32(buffer, bta_hf_client_handle_brsf);
+}
+
+static char* bta_hf_client_parse_cind_values(char* buffer) {
+ /* value and its position */
+ uint16_t index = 0;
+ uint32_t value = 0;
+
+ int offset;
+ int res;
+
+ while ((res = sscanf(buffer, "%u%n", &value, &offset)) > 0) {
+ /* decides if its valid index and value, if yes stores it */
+ bta_hf_client_handle_cind_value(index, value);
buffer += offset;
+ /* check if more values are present */
+ if (*buffer != ',') {
+ break;
+ }
+
+ index++;
+ buffer++;
+ }
+
+ if (res > 0) {
AT_CHECK_RN(buffer);
-
- handler_callback(value);
return buffer;
+ }
+
+ return NULL;
}
-static char *bta_hf_client_parse_brsf(char *buffer)
-{
- AT_CHECK_EVENT(buffer, "+BRSF:");
+static char* bta_hf_client_parse_cind_list(char* buffer) {
+ int offset = 0;
+ char name[129];
+ uint32_t min, max;
+ uint32_t index = 0;
+ int res;
- return bta_hf_client_parse_uint32(buffer, bta_hf_client_handle_brsf);
-}
-
-static char *bta_hf_client_parse_cind_values(char *buffer)
-{
- /* value and its position */
- uint16_t index = 0;
- uint32_t value = 0;
-
- int offset;
- int res;
-
- while((res = sscanf(buffer, "%u%n", &value, &offset)) > 0)
- {
- /* decides if its valid index and value, if yes stores it */
- bta_hf_client_handle_cind_value(index, value);
-
- buffer += offset;
-
- /* check if more values are present */
- if (*buffer != ',')
- {
- break;
- }
-
- index++;
- buffer++;
+ while ((res = sscanf(buffer, "(\"%128[^\"]\",(%u%*[-,]%u))%n", name, &min,
+ &max, &offset)) > 2) {
+ bta_hf_client_handle_cind_list_item(name, min, max, index);
+ if (offset == 0) {
+ APPL_TRACE_ERROR("%s: Format Error %s", __func__, buffer);
+ return NULL;
}
- if (res > 0)
- {
- AT_CHECK_RN(buffer);
- return buffer;
- }
+ buffer += offset;
+ index++;
- return NULL;
-}
-
-static char *bta_hf_client_parse_cind_list(char *buffer)
-{
- int offset = 0;
- char name[129];
- uint32_t min, max;
- uint32_t index = 0;
- int res;
-
- while ((res = sscanf(buffer, "(\"%128[^\"]\",(%u%*[-,]%u))%n", name, &min, &max, &offset)) > 2)
- {
- bta_hf_client_handle_cind_list_item(name, min, max, index);
- if (offset == 0)
- {
- APPL_TRACE_ERROR("%s: Format Error %s", __func__, buffer);
- return NULL;
- }
-
- buffer += offset;
- index++;
-
- if (*buffer != ',')
- {
- break;
- }
-
- buffer++;
- }
-
- if (res > 2)
- {
- AT_CHECK_RN(buffer);
- return buffer;
- }
-
- return NULL;
-}
-
-static char *bta_hf_client_parse_cind(char *buffer)
-{
- AT_CHECK_EVENT(buffer, "+CIND:");
-
- if(*buffer == '(')
- return bta_hf_client_parse_cind_list(buffer);
-
- return bta_hf_client_parse_cind_values(buffer);
-}
-
-static char *bta_hf_client_parse_chld(char *buffer)
-{
- AT_CHECK_EVENT(buffer, "+CHLD:");
-
- if (*buffer != '(')
- {
- return NULL;
+ if (*buffer != ',') {
+ break;
}
buffer++;
+ }
- while(*buffer != '\0')
- {
- if(strncmp("0",buffer, 1) == 0)
- {
- bta_hf_client_handle_chld(BTA_HF_CLIENT_CHLD_REL);
- buffer++;
- }
- else if(strncmp("1x",buffer, 2) == 0)
- {
- bta_hf_client_handle_chld(BTA_HF_CLIENT_CHLD_REL_X);
- buffer += 2;
- }
- else if(strncmp("1",buffer, 1) == 0)
- {
- bta_hf_client_handle_chld(BTA_HF_CLIENT_CHLD_REL_ACC);
- buffer++;
- }
- else if(strncmp("2x",buffer, 2) == 0)
- {
- bta_hf_client_handle_chld(BTA_HF_CLIENT_CHLD_PRIV_X);
- buffer += 2;
- }
- else if(strncmp("2",buffer, 1) == 0)
- {
- bta_hf_client_handle_chld(BTA_HF_CLIENT_CHLD_HOLD_ACC);
- buffer++;
- }
- else if(strncmp("3",buffer, 1) == 0)
- {
- bta_hf_client_handle_chld(BTA_HF_CLIENT_CHLD_MERGE);
- buffer++;
- }
- else if(strncmp("4",buffer, 1) == 0)
- {
- bta_hf_client_handle_chld(BTA_HF_CLIENT_CHLD_MERGE_DETACH);
- buffer++;
- }
- else
- {
- return NULL;
- }
-
- if (*buffer == ',')
- {
- buffer++;
- continue;
- }
-
- if (*buffer == ')')
- {
- buffer++;
- break;
- }
-
- return NULL;
- }
-
+ if (res > 2) {
AT_CHECK_RN(buffer);
-
return buffer;
+ }
+
+ return NULL;
}
-static char *bta_hf_client_parse_ciev(char *buffer)
-{
- uint32_t index, value;
- int res;
- int offset = 0;
+static char* bta_hf_client_parse_cind(char* buffer) {
+ AT_CHECK_EVENT(buffer, "+CIND:");
- AT_CHECK_EVENT(buffer, "+CIEV:");
+ if (*buffer == '(') return bta_hf_client_parse_cind_list(buffer);
- res = sscanf(buffer, "%u,%u%n", &index, &value, &offset);
- if(res < 2)
- {
- return NULL;
+ return bta_hf_client_parse_cind_values(buffer);
+}
+
+static char* bta_hf_client_parse_chld(char* buffer) {
+ AT_CHECK_EVENT(buffer, "+CHLD:");
+
+ if (*buffer != '(') {
+ return NULL;
+ }
+
+ buffer++;
+
+ while (*buffer != '\0') {
+ if (strncmp("0", buffer, 1) == 0) {
+ bta_hf_client_handle_chld(BTA_HF_CLIENT_CHLD_REL);
+ buffer++;
+ } else if (strncmp("1x", buffer, 2) == 0) {
+ bta_hf_client_handle_chld(BTA_HF_CLIENT_CHLD_REL_X);
+ buffer += 2;
+ } else if (strncmp("1", buffer, 1) == 0) {
+ bta_hf_client_handle_chld(BTA_HF_CLIENT_CHLD_REL_ACC);
+ buffer++;
+ } else if (strncmp("2x", buffer, 2) == 0) {
+ bta_hf_client_handle_chld(BTA_HF_CLIENT_CHLD_PRIV_X);
+ buffer += 2;
+ } else if (strncmp("2", buffer, 1) == 0) {
+ bta_hf_client_handle_chld(BTA_HF_CLIENT_CHLD_HOLD_ACC);
+ buffer++;
+ } else if (strncmp("3", buffer, 1) == 0) {
+ bta_hf_client_handle_chld(BTA_HF_CLIENT_CHLD_MERGE);
+ buffer++;
+ } else if (strncmp("4", buffer, 1) == 0) {
+ bta_hf_client_handle_chld(BTA_HF_CLIENT_CHLD_MERGE_DETACH);
+ buffer++;
+ } else {
+ return NULL;
}
- if (offset == 0)
- {
- APPL_TRACE_ERROR("%s: Format Error %s", __func__, buffer);
- return NULL;
+ if (*buffer == ',') {
+ buffer++;
+ continue;
}
- buffer += offset;
-
- AT_CHECK_RN(buffer);
-
- bta_hf_client_handle_ciev(index, value);
- return buffer;
-}
-
-static char *bta_hf_client_parse_bcs(char *buffer)
-{
- AT_CHECK_EVENT(buffer, "+BCS:");
-
- return bta_hf_client_parse_uint32(buffer, bta_hf_client_handle_bcs);
-}
-
-static char *bta_hf_client_parse_bsir(char *buffer)
-{
- AT_CHECK_EVENT(buffer, "+BSIR:");
-
- return bta_hf_client_parse_uint32(buffer, bta_hf_client_handle_bsir);
-}
-
-static char *bta_hf_client_parse_cmeerror(char *buffer)
-{
- AT_CHECK_EVENT(buffer, "+CME ERROR:");
-
- return bta_hf_client_parse_uint32(buffer, bta_hf_client_handle_cmeerror);
-}
-
-static char *bta_hf_client_parse_vgm(char *buffer)
-{
- AT_CHECK_EVENT(buffer, "+VGM:");
-
- return bta_hf_client_parse_uint32(buffer, bta_hf_client_handle_vgm);
-}
-
-static char *bta_hf_client_parse_vgme(char *buffer)
-{
- AT_CHECK_EVENT(buffer, "+VGM=");
-
- return bta_hf_client_parse_uint32(buffer, bta_hf_client_handle_vgm);
-}
-
-static char *bta_hf_client_parse_vgs(char *buffer)
-{
- AT_CHECK_EVENT(buffer, "+VGS:");
-
- return bta_hf_client_parse_uint32(buffer, bta_hf_client_handle_vgs);
-}
-
-static char *bta_hf_client_parse_vgse(char *buffer)
-{
- AT_CHECK_EVENT(buffer, "+VGS=");
-
- return bta_hf_client_parse_uint32(buffer, bta_hf_client_handle_vgs);
-}
-
-static char *bta_hf_client_parse_bvra(char *buffer)
-{
- AT_CHECK_EVENT(buffer, "+BVRA:");
-
- return bta_hf_client_parse_uint32(buffer, bta_hf_client_handle_bvra);
-}
-
-static char *bta_hf_client_parse_clip(char *buffer)
-{
- /* spec forces 32 chars, plus \0 here */
- char number[33];
- uint32_t type = 0;
- int res;
- int offset = 0;
-
- AT_CHECK_EVENT(buffer, "+CLIP:");
-
- /* there might be something more after %lu but HFP doesn't care */
- res = sscanf(buffer, "\"%32[^\"]\",%u%n", number, &type, &offset);
- if(res < 2)
- {
- return NULL;
+ if (*buffer == ')') {
+ buffer++;
+ break;
}
- if (offset == 0)
- {
- APPL_TRACE_ERROR("%s: Format Error %s", __func__, buffer);
- return NULL;
- }
+ return NULL;
+ }
- buffer += offset;
+ AT_CHECK_RN(buffer);
- AT_SKIP_REST(buffer);
+ return buffer;
+}
- AT_CHECK_RN(buffer);
+static char* bta_hf_client_parse_ciev(char* buffer) {
+ uint32_t index, value;
+ int res;
+ int offset = 0;
- bta_hf_client_handle_clip(number, type);
- return buffer;
+ AT_CHECK_EVENT(buffer, "+CIEV:");
+
+ res = sscanf(buffer, "%u,%u%n", &index, &value, &offset);
+ if (res < 2) {
+ return NULL;
+ }
+
+ if (offset == 0) {
+ APPL_TRACE_ERROR("%s: Format Error %s", __func__, buffer);
+ return NULL;
+ }
+
+ buffer += offset;
+
+ AT_CHECK_RN(buffer);
+
+ bta_hf_client_handle_ciev(index, value);
+ return buffer;
+}
+
+static char* bta_hf_client_parse_bcs(char* buffer) {
+ AT_CHECK_EVENT(buffer, "+BCS:");
+
+ return bta_hf_client_parse_uint32(buffer, bta_hf_client_handle_bcs);
+}
+
+static char* bta_hf_client_parse_bsir(char* buffer) {
+ AT_CHECK_EVENT(buffer, "+BSIR:");
+
+ return bta_hf_client_parse_uint32(buffer, bta_hf_client_handle_bsir);
+}
+
+static char* bta_hf_client_parse_cmeerror(char* buffer) {
+ AT_CHECK_EVENT(buffer, "+CME ERROR:");
+
+ return bta_hf_client_parse_uint32(buffer, bta_hf_client_handle_cmeerror);
+}
+
+static char* bta_hf_client_parse_vgm(char* buffer) {
+ AT_CHECK_EVENT(buffer, "+VGM:");
+
+ return bta_hf_client_parse_uint32(buffer, bta_hf_client_handle_vgm);
+}
+
+static char* bta_hf_client_parse_vgme(char* buffer) {
+ AT_CHECK_EVENT(buffer, "+VGM=");
+
+ return bta_hf_client_parse_uint32(buffer, bta_hf_client_handle_vgm);
+}
+
+static char* bta_hf_client_parse_vgs(char* buffer) {
+ AT_CHECK_EVENT(buffer, "+VGS:");
+
+ return bta_hf_client_parse_uint32(buffer, bta_hf_client_handle_vgs);
+}
+
+static char* bta_hf_client_parse_vgse(char* buffer) {
+ AT_CHECK_EVENT(buffer, "+VGS=");
+
+ return bta_hf_client_parse_uint32(buffer, bta_hf_client_handle_vgs);
+}
+
+static char* bta_hf_client_parse_bvra(char* buffer) {
+ AT_CHECK_EVENT(buffer, "+BVRA:");
+
+ return bta_hf_client_parse_uint32(buffer, bta_hf_client_handle_bvra);
+}
+
+static char* bta_hf_client_parse_clip(char* buffer) {
+ /* spec forces 32 chars, plus \0 here */
+ char number[33];
+ uint32_t type = 0;
+ int res;
+ int offset = 0;
+
+ AT_CHECK_EVENT(buffer, "+CLIP:");
+
+ /* there might be something more after %lu but HFP doesn't care */
+ res = sscanf(buffer, "\"%32[^\"]\",%u%n", number, &type, &offset);
+ if (res < 2) {
+ return NULL;
+ }
+
+ if (offset == 0) {
+ APPL_TRACE_ERROR("%s: Format Error %s", __func__, buffer);
+ return NULL;
+ }
+
+ buffer += offset;
+
+ AT_SKIP_REST(buffer);
+
+ AT_CHECK_RN(buffer);
+
+ bta_hf_client_handle_clip(number, type);
+ return buffer;
}
/* in HFP context there is no difference between ccwa and clip */
-static char *bta_hf_client_parse_ccwa(char *buffer)
-{
- /* ac to spec 32 chars max, plus \0 here */
- char number[33];
- uint32_t type = 0;
- int res ;
- int offset = 0;
+static char* bta_hf_client_parse_ccwa(char* buffer) {
+ /* ac to spec 32 chars max, plus \0 here */
+ char number[33];
+ uint32_t type = 0;
+ int res;
+ int offset = 0;
- AT_CHECK_EVENT(buffer, "+CCWA:");
+ AT_CHECK_EVENT(buffer, "+CCWA:");
- /* there might be something more after %lu but HFP doesn't care */
- res = sscanf(buffer, "\"%32[^\"]\",%u%n", number, &type, &offset);
- if(res < 2)
- {
- return NULL;
- }
+ /* there might be something more after %lu but HFP doesn't care */
+ res = sscanf(buffer, "\"%32[^\"]\",%u%n", number, &type, &offset);
+ if (res < 2) {
+ return NULL;
+ }
- if (offset == 0)
- {
- APPL_TRACE_ERROR("%s: Format Error %s", __func__, buffer);
- return NULL;
- }
+ if (offset == 0) {
+ APPL_TRACE_ERROR("%s: Format Error %s", __func__, buffer);
+ return NULL;
+ }
- buffer += offset;
+ buffer += offset;
- AT_SKIP_REST(buffer);
+ AT_SKIP_REST(buffer);
- AT_CHECK_RN(buffer);
+ AT_CHECK_RN(buffer);
- bta_hf_client_handle_ccwa(number, type);
- return buffer;
+ bta_hf_client_handle_ccwa(number, type);
+ return buffer;
}
-static char *bta_hf_client_parse_cops(char *buffer)
-{
- uint8_t mode;
- /* spec forces 16 chars max, plus \0 here */
- char opstr[17];
- int res;
- int offset = 0;
+static char* bta_hf_client_parse_cops(char* buffer) {
+ uint8_t mode;
+ /* spec forces 16 chars max, plus \0 here */
+ char opstr[17];
+ int res;
+ int offset = 0;
- AT_CHECK_EVENT(buffer, "+COPS:");
+ AT_CHECK_EVENT(buffer, "+COPS:");
- /* TODO: Not sure if operator string actually can contain escaped " char inside */
- res = sscanf(buffer, "%hhi,0,\"%16[^\"]\"%n", &mode, opstr, &offset);
- if(res < 2)
- {
- return NULL;
- }
- /* Abort in case offset not set because of format error */
- if (offset == 0)
- {
- APPL_TRACE_ERROR("%s: Format Error %s", __func__, buffer);
- return NULL;
- }
+ /* TODO: Not sure if operator string actually can contain escaped " char
+ * inside */
+ res = sscanf(buffer, "%hhi,0,\"%16[^\"]\"%n", &mode, opstr, &offset);
+ if (res < 2) {
+ return NULL;
+ }
+ /* Abort in case offset not set because of format error */
+ if (offset == 0) {
+ APPL_TRACE_ERROR("%s: Format Error %s", __func__, buffer);
+ return NULL;
+ }
- buffer += offset;
+ buffer += offset;
- AT_SKIP_REST(buffer);
+ AT_SKIP_REST(buffer);
- AT_CHECK_RN(buffer);
+ AT_CHECK_RN(buffer);
- bta_hf_client_handle_cops(opstr, mode);
- // check for OK Response in end
- AT_CHECK_EVENT(buffer, "OK");
- AT_CHECK_RN(buffer);
+ bta_hf_client_handle_cops(opstr, mode);
+ // check for OK Response in end
+ AT_CHECK_EVENT(buffer, "OK");
+ AT_CHECK_RN(buffer);
- bta_hf_client_handle_ok();
+ bta_hf_client_handle_ok();
- return buffer;
+ return buffer;
}
-static char *bta_hf_client_parse_binp(char *buffer)
-{
- /* HFP only supports phone number as BINP data */
- /* phone number is 32 chars plus one for \0*/
- char numstr[33];
- int res;
- int offset = 0;
+static char* bta_hf_client_parse_binp(char* buffer) {
+ /* HFP only supports phone number as BINP data */
+ /* phone number is 32 chars plus one for \0*/
+ char numstr[33];
+ int res;
+ int offset = 0;
- AT_CHECK_EVENT(buffer, "+BINP:");
+ AT_CHECK_EVENT(buffer, "+BINP:");
- res = sscanf(buffer, "\"%32[^\"]\"\r\n%n", numstr, &offset);
- if(res < 1)
- {
- return NULL;
- }
+ res = sscanf(buffer, "\"%32[^\"]\"\r\n%n", numstr, &offset);
+ if (res < 1) {
+ return NULL;
+ }
- /* Abort in case offset not set because of format error */
- if (offset == 0)
- {
- APPL_TRACE_ERROR("%s: Format Error %s", __func__, buffer);
- return NULL;
- }
+ /* Abort in case offset not set because of format error */
+ if (offset == 0) {
+ APPL_TRACE_ERROR("%s: Format Error %s", __func__, buffer);
+ return NULL;
+ }
- buffer += offset;
+ buffer += offset;
- /* some phones might sent type as well, just skip it */
- AT_SKIP_REST(buffer);
+ /* some phones might sent type as well, just skip it */
+ AT_SKIP_REST(buffer);
- AT_CHECK_RN(buffer);
+ AT_CHECK_RN(buffer);
- bta_hf_client_handle_binp(numstr);
+ bta_hf_client_handle_binp(numstr);
- // check for OK response in end
- AT_CHECK_EVENT(buffer, "OK");
- AT_CHECK_RN(buffer);
+ // check for OK response in end
+ AT_CHECK_EVENT(buffer, "OK");
+ AT_CHECK_RN(buffer);
- bta_hf_client_handle_ok();
+ bta_hf_client_handle_ok();
- return buffer;
+ return buffer;
}
-static char *bta_hf_client_parse_clcc(char *buffer)
-{
- uint16_t idx, dir, status, mode, mpty;
- char numstr[33]; /* spec forces 32 chars, plus one for \0*/
- uint16_t type;
- int res;
- int offset = 0;
+static char* bta_hf_client_parse_clcc(char* buffer) {
+ uint16_t idx, dir, status, mode, mpty;
+ char numstr[33]; /* spec forces 32 chars, plus one for \0*/
+ uint16_t type;
+ int res;
+ int offset = 0;
- AT_CHECK_EVENT(buffer, "+CLCC:");
+ AT_CHECK_EVENT(buffer, "+CLCC:");
- res = sscanf(buffer, "%hu,%hu,%hu,%hu,%hu%n",
- &idx, &dir, &status, &mode, &mpty, &offset);
- if (res < 5)
- {
- return NULL;
+ res = sscanf(buffer, "%hu,%hu,%hu,%hu,%hu%n", &idx, &dir, &status, &mode,
+ &mpty, &offset);
+ if (res < 5) {
+ return NULL;
+ }
+
+ /* Abort in case offset not set because of format error */
+ if (offset == 0) {
+ APPL_TRACE_ERROR("%s: Format Error %s", __func__, buffer);
+ return NULL;
+ }
+
+ buffer += offset;
+ offset = 0;
+
+ /* check optional part */
+ if (*buffer == ',') {
+ int res2 = sscanf(buffer, ",\"%32[^\"]\",%hu%n", numstr, &type, &offset);
+ if (res2 < 0) return NULL;
+
+ if (res2 == 0) {
+ res2 = sscanf(buffer, ",\"\",%hu%n", &type, &offset);
+ if (res < 0) return NULL;
+
+ /* numstr is not matched in second attempt, correct this */
+ res2++;
+ numstr[0] = '\0';
}
- /* Abort in case offset not set because of format error */
- if (offset == 0)
- {
+ if (res2 >= 2) {
+ res += res2;
+ /* Abort in case offset not set because of format error */
+ if (offset == 0) {
APPL_TRACE_ERROR("%s: Format Error %s", __func__, buffer);
return NULL;
+ }
+
+ buffer += offset;
}
+ }
- buffer += offset;
- offset = 0;
+ /* Skip any remaing param,as they are not defined by BT HFP spec */
+ AT_SKIP_REST(buffer);
+ AT_CHECK_RN(buffer);
- /* check optional part */
- if (*buffer == ',')
- {
- int res2 = sscanf(buffer, ",\"%32[^\"]\",%hu%n", numstr, &type, &offset);
- if (res2 < 0)
- return NULL;
+ if (res > 6) {
+ /* we also have last two optional parameters */
+ bta_hf_client_handle_clcc(idx, dir, status, mode, mpty, numstr, type);
+ } else {
+ /* we didn't get the last two parameters */
+ bta_hf_client_handle_clcc(idx, dir, status, mode, mpty, NULL, 0);
+ }
- if (res2 == 0)
- {
- res2 = sscanf(buffer, ",\"\",%hu%n", &type, &offset);
- if (res < 0)
- return NULL;
+ // check for OK response in end
+ AT_CHECK_EVENT(buffer, "OK");
+ AT_CHECK_RN(buffer);
- /* numstr is not matched in second attempt, correct this */
- res2++;
- numstr[0] = '\0';
- }
-
- if (res2 >= 2)
- {
- res += res2;
- /* Abort in case offset not set because of format error */
- if (offset == 0)
- {
- APPL_TRACE_ERROR("%s: Format Error %s", __func__, buffer);
- return NULL;
- }
-
- buffer += offset;
- }
- }
-
- /* Skip any remaing param,as they are not defined by BT HFP spec */
- AT_SKIP_REST(buffer);
- AT_CHECK_RN(buffer);
-
- if (res > 6)
- {
- /* we also have last two optional parameters */
- bta_hf_client_handle_clcc(idx, dir, status, mode, mpty, numstr, type);
- }
- else
- {
- /* we didn't get the last two parameters */
- bta_hf_client_handle_clcc(idx, dir, status, mode, mpty, NULL, 0);
- }
-
- // check for OK response in end
- AT_CHECK_EVENT(buffer, "OK");
- AT_CHECK_RN(buffer);
-
- bta_hf_client_handle_ok();
- return buffer;
+ bta_hf_client_handle_ok();
+ return buffer;
}
-static char *bta_hf_client_parse_cnum(char *buffer)
-{
- char numstr[33]; /* spec forces 32 chars, plus one for \0*/
- uint16_t type;
- uint16_t service = 0; /* 0 in case this optional parameter is not being sent */
- int res;
- int offset = 0;
+static char* bta_hf_client_parse_cnum(char* buffer) {
+ char numstr[33]; /* spec forces 32 chars, plus one for \0*/
+ uint16_t type;
+ uint16_t service =
+ 0; /* 0 in case this optional parameter is not being sent */
+ int res;
+ int offset = 0;
- AT_CHECK_EVENT(buffer, "+CNUM:");
+ AT_CHECK_EVENT(buffer, "+CNUM:");
- res = sscanf(buffer, ",\"%32[^\"]\",%hu,,%hu%n", numstr, &type, &service, &offset);
- if(res < 0)
- {
- return NULL;
+ res = sscanf(buffer, ",\"%32[^\"]\",%hu,,%hu%n", numstr, &type, &service,
+ &offset);
+ if (res < 0) {
+ return NULL;
+ }
+
+ if (res == 0) {
+ res = sscanf(buffer, ",\"\",%hu,,%hu%n", &type, &service, &offset);
+ if (res < 0) {
+ return NULL;
}
- if (res == 0)
- {
- res = sscanf(buffer, ",\"\",%hu,,%hu%n", &type, &service, &offset);
- if (res < 0)
- {
- return NULL;
- }
+ /* numstr is not matched in second attempt, correct this */
+ res++;
+ numstr[0] = '\0';
+ }
- /* numstr is not matched in second attempt, correct this */
- res++;
- numstr[0] = '\0';
- }
+ if (res < 3) {
+ return NULL;
+ }
- if (res < 3)
- {
- return NULL;
- }
+ /* Abort in case offset not set because of format error */
+ if (offset == 0) {
+ APPL_TRACE_ERROR("%s: Format Error %s", __func__, buffer);
+ return NULL;
+ }
- /* Abort in case offset not set because of format error */
- if (offset == 0)
- {
- APPL_TRACE_ERROR("%s: Format Error %s", __func__, buffer);
- return NULL;
- }
+ buffer += offset;
- buffer += offset;
+ AT_CHECK_RN(buffer);
- AT_CHECK_RN(buffer);
-
- /* service is optional */
- if(res == 2)
- {
- bta_hf_client_handle_cnum(numstr, type, service);
- return buffer;
- }
-
- if (service != 4 && service != 5)
- {
- return NULL;
- }
-
+ /* service is optional */
+ if (res == 2) {
bta_hf_client_handle_cnum(numstr, type, service);
-
- // check for OK response in end
- AT_CHECK_EVENT(buffer, "OK");
- AT_CHECK_RN(buffer);
-
- bta_hf_client_handle_ok();
return buffer;
+ }
+
+ if (service != 4 && service != 5) {
+ return NULL;
+ }
+
+ bta_hf_client_handle_cnum(numstr, type, service);
+
+ // check for OK response in end
+ AT_CHECK_EVENT(buffer, "OK");
+ AT_CHECK_RN(buffer);
+
+ bta_hf_client_handle_ok();
+ return buffer;
}
-static char *bta_hf_client_parse_btrh(char *buffer)
-{
- uint16_t code = 0;
- int res;
- int offset;
+static char* bta_hf_client_parse_btrh(char* buffer) {
+ uint16_t code = 0;
+ int res;
+ int offset;
- AT_CHECK_EVENT(buffer, "+BTRH:");
+ AT_CHECK_EVENT(buffer, "+BTRH:");
- res = sscanf(buffer, "%hu%n", &code, &offset);
- if(res < 1)
- {
- return NULL;
- }
+ res = sscanf(buffer, "%hu%n", &code, &offset);
+ if (res < 1) {
+ return NULL;
+ }
- buffer += offset;
+ buffer += offset;
- AT_CHECK_RN(buffer);
+ AT_CHECK_RN(buffer);
- bta_hf_client_handle_btrh(code);
- return buffer;
+ bta_hf_client_handle_btrh(code);
+ return buffer;
}
-static char *bta_hf_client_parse_busy(char *buffer)
-{
- AT_CHECK_EVENT(buffer, "BUSY");
- AT_CHECK_RN(buffer);
+static char* bta_hf_client_parse_busy(char* buffer) {
+ AT_CHECK_EVENT(buffer, "BUSY");
+ AT_CHECK_RN(buffer);
- bta_hf_client_handle_error(BTA_HF_CLIENT_AT_RESULT_BUSY, 0);
+ bta_hf_client_handle_error(BTA_HF_CLIENT_AT_RESULT_BUSY, 0);
- return buffer;
+ return buffer;
}
-static char *bta_hf_client_parse_delayed(char *buffer)
-{
- AT_CHECK_EVENT(buffer, "DELAYED");
- AT_CHECK_RN(buffer);
+static char* bta_hf_client_parse_delayed(char* buffer) {
+ AT_CHECK_EVENT(buffer, "DELAYED");
+ AT_CHECK_RN(buffer);
- bta_hf_client_handle_error(BTA_HF_CLIENT_AT_RESULT_DELAY, 0);
+ bta_hf_client_handle_error(BTA_HF_CLIENT_AT_RESULT_DELAY, 0);
- return buffer;
+ return buffer;
}
-static char *bta_hf_client_parse_no_carrier(char *buffer)
-{
- AT_CHECK_EVENT(buffer, "NO CARRIER");
- AT_CHECK_RN(buffer);
+static char* bta_hf_client_parse_no_carrier(char* buffer) {
+ AT_CHECK_EVENT(buffer, "NO CARRIER");
+ AT_CHECK_RN(buffer);
- bta_hf_client_handle_error(BTA_HF_CLIENT_AT_RESULT_NO_CARRIER, 0);
+ bta_hf_client_handle_error(BTA_HF_CLIENT_AT_RESULT_NO_CARRIER, 0);
- return buffer;
+ return buffer;
}
-static char *bta_hf_client_parse_no_answer(char *buffer)
-{
- AT_CHECK_EVENT(buffer, "NO ANSWER");
- AT_CHECK_RN(buffer);
+static char* bta_hf_client_parse_no_answer(char* buffer) {
+ AT_CHECK_EVENT(buffer, "NO ANSWER");
+ AT_CHECK_RN(buffer);
- bta_hf_client_handle_error(BTA_HF_CLIENT_AT_RESULT_NO_ANSWER, 0);
+ bta_hf_client_handle_error(BTA_HF_CLIENT_AT_RESULT_NO_ANSWER, 0);
- return buffer;
+ return buffer;
}
-static char *bta_hf_client_parse_blacklisted(char *buffer)
-{
- AT_CHECK_EVENT(buffer, "BLACKLISTED");
- AT_CHECK_RN(buffer);
+static char* bta_hf_client_parse_blacklisted(char* buffer) {
+ AT_CHECK_EVENT(buffer, "BLACKLISTED");
+ AT_CHECK_RN(buffer);
- bta_hf_client_handle_error(BTA_HF_CLIENT_AT_RESULT_BLACKLISTED, 0);
+ bta_hf_client_handle_error(BTA_HF_CLIENT_AT_RESULT_BLACKLISTED, 0);
- return buffer;
+ return buffer;
}
-static char *bta_hf_client_skip_unknown(char *buffer)
-{
- char *start;
- char *tmp;
+static char* bta_hf_client_skip_unknown(char* buffer) {
+ char* start;
+ char* tmp;
- tmp = strstr(buffer, "\r\n");
- if (tmp == NULL)
- {
- return NULL;
- }
+ tmp = strstr(buffer, "\r\n");
+ if (tmp == NULL) {
+ return NULL;
+ }
- buffer += 2;
- start = buffer;
+ buffer += 2;
+ start = buffer;
- tmp = strstr(buffer, "\r\n");
- if (tmp == NULL)
- {
- return NULL;
- }
+ tmp = strstr(buffer, "\r\n");
+ if (tmp == NULL) {
+ return NULL;
+ }
- buffer = tmp + 2;
+ buffer = tmp + 2;
- APPL_TRACE_DEBUG("%s %.*s", __func__, buffer - start - 2, start);
+ APPL_TRACE_DEBUG("%s %.*s", __func__, buffer - start - 2, start);
- return buffer;
+ return buffer;
}
-
/******************************************************************************
* SUPPORTED EVENT MESSAGES
******************************************************************************/
@@ -1310,146 +1178,116 @@
*/
typedef char* (*tBTA_HF_CLIENT_PARSER_CALLBACK)(char*);
-static const tBTA_HF_CLIENT_PARSER_CALLBACK bta_hf_client_parser_cb[] =
-{
- bta_hf_client_parse_ok,
- bta_hf_client_parse_error,
- bta_hf_client_parse_ring,
- bta_hf_client_parse_brsf,
- bta_hf_client_parse_cind,
- bta_hf_client_parse_ciev,
- bta_hf_client_parse_chld,
- bta_hf_client_parse_bcs,
- bta_hf_client_parse_bsir,
- bta_hf_client_parse_cmeerror,
- bta_hf_client_parse_vgm,
- bta_hf_client_parse_vgme,
- bta_hf_client_parse_vgs,
- bta_hf_client_parse_vgse,
- bta_hf_client_parse_bvra,
- bta_hf_client_parse_clip,
- bta_hf_client_parse_ccwa,
- bta_hf_client_parse_cops,
- bta_hf_client_parse_binp,
- bta_hf_client_parse_clcc,
- bta_hf_client_parse_cnum,
- bta_hf_client_parse_btrh,
- bta_hf_client_parse_busy,
- bta_hf_client_parse_delayed,
- bta_hf_client_parse_no_carrier,
- bta_hf_client_parse_no_answer,
- bta_hf_client_parse_blacklisted,
- bta_hf_client_skip_unknown
-};
+static const tBTA_HF_CLIENT_PARSER_CALLBACK bta_hf_client_parser_cb[] = {
+ bta_hf_client_parse_ok, bta_hf_client_parse_error,
+ bta_hf_client_parse_ring, bta_hf_client_parse_brsf,
+ bta_hf_client_parse_cind, bta_hf_client_parse_ciev,
+ bta_hf_client_parse_chld, bta_hf_client_parse_bcs,
+ bta_hf_client_parse_bsir, bta_hf_client_parse_cmeerror,
+ bta_hf_client_parse_vgm, bta_hf_client_parse_vgme,
+ bta_hf_client_parse_vgs, bta_hf_client_parse_vgse,
+ bta_hf_client_parse_bvra, bta_hf_client_parse_clip,
+ bta_hf_client_parse_ccwa, bta_hf_client_parse_cops,
+ bta_hf_client_parse_binp, bta_hf_client_parse_clcc,
+ bta_hf_client_parse_cnum, bta_hf_client_parse_btrh,
+ bta_hf_client_parse_busy, bta_hf_client_parse_delayed,
+ bta_hf_client_parse_no_carrier, bta_hf_client_parse_no_answer,
+ bta_hf_client_parse_blacklisted, bta_hf_client_skip_unknown};
/* calculate supported event list length */
static const uint16_t bta_hf_client_psraser_cb_count =
- sizeof(bta_hf_client_parser_cb) / sizeof(bta_hf_client_parser_cb[0]);
+ sizeof(bta_hf_client_parser_cb) / sizeof(bta_hf_client_parser_cb[0]);
#ifdef BTA_HF_CLIENT_AT_DUMP
-static void bta_hf_client_dump_at(void)
-{
- char dump[(4 * BTA_HF_CLIENT_AT_PARSER_MAX_LEN) + 1];
- char *p1, *p2;
+static void bta_hf_client_dump_at(void) {
+ char dump[(4 * BTA_HF_CLIENT_AT_PARSER_MAX_LEN) + 1];
+ char *p1, *p2;
- p1 = bta_hf_client_cb.scb.at_cb.buf;
- p2 = dump;
+ p1 = bta_hf_client_cb.scb.at_cb.buf;
+ p2 = dump;
- while (*p1 != '\0')
- {
- if (*p1 == '\r')
- {
- strlcpy(p2, "<cr>", 4);
- p2 += 4;
- }
- else if (*p1 == '\n')
- {
- strlcpy(p2, "<lf>", 4);
- p2 += 4;
- }
- else
- {
- *p2 = *p1;
- p2++;
- }
- p1++;
+ while (*p1 != '\0') {
+ if (*p1 == '\r') {
+ strlcpy(p2, "<cr>", 4);
+ p2 += 4;
+ } else if (*p1 == '\n') {
+ strlcpy(p2, "<lf>", 4);
+ p2 += 4;
+ } else {
+ *p2 = *p1;
+ p2++;
}
+ p1++;
+ }
- *p2 = '\0';
+ *p2 = '\0';
- APPL_TRACE_DEBUG("%s %s", __func__, dump);
+ APPL_TRACE_DEBUG("%s %s", __func__, dump);
}
#endif
-static void bta_hf_client_at_parse_start(void)
-{
- char *buf = bta_hf_client_cb.scb.at_cb.buf;
+static void bta_hf_client_at_parse_start(void) {
+ char* buf = bta_hf_client_cb.scb.at_cb.buf;
- APPL_TRACE_DEBUG("%s", __func__);
+ APPL_TRACE_DEBUG("%s", __func__);
#ifdef BTA_HF_CLIENT_AT_DUMP
- bta_hf_client_dump_at();
+ bta_hf_client_dump_at();
#endif
- while(*buf != '\0')
- {
- int i;
- char *tmp = NULL;
+ while (*buf != '\0') {
+ int i;
+ char* tmp = NULL;
- for(i = 0; i < bta_hf_client_psraser_cb_count; i++)
- {
- tmp = bta_hf_client_parser_cb[i](buf);
- if (tmp == NULL)
- {
- APPL_TRACE_ERROR("HFPCient: AT event/reply parsing failed, skipping");
- tmp = bta_hf_client_skip_unknown(buf);
- break;
- }
+ for (i = 0; i < bta_hf_client_psraser_cb_count; i++) {
+ tmp = bta_hf_client_parser_cb[i](buf);
+ if (tmp == NULL) {
+ APPL_TRACE_ERROR("HFPCient: AT event/reply parsing failed, skipping");
+ tmp = bta_hf_client_skip_unknown(buf);
+ break;
+ }
- /* matched or unknown skipped, if unknown failed tmp is NULL so
- this is also handled */
- if (tmp != buf)
- {
- buf = tmp;
- break;
- }
- }
-
- /* could not skip unknown (received garbage?)... disconnect */
- if (tmp == NULL)
- {
- APPL_TRACE_ERROR("HFPCient: could not skip unknown AT event, disconnecting");
- bta_hf_client_at_reset();
- bta_hf_client_sm_execute(BTA_HF_CLIENT_API_CLOSE_EVT, NULL);
- return;
- }
-
+ /* matched or unknown skipped, if unknown failed tmp is NULL so
+ this is also handled */
+ if (tmp != buf) {
buf = tmp;
- }
-}
-
-static bool bta_hf_client_check_at_complete(void)
-{
- bool ret = false;
- tBTA_HF_CLIENT_AT_CB *at_cb = &bta_hf_client_cb.scb.at_cb;
-
- if (at_cb->offset >= BTA_HF_CLIENT_AT_EVENT_MIN_LEN)
- {
- if (at_cb->buf[at_cb->offset - 2] == '\r' && at_cb->buf[at_cb->offset - 1] == '\n')
- {
- ret = true;
- }
+ break;
+ }
}
- APPL_TRACE_DEBUG("%s %d", __func__, ret);
+ /* could not skip unknown (received garbage?)... disconnect */
+ if (tmp == NULL) {
+ APPL_TRACE_ERROR(
+ "HFPCient: could not skip unknown AT event, disconnecting");
+ bta_hf_client_at_reset();
+ bta_hf_client_sm_execute(BTA_HF_CLIENT_API_CLOSE_EVT, NULL);
+ return;
+ }
- return ret;
+ buf = tmp;
+ }
}
-static void bta_hf_client_at_clear_buf(void)
-{
- memset(bta_hf_client_cb.scb.at_cb.buf, 0, sizeof(bta_hf_client_cb.scb.at_cb.buf));
- bta_hf_client_cb.scb.at_cb.offset = 0;
+static bool bta_hf_client_check_at_complete(void) {
+ bool ret = false;
+ tBTA_HF_CLIENT_AT_CB* at_cb = &bta_hf_client_cb.scb.at_cb;
+
+ if (at_cb->offset >= BTA_HF_CLIENT_AT_EVENT_MIN_LEN) {
+ if (at_cb->buf[at_cb->offset - 2] == '\r' &&
+ at_cb->buf[at_cb->offset - 1] == '\n') {
+ ret = true;
+ }
+ }
+
+ APPL_TRACE_DEBUG("%s %d", __func__, ret);
+
+ return ret;
+}
+
+static void bta_hf_client_at_clear_buf(void) {
+ memset(bta_hf_client_cb.scb.at_cb.buf, 0,
+ sizeof(bta_hf_client_cb.scb.at_cb.buf));
+ bta_hf_client_cb.scb.at_cb.offset = 0;
}
/******************************************************************************
@@ -1458,508 +1296,461 @@
*
*
******************************************************************************/
-void bta_hf_client_at_parse(char *buf, unsigned int len)
-{
- APPL_TRACE_DEBUG("%s offset: %u len: %u", __func__, bta_hf_client_cb.scb.at_cb.offset, len);
+void bta_hf_client_at_parse(char* buf, unsigned int len) {
+ APPL_TRACE_DEBUG("%s offset: %u len: %u", __func__,
+ bta_hf_client_cb.scb.at_cb.offset, len);
- if (len + bta_hf_client_cb.scb.at_cb.offset > BTA_HF_CLIENT_AT_PARSER_MAX_LEN)
- {
- char tmp_buff[BTA_HF_CLIENT_AT_PARSER_MAX_LEN];
- unsigned int tmp = bta_hf_client_cb.scb.at_cb.offset;
- unsigned int space_left = BTA_HF_CLIENT_AT_PARSER_MAX_LEN - bta_hf_client_cb.scb.at_cb.offset;
+ if (len + bta_hf_client_cb.scb.at_cb.offset >
+ BTA_HF_CLIENT_AT_PARSER_MAX_LEN) {
+ char tmp_buff[BTA_HF_CLIENT_AT_PARSER_MAX_LEN];
+ unsigned int tmp = bta_hf_client_cb.scb.at_cb.offset;
+ unsigned int space_left =
+ BTA_HF_CLIENT_AT_PARSER_MAX_LEN - bta_hf_client_cb.scb.at_cb.offset;
- APPL_TRACE_DEBUG("%s overrun, trying to recover", __func__);
+ APPL_TRACE_DEBUG("%s overrun, trying to recover", __func__);
- /* fill up parser buffer */
- memcpy(bta_hf_client_cb.scb.at_cb.buf + bta_hf_client_cb.scb.at_cb.offset, buf, space_left);
- len -= space_left;
- buf += space_left;
- bta_hf_client_cb.scb.at_cb.offset += space_left;
+ /* fill up parser buffer */
+ memcpy(bta_hf_client_cb.scb.at_cb.buf + bta_hf_client_cb.scb.at_cb.offset,
+ buf, space_left);
+ len -= space_left;
+ buf += space_left;
+ bta_hf_client_cb.scb.at_cb.offset += space_left;
- /* find end of last complete command before proceeding */
- while(bta_hf_client_check_at_complete() == false)
- {
- if (bta_hf_client_cb.scb.at_cb.offset == 0) {
- APPL_TRACE_ERROR("HFPClient: AT parser buffer overrun, disconnecting");
+ /* find end of last complete command before proceeding */
+ while (bta_hf_client_check_at_complete() == false) {
+ if (bta_hf_client_cb.scb.at_cb.offset == 0) {
+ APPL_TRACE_ERROR("HFPClient: AT parser buffer overrun, disconnecting");
- bta_hf_client_at_reset();
- bta_hf_client_sm_execute(BTA_HF_CLIENT_API_CLOSE_EVT, NULL);
- return;
- }
-
- bta_hf_client_cb.scb.at_cb.offset--;
- }
-
- /* cut buffer to complete AT event and keep cut data */
- tmp += space_left - bta_hf_client_cb.scb.at_cb.offset;
- memcpy(tmp_buff, bta_hf_client_cb.scb.at_cb.buf + bta_hf_client_cb.scb.at_cb.offset, tmp);
- bta_hf_client_cb.scb.at_cb.buf[bta_hf_client_cb.scb.at_cb.offset] = '\0';
-
- /* parse */
- bta_hf_client_at_parse_start();
- bta_hf_client_at_clear_buf();
-
- /* recover cut data */
- memcpy(bta_hf_client_cb.scb.at_cb.buf, tmp_buff, tmp);
- bta_hf_client_cb.scb.at_cb.offset += tmp;
- }
-
- memcpy(bta_hf_client_cb.scb.at_cb.buf + bta_hf_client_cb.scb.at_cb.offset, buf, len);
- bta_hf_client_cb.scb.at_cb.offset += len;
-
- /* If last event is complete, parsing can be started */
- if (bta_hf_client_check_at_complete() == true)
- {
- bta_hf_client_at_parse_start();
- bta_hf_client_at_clear_buf();
- }
-}
-
-void bta_hf_client_send_at_brsf(void)
-{
- char buf[BTA_HF_CLIENT_AT_MAX_LEN];
- int at_len;
-
- APPL_TRACE_DEBUG("%s", __func__);
-
- at_len = snprintf(buf, sizeof(buf), "AT+BRSF=%u\r", bta_hf_client_cb.scb.features);
- if (at_len < 0)
- {
- APPL_TRACE_ERROR("%s: AT command Framing error", __func__);
+ bta_hf_client_at_reset();
+ bta_hf_client_sm_execute(BTA_HF_CLIENT_API_CLOSE_EVT, NULL);
return;
+ }
+
+ bta_hf_client_cb.scb.at_cb.offset--;
}
- bta_hf_client_send_at(BTA_HF_CLIENT_AT_BRSF , buf, at_len);
-}
+ /* cut buffer to complete AT event and keep cut data */
+ tmp += space_left - bta_hf_client_cb.scb.at_cb.offset;
+ memcpy(tmp_buff,
+ bta_hf_client_cb.scb.at_cb.buf + bta_hf_client_cb.scb.at_cb.offset,
+ tmp);
+ bta_hf_client_cb.scb.at_cb.buf[bta_hf_client_cb.scb.at_cb.offset] = '\0';
-void bta_hf_client_send_at_bac(void)
-{
- const char *buf;
-
- APPL_TRACE_DEBUG("%s", __func__);
-
- if (bta_hf_client_cb.msbc_enabled)
- {
- buf = "AT+BAC=1,2\r";
- }
- else
- {
- buf = "AT+BAC=1\r";
- }
-
- bta_hf_client_send_at(BTA_HF_CLIENT_AT_BAC, buf, strlen(buf));
-}
-
-void bta_hf_client_send_at_bcs(uint32_t codec)
-{
- char buf[BTA_HF_CLIENT_AT_MAX_LEN];
- int at_len;
-
- APPL_TRACE_DEBUG("%s", __func__);
-
- at_len = snprintf(buf, sizeof(buf), "AT+BCS=%u\r", codec);
- if (at_len < 0)
- {
- APPL_TRACE_ERROR("%s: AT command Framing error", __func__);
- return;
- }
-
- bta_hf_client_send_at(BTA_HF_CLIENT_AT_BCS, buf, at_len);
-}
-
-void bta_hf_client_send_at_cind(bool status)
-{
- const char *buf;
- tBTA_HF_CLIENT_AT_CMD cmd;
-
- APPL_TRACE_DEBUG("%s", __func__);
-
- if (status)
- {
- buf = "AT+CIND?\r";
- cmd = BTA_HF_CLIENT_AT_CIND_STATUS;
- }
- else
- {
- buf = "AT+CIND=?\r";
- cmd = BTA_HF_CLIENT_AT_CIND;
- }
-
- bta_hf_client_send_at(cmd, buf, strlen(buf));
-}
-
-void bta_hf_client_send_at_cmer(bool activate)
-{
- const char *buf;
-
- APPL_TRACE_DEBUG("%s", __func__);
-
- if (activate)
- buf = "AT+CMER=3,0,0,1\r";
- else
- buf = "AT+CMER=3,0,0,0\r";
-
- bta_hf_client_send_at(BTA_HF_CLIENT_AT_CMER, buf, strlen(buf));
-}
-
-void bta_hf_client_send_at_chld(char cmd, uint32_t idx)
-{
- char buf[BTA_HF_CLIENT_AT_MAX_LEN];
- int at_len;
-
- APPL_TRACE_DEBUG("%s", __func__);
-
- if (idx > 0)
- at_len = snprintf(buf, sizeof(buf), "AT+CHLD=%c%u\r", cmd, idx);
- else
- at_len = snprintf(buf, sizeof(buf), "AT+CHLD=%c\r", cmd);
-
- if (at_len < 0)
- {
- APPL_TRACE_ERROR("%s: AT command Framing error", __func__);
- return;
- }
-
- bta_hf_client_send_at(BTA_HF_CLIENT_AT_CHLD, buf, at_len);
-}
-
-void bta_hf_client_send_at_clip(bool activate)
-{
- const char *buf;
-
- APPL_TRACE_DEBUG("%s", __func__);
-
- if (activate)
- buf = "AT+CLIP=1\r";
- else
- buf = "AT+CLIP=0\r";
-
- bta_hf_client_send_at(BTA_HF_CLIENT_AT_CLIP, buf, strlen(buf));
-}
-
-void bta_hf_client_send_at_ccwa(bool activate)
-{
- const char *buf;
-
- APPL_TRACE_DEBUG("%s", __func__);
-
- if (activate)
- buf = "AT+CCWA=1\r";
- else
- buf = "AT+CCWA=0\r";
-
- bta_hf_client_send_at(BTA_HF_CLIENT_AT_CCWA, buf, strlen(buf));
-}
-
-
-void bta_hf_client_send_at_cmee(bool activate)
-{
- const char *buf;
-
- APPL_TRACE_DEBUG("%s", __func__);
-
- if (activate)
- buf = "AT+CMEE=1\r";
- else
- buf = "AT+CMEE=0\r";
-
- bta_hf_client_send_at(BTA_HF_CLIENT_AT_CMEE, buf, strlen(buf));
-}
-
-void bta_hf_client_send_at_cops(bool query)
-{
- const char *buf;
-
- APPL_TRACE_DEBUG("%s", __func__);
-
- if (query)
- buf = "AT+COPS?\r";
- else
- buf = "AT+COPS=3,0\r";
-
- bta_hf_client_send_at(BTA_HF_CLIENT_AT_COPS, buf, strlen(buf));
-}
-
-void bta_hf_client_send_at_clcc(void)
-{
- const char *buf;
-
- APPL_TRACE_DEBUG("%s", __func__);
-
- buf = "AT+CLCC\r";
-
- bta_hf_client_send_at(BTA_HF_CLIENT_AT_CLCC, buf, strlen(buf));
-}
-
-void bta_hf_client_send_at_bvra(bool enable)
-{
- const char *buf;
-
- APPL_TRACE_DEBUG("%s", __func__);
-
- if (enable)
- buf = "AT+BVRA=1\r";
- else
- buf = "AT+BVRA=0\r";
-
- bta_hf_client_send_at(BTA_HF_CLIENT_AT_BVRA, buf, strlen(buf));
-}
-
-void bta_hf_client_send_at_vgs(uint32_t volume)
-{
- char buf[BTA_HF_CLIENT_AT_MAX_LEN];
- int at_len;
-
- APPL_TRACE_DEBUG("%s", __func__);
-
- at_len = snprintf(buf, sizeof(buf), "AT+VGS=%u\r", volume);
- if (at_len < 0)
- {
- APPL_TRACE_ERROR("%s: AT command Framing error", __func__);
- return;
- }
-
- bta_hf_client_send_at(BTA_HF_CLIENT_AT_VGS, buf, at_len);
-}
-
-void bta_hf_client_send_at_vgm(uint32_t volume)
-{
- char buf[BTA_HF_CLIENT_AT_MAX_LEN];
- int at_len;
-
- APPL_TRACE_DEBUG("%s", __func__);
-
- at_len = snprintf(buf, sizeof(buf), "AT+VGM=%u\r", volume);
- if (at_len < 0)
- {
- APPL_TRACE_ERROR("%s: AT command Framing error", __func__);
- return;
- }
-
- bta_hf_client_send_at(BTA_HF_CLIENT_AT_VGM, buf, at_len);
-}
-
-void bta_hf_client_send_at_atd(char *number, uint32_t memory)
-{
- char buf[BTA_HF_CLIENT_AT_MAX_LEN];
- int at_len;
-
- APPL_TRACE_DEBUG("%s", __func__);
-
- if (number[0] != '\0') {
- at_len = snprintf(buf, sizeof(buf), "ATD%s;\r", number);
- } else {
- at_len = snprintf(buf, sizeof(buf), "ATD>%u;\r", memory);
- }
-
- if (at_len < 0) {
- APPL_TRACE_ERROR("%s: error preparing ATD command", __func__);
- return;
- }
-
- at_len = MIN((size_t)at_len, sizeof(buf));
-
- if (at_len < 0)
- {
- APPL_TRACE_ERROR("%s: AT command Framing error", __func__);
- return;
- }
- bta_hf_client_send_at(BTA_HF_CLIENT_AT_ATD, buf, at_len);
-}
-
-void bta_hf_client_send_at_bldn(void)
-{
- const char *buf;
-
- APPL_TRACE_DEBUG("%s", __func__);
-
- buf = "AT+BLDN\r";
-
- bta_hf_client_send_at(BTA_HF_CLIENT_AT_BLDN, buf, strlen(buf));
-}
-
-void bta_hf_client_send_at_ata(void)
-{
- const char *buf;
-
- APPL_TRACE_DEBUG("%s", __func__);
-
- buf = "ATA\r";
-
- bta_hf_client_send_at(BTA_HF_CLIENT_AT_ATA, buf, strlen(buf));
-}
-
-void bta_hf_client_send_at_chup(void)
-{
- const char *buf;
-
- APPL_TRACE_DEBUG("%s", __func__);
-
- buf = "AT+CHUP\r";
-
- bta_hf_client_send_at(BTA_HF_CLIENT_AT_CHUP, buf, strlen(buf));
-}
-
-void bta_hf_client_send_at_btrh(bool query, uint32_t val)
-{
- char buf[BTA_HF_CLIENT_AT_MAX_LEN];
- int at_len;
-
- APPL_TRACE_DEBUG("%s", __func__);
-
- if (query == true)
- {
- at_len = snprintf(buf, sizeof(buf), "AT+BTRH?\r");
- }
- else
- {
- at_len = snprintf(buf, sizeof(buf), "AT+BTRH=%u\r", val);
- }
-
- if (at_len < 0)
- {
- APPL_TRACE_ERROR("%s: AT command Framing error", __func__);
- return;
- }
-
- bta_hf_client_send_at(BTA_HF_CLIENT_AT_BTRH, buf, at_len);
-}
-
-void bta_hf_client_send_at_vts(char code)
-{
- char buf[BTA_HF_CLIENT_AT_MAX_LEN];
- int at_len;
-
- APPL_TRACE_DEBUG("%s", __func__);
-
- at_len = snprintf(buf, sizeof(buf), "AT+VTS=%c\r", code);
-
- if (at_len < 0)
- {
- APPL_TRACE_ERROR("%s: AT command Framing error", __func__);
- return;
- }
-
- bta_hf_client_send_at(BTA_HF_CLIENT_AT_VTS, buf, at_len);
-}
-
-void bta_hf_client_send_at_bcc(void)
-{
- const char *buf;
-
- APPL_TRACE_DEBUG("%s", __func__);
-
- buf = "AT+BCC\r";
-
- bta_hf_client_send_at(BTA_HF_CLIENT_AT_BCC, buf, strlen(buf));
-}
-
-void bta_hf_client_send_at_cnum(void)
-{
- const char *buf;
-
- APPL_TRACE_DEBUG("%s", __func__);
-
- buf = "AT+CNUM\r";
-
- bta_hf_client_send_at(BTA_HF_CLIENT_AT_CNUM, buf, strlen(buf));
-}
-
-void bta_hf_client_send_at_nrec(void)
-{
- const char *buf;
-
- APPL_TRACE_DEBUG("%s", __func__);
-
- if (!(bta_hf_client_cb.scb.peer_features & BTA_HF_CLIENT_PEER_FEAT_ECNR))
- {
- APPL_TRACE_ERROR("%s: Remote does not support NREC.", __func__);
- return;
- }
-
- buf = "AT+NREC=0\r";
-
- bta_hf_client_send_at(BTA_HF_CLIENT_AT_NREC, buf, strlen(buf));
-}
-
-void bta_hf_client_send_at_binp(uint32_t action)
-{
- char buf[BTA_HF_CLIENT_AT_MAX_LEN];
- int at_len;
-
- APPL_TRACE_DEBUG("%s", __func__);
-
- at_len = snprintf(buf, sizeof(buf), "AT+BINP=%u\r", action);
-
- if (at_len < 0)
- {
- APPL_TRACE_ERROR("%s: AT command Framing error", __func__);
- return;
- }
-
- bta_hf_client_send_at(BTA_HF_CLIENT_AT_BINP, buf, at_len);
-}
-
-void bta_hf_client_send_at_bia(void)
-{
- char buf[BTA_HF_CLIENT_AT_MAX_LEN];
- int at_len;
- int i;
-
- APPL_TRACE_DEBUG("%s", __func__);
- if (bta_hf_client_cb.scb.peer_version < HFP_VERSION_1_6)
- {
- APPL_TRACE_DEBUG("Remote does not Support AT+BIA");
- return;
- }
-
- at_len = snprintf(buf, sizeof(buf), "AT+BIA=");
-
- for(i = 0; i < BTA_HF_CLIENT_AT_INDICATOR_COUNT; i++)
- {
- int sup = bta_hf_client_cb.scb.at_cb.indicator_lookup[i] == -1 ? 0 : 1;
-
- at_len += snprintf(buf + at_len, sizeof(buf) - at_len, "%u,", sup);
- }
-
- buf[at_len - 1] = '\r';
-
- if (at_len < 0)
- {
- APPL_TRACE_ERROR("%s: AT command Framing error", __func__);
- return;
- }
-
- bta_hf_client_send_at(BTA_HF_CLIENT_AT_BIA, buf, at_len);
-}
-
-void bta_hf_client_at_init(void)
-{
- alarm_free(bta_hf_client_cb.scb.at_cb.resp_timer);
- alarm_free(bta_hf_client_cb.scb.at_cb.hold_timer);
- memset(&bta_hf_client_cb.scb.at_cb, 0, sizeof(tBTA_HF_CLIENT_AT_CB));
- bta_hf_client_cb.scb.at_cb.resp_timer =
- alarm_new("bta_hf_client.scb_at_resp_timer");
- bta_hf_client_cb.scb.at_cb.hold_timer =
- alarm_new("bta_hf_client.scb_at_hold_timer");
- bta_hf_client_at_reset();
-}
-
-void bta_hf_client_at_reset(void)
-{
- int i;
-
- bta_hf_client_stop_at_resp_timer();
- bta_hf_client_stop_at_hold_timer();
-
- bta_hf_client_clear_queued_at();
-
+ /* parse */
+ bta_hf_client_at_parse_start();
bta_hf_client_at_clear_buf();
- for (i = 0; i < BTA_HF_CLIENT_AT_INDICATOR_COUNT; i++)
- {
- bta_hf_client_cb.scb.at_cb.indicator_lookup[i] = -1;
- }
+ /* recover cut data */
+ memcpy(bta_hf_client_cb.scb.at_cb.buf, tmp_buff, tmp);
+ bta_hf_client_cb.scb.at_cb.offset += tmp;
+ }
- bta_hf_client_cb.scb.at_cb.current_cmd = BTA_HF_CLIENT_AT_NONE;
+ memcpy(bta_hf_client_cb.scb.at_cb.buf + bta_hf_client_cb.scb.at_cb.offset,
+ buf, len);
+ bta_hf_client_cb.scb.at_cb.offset += len;
+
+ /* If last event is complete, parsing can be started */
+ if (bta_hf_client_check_at_complete() == true) {
+ bta_hf_client_at_parse_start();
+ bta_hf_client_at_clear_buf();
+ }
+}
+
+void bta_hf_client_send_at_brsf(void) {
+ char buf[BTA_HF_CLIENT_AT_MAX_LEN];
+ int at_len;
+
+ APPL_TRACE_DEBUG("%s", __func__);
+
+ at_len =
+ snprintf(buf, sizeof(buf), "AT+BRSF=%u\r", bta_hf_client_cb.scb.features);
+ if (at_len < 0) {
+ APPL_TRACE_ERROR("%s: AT command Framing error", __func__);
+ return;
+ }
+
+ bta_hf_client_send_at(BTA_HF_CLIENT_AT_BRSF, buf, at_len);
+}
+
+void bta_hf_client_send_at_bac(void) {
+ const char* buf;
+
+ APPL_TRACE_DEBUG("%s", __func__);
+
+ if (bta_hf_client_cb.msbc_enabled) {
+ buf = "AT+BAC=1,2\r";
+ } else {
+ buf = "AT+BAC=1\r";
+ }
+
+ bta_hf_client_send_at(BTA_HF_CLIENT_AT_BAC, buf, strlen(buf));
+}
+
+void bta_hf_client_send_at_bcs(uint32_t codec) {
+ char buf[BTA_HF_CLIENT_AT_MAX_LEN];
+ int at_len;
+
+ APPL_TRACE_DEBUG("%s", __func__);
+
+ at_len = snprintf(buf, sizeof(buf), "AT+BCS=%u\r", codec);
+ if (at_len < 0) {
+ APPL_TRACE_ERROR("%s: AT command Framing error", __func__);
+ return;
+ }
+
+ bta_hf_client_send_at(BTA_HF_CLIENT_AT_BCS, buf, at_len);
+}
+
+void bta_hf_client_send_at_cind(bool status) {
+ const char* buf;
+ tBTA_HF_CLIENT_AT_CMD cmd;
+
+ APPL_TRACE_DEBUG("%s", __func__);
+
+ if (status) {
+ buf = "AT+CIND?\r";
+ cmd = BTA_HF_CLIENT_AT_CIND_STATUS;
+ } else {
+ buf = "AT+CIND=?\r";
+ cmd = BTA_HF_CLIENT_AT_CIND;
+ }
+
+ bta_hf_client_send_at(cmd, buf, strlen(buf));
+}
+
+void bta_hf_client_send_at_cmer(bool activate) {
+ const char* buf;
+
+ APPL_TRACE_DEBUG("%s", __func__);
+
+ if (activate)
+ buf = "AT+CMER=3,0,0,1\r";
+ else
+ buf = "AT+CMER=3,0,0,0\r";
+
+ bta_hf_client_send_at(BTA_HF_CLIENT_AT_CMER, buf, strlen(buf));
+}
+
+void bta_hf_client_send_at_chld(char cmd, uint32_t idx) {
+ char buf[BTA_HF_CLIENT_AT_MAX_LEN];
+ int at_len;
+
+ APPL_TRACE_DEBUG("%s", __func__);
+
+ if (idx > 0)
+ at_len = snprintf(buf, sizeof(buf), "AT+CHLD=%c%u\r", cmd, idx);
+ else
+ at_len = snprintf(buf, sizeof(buf), "AT+CHLD=%c\r", cmd);
+
+ if (at_len < 0) {
+ APPL_TRACE_ERROR("%s: AT command Framing error", __func__);
+ return;
+ }
+
+ bta_hf_client_send_at(BTA_HF_CLIENT_AT_CHLD, buf, at_len);
+}
+
+void bta_hf_client_send_at_clip(bool activate) {
+ const char* buf;
+
+ APPL_TRACE_DEBUG("%s", __func__);
+
+ if (activate)
+ buf = "AT+CLIP=1\r";
+ else
+ buf = "AT+CLIP=0\r";
+
+ bta_hf_client_send_at(BTA_HF_CLIENT_AT_CLIP, buf, strlen(buf));
+}
+
+void bta_hf_client_send_at_ccwa(bool activate) {
+ const char* buf;
+
+ APPL_TRACE_DEBUG("%s", __func__);
+
+ if (activate)
+ buf = "AT+CCWA=1\r";
+ else
+ buf = "AT+CCWA=0\r";
+
+ bta_hf_client_send_at(BTA_HF_CLIENT_AT_CCWA, buf, strlen(buf));
+}
+
+void bta_hf_client_send_at_cmee(bool activate) {
+ const char* buf;
+
+ APPL_TRACE_DEBUG("%s", __func__);
+
+ if (activate)
+ buf = "AT+CMEE=1\r";
+ else
+ buf = "AT+CMEE=0\r";
+
+ bta_hf_client_send_at(BTA_HF_CLIENT_AT_CMEE, buf, strlen(buf));
+}
+
+void bta_hf_client_send_at_cops(bool query) {
+ const char* buf;
+
+ APPL_TRACE_DEBUG("%s", __func__);
+
+ if (query)
+ buf = "AT+COPS?\r";
+ else
+ buf = "AT+COPS=3,0\r";
+
+ bta_hf_client_send_at(BTA_HF_CLIENT_AT_COPS, buf, strlen(buf));
+}
+
+void bta_hf_client_send_at_clcc(void) {
+ const char* buf;
+
+ APPL_TRACE_DEBUG("%s", __func__);
+
+ buf = "AT+CLCC\r";
+
+ bta_hf_client_send_at(BTA_HF_CLIENT_AT_CLCC, buf, strlen(buf));
+}
+
+void bta_hf_client_send_at_bvra(bool enable) {
+ const char* buf;
+
+ APPL_TRACE_DEBUG("%s", __func__);
+
+ if (enable)
+ buf = "AT+BVRA=1\r";
+ else
+ buf = "AT+BVRA=0\r";
+
+ bta_hf_client_send_at(BTA_HF_CLIENT_AT_BVRA, buf, strlen(buf));
+}
+
+void bta_hf_client_send_at_vgs(uint32_t volume) {
+ char buf[BTA_HF_CLIENT_AT_MAX_LEN];
+ int at_len;
+
+ APPL_TRACE_DEBUG("%s", __func__);
+
+ at_len = snprintf(buf, sizeof(buf), "AT+VGS=%u\r", volume);
+ if (at_len < 0) {
+ APPL_TRACE_ERROR("%s: AT command Framing error", __func__);
+ return;
+ }
+
+ bta_hf_client_send_at(BTA_HF_CLIENT_AT_VGS, buf, at_len);
+}
+
+void bta_hf_client_send_at_vgm(uint32_t volume) {
+ char buf[BTA_HF_CLIENT_AT_MAX_LEN];
+ int at_len;
+
+ APPL_TRACE_DEBUG("%s", __func__);
+
+ at_len = snprintf(buf, sizeof(buf), "AT+VGM=%u\r", volume);
+ if (at_len < 0) {
+ APPL_TRACE_ERROR("%s: AT command Framing error", __func__);
+ return;
+ }
+
+ bta_hf_client_send_at(BTA_HF_CLIENT_AT_VGM, buf, at_len);
+}
+
+void bta_hf_client_send_at_atd(char* number, uint32_t memory) {
+ char buf[BTA_HF_CLIENT_AT_MAX_LEN];
+ int at_len;
+
+ APPL_TRACE_DEBUG("%s", __func__);
+
+ if (number[0] != '\0') {
+ at_len = snprintf(buf, sizeof(buf), "ATD%s;\r", number);
+ } else {
+ at_len = snprintf(buf, sizeof(buf), "ATD>%u;\r", memory);
+ }
+
+ if (at_len < 0) {
+ APPL_TRACE_ERROR("%s: error preparing ATD command", __func__);
+ return;
+ }
+
+ at_len = MIN((size_t)at_len, sizeof(buf));
+
+ if (at_len < 0) {
+ APPL_TRACE_ERROR("%s: AT command Framing error", __func__);
+ return;
+ }
+ bta_hf_client_send_at(BTA_HF_CLIENT_AT_ATD, buf, at_len);
+}
+
+void bta_hf_client_send_at_bldn(void) {
+ const char* buf;
+
+ APPL_TRACE_DEBUG("%s", __func__);
+
+ buf = "AT+BLDN\r";
+
+ bta_hf_client_send_at(BTA_HF_CLIENT_AT_BLDN, buf, strlen(buf));
+}
+
+void bta_hf_client_send_at_ata(void) {
+ const char* buf;
+
+ APPL_TRACE_DEBUG("%s", __func__);
+
+ buf = "ATA\r";
+
+ bta_hf_client_send_at(BTA_HF_CLIENT_AT_ATA, buf, strlen(buf));
+}
+
+void bta_hf_client_send_at_chup(void) {
+ const char* buf;
+
+ APPL_TRACE_DEBUG("%s", __func__);
+
+ buf = "AT+CHUP\r";
+
+ bta_hf_client_send_at(BTA_HF_CLIENT_AT_CHUP, buf, strlen(buf));
+}
+
+void bta_hf_client_send_at_btrh(bool query, uint32_t val) {
+ char buf[BTA_HF_CLIENT_AT_MAX_LEN];
+ int at_len;
+
+ APPL_TRACE_DEBUG("%s", __func__);
+
+ if (query == true) {
+ at_len = snprintf(buf, sizeof(buf), "AT+BTRH?\r");
+ } else {
+ at_len = snprintf(buf, sizeof(buf), "AT+BTRH=%u\r", val);
+ }
+
+ if (at_len < 0) {
+ APPL_TRACE_ERROR("%s: AT command Framing error", __func__);
+ return;
+ }
+
+ bta_hf_client_send_at(BTA_HF_CLIENT_AT_BTRH, buf, at_len);
+}
+
+void bta_hf_client_send_at_vts(char code) {
+ char buf[BTA_HF_CLIENT_AT_MAX_LEN];
+ int at_len;
+
+ APPL_TRACE_DEBUG("%s", __func__);
+
+ at_len = snprintf(buf, sizeof(buf), "AT+VTS=%c\r", code);
+
+ if (at_len < 0) {
+ APPL_TRACE_ERROR("%s: AT command Framing error", __func__);
+ return;
+ }
+
+ bta_hf_client_send_at(BTA_HF_CLIENT_AT_VTS, buf, at_len);
+}
+
+void bta_hf_client_send_at_bcc(void) {
+ const char* buf;
+
+ APPL_TRACE_DEBUG("%s", __func__);
+
+ buf = "AT+BCC\r";
+
+ bta_hf_client_send_at(BTA_HF_CLIENT_AT_BCC, buf, strlen(buf));
+}
+
+void bta_hf_client_send_at_cnum(void) {
+ const char* buf;
+
+ APPL_TRACE_DEBUG("%s", __func__);
+
+ buf = "AT+CNUM\r";
+
+ bta_hf_client_send_at(BTA_HF_CLIENT_AT_CNUM, buf, strlen(buf));
+}
+
+void bta_hf_client_send_at_nrec(void) {
+ const char* buf;
+
+ APPL_TRACE_DEBUG("%s", __func__);
+
+ if (!(bta_hf_client_cb.scb.peer_features & BTA_HF_CLIENT_PEER_FEAT_ECNR)) {
+ APPL_TRACE_ERROR("%s: Remote does not support NREC.", __func__);
+ return;
+ }
+
+ buf = "AT+NREC=0\r";
+
+ bta_hf_client_send_at(BTA_HF_CLIENT_AT_NREC, buf, strlen(buf));
+}
+
+void bta_hf_client_send_at_binp(uint32_t action) {
+ char buf[BTA_HF_CLIENT_AT_MAX_LEN];
+ int at_len;
+
+ APPL_TRACE_DEBUG("%s", __func__);
+
+ at_len = snprintf(buf, sizeof(buf), "AT+BINP=%u\r", action);
+
+ if (at_len < 0) {
+ APPL_TRACE_ERROR("%s: AT command Framing error", __func__);
+ return;
+ }
+
+ bta_hf_client_send_at(BTA_HF_CLIENT_AT_BINP, buf, at_len);
+}
+
+void bta_hf_client_send_at_bia(void) {
+ char buf[BTA_HF_CLIENT_AT_MAX_LEN];
+ int at_len;
+ int i;
+
+ APPL_TRACE_DEBUG("%s", __func__);
+ if (bta_hf_client_cb.scb.peer_version < HFP_VERSION_1_6) {
+ APPL_TRACE_DEBUG("Remote does not Support AT+BIA");
+ return;
+ }
+
+ at_len = snprintf(buf, sizeof(buf), "AT+BIA=");
+
+ for (i = 0; i < BTA_HF_CLIENT_AT_INDICATOR_COUNT; i++) {
+ int sup = bta_hf_client_cb.scb.at_cb.indicator_lookup[i] == -1 ? 0 : 1;
+
+ at_len += snprintf(buf + at_len, sizeof(buf) - at_len, "%u,", sup);
+ }
+
+ buf[at_len - 1] = '\r';
+
+ if (at_len < 0) {
+ APPL_TRACE_ERROR("%s: AT command Framing error", __func__);
+ return;
+ }
+
+ bta_hf_client_send_at(BTA_HF_CLIENT_AT_BIA, buf, at_len);
+}
+
+void bta_hf_client_at_init(void) {
+ alarm_free(bta_hf_client_cb.scb.at_cb.resp_timer);
+ alarm_free(bta_hf_client_cb.scb.at_cb.hold_timer);
+ memset(&bta_hf_client_cb.scb.at_cb, 0, sizeof(tBTA_HF_CLIENT_AT_CB));
+ bta_hf_client_cb.scb.at_cb.resp_timer =
+ alarm_new("bta_hf_client.scb_at_resp_timer");
+ bta_hf_client_cb.scb.at_cb.hold_timer =
+ alarm_new("bta_hf_client.scb_at_hold_timer");
+ bta_hf_client_at_reset();
+}
+
+void bta_hf_client_at_reset(void) {
+ int i;
+
+ bta_hf_client_stop_at_resp_timer();
+ bta_hf_client_stop_at_hold_timer();
+
+ bta_hf_client_clear_queued_at();
+
+ bta_hf_client_at_clear_buf();
+
+ for (i = 0; i < BTA_HF_CLIENT_AT_INDICATOR_COUNT; i++) {
+ bta_hf_client_cb.scb.at_cb.indicator_lookup[i] = -1;
+ }
+
+ bta_hf_client_cb.scb.at_cb.current_cmd = BTA_HF_CLIENT_AT_NONE;
}
diff --git a/bta/hf_client/bta_hf_client_at.h b/bta/hf_client/bta_hf_client_at.h
index a336cc8..9072195 100644
--- a/bta/hf_client/bta_hf_client_at.h
+++ b/bta/hf_client/bta_hf_client_at.h
@@ -22,67 +22,65 @@
****************************************************************************/
/* ASCII character string of arguments to the AT command */
-#define BTA_HF_CLIENT_AT_MAX_LEN 512
+#define BTA_HF_CLIENT_AT_MAX_LEN 512
/* AT command table element */
-typedef struct
-{
- const char *p_cmd; /* AT command string */
- uint8_t arg_type; /* allowable argument type syntax */
- uint8_t fmt; /* whether arg is int or string */
- uint8_t min; /* minimum value for int arg */
- int16_t max; /* maximum value for int arg */
+typedef struct {
+ const char* p_cmd; /* AT command string */
+ uint8_t arg_type; /* allowable argument type syntax */
+ uint8_t fmt; /* whether arg is int or string */
+ uint8_t min; /* minimum value for int arg */
+ int16_t max; /* maximum value for int arg */
} tBTA_AG_AT_CMD;
/* callback function executed when command is parsed */
-typedef void (tBTA_AG_AT_CMD_CBACK)(void *p_user, uint16_t cmd, uint8_t arg_type,
- char *p_arg, int16_t int_arg);
+typedef void(tBTA_AG_AT_CMD_CBACK)(void* p_user, uint16_t cmd, uint8_t arg_type,
+ char* p_arg, int16_t int_arg);
/* callback function executed to send "ERROR" result code */
-typedef void (tBTA_AG_AT_ERR_CBACK)(void *p_user, bool unknown, char *p_arg);
+typedef void(tBTA_AG_AT_ERR_CBACK)(void* p_user, bool unknown, char* p_arg);
-enum
-{
- BTA_HF_CLIENT_AT_NONE,
- BTA_HF_CLIENT_AT_BRSF,
- BTA_HF_CLIENT_AT_BAC,
- BTA_HF_CLIENT_AT_CIND,
- BTA_HF_CLIENT_AT_CIND_STATUS,
- BTA_HF_CLIENT_AT_CMER,
- BTA_HF_CLIENT_AT_CHLD,
- BTA_HF_CLIENT_AT_CMEE,
- BTA_HF_CLIENT_AT_BIA,
- BTA_HF_CLIENT_AT_CLIP,
- BTA_HF_CLIENT_AT_CCWA,
- BTA_HF_CLIENT_AT_COPS,
- BTA_HF_CLIENT_AT_CLCC,
- BTA_HF_CLIENT_AT_BVRA,
- BTA_HF_CLIENT_AT_VGS,
- BTA_HF_CLIENT_AT_VGM,
- BTA_HF_CLIENT_AT_ATD,
- BTA_HF_CLIENT_AT_BLDN,
- BTA_HF_CLIENT_AT_ATA,
- BTA_HF_CLIENT_AT_CHUP,
- BTA_HF_CLIENT_AT_BTRH,
- BTA_HF_CLIENT_AT_VTS,
- BTA_HF_CLIENT_AT_BCC,
- BTA_HF_CLIENT_AT_BCS,
- BTA_HF_CLIENT_AT_CNUM,
- BTA_HF_CLIENT_AT_NREC,
- BTA_HF_CLIENT_AT_BINP,
+enum {
+ BTA_HF_CLIENT_AT_NONE,
+ BTA_HF_CLIENT_AT_BRSF,
+ BTA_HF_CLIENT_AT_BAC,
+ BTA_HF_CLIENT_AT_CIND,
+ BTA_HF_CLIENT_AT_CIND_STATUS,
+ BTA_HF_CLIENT_AT_CMER,
+ BTA_HF_CLIENT_AT_CHLD,
+ BTA_HF_CLIENT_AT_CMEE,
+ BTA_HF_CLIENT_AT_BIA,
+ BTA_HF_CLIENT_AT_CLIP,
+ BTA_HF_CLIENT_AT_CCWA,
+ BTA_HF_CLIENT_AT_COPS,
+ BTA_HF_CLIENT_AT_CLCC,
+ BTA_HF_CLIENT_AT_BVRA,
+ BTA_HF_CLIENT_AT_VGS,
+ BTA_HF_CLIENT_AT_VGM,
+ BTA_HF_CLIENT_AT_ATD,
+ BTA_HF_CLIENT_AT_BLDN,
+ BTA_HF_CLIENT_AT_ATA,
+ BTA_HF_CLIENT_AT_CHUP,
+ BTA_HF_CLIENT_AT_BTRH,
+ BTA_HF_CLIENT_AT_VTS,
+ BTA_HF_CLIENT_AT_BCC,
+ BTA_HF_CLIENT_AT_BCS,
+ BTA_HF_CLIENT_AT_CNUM,
+ BTA_HF_CLIENT_AT_NREC,
+ BTA_HF_CLIENT_AT_BINP,
};
typedef uint8_t tBTA_HF_CLIENT_AT_CMD;
/* Maximum combined buffer for received AT events string */
-#define BTA_HF_CLIENT_AT_PARSER_MAX_LEN 4096
+#define BTA_HF_CLIENT_AT_PARSER_MAX_LEN 4096
/* This structure holds prepared AT command queued for sending */
-struct queued_at_cmd{
- tBTA_HF_CLIENT_AT_CMD cmd;
- char buf[BTA_HF_CLIENT_AT_MAX_LEN];
- uint16_t buf_len;
- struct queued_at_cmd *next;
+struct queued_at_cmd {
+ tBTA_HF_CLIENT_AT_CMD cmd;
+ char buf[BTA_HF_CLIENT_AT_MAX_LEN];
+ uint16_t buf_len;
+ struct queued_at_cmd* next;
};
typedef struct queued_at_cmd tBTA_HF_CLIENT_AT_QCMD;
@@ -90,18 +88,20 @@
#define BTA_HF_CLIENT_AT_INDICATOR_COUNT 20
/* AT command parsing control block */
-typedef struct
-{
- char buf[BTA_HF_CLIENT_AT_PARSER_MAX_LEN + 1]; /* extra byte to always have \0 at the end */
- unsigned int offset;
- tBTA_HF_CLIENT_AT_CMD current_cmd;
- tBTA_HF_CLIENT_AT_QCMD *queued_cmd;
- alarm_t *resp_timer; /* AT response timer */
- alarm_t *hold_timer; /* AT hold timer */
+typedef struct {
+ char buf[BTA_HF_CLIENT_AT_PARSER_MAX_LEN +
+ 1]; /* extra byte to always have \0 at the end */
+ unsigned int offset;
+ tBTA_HF_CLIENT_AT_CMD current_cmd;
+ tBTA_HF_CLIENT_AT_QCMD* queued_cmd;
+ alarm_t* resp_timer; /* AT response timer */
+ alarm_t* hold_timer; /* AT hold timer */
- /* CIND: lookup table to store the sequence of incoming indicators and their values
- so when their values come later, we know which value in sequence match certain indicator */
- int indicator_lookup[BTA_HF_CLIENT_AT_INDICATOR_COUNT];
+ /* CIND: lookup table to store the sequence of incoming indicators and their
+ values
+ so when their values come later, we know which value in sequence match
+ certain indicator */
+ int indicator_lookup[BTA_HF_CLIENT_AT_INDICATOR_COUNT];
} tBTA_HF_CLIENT_AT_CB;
diff --git a/bta/hf_client/bta_hf_client_cmd.cc b/bta/hf_client/bta_hf_client_cmd.cc
index f8e6b5b..b7109cb 100644
--- a/bta/hf_client/bta_hf_client_cmd.cc
+++ b/bta/hf_client/bta_hf_client_cmd.cc
@@ -20,69 +20,66 @@
#include "bta_hf_client_int.h"
#include "stdio.h"
-void bta_hf_client_send_at_cmd(tBTA_HF_CLIENT_DATA *p_data)
-{
- tBTA_HF_CLIENT_DATA_VAL *p_val = (tBTA_HF_CLIENT_DATA_VAL *)p_data;
- char buf[BTA_HF_CLIENT_AT_MAX_LEN];
+void bta_hf_client_send_at_cmd(tBTA_HF_CLIENT_DATA* p_data) {
+ tBTA_HF_CLIENT_DATA_VAL* p_val = (tBTA_HF_CLIENT_DATA_VAL*)p_data;
+ char buf[BTA_HF_CLIENT_AT_MAX_LEN];
- switch(p_val->uint8_val)
- {
- case BTA_HF_CLIENT_AT_CMD_VTS:
- bta_hf_client_send_at_vts((char)p_val->uint32_val1);
- break;
- case BTA_HF_CLIENT_AT_CMD_BTRH:
- bta_hf_client_send_at_btrh(false, p_val->uint32_val1);
- break;
- case BTA_HF_CLIENT_AT_CMD_CHUP:
- bta_hf_client_send_at_chup();
- break;
- case BTA_HF_CLIENT_AT_CMD_CHLD:
- /* expects ascii code for command */
- bta_hf_client_send_at_chld('0' + p_val->uint32_val1, p_val->uint32_val2);
- break;
- case BTA_HF_CLIENT_AT_CMD_BCC:
- bta_hf_client_send_at_bcc();
- break;
- case BTA_HF_CLIENT_AT_CMD_CNUM:
- bta_hf_client_send_at_cnum();
- break;
- case BTA_HF_CLIENT_AT_CMD_ATA:
- bta_hf_client_send_at_ata();
- break;
- case BTA_HF_CLIENT_AT_CMD_COPS:
- bta_hf_client_send_at_cops(true);
- break;
- case BTA_HF_CLIENT_AT_CMD_ATD:
- bta_hf_client_send_at_atd(p_val->str, p_val->uint32_val1);
- break;
- case BTA_HF_CLIENT_AT_CMD_VGM:
- bta_hf_client_send_at_vgm(p_val->uint32_val1);
- break;
- case BTA_HF_CLIENT_AT_CMD_VGS:
- bta_hf_client_send_at_vgs(p_val->uint32_val1);
- break;
- case BTA_HF_CLIENT_AT_CMD_BVRA:
- bta_hf_client_send_at_bvra(p_val->uint32_val1 == 0 ? false : true);
- break;
- case BTA_HF_CLIENT_AT_CMD_CLCC:
- bta_hf_client_send_at_clcc();
- break;
- case BTA_HF_CLIENT_AT_CMD_BINP:
- bta_hf_client_send_at_binp(p_val->uint32_val1);
- break;
- case BTA_HF_CLIENT_AT_CMD_BLDN:
- bta_hf_client_send_at_bldn();
- break;
- case BTA_HF_CLIENT_AT_CMD_NREC:
- bta_hf_client_send_at_nrec();
- break;
- default:
- APPL_TRACE_ERROR("Default case");
- snprintf(buf,BTA_HF_CLIENT_AT_MAX_LEN,
- "Cmd %d 1st arg %u 2nd arg %u string arg %s",
- p_val->uint8_val, p_val->uint32_val1,
- p_val->uint32_val2, p_val->str);
- APPL_TRACE_ERROR("%s ", buf);
- break;
- }
+ switch (p_val->uint8_val) {
+ case BTA_HF_CLIENT_AT_CMD_VTS:
+ bta_hf_client_send_at_vts((char)p_val->uint32_val1);
+ break;
+ case BTA_HF_CLIENT_AT_CMD_BTRH:
+ bta_hf_client_send_at_btrh(false, p_val->uint32_val1);
+ break;
+ case BTA_HF_CLIENT_AT_CMD_CHUP:
+ bta_hf_client_send_at_chup();
+ break;
+ case BTA_HF_CLIENT_AT_CMD_CHLD:
+ /* expects ascii code for command */
+ bta_hf_client_send_at_chld('0' + p_val->uint32_val1, p_val->uint32_val2);
+ break;
+ case BTA_HF_CLIENT_AT_CMD_BCC:
+ bta_hf_client_send_at_bcc();
+ break;
+ case BTA_HF_CLIENT_AT_CMD_CNUM:
+ bta_hf_client_send_at_cnum();
+ break;
+ case BTA_HF_CLIENT_AT_CMD_ATA:
+ bta_hf_client_send_at_ata();
+ break;
+ case BTA_HF_CLIENT_AT_CMD_COPS:
+ bta_hf_client_send_at_cops(true);
+ break;
+ case BTA_HF_CLIENT_AT_CMD_ATD:
+ bta_hf_client_send_at_atd(p_val->str, p_val->uint32_val1);
+ break;
+ case BTA_HF_CLIENT_AT_CMD_VGM:
+ bta_hf_client_send_at_vgm(p_val->uint32_val1);
+ break;
+ case BTA_HF_CLIENT_AT_CMD_VGS:
+ bta_hf_client_send_at_vgs(p_val->uint32_val1);
+ break;
+ case BTA_HF_CLIENT_AT_CMD_BVRA:
+ bta_hf_client_send_at_bvra(p_val->uint32_val1 == 0 ? false : true);
+ break;
+ case BTA_HF_CLIENT_AT_CMD_CLCC:
+ bta_hf_client_send_at_clcc();
+ break;
+ case BTA_HF_CLIENT_AT_CMD_BINP:
+ bta_hf_client_send_at_binp(p_val->uint32_val1);
+ break;
+ case BTA_HF_CLIENT_AT_CMD_BLDN:
+ bta_hf_client_send_at_bldn();
+ break;
+ case BTA_HF_CLIENT_AT_CMD_NREC:
+ bta_hf_client_send_at_nrec();
+ break;
+ default:
+ APPL_TRACE_ERROR("Default case");
+ snprintf(buf, BTA_HF_CLIENT_AT_MAX_LEN,
+ "Cmd %d 1st arg %u 2nd arg %u string arg %s", p_val->uint8_val,
+ p_val->uint32_val1, p_val->uint32_val2, p_val->str);
+ APPL_TRACE_ERROR("%s ", buf);
+ break;
+ }
}
diff --git a/bta/hf_client/bta_hf_client_int.h b/bta/hf_client/bta_hf_client_int.h
index 45ce5f1..9b3faad 100644
--- a/bta/hf_client/bta_hf_client_int.h
+++ b/bta/hf_client/bta_hf_client_int.h
@@ -17,55 +17,54 @@
*
******************************************************************************/
-#include "bta_sys.h"
#include "bta_api.h"
#include "bta_hf_client_api.h"
#include "bta_hf_client_at.h"
+#include "bta_sys.h"
/*****************************************************************************
* Constants
****************************************************************************/
-#define HFP_VERSION_1_1 0x0101
-#define HFP_VERSION_1_5 0x0105
-#define HFP_VERSION_1_6 0x0106
+#define HFP_VERSION_1_1 0x0101
+#define HFP_VERSION_1_5 0x0105
+#define HFP_VERSION_1_6 0x0106
/* RFCOMM MTU SIZE */
-#define BTA_HF_CLIENT_MTU 256
+#define BTA_HF_CLIENT_MTU 256
/* profile role for connection */
-#define BTA_HF_CLIENT_ACP 0 /* accepted connection */
-#define BTA_HF_CLIENT_INT 1 /* initiating connection */
+#define BTA_HF_CLIENT_ACP 0 /* accepted connection */
+#define BTA_HF_CLIENT_INT 1 /* initiating connection */
/* Time (in milliseconds) to wait for retry in case of collision */
#ifndef BTA_HF_CLIENT_COLLISION_TIMER_MS
-#define BTA_HF_CLIENT_COLLISION_TIMER_MS 2411
+#define BTA_HF_CLIENT_COLLISION_TIMER_MS 2411
#endif
-enum
-{
- /* these events are handled by the state machine */
- BTA_HF_CLIENT_API_REGISTER_EVT = BTA_SYS_EVT_START(BTA_ID_HS),
- BTA_HF_CLIENT_API_DEREGISTER_EVT,
- BTA_HF_CLIENT_API_OPEN_EVT,
- BTA_HF_CLIENT_API_CLOSE_EVT,
- BTA_HF_CLIENT_API_AUDIO_OPEN_EVT,
- BTA_HF_CLIENT_API_AUDIO_CLOSE_EVT,
- BTA_HF_CLIENT_RFC_OPEN_EVT,
- BTA_HF_CLIENT_RFC_CLOSE_EVT,
- BTA_HF_CLIENT_RFC_SRV_CLOSE_EVT,
- BTA_HF_CLIENT_RFC_DATA_EVT,
- BTA_HF_CLIENT_DISC_ACP_RES_EVT,
- BTA_HF_CLIENT_DISC_INT_RES_EVT,
- BTA_HF_CLIENT_DISC_OK_EVT,
- BTA_HF_CLIENT_DISC_FAIL_EVT,
- BTA_HF_CLIENT_SCO_OPEN_EVT,
- BTA_HF_CLIENT_SCO_CLOSE_EVT,
- BTA_HF_CLIENT_SEND_AT_CMD_EVT,
- BTA_HF_CLIENT_MAX_EVT,
+enum {
+ /* these events are handled by the state machine */
+ BTA_HF_CLIENT_API_REGISTER_EVT = BTA_SYS_EVT_START(BTA_ID_HS),
+ BTA_HF_CLIENT_API_DEREGISTER_EVT,
+ BTA_HF_CLIENT_API_OPEN_EVT,
+ BTA_HF_CLIENT_API_CLOSE_EVT,
+ BTA_HF_CLIENT_API_AUDIO_OPEN_EVT,
+ BTA_HF_CLIENT_API_AUDIO_CLOSE_EVT,
+ BTA_HF_CLIENT_RFC_OPEN_EVT,
+ BTA_HF_CLIENT_RFC_CLOSE_EVT,
+ BTA_HF_CLIENT_RFC_SRV_CLOSE_EVT,
+ BTA_HF_CLIENT_RFC_DATA_EVT,
+ BTA_HF_CLIENT_DISC_ACP_RES_EVT,
+ BTA_HF_CLIENT_DISC_INT_RES_EVT,
+ BTA_HF_CLIENT_DISC_OK_EVT,
+ BTA_HF_CLIENT_DISC_FAIL_EVT,
+ BTA_HF_CLIENT_SCO_OPEN_EVT,
+ BTA_HF_CLIENT_SCO_CLOSE_EVT,
+ BTA_HF_CLIENT_SEND_AT_CMD_EVT,
+ BTA_HF_CLIENT_MAX_EVT,
- /* these events are handled outside of the state machine */
- BTA_HF_CLIENT_API_ENABLE_EVT,
- BTA_HF_CLIENT_API_DISABLE_EVT
+ /* these events are handled outside of the state machine */
+ BTA_HF_CLIENT_API_ENABLE_EVT,
+ BTA_HF_CLIENT_API_DISABLE_EVT
};
/*****************************************************************************
@@ -73,117 +72,107 @@
****************************************************************************/
/* data type for BTA_HF_CLIENT_API_ENABLE_EVT */
-typedef struct
-{
- BT_HDR hdr;
- tBTA_HF_CLIENT_CBACK *p_cback;
+typedef struct {
+ BT_HDR hdr;
+ tBTA_HF_CLIENT_CBACK* p_cback;
} tBTA_HF_CLIENT_API_ENABLE;
/* data type for BTA_HF_CLIENT_API_REGISTER_EVT */
-typedef struct
-{
- BT_HDR hdr;
- tBTA_HF_CLIENT_CBACK *p_cback;
- tBTA_SEC sec_mask;
- tBTA_HF_CLIENT_FEAT features;
- char name[BTA_SERVICE_NAME_LEN+1];
+typedef struct {
+ BT_HDR hdr;
+ tBTA_HF_CLIENT_CBACK* p_cback;
+ tBTA_SEC sec_mask;
+ tBTA_HF_CLIENT_FEAT features;
+ char name[BTA_SERVICE_NAME_LEN + 1];
} tBTA_HF_CLIENT_API_REGISTER;
/* data type for BTA_HF_CLIENT_API_OPEN_EVT */
-typedef struct
-{
- BT_HDR hdr;
- BD_ADDR bd_addr;
- tBTA_SEC sec_mask;
+typedef struct {
+ BT_HDR hdr;
+ BD_ADDR bd_addr;
+ tBTA_SEC sec_mask;
} tBTA_HF_CLIENT_API_OPEN;
/* data type for BTA_HF_CLIENT_DISC_RESULT_EVT */
-typedef struct
-{
- BT_HDR hdr;
- uint16_t status;
+typedef struct {
+ BT_HDR hdr;
+ uint16_t status;
} tBTA_HF_CLIENT_DISC_RESULT;
/* data type for RFCOMM events */
-typedef struct
-{
- BT_HDR hdr;
- uint16_t port_handle;
+typedef struct {
+ BT_HDR hdr;
+ uint16_t port_handle;
} tBTA_HF_CLIENT_RFC;
/* generic purpose data type for other events */
-typedef struct
-{
- BT_HDR hdr;
- bool bool_val;
- uint8_t uint8_val;
- uint32_t uint32_val1;
- uint32_t uint32_val2;
- char str[BTA_HF_CLIENT_NUMBER_LEN + 1];
+typedef struct {
+ BT_HDR hdr;
+ bool bool_val;
+ uint8_t uint8_val;
+ uint32_t uint32_val1;
+ uint32_t uint32_val2;
+ char str[BTA_HF_CLIENT_NUMBER_LEN + 1];
} tBTA_HF_CLIENT_DATA_VAL;
/* union of all event datatypes */
-typedef union
-{
- BT_HDR hdr;
- tBTA_HF_CLIENT_API_ENABLE api_enable;
- tBTA_HF_CLIENT_API_REGISTER api_register;
- tBTA_HF_CLIENT_API_OPEN api_open;
- tBTA_HF_CLIENT_DISC_RESULT disc_result;
- tBTA_HF_CLIENT_RFC rfc;
- tBTA_HF_CLIENT_DATA_VAL val;
+typedef union {
+ BT_HDR hdr;
+ tBTA_HF_CLIENT_API_ENABLE api_enable;
+ tBTA_HF_CLIENT_API_REGISTER api_register;
+ tBTA_HF_CLIENT_API_OPEN api_open;
+ tBTA_HF_CLIENT_DISC_RESULT disc_result;
+ tBTA_HF_CLIENT_RFC rfc;
+ tBTA_HF_CLIENT_DATA_VAL val;
} tBTA_HF_CLIENT_DATA;
/* type for each service control block */
-typedef struct
-{
- uint16_t serv_handle; /* RFCOMM server handle */
- BD_ADDR peer_addr; /* peer bd address */
- tSDP_DISCOVERY_DB *p_disc_db; /* pointer to discovery database */
- uint16_t conn_handle; /* RFCOMM handle of connected service */
- tBTA_SEC serv_sec_mask; /* server security mask */
- tBTA_SEC cli_sec_mask; /* client security mask */
- tBTA_HF_CLIENT_FEAT features; /* features registered by application */
- tBTA_HF_CLIENT_PEER_FEAT peer_features; /* peer device features */
- tBTA_HF_CLIENT_CHLD_FEAT chld_features; /* call handling features */
- uint16_t peer_version; /* profile version of peer device */
- uint8_t peer_scn; /* peer scn */
- uint8_t role; /* initiator/acceptor role */
- uint16_t sco_idx; /* SCO handle */
- uint8_t sco_state; /* SCO state variable */
- bool sco_close_rfc; /* true if also close RFCOMM after SCO */
- bool retry_with_sco_only;
- bool deregister; /* true if service shutting down */
- bool svc_conn; /* set to true when service level connection is up */
- bool send_at_reply; /* set to true to notify framework about AT results */
- tBTA_HF_CLIENT_AT_CB at_cb; /* AT Parser control block */
- uint8_t state; /* state machine state */
- tBTM_SCO_CODEC_TYPE negotiated_codec; /* negotiated codec */
- alarm_t *collision_timer; /* Collision timer */
+typedef struct {
+ uint16_t serv_handle; /* RFCOMM server handle */
+ BD_ADDR peer_addr; /* peer bd address */
+ tSDP_DISCOVERY_DB* p_disc_db; /* pointer to discovery database */
+ uint16_t conn_handle; /* RFCOMM handle of connected service */
+ tBTA_SEC serv_sec_mask; /* server security mask */
+ tBTA_SEC cli_sec_mask; /* client security mask */
+ tBTA_HF_CLIENT_FEAT features; /* features registered by application */
+ tBTA_HF_CLIENT_PEER_FEAT peer_features; /* peer device features */
+ tBTA_HF_CLIENT_CHLD_FEAT chld_features; /* call handling features */
+ uint16_t peer_version; /* profile version of peer device */
+ uint8_t peer_scn; /* peer scn */
+ uint8_t role; /* initiator/acceptor role */
+ uint16_t sco_idx; /* SCO handle */
+ uint8_t sco_state; /* SCO state variable */
+ bool sco_close_rfc; /* true if also close RFCOMM after SCO */
+ bool retry_with_sco_only;
+ bool deregister; /* true if service shutting down */
+ bool svc_conn; /* set to true when service level connection is up */
+ bool send_at_reply; /* set to true to notify framework about AT results */
+ tBTA_HF_CLIENT_AT_CB at_cb; /* AT Parser control block */
+ uint8_t state; /* state machine state */
+ tBTM_SCO_CODEC_TYPE negotiated_codec; /* negotiated codec */
+ alarm_t* collision_timer; /* Collision timer */
} tBTA_HF_CLIENT_SCB;
/* sco states */
-enum
-{
- BTA_HF_CLIENT_SCO_SHUTDOWN_ST, /* no listening, no connection */
- BTA_HF_CLIENT_SCO_LISTEN_ST, /* listening */
- BTA_HF_CLIENT_SCO_OPENING_ST, /* connection opening */
- BTA_HF_CLIENT_SCO_OPEN_CL_ST, /* opening connection being closed */
- BTA_HF_CLIENT_SCO_OPEN_ST, /* open */
- BTA_HF_CLIENT_SCO_CLOSING_ST, /* closing */
- BTA_HF_CLIENT_SCO_CLOSE_OP_ST, /* closing sco being opened */
- BTA_HF_CLIENT_SCO_SHUTTING_ST /* sco shutting down */
+enum {
+ BTA_HF_CLIENT_SCO_SHUTDOWN_ST, /* no listening, no connection */
+ BTA_HF_CLIENT_SCO_LISTEN_ST, /* listening */
+ BTA_HF_CLIENT_SCO_OPENING_ST, /* connection opening */
+ BTA_HF_CLIENT_SCO_OPEN_CL_ST, /* opening connection being closed */
+ BTA_HF_CLIENT_SCO_OPEN_ST, /* open */
+ BTA_HF_CLIENT_SCO_CLOSING_ST, /* closing */
+ BTA_HF_CLIENT_SCO_CLOSE_OP_ST, /* closing sco being opened */
+ BTA_HF_CLIENT_SCO_SHUTTING_ST /* sco shutting down */
};
/* type for AG control block */
-typedef struct
-{
- tBTA_HF_CLIENT_SCB scb; /* service control block */
- uint32_t sdp_handle;
- uint8_t scn;
- tBTA_HF_CLIENT_CBACK *p_cback; /* application callback */
- bool msbc_enabled;
+typedef struct {
+ tBTA_HF_CLIENT_SCB scb; /* service control block */
+ uint32_t sdp_handle;
+ uint8_t scn;
+ tBTA_HF_CLIENT_CBACK* p_cback; /* application callback */
+ bool msbc_enabled;
} tBTA_HF_CLIENT_CB;
/*****************************************************************************
@@ -200,42 +189,43 @@
/* main functions */
extern void bta_hf_client_scb_init(void);
extern void bta_hf_client_scb_disable(void);
-extern bool bta_hf_client_hdl_event(BT_HDR *p_msg);
+extern bool bta_hf_client_hdl_event(BT_HDR* p_msg);
extern void bta_hf_client_sm_execute(uint16_t event,
- tBTA_HF_CLIENT_DATA *p_data);
+ tBTA_HF_CLIENT_DATA* p_data);
extern void bta_hf_client_slc_seq(bool error);
-extern void bta_hf_client_collision_cback (tBTA_SYS_CONN_STATUS status, uint8_t id,
- uint8_t app_id, BD_ADDR peer_addr);
-extern void bta_hf_client_resume_open ();
+extern void bta_hf_client_collision_cback(tBTA_SYS_CONN_STATUS status,
+ uint8_t id, uint8_t app_id,
+ BD_ADDR peer_addr);
+extern void bta_hf_client_resume_open();
/* SDP functions */
-extern bool bta_hf_client_add_record(char *p_service_name,
- uint8_t scn, tBTA_HF_CLIENT_FEAT features,
- uint32_t sdp_handle);
-extern void bta_hf_client_create_record(tBTA_HF_CLIENT_DATA *p_data);
-extern void bta_hf_client_del_record(tBTA_HF_CLIENT_DATA *p_data);
+extern bool bta_hf_client_add_record(char* p_service_name, uint8_t scn,
+ tBTA_HF_CLIENT_FEAT features,
+ uint32_t sdp_handle);
+extern void bta_hf_client_create_record(tBTA_HF_CLIENT_DATA* p_data);
+extern void bta_hf_client_del_record(tBTA_HF_CLIENT_DATA* p_data);
extern bool bta_hf_client_sdp_find_attr(void);
extern void bta_hf_client_do_disc(void);
-extern void bta_hf_client_free_db(tBTA_HF_CLIENT_DATA *p_data);
+extern void bta_hf_client_free_db(tBTA_HF_CLIENT_DATA* p_data);
/* RFCOMM functions */
extern void bta_hf_client_setup_port(uint16_t handle);
extern void bta_hf_client_start_server(void);
extern void bta_hf_client_close_server(void);
-extern void bta_hf_client_rfc_do_open(tBTA_HF_CLIENT_DATA *p_data);
-extern void bta_hf_client_rfc_do_close(tBTA_HF_CLIENT_DATA *p_data);
+extern void bta_hf_client_rfc_do_open(tBTA_HF_CLIENT_DATA* p_data);
+extern void bta_hf_client_rfc_do_close(tBTA_HF_CLIENT_DATA* p_data);
/* SCO functions */
-extern void bta_hf_client_sco_listen(tBTA_HF_CLIENT_DATA *p_data);
-extern void bta_hf_client_sco_shutdown(tBTA_HF_CLIENT_DATA *p_data);
-extern void bta_hf_client_sco_conn_open(tBTA_HF_CLIENT_DATA *p_data);
-extern void bta_hf_client_sco_conn_close(tBTA_HF_CLIENT_DATA *p_data);
-extern void bta_hf_client_sco_open(tBTA_HF_CLIENT_DATA *p_data);
-extern void bta_hf_client_sco_close(tBTA_HF_CLIENT_DATA *p_data);
+extern void bta_hf_client_sco_listen(tBTA_HF_CLIENT_DATA* p_data);
+extern void bta_hf_client_sco_shutdown(tBTA_HF_CLIENT_DATA* p_data);
+extern void bta_hf_client_sco_conn_open(tBTA_HF_CLIENT_DATA* p_data);
+extern void bta_hf_client_sco_conn_close(tBTA_HF_CLIENT_DATA* p_data);
+extern void bta_hf_client_sco_open(tBTA_HF_CLIENT_DATA* p_data);
+extern void bta_hf_client_sco_close(tBTA_HF_CLIENT_DATA* p_data);
extern void bta_hf_client_cback_sco(uint8_t event);
/* AT command functions */
-extern void bta_hf_client_at_parse(char *buf, unsigned int len);
+extern void bta_hf_client_at_parse(char* buf, unsigned int len);
extern void bta_hf_client_send_at_brsf(void);
extern void bta_hf_client_send_at_bac(void);
extern void bta_hf_client_send_at_cind(bool status);
@@ -249,7 +239,7 @@
extern void bta_hf_client_send_at_bvra(bool enable);
extern void bta_hf_client_send_at_vgs(uint32_t volume);
extern void bta_hf_client_send_at_vgm(uint32_t volume);
-extern void bta_hf_client_send_at_atd(char *number, uint32_t memory);
+extern void bta_hf_client_send_at_atd(char* number, uint32_t memory);
extern void bta_hf_client_send_at_bldn(void);
extern void bta_hf_client_send_at_ata(void);
extern void bta_hf_client_send_at_chup(void);
@@ -263,31 +253,33 @@
extern void bta_hf_client_send_at_bia(void);
/* Action functions */
-extern void bta_hf_client_register(tBTA_HF_CLIENT_DATA *p_data);
-extern void bta_hf_client_deregister(tBTA_HF_CLIENT_DATA *p_data);
-extern void bta_hf_client_start_dereg(tBTA_HF_CLIENT_DATA *p_data);
-extern void bta_hf_client_start_close(tBTA_HF_CLIENT_DATA *p_data);
-extern void bta_hf_client_start_open(tBTA_HF_CLIENT_DATA *p_data);
-extern void bta_hf_client_rfc_acp_open(tBTA_HF_CLIENT_DATA *p_data);
-extern void bta_hf_client_rfc_open(tBTA_HF_CLIENT_DATA *p_data);
-extern void bta_hf_client_rfc_fail(tBTA_HF_CLIENT_DATA *p_data);
-extern void bta_hf_client_disc_fail(tBTA_HF_CLIENT_DATA *p_data);
-extern void bta_hf_client_open_fail(tBTA_HF_CLIENT_DATA *p_data);
-extern void bta_hf_client_rfc_close(tBTA_HF_CLIENT_DATA *p_data);
-extern void bta_hf_client_disc_acp_res(tBTA_HF_CLIENT_DATA *p_data);
-extern void bta_hf_client_rfc_data(tBTA_HF_CLIENT_DATA *p_data);
-extern void bta_hf_client_disc_int_res(tBTA_HF_CLIENT_DATA *p_data);
-extern void bta_hf_client_svc_conn_open(tBTA_HF_CLIENT_DATA *p_data);
+extern void bta_hf_client_register(tBTA_HF_CLIENT_DATA* p_data);
+extern void bta_hf_client_deregister(tBTA_HF_CLIENT_DATA* p_data);
+extern void bta_hf_client_start_dereg(tBTA_HF_CLIENT_DATA* p_data);
+extern void bta_hf_client_start_close(tBTA_HF_CLIENT_DATA* p_data);
+extern void bta_hf_client_start_open(tBTA_HF_CLIENT_DATA* p_data);
+extern void bta_hf_client_rfc_acp_open(tBTA_HF_CLIENT_DATA* p_data);
+extern void bta_hf_client_rfc_open(tBTA_HF_CLIENT_DATA* p_data);
+extern void bta_hf_client_rfc_fail(tBTA_HF_CLIENT_DATA* p_data);
+extern void bta_hf_client_disc_fail(tBTA_HF_CLIENT_DATA* p_data);
+extern void bta_hf_client_open_fail(tBTA_HF_CLIENT_DATA* p_data);
+extern void bta_hf_client_rfc_close(tBTA_HF_CLIENT_DATA* p_data);
+extern void bta_hf_client_disc_acp_res(tBTA_HF_CLIENT_DATA* p_data);
+extern void bta_hf_client_rfc_data(tBTA_HF_CLIENT_DATA* p_data);
+extern void bta_hf_client_disc_int_res(tBTA_HF_CLIENT_DATA* p_data);
+extern void bta_hf_client_svc_conn_open(tBTA_HF_CLIENT_DATA* p_data);
extern void bta_hf_client_ind(tBTA_HF_CLIENT_IND_TYPE type, uint16_t value);
extern void bta_hf_client_evt_val(tBTA_HF_CLIENT_EVT type, uint16_t value);
-extern void bta_hf_client_operator_name(char *name);
-extern void bta_hf_client_clip(char *number);
-extern void bta_hf_client_ccwa(char *number);
-extern void bta_hf_client_at_result(tBTA_HF_CLIENT_AT_RESULT_TYPE type, uint16_t cme);
-extern void bta_hf_client_clcc(uint32_t idx, bool incoming, uint8_t status, bool mpty, char *number);
-extern void bta_hf_client_cnum(char *number, uint16_t service);
-extern void bta_hf_client_binp(char *number);
+extern void bta_hf_client_operator_name(char* name);
+extern void bta_hf_client_clip(char* number);
+extern void bta_hf_client_ccwa(char* number);
+extern void bta_hf_client_at_result(tBTA_HF_CLIENT_AT_RESULT_TYPE type,
+ uint16_t cme);
+extern void bta_hf_client_clcc(uint32_t idx, bool incoming, uint8_t status,
+ bool mpty, char* number);
+extern void bta_hf_client_cnum(char* number, uint16_t service);
+extern void bta_hf_client_binp(char* number);
/* Commands handling functions */
-extern void bta_hf_client_dial(tBTA_HF_CLIENT_DATA *p_data);
-extern void bta_hf_client_send_at_cmd(tBTA_HF_CLIENT_DATA *p_data);
+extern void bta_hf_client_dial(tBTA_HF_CLIENT_DATA* p_data);
+extern void bta_hf_client_send_at_cmd(tBTA_HF_CLIENT_DATA* p_data);
diff --git a/bta/hf_client/bta_hf_client_main.cc b/bta/hf_client/bta_hf_client_main.cc
index af9589a..85e24c6 100644
--- a/bta/hf_client/bta_hf_client_main.cc
+++ b/bta/hf_client/bta_hf_client_main.cc
@@ -17,16 +17,16 @@
*
******************************************************************************/
-#include <string.h>
#include <stdlib.h>
+#include <string.h>
-#include "osi/include/osi.h"
-#include "osi/include/properties.h"
#include "bt_utils.h"
#include "bta_api.h"
-#include "bta_sys.h"
#include "bta_hf_client_api.h"
#include "bta_hf_client_int.h"
+#include "bta_sys.h"
+#include "osi/include/osi.h"
+#include "osi/include/properties.h"
/* uncomment to enable extra debug */
/* #define BTA_HF_CLIENT_DEBUG TRUE */
@@ -35,199 +35,262 @@
#define BTA_HF_CLIENT_DEBUG FALSE
#endif
-extern fixed_queue_t *btu_bta_alarm_queue;
+extern fixed_queue_t* btu_bta_alarm_queue;
#if (BTA_HF_CLIENT_DEBUG == TRUE)
-static char *bta_hf_client_evt_str(uint16_t event);
-static char *bta_hf_client_state_str(uint8_t state);
+static char* bta_hf_client_evt_str(uint16_t event);
+static char* bta_hf_client_state_str(uint8_t state);
#endif
/* state machine states */
-enum
-{
- BTA_HF_CLIENT_INIT_ST,
- BTA_HF_CLIENT_OPENING_ST,
- BTA_HF_CLIENT_OPEN_ST,
- BTA_HF_CLIENT_CLOSING_ST
+enum {
+ BTA_HF_CLIENT_INIT_ST,
+ BTA_HF_CLIENT_OPENING_ST,
+ BTA_HF_CLIENT_OPEN_ST,
+ BTA_HF_CLIENT_CLOSING_ST
};
/* state machine action enumeration list */
-enum
-{
- BTA_HF_CLIENT_REGISTER,
- BTA_HF_CLIENT_DEREGISTER,
- BTA_HF_CLIENT_START_DEREG,
- BTA_HF_CLIENT_RFC_DO_CLOSE,
- BTA_HF_CLIENT_START_CLOSE,
- BTA_HF_CLIENT_START_OPEN,
- BTA_HF_CLIENT_RFC_ACP_OPEN,
- BTA_HF_CLIENT_SCO_LISTEN,
- BTA_HF_CLIENT_SCO_CONN_OPEN,
- BTA_HF_CLIENT_SCO_CONN_CLOSE,
- BTA_HF_CLIENT_SCO_OPEN,
- BTA_HF_CLIENT_SCO_CLOSE,
- BTA_HF_CLIENT_SCO_SHUTDOWN,
- BTA_HF_CLIENT_FREE_DB,
- BTA_HF_CLIENT_OPEN_FAIL,
- BTA_HF_CLIENT_RFC_OPEN,
- BTA_HF_CLIENT_RFC_FAIL,
- BTA_HF_CLIENT_DISC_INT_RES,
- BTA_HF_CLIENT_RFC_DO_OPEN,
- BTA_HF_CLIENT_DISC_FAIL,
- BTA_HF_CLIENT_RFC_CLOSE,
- BTA_HF_CLIENT_RFC_DATA,
- BTA_HF_CLIENT_DISC_ACP_RES,
- BTA_HF_CLIENT_SVC_CONN_OPEN,
- BTA_HF_CLIENT_SEND_AT_CMD,
- BTA_HF_CLIENT_NUM_ACTIONS,
+enum {
+ BTA_HF_CLIENT_REGISTER,
+ BTA_HF_CLIENT_DEREGISTER,
+ BTA_HF_CLIENT_START_DEREG,
+ BTA_HF_CLIENT_RFC_DO_CLOSE,
+ BTA_HF_CLIENT_START_CLOSE,
+ BTA_HF_CLIENT_START_OPEN,
+ BTA_HF_CLIENT_RFC_ACP_OPEN,
+ BTA_HF_CLIENT_SCO_LISTEN,
+ BTA_HF_CLIENT_SCO_CONN_OPEN,
+ BTA_HF_CLIENT_SCO_CONN_CLOSE,
+ BTA_HF_CLIENT_SCO_OPEN,
+ BTA_HF_CLIENT_SCO_CLOSE,
+ BTA_HF_CLIENT_SCO_SHUTDOWN,
+ BTA_HF_CLIENT_FREE_DB,
+ BTA_HF_CLIENT_OPEN_FAIL,
+ BTA_HF_CLIENT_RFC_OPEN,
+ BTA_HF_CLIENT_RFC_FAIL,
+ BTA_HF_CLIENT_DISC_INT_RES,
+ BTA_HF_CLIENT_RFC_DO_OPEN,
+ BTA_HF_CLIENT_DISC_FAIL,
+ BTA_HF_CLIENT_RFC_CLOSE,
+ BTA_HF_CLIENT_RFC_DATA,
+ BTA_HF_CLIENT_DISC_ACP_RES,
+ BTA_HF_CLIENT_SVC_CONN_OPEN,
+ BTA_HF_CLIENT_SEND_AT_CMD,
+ BTA_HF_CLIENT_NUM_ACTIONS,
};
#define BTA_HF_CLIENT_IGNORE BTA_HF_CLIENT_NUM_ACTIONS
/* type for action functions */
-typedef void (*tBTA_HF_CLIENT_ACTION)(tBTA_HF_CLIENT_DATA *p_data);
+typedef void (*tBTA_HF_CLIENT_ACTION)(tBTA_HF_CLIENT_DATA* p_data);
/* action functions table, indexed with action enum */
-const tBTA_HF_CLIENT_ACTION bta_hf_client_action[] =
-{
-/* BTA_HF_CLIENT_REGISTER */ bta_hf_client_register,
-/* BTA_HF_CLIENT_DEREGISTER */ bta_hf_client_deregister,
-/* BTA_HF_CLIENT_START_DEREG */ bta_hf_client_start_dereg,
-/* BTA_HF_CLIENT_RFC_DO_CLOSE */ bta_hf_client_rfc_do_close,
-/* BTA_HF_CLIENT_START_CLOSE */ bta_hf_client_start_close,
-/* BTA_HF_CLIENT_START_OPEN */ bta_hf_client_start_open,
-/* BTA_HF_CLIENT_RFC_ACP_OPEN */ bta_hf_client_rfc_acp_open,
-/* BTA_HF_CLIENT_SCO_LISTEN */ bta_hf_client_sco_listen,
-/* BTA_HF_CLIENT_SCO_CONN_OPEN */ bta_hf_client_sco_conn_open,
-/* BTA_HF_CLIENT_SCO_CONN_CLOSE*/ bta_hf_client_sco_conn_close,
-/* BTA_HF_CLIENT_SCO_OPEN */ bta_hf_client_sco_open,
-/* BTA_HF_CLIENT_SCO_CLOSE */ bta_hf_client_sco_close,
-/* BTA_HF_CLIENT_SCO_SHUTDOWN */ bta_hf_client_sco_shutdown,
-/* BTA_HF_CLIENT_FREE_DB */ bta_hf_client_free_db,
-/* BTA_HF_CLIENT_OPEN_FAIL */ bta_hf_client_open_fail,
-/* BTA_HF_CLIENT_RFC_OPEN */ bta_hf_client_rfc_open,
-/* BTA_HF_CLIENT_RFC_FAIL */ bta_hf_client_rfc_fail,
-/* BTA_HF_CLIENT_DISC_INT_RES */ bta_hf_client_disc_int_res,
-/* BTA_HF_CLIENT_RFC_DO_OPEN */ bta_hf_client_rfc_do_open,
-/* BTA_HF_CLIENT_DISC_FAIL */ bta_hf_client_disc_fail,
-/* BTA_HF_CLIENT_RFC_CLOSE */ bta_hf_client_rfc_close,
-/* BTA_HF_CLIENT_RFC_DATA */ bta_hf_client_rfc_data,
-/* BTA_HF_CLIENT_DISC_ACP_RES */ bta_hf_client_disc_acp_res,
-/* BTA_HF_CLIENT_SVC_CONN_OPEN */ bta_hf_client_svc_conn_open,
-/* BTA_HF_CLIENT_SEND_AT_CMD */ bta_hf_client_send_at_cmd,
+const tBTA_HF_CLIENT_ACTION bta_hf_client_action[] = {
+ /* BTA_HF_CLIENT_REGISTER */ bta_hf_client_register,
+ /* BTA_HF_CLIENT_DEREGISTER */ bta_hf_client_deregister,
+ /* BTA_HF_CLIENT_START_DEREG */ bta_hf_client_start_dereg,
+ /* BTA_HF_CLIENT_RFC_DO_CLOSE */ bta_hf_client_rfc_do_close,
+ /* BTA_HF_CLIENT_START_CLOSE */ bta_hf_client_start_close,
+ /* BTA_HF_CLIENT_START_OPEN */ bta_hf_client_start_open,
+ /* BTA_HF_CLIENT_RFC_ACP_OPEN */ bta_hf_client_rfc_acp_open,
+ /* BTA_HF_CLIENT_SCO_LISTEN */ bta_hf_client_sco_listen,
+ /* BTA_HF_CLIENT_SCO_CONN_OPEN */ bta_hf_client_sco_conn_open,
+ /* BTA_HF_CLIENT_SCO_CONN_CLOSE*/ bta_hf_client_sco_conn_close,
+ /* BTA_HF_CLIENT_SCO_OPEN */ bta_hf_client_sco_open,
+ /* BTA_HF_CLIENT_SCO_CLOSE */ bta_hf_client_sco_close,
+ /* BTA_HF_CLIENT_SCO_SHUTDOWN */ bta_hf_client_sco_shutdown,
+ /* BTA_HF_CLIENT_FREE_DB */ bta_hf_client_free_db,
+ /* BTA_HF_CLIENT_OPEN_FAIL */ bta_hf_client_open_fail,
+ /* BTA_HF_CLIENT_RFC_OPEN */ bta_hf_client_rfc_open,
+ /* BTA_HF_CLIENT_RFC_FAIL */ bta_hf_client_rfc_fail,
+ /* BTA_HF_CLIENT_DISC_INT_RES */ bta_hf_client_disc_int_res,
+ /* BTA_HF_CLIENT_RFC_DO_OPEN */ bta_hf_client_rfc_do_open,
+ /* BTA_HF_CLIENT_DISC_FAIL */ bta_hf_client_disc_fail,
+ /* BTA_HF_CLIENT_RFC_CLOSE */ bta_hf_client_rfc_close,
+ /* BTA_HF_CLIENT_RFC_DATA */ bta_hf_client_rfc_data,
+ /* BTA_HF_CLIENT_DISC_ACP_RES */ bta_hf_client_disc_acp_res,
+ /* BTA_HF_CLIENT_SVC_CONN_OPEN */ bta_hf_client_svc_conn_open,
+ /* BTA_HF_CLIENT_SEND_AT_CMD */ bta_hf_client_send_at_cmd,
};
/* state table information */
-#define BTA_HF_CLIENT_ACTIONS 2 /* number of actions */
-#define BTA_HF_CLIENT_NEXT_STATE 2 /* position of next state */
-#define BTA_HF_CLIENT_NUM_COLS 3 /* number of columns in state tables */
+#define BTA_HF_CLIENT_ACTIONS 2 /* number of actions */
+#define BTA_HF_CLIENT_NEXT_STATE 2 /* position of next state */
+#define BTA_HF_CLIENT_NUM_COLS 3 /* number of columns in state tables */
/* state table for init state */
-const uint8_t bta_hf_client_st_init[][BTA_HF_CLIENT_NUM_COLS] =
-{
-/* Event Action 1 Action 2 Next state */
-/* API_REGISTER_EVT */ {BTA_HF_CLIENT_REGISTER, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_INIT_ST},
-/* API_DEREGISTER_EVT */ {BTA_HF_CLIENT_DEREGISTER, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_INIT_ST},
-/* API_OPEN_EVT */ {BTA_HF_CLIENT_START_OPEN, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_OPENING_ST},
-/* API_CLOSE_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_INIT_ST},
-/* API_AUDIO_OPEN_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_INIT_ST},
-/* API_AUDIO_CLOSE_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_INIT_ST},
-/* RFC_OPEN_EVT */ {BTA_HF_CLIENT_RFC_ACP_OPEN, BTA_HF_CLIENT_SCO_LISTEN, BTA_HF_CLIENT_OPEN_ST},
-/* RFC_CLOSE_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_INIT_ST},
-/* RFC_SRV_CLOSE_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_INIT_ST},
-/* RFC_DATA_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_INIT_ST},
-/* DISC_ACP_RES_EVT */ {BTA_HF_CLIENT_FREE_DB, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_INIT_ST},
-/* DISC_INT_RES_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_INIT_ST},
-/* DISC_OK_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_INIT_ST},
-/* DISC_FAIL_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_INIT_ST},
-/* SCO_OPEN_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_INIT_ST},
-/* SCO_CLOSE_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_INIT_ST},
-/* SEND_AT_CMD_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_INIT_ST},
+const uint8_t bta_hf_client_st_init[][BTA_HF_CLIENT_NUM_COLS] = {
+ /* Event Action 1 Action 2
+ Next state */
+ /* API_REGISTER_EVT */ {BTA_HF_CLIENT_REGISTER, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_INIT_ST},
+ /* API_DEREGISTER_EVT */ {BTA_HF_CLIENT_DEREGISTER, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_INIT_ST},
+ /* API_OPEN_EVT */ {BTA_HF_CLIENT_START_OPEN, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_OPENING_ST},
+ /* API_CLOSE_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_INIT_ST},
+ /* API_AUDIO_OPEN_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_INIT_ST},
+ /* API_AUDIO_CLOSE_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_INIT_ST},
+ /* RFC_OPEN_EVT */ {BTA_HF_CLIENT_RFC_ACP_OPEN, BTA_HF_CLIENT_SCO_LISTEN,
+ BTA_HF_CLIENT_OPEN_ST},
+ /* RFC_CLOSE_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_INIT_ST},
+ /* RFC_SRV_CLOSE_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_INIT_ST},
+ /* RFC_DATA_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_INIT_ST},
+ /* DISC_ACP_RES_EVT */ {BTA_HF_CLIENT_FREE_DB, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_INIT_ST},
+ /* DISC_INT_RES_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_INIT_ST},
+ /* DISC_OK_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_INIT_ST},
+ /* DISC_FAIL_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_INIT_ST},
+ /* SCO_OPEN_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_INIT_ST},
+ /* SCO_CLOSE_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_INIT_ST},
+ /* SEND_AT_CMD_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_INIT_ST},
};
/* state table for opening state */
-const uint8_t bta_hf_client_st_opening[][BTA_HF_CLIENT_NUM_COLS] =
-{
-/* Event Action 1 Action 2 Next state */
-/* API_REGISTER_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_OPENING_ST},
-/* API_DEREGISTER_EVT */ {BTA_HF_CLIENT_RFC_DO_CLOSE, BTA_HF_CLIENT_START_DEREG, BTA_HF_CLIENT_CLOSING_ST},
-/* API_OPEN_EVT */ {BTA_HF_CLIENT_OPEN_FAIL, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_OPENING_ST},
-/* API_CLOSE_EVT */ {BTA_HF_CLIENT_RFC_DO_CLOSE, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_CLOSING_ST},
-/* API_AUDIO_OPEN_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_OPENING_ST},
-/* API_AUDIO_CLOSE_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_OPENING_ST},
-/* RFC_OPEN_EVT */ {BTA_HF_CLIENT_RFC_OPEN, BTA_HF_CLIENT_SCO_LISTEN, BTA_HF_CLIENT_OPEN_ST},
-/* RFC_CLOSE_EVT */ {BTA_HF_CLIENT_RFC_FAIL, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_INIT_ST},
-/* RFC_SRV_CLOSE_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_OPENING_ST},
-/* RFC_DATA_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_OPENING_ST},
-/* DISC_ACP_RES_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_OPENING_ST},
-/* DISC_INT_RES_EVT */ {BTA_HF_CLIENT_DISC_INT_RES, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_OPENING_ST},
-/* DISC_OK_EVT */ {BTA_HF_CLIENT_RFC_DO_OPEN, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_OPENING_ST},
-/* DISC_FAIL_EVT */ {BTA_HF_CLIENT_DISC_FAIL, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_INIT_ST},
-/* SCO_OPEN_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_OPENING_ST},
-/* SCO_CLOSE_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_OPENING_ST},
-/* SEND_AT_CMD_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_OPENING_ST},
+const uint8_t bta_hf_client_st_opening[][BTA_HF_CLIENT_NUM_COLS] = {
+ /* Event Action 1 Action 2
+ Next state */
+ /* API_REGISTER_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_OPENING_ST},
+ /* API_DEREGISTER_EVT */ {BTA_HF_CLIENT_RFC_DO_CLOSE,
+ BTA_HF_CLIENT_START_DEREG,
+ BTA_HF_CLIENT_CLOSING_ST},
+ /* API_OPEN_EVT */ {BTA_HF_CLIENT_OPEN_FAIL, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_OPENING_ST},
+ /* API_CLOSE_EVT */ {BTA_HF_CLIENT_RFC_DO_CLOSE, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_CLOSING_ST},
+ /* API_AUDIO_OPEN_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_OPENING_ST},
+ /* API_AUDIO_CLOSE_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_OPENING_ST},
+ /* RFC_OPEN_EVT */ {BTA_HF_CLIENT_RFC_OPEN, BTA_HF_CLIENT_SCO_LISTEN,
+ BTA_HF_CLIENT_OPEN_ST},
+ /* RFC_CLOSE_EVT */ {BTA_HF_CLIENT_RFC_FAIL, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_INIT_ST},
+ /* RFC_SRV_CLOSE_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_OPENING_ST},
+ /* RFC_DATA_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_OPENING_ST},
+ /* DISC_ACP_RES_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_OPENING_ST},
+ /* DISC_INT_RES_EVT */ {BTA_HF_CLIENT_DISC_INT_RES, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_OPENING_ST},
+ /* DISC_OK_EVT */ {BTA_HF_CLIENT_RFC_DO_OPEN, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_OPENING_ST},
+ /* DISC_FAIL_EVT */ {BTA_HF_CLIENT_DISC_FAIL, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_INIT_ST},
+ /* SCO_OPEN_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_OPENING_ST},
+ /* SCO_CLOSE_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_OPENING_ST},
+ /* SEND_AT_CMD_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_OPENING_ST},
};
/* state table for open state */
-const uint8_t bta_hf_client_st_open[][BTA_HF_CLIENT_NUM_COLS] =
-{
-/* Event Action 1 Action 2 Next state */
-/* API_REGISTER_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_OPEN_ST},
-/* API_DEREGISTER_EVT */ {BTA_HF_CLIENT_START_CLOSE, BTA_HF_CLIENT_START_DEREG, BTA_HF_CLIENT_CLOSING_ST},
-/* API_OPEN_EVT */ {BTA_HF_CLIENT_OPEN_FAIL, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_OPEN_ST},
-/* API_CLOSE_EVT */ {BTA_HF_CLIENT_START_CLOSE, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_CLOSING_ST},
-/* API_AUDIO_OPEN_EVT */ {BTA_HF_CLIENT_SCO_OPEN, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_OPEN_ST},
-/* API_AUDIO_CLOSE_EVT */ {BTA_HF_CLIENT_SCO_CLOSE, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_OPEN_ST},
-/* RFC_OPEN_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_OPEN_ST},
-/* RFC_CLOSE_EVT */ {BTA_HF_CLIENT_RFC_CLOSE, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_INIT_ST},
-/* RFC_SRV_CLOSE_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_OPEN_ST},
-/* RFC_DATA_EVT */ {BTA_HF_CLIENT_RFC_DATA, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_OPEN_ST},
-/* DISC_ACP_RES_EVT */ {BTA_HF_CLIENT_DISC_ACP_RES, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_OPEN_ST},
-/* DISC_INT_RES_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_OPEN_ST},
-/* DISC_OK_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_OPEN_ST},
-/* DISC_FAIL_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_OPEN_ST},
-/* SCO_OPEN_EVT */ {BTA_HF_CLIENT_SCO_CONN_OPEN, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_OPEN_ST},
-/* SCO_CLOSE_EVT */ {BTA_HF_CLIENT_SCO_CONN_CLOSE, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_OPEN_ST},
-/* SEND_AT_CMD_EVT */ {BTA_HF_CLIENT_SEND_AT_CMD, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_OPEN_ST},
+const uint8_t bta_hf_client_st_open[][BTA_HF_CLIENT_NUM_COLS] = {
+ /* Event Action 1 Action 2
+ Next state */
+ /* API_REGISTER_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_OPEN_ST},
+ /* API_DEREGISTER_EVT */ {BTA_HF_CLIENT_START_CLOSE,
+ BTA_HF_CLIENT_START_DEREG,
+ BTA_HF_CLIENT_CLOSING_ST},
+ /* API_OPEN_EVT */ {BTA_HF_CLIENT_OPEN_FAIL, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_OPEN_ST},
+ /* API_CLOSE_EVT */ {BTA_HF_CLIENT_START_CLOSE, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_CLOSING_ST},
+ /* API_AUDIO_OPEN_EVT */ {BTA_HF_CLIENT_SCO_OPEN, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_OPEN_ST},
+ /* API_AUDIO_CLOSE_EVT */ {BTA_HF_CLIENT_SCO_CLOSE, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_OPEN_ST},
+ /* RFC_OPEN_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_OPEN_ST},
+ /* RFC_CLOSE_EVT */ {BTA_HF_CLIENT_RFC_CLOSE, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_INIT_ST},
+ /* RFC_SRV_CLOSE_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_OPEN_ST},
+ /* RFC_DATA_EVT */ {BTA_HF_CLIENT_RFC_DATA, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_OPEN_ST},
+ /* DISC_ACP_RES_EVT */ {BTA_HF_CLIENT_DISC_ACP_RES, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_OPEN_ST},
+ /* DISC_INT_RES_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_OPEN_ST},
+ /* DISC_OK_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_OPEN_ST},
+ /* DISC_FAIL_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_OPEN_ST},
+ /* SCO_OPEN_EVT */ {BTA_HF_CLIENT_SCO_CONN_OPEN, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_OPEN_ST},
+ /* SCO_CLOSE_EVT */ {BTA_HF_CLIENT_SCO_CONN_CLOSE, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_OPEN_ST},
+ /* SEND_AT_CMD_EVT */ {BTA_HF_CLIENT_SEND_AT_CMD, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_OPEN_ST},
};
/* state table for closing state */
-const uint8_t bta_hf_client_st_closing[][BTA_HF_CLIENT_NUM_COLS] =
-{
-/* Event Action 1 Action 2 Next state */
-/* API_REGISTER_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_CLOSING_ST},
-/* API_DEREGISTER_EVT */ {BTA_HF_CLIENT_START_DEREG, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_CLOSING_ST},
-/* API_OPEN_EVT */ {BTA_HF_CLIENT_OPEN_FAIL, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_CLOSING_ST},
-/* API_CLOSE_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_CLOSING_ST},
-/* API_AUDIO_OPEN_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_CLOSING_ST},
-/* API_AUDIO_CLOSE_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_CLOSING_ST},
-/* RFC_OPEN_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_CLOSING_ST},
-/* RFC_CLOSE_EVT */ {BTA_HF_CLIENT_RFC_CLOSE, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_INIT_ST},
-/* RFC_SRV_CLOSE_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_CLOSING_ST},
-/* RFC_DATA_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_CLOSING_ST},
-/* DISC_ACP_RES_EVT */ {BTA_HF_CLIENT_FREE_DB, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_CLOSING_ST},
-/* DISC_INT_RES_EVT */ {BTA_HF_CLIENT_FREE_DB, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_INIT_ST},
-/* DISC_OK_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_CLOSING_ST},
-/* DISC_FAIL_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_CLOSING_ST},
-/* SCO_OPEN_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_CLOSING_ST},
-/* SCO_CLOSE_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_CLOSING_ST},
-/* SEND_AT_CMD_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_CLOSING_ST},
+const uint8_t bta_hf_client_st_closing[][BTA_HF_CLIENT_NUM_COLS] = {
+ /* Event Action 1 Action 2
+ Next state */
+ /* API_REGISTER_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_CLOSING_ST},
+ /* API_DEREGISTER_EVT */ {BTA_HF_CLIENT_START_DEREG, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_CLOSING_ST},
+ /* API_OPEN_EVT */ {BTA_HF_CLIENT_OPEN_FAIL, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_CLOSING_ST},
+ /* API_CLOSE_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_CLOSING_ST},
+ /* API_AUDIO_OPEN_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_CLOSING_ST},
+ /* API_AUDIO_CLOSE_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_CLOSING_ST},
+ /* RFC_OPEN_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_CLOSING_ST},
+ /* RFC_CLOSE_EVT */ {BTA_HF_CLIENT_RFC_CLOSE, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_INIT_ST},
+ /* RFC_SRV_CLOSE_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_CLOSING_ST},
+ /* RFC_DATA_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_CLOSING_ST},
+ /* DISC_ACP_RES_EVT */ {BTA_HF_CLIENT_FREE_DB, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_CLOSING_ST},
+ /* DISC_INT_RES_EVT */ {BTA_HF_CLIENT_FREE_DB, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_INIT_ST},
+ /* DISC_OK_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_CLOSING_ST},
+ /* DISC_FAIL_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_CLOSING_ST},
+ /* SCO_OPEN_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_CLOSING_ST},
+ /* SCO_CLOSE_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_CLOSING_ST},
+ /* SEND_AT_CMD_EVT */ {BTA_HF_CLIENT_IGNORE, BTA_HF_CLIENT_IGNORE,
+ BTA_HF_CLIENT_CLOSING_ST},
};
/* type for state table */
typedef const uint8_t (*tBTA_HF_CLIENT_ST_TBL)[BTA_HF_CLIENT_NUM_COLS];
/* state table */
-const tBTA_HF_CLIENT_ST_TBL bta_hf_client_st_tbl[] =
-{
- bta_hf_client_st_init,
- bta_hf_client_st_opening,
- bta_hf_client_st_open,
- bta_hf_client_st_closing
-};
+const tBTA_HF_CLIENT_ST_TBL bta_hf_client_st_tbl[] = {
+ bta_hf_client_st_init, bta_hf_client_st_opening, bta_hf_client_st_open,
+ bta_hf_client_st_closing};
/* HF Client control block */
-tBTA_HF_CLIENT_CB bta_hf_client_cb;
+tBTA_HF_CLIENT_CB bta_hf_client_cb;
/*******************************************************************************
*
@@ -239,18 +302,17 @@
* Returns void
*
******************************************************************************/
-void bta_hf_client_scb_init(void)
-{
- APPL_TRACE_DEBUG("%s", __func__);
+void bta_hf_client_scb_init(void) {
+ APPL_TRACE_DEBUG("%s", __func__);
- alarm_free(bta_hf_client_cb.scb.collision_timer);
- alarm_free(bta_hf_client_cb.scb.at_cb.resp_timer);
- alarm_free(bta_hf_client_cb.scb.at_cb.hold_timer);
- memset(&bta_hf_client_cb.scb, 0, sizeof(tBTA_HF_CLIENT_SCB));
- bta_hf_client_cb.scb.collision_timer =
+ alarm_free(bta_hf_client_cb.scb.collision_timer);
+ alarm_free(bta_hf_client_cb.scb.at_cb.resp_timer);
+ alarm_free(bta_hf_client_cb.scb.at_cb.hold_timer);
+ memset(&bta_hf_client_cb.scb, 0, sizeof(tBTA_HF_CLIENT_SCB));
+ bta_hf_client_cb.scb.collision_timer =
alarm_new("bta_hf_client.scb_collision_timer");
- bta_hf_client_cb.scb.sco_idx = BTM_INVALID_SCO_INDEX;
- bta_hf_client_cb.scb.negotiated_codec = BTM_SCO_CODEC_CVSD;
+ bta_hf_client_cb.scb.sco_idx = BTM_INVALID_SCO_INDEX;
+ bta_hf_client_cb.scb.negotiated_codec = BTM_SCO_CODEC_CVSD;
}
/*******************************************************************************
@@ -263,13 +325,12 @@
* Returns void
*
******************************************************************************/
-void bta_hf_client_scb_disable(void)
-{
- APPL_TRACE_DEBUG("%s", __func__);
+void bta_hf_client_scb_disable(void) {
+ APPL_TRACE_DEBUG("%s", __func__);
- bta_hf_client_scb_init();
+ bta_hf_client_scb_init();
- (*bta_hf_client_cb.p_cback)(BTA_HF_CLIENT_DISABLE_EVT, NULL);
+ (*bta_hf_client_cb.p_cback)(BTA_HF_CLIENT_DISABLE_EVT, NULL);
}
/*******************************************************************************
@@ -282,16 +343,14 @@
* Returns void
*
******************************************************************************/
-void bta_hf_client_resume_open (void)
-{
- APPL_TRACE_DEBUG ("%s", __func__);
+void bta_hf_client_resume_open(void) {
+ APPL_TRACE_DEBUG("%s", __func__);
- /* resume opening process. */
- if (bta_hf_client_cb.scb.state == BTA_HF_CLIENT_INIT_ST)
- {
- bta_hf_client_cb.scb.state = BTA_HF_CLIENT_OPENING_ST;
- bta_hf_client_start_open (NULL);
- }
+ /* resume opening process. */
+ if (bta_hf_client_cb.scb.state == BTA_HF_CLIENT_INIT_ST) {
+ bta_hf_client_cb.scb.state = BTA_HF_CLIENT_OPENING_ST;
+ bta_hf_client_start_open(NULL);
+ }
}
/*******************************************************************************
@@ -304,12 +363,11 @@
* Returns void
*
******************************************************************************/
-static void bta_hf_client_collision_timer_cback(UNUSED_ATTR void *data)
-{
- APPL_TRACE_DEBUG("%s", __func__);
+static void bta_hf_client_collision_timer_cback(UNUSED_ATTR void* data) {
+ APPL_TRACE_DEBUG("%s", __func__);
- /* If the peer haven't opened connection, restart opening process */
- bta_hf_client_resume_open();
+ /* If the peer haven't opened connection, restart opening process */
+ bta_hf_client_resume_open();
}
/*******************************************************************************
@@ -322,45 +380,37 @@
* Returns void
*
******************************************************************************/
-void bta_hf_client_collision_cback (UNUSED_ATTR tBTA_SYS_CONN_STATUS status, uint8_t id,
- UNUSED_ATTR uint8_t app_id,
- UNUSED_ATTR BD_ADDR peer_addr)
-{
- if (bta_hf_client_cb.scb.state == BTA_HF_CLIENT_OPENING_ST)
+void bta_hf_client_collision_cback(UNUSED_ATTR tBTA_SYS_CONN_STATUS status,
+ uint8_t id, UNUSED_ATTR uint8_t app_id,
+ UNUSED_ATTR BD_ADDR peer_addr) {
+ if (bta_hf_client_cb.scb.state == BTA_HF_CLIENT_OPENING_ST) {
+ if (id == BTA_ID_SYS) /* ACL collision */
{
- if (id == BTA_ID_SYS) /* ACL collision */
- {
- APPL_TRACE_WARNING ("HF Client found collision (ACL) ...");
- }
- else if (id == BTA_ID_HS) /* RFCOMM collision */
- {
- APPL_TRACE_WARNING ("HF Client found collision (RFCOMM) ...");
- }
- else
- {
- APPL_TRACE_WARNING ("HF Client found collision (\?\?\?) ...");
- }
-
- bta_hf_client_cb.scb.state = BTA_HF_CLIENT_INIT_ST;
-
- /* Cancel SDP if it had been started. */
- if(bta_hf_client_cb.scb.p_disc_db)
- {
- (void)SDP_CancelServiceSearch (bta_hf_client_cb.scb.p_disc_db);
- bta_hf_client_free_db(NULL);
- }
-
- /* reopen registered server */
- /* Collision may be detected before or after we close servers. */
- bta_hf_client_start_server();
-
- /* Start timer to handle connection opening restart */
- alarm_set_on_queue(bta_hf_client_cb.scb.collision_timer,
- BTA_HF_CLIENT_COLLISION_TIMER_MS,
- bta_hf_client_collision_timer_cback,
- NULL,
- btu_bta_alarm_queue);
+ APPL_TRACE_WARNING("HF Client found collision (ACL) ...");
+ } else if (id == BTA_ID_HS) /* RFCOMM collision */
+ {
+ APPL_TRACE_WARNING("HF Client found collision (RFCOMM) ...");
+ } else {
+ APPL_TRACE_WARNING("HF Client found collision (\?\?\?) ...");
}
+
+ bta_hf_client_cb.scb.state = BTA_HF_CLIENT_INIT_ST;
+
+ /* Cancel SDP if it had been started. */
+ if (bta_hf_client_cb.scb.p_disc_db) {
+ (void)SDP_CancelServiceSearch(bta_hf_client_cb.scb.p_disc_db);
+ bta_hf_client_free_db(NULL);
+ }
+
+ /* reopen registered server */
+ /* Collision may be detected before or after we close servers. */
+ bta_hf_client_start_server();
+
+ /* Start timer to handle connection opening restart */
+ alarm_set_on_queue(
+ bta_hf_client_cb.scb.collision_timer, BTA_HF_CLIENT_COLLISION_TIMER_MS,
+ bta_hf_client_collision_timer_cback, NULL, btu_bta_alarm_queue);
+ }
}
/*******************************************************************************
@@ -373,32 +423,30 @@
* Returns void
*
******************************************************************************/
-static void bta_hf_client_api_enable(tBTA_HF_CLIENT_DATA *p_data)
-{
- char value[PROPERTY_VALUE_MAX];
+static void bta_hf_client_api_enable(tBTA_HF_CLIENT_DATA* p_data) {
+ char value[PROPERTY_VALUE_MAX];
- /* initialize control block */
- memset(&bta_hf_client_cb, 0, sizeof(tBTA_HF_CLIENT_CB));
+ /* initialize control block */
+ memset(&bta_hf_client_cb, 0, sizeof(tBTA_HF_CLIENT_CB));
- /* store callback function */
- bta_hf_client_cb.p_cback = p_data->api_enable.p_cback;
+ /* store callback function */
+ bta_hf_client_cb.p_cback = p_data->api_enable.p_cback;
- /* check if mSBC support enabled */
- osi_property_get("ro.bluetooth.hfp.ver", value, "0");
- if (strcmp(value,"1.6") == 0)
- {
- bta_hf_client_cb.msbc_enabled = true;
- }
+ /* check if mSBC support enabled */
+ osi_property_get("ro.bluetooth.hfp.ver", value, "0");
+ if (strcmp(value, "1.6") == 0) {
+ bta_hf_client_cb.msbc_enabled = true;
+ }
- bta_hf_client_cb.scb.negotiated_codec = BTM_SCO_CODEC_CVSD;
+ bta_hf_client_cb.scb.negotiated_codec = BTM_SCO_CODEC_CVSD;
- /* set same setting as AG does */
- BTM_WriteVoiceSettings(AG_VOICE_SETTINGS);
+ /* set same setting as AG does */
+ BTM_WriteVoiceSettings(AG_VOICE_SETTINGS);
- bta_sys_collision_register (BTA_ID_HS, bta_hf_client_collision_cback);
+ bta_sys_collision_register(BTA_ID_HS, bta_hf_client_collision_cback);
- /* call callback with enable event */
- (*bta_hf_client_cb.p_cback)(BTA_HF_CLIENT_ENABLE_EVT, NULL);
+ /* call callback with enable event */
+ (*bta_hf_client_cb.p_cback)(BTA_HF_CLIENT_ENABLE_EVT, NULL);
}
/*******************************************************************************
@@ -411,20 +459,18 @@
* Returns void
*
******************************************************************************/
-static void bta_hf_client_api_disable(tBTA_HF_CLIENT_DATA *p_data)
-{
- if (!bta_sys_is_register (BTA_ID_HS))
- {
- APPL_TRACE_ERROR("BTA HF Client is already disabled, ignoring ...");
- return;
- }
+static void bta_hf_client_api_disable(tBTA_HF_CLIENT_DATA* p_data) {
+ if (!bta_sys_is_register(BTA_ID_HS)) {
+ APPL_TRACE_ERROR("BTA HF Client is already disabled, ignoring ...");
+ return;
+ }
- /* De-register with BTA system manager */
- bta_sys_deregister(BTA_ID_HS);
+ /* De-register with BTA system manager */
+ bta_sys_deregister(BTA_ID_HS);
- bta_hf_client_sm_execute(BTA_HF_CLIENT_API_DEREGISTER_EVT, p_data);
+ bta_hf_client_sm_execute(BTA_HF_CLIENT_API_DEREGISTER_EVT, p_data);
- bta_sys_collision_register (BTA_ID_HS, NULL);
+ bta_sys_collision_register(BTA_ID_HS, NULL);
}
/*******************************************************************************
@@ -437,29 +483,28 @@
* Returns bool
*
******************************************************************************/
-bool bta_hf_client_hdl_event(BT_HDR *p_msg)
-{
+bool bta_hf_client_hdl_event(BT_HDR* p_msg) {
#if (BTA_HF_CLIENT_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hf_client_hdl_event %s (0x%x)", bta_hf_client_evt_str(p_msg->event), p_msg->event);
+ APPL_TRACE_DEBUG("bta_hf_client_hdl_event %s (0x%x)",
+ bta_hf_client_evt_str(p_msg->event), p_msg->event);
#endif
- switch (p_msg->event)
- {
- /* handle enable event */
- case BTA_HF_CLIENT_API_ENABLE_EVT:
- bta_hf_client_api_enable((tBTA_HF_CLIENT_DATA *) p_msg);
- break;
+ switch (p_msg->event) {
+ /* handle enable event */
+ case BTA_HF_CLIENT_API_ENABLE_EVT:
+ bta_hf_client_api_enable((tBTA_HF_CLIENT_DATA*)p_msg);
+ break;
- /* handle disable event */
- case BTA_HF_CLIENT_API_DISABLE_EVT:
- bta_hf_client_api_disable((tBTA_HF_CLIENT_DATA *) p_msg);
- break;
+ /* handle disable event */
+ case BTA_HF_CLIENT_API_DISABLE_EVT:
+ bta_hf_client_api_disable((tBTA_HF_CLIENT_DATA*)p_msg);
+ break;
- default:
- bta_hf_client_sm_execute(p_msg->event, (tBTA_HF_CLIENT_DATA *) p_msg);
- break;
- }
- return true;
+ default:
+ bta_hf_client_sm_execute(p_msg->event, (tBTA_HF_CLIENT_DATA*)p_msg);
+ break;
+ }
+ return true;
}
/*******************************************************************************
@@ -472,73 +517,66 @@
* Returns void
*
******************************************************************************/
-void bta_hf_client_sm_execute(uint16_t event, tBTA_HF_CLIENT_DATA *p_data)
-{
- tBTA_HF_CLIENT_ST_TBL state_table;
- uint8_t action;
- int i;
+void bta_hf_client_sm_execute(uint16_t event, tBTA_HF_CLIENT_DATA* p_data) {
+ tBTA_HF_CLIENT_ST_TBL state_table;
+ uint8_t action;
+ int i;
#if (BTA_HF_CLIENT_DEBUG == TRUE)
- uint16_t in_event = event;
- uint8_t in_state = bta_hf_client_cb.scb.state;
+ uint16_t in_event = event;
+ uint8_t in_state = bta_hf_client_cb.scb.state;
- /* Ignore displaying of AT results when not connected (Ignored in state machine) */
- if (bta_hf_client_cb.scb.state == BTA_HF_CLIENT_OPEN_ST)
- {
- APPL_TRACE_EVENT("HF Client evt : State %d (%s), Event 0x%04x (%s)",
- bta_hf_client_cb.scb.state,
- bta_hf_client_state_str(bta_hf_client_cb.scb.state),
- event, bta_hf_client_evt_str(event));
- }
+ /* Ignore displaying of AT results when not connected (Ignored in state
+ * machine) */
+ if (bta_hf_client_cb.scb.state == BTA_HF_CLIENT_OPEN_ST) {
+ APPL_TRACE_EVENT("HF Client evt : State %d (%s), Event 0x%04x (%s)",
+ bta_hf_client_cb.scb.state,
+ bta_hf_client_state_str(bta_hf_client_cb.scb.state), event,
+ bta_hf_client_evt_str(event));
+ }
#endif
- event &= 0x00FF;
- if (event >= (BTA_HF_CLIENT_MAX_EVT & 0x00FF))
- {
- APPL_TRACE_ERROR("HF Client evt out of range, ignoring...");
- return;
+ event &= 0x00FF;
+ if (event >= (BTA_HF_CLIENT_MAX_EVT & 0x00FF)) {
+ APPL_TRACE_ERROR("HF Client evt out of range, ignoring...");
+ return;
+ }
+
+ /* look up the state table for the current state */
+ state_table = bta_hf_client_st_tbl[bta_hf_client_cb.scb.state];
+
+ /* set next state */
+ bta_hf_client_cb.scb.state = state_table[event][BTA_HF_CLIENT_NEXT_STATE];
+
+ /* execute action functions */
+ for (i = 0; i < BTA_HF_CLIENT_ACTIONS; i++) {
+ if ((action = state_table[event][i]) != BTA_HF_CLIENT_IGNORE) {
+ (*bta_hf_client_action[action])(p_data);
+ } else {
+ break;
}
-
- /* look up the state table for the current state */
- state_table = bta_hf_client_st_tbl[bta_hf_client_cb.scb.state];
-
- /* set next state */
- bta_hf_client_cb.scb.state = state_table[event][BTA_HF_CLIENT_NEXT_STATE];
-
- /* execute action functions */
- for (i = 0; i < BTA_HF_CLIENT_ACTIONS; i++)
- {
- if ((action = state_table[event][i]) != BTA_HF_CLIENT_IGNORE)
- {
- (*bta_hf_client_action[action])(p_data);
- }
- else
- {
- break;
- }
- }
+ }
#if (BTA_HF_CLIENT_DEBUG == TRUE)
- if (bta_hf_client_cb.scb.state != in_state)
- {
- APPL_TRACE_EVENT("BTA HF Client State Change: [%s] -> [%s] after Event [%s]",
- bta_hf_client_state_str(in_state),
- bta_hf_client_state_str(bta_hf_client_cb.scb.state),
- bta_hf_client_evt_str(in_event));
- }
+ if (bta_hf_client_cb.scb.state != in_state) {
+ APPL_TRACE_EVENT(
+ "BTA HF Client State Change: [%s] -> [%s] after Event [%s]",
+ bta_hf_client_state_str(in_state),
+ bta_hf_client_state_str(bta_hf_client_cb.scb.state),
+ bta_hf_client_evt_str(in_event));
+ }
#endif
}
-static void send_post_slc_cmd(void)
-{
- bta_hf_client_cb.scb.at_cb.current_cmd = BTA_HF_CLIENT_AT_NONE;
+static void send_post_slc_cmd(void) {
+ bta_hf_client_cb.scb.at_cb.current_cmd = BTA_HF_CLIENT_AT_NONE;
- bta_hf_client_send_at_bia();
- bta_hf_client_send_at_ccwa(true);
- bta_hf_client_send_at_cmee(true);
- bta_hf_client_send_at_cops(false);
- bta_hf_client_send_at_btrh(true, 0);
- bta_hf_client_send_at_clip(true);
+ bta_hf_client_send_at_bia();
+ bta_hf_client_send_at_ccwa(true);
+ bta_hf_client_send_at_cmee(true);
+ bta_hf_client_send_at_cops(false);
+ bta_hf_client_send_at_btrh(true, 0);
+ bta_hf_client_send_at_clip(true);
}
/*******************************************************************************
@@ -551,89 +589,86 @@
* Returns void
*
******************************************************************************/
-void bta_hf_client_slc_seq(bool error)
-{
- APPL_TRACE_DEBUG("bta_hf_client_slc_seq cmd: %u", bta_hf_client_cb.scb.at_cb.current_cmd);
+void bta_hf_client_slc_seq(bool error) {
+ APPL_TRACE_DEBUG("bta_hf_client_slc_seq cmd: %u",
+ bta_hf_client_cb.scb.at_cb.current_cmd);
- if (error) {
- /* SLC establishment error, sent close rfcomm event */
- APPL_TRACE_ERROR("HFPClient: Failed to create SLC due to AT error, disconnecting (%u)",
- bta_hf_client_cb.scb.at_cb.current_cmd);
+ if (error) {
+ /* SLC establishment error, sent close rfcomm event */
+ APPL_TRACE_ERROR(
+ "HFPClient: Failed to create SLC due to AT error, disconnecting (%u)",
+ bta_hf_client_cb.scb.at_cb.current_cmd);
- bta_hf_client_sm_execute(BTA_HF_CLIENT_API_CLOSE_EVT, NULL);
- return;
- }
+ bta_hf_client_sm_execute(BTA_HF_CLIENT_API_CLOSE_EVT, NULL);
+ return;
+ }
- if (bta_hf_client_cb.scb.svc_conn)
- return;
+ if (bta_hf_client_cb.scb.svc_conn) return;
- switch (bta_hf_client_cb.scb.at_cb.current_cmd)
- {
+ switch (bta_hf_client_cb.scb.at_cb.current_cmd) {
case BTA_HF_CLIENT_AT_NONE:
- bta_hf_client_send_at_brsf();
- break;
+ bta_hf_client_send_at_brsf();
+ break;
case BTA_HF_CLIENT_AT_BRSF:
- if ((bta_hf_client_cb.scb.features & BTA_HF_CLIENT_FEAT_CODEC)
- && (bta_hf_client_cb.scb.peer_features & BTA_HF_CLIENT_PEER_CODEC))
- {
- bta_hf_client_send_at_bac();
- break;
- }
-
- bta_hf_client_send_at_cind(false);
+ if ((bta_hf_client_cb.scb.features & BTA_HF_CLIENT_FEAT_CODEC) &&
+ (bta_hf_client_cb.scb.peer_features & BTA_HF_CLIENT_PEER_CODEC)) {
+ bta_hf_client_send_at_bac();
break;
+ }
+
+ bta_hf_client_send_at_cind(false);
+ break;
case BTA_HF_CLIENT_AT_BAC:
- bta_hf_client_send_at_cind(false);
- break;
+ bta_hf_client_send_at_cind(false);
+ break;
case BTA_HF_CLIENT_AT_CIND:
- bta_hf_client_send_at_cind(true);
- break;
+ bta_hf_client_send_at_cind(true);
+ break;
case BTA_HF_CLIENT_AT_CIND_STATUS:
- bta_hf_client_send_at_cmer(true);
- break;
+ bta_hf_client_send_at_cmer(true);
+ break;
case BTA_HF_CLIENT_AT_CMER:
- if (bta_hf_client_cb.scb.peer_features & BTA_HF_CLIENT_PEER_FEAT_3WAY
- && bta_hf_client_cb.scb.features & BTA_HF_CLIENT_FEAT_3WAY)
- {
- bta_hf_client_send_at_chld('?', 0);
- }
- else
- {
- bta_hf_client_svc_conn_open(NULL);
- send_post_slc_cmd();
- }
- break;
-
- case BTA_HF_CLIENT_AT_CHLD:
+ if (bta_hf_client_cb.scb.peer_features & BTA_HF_CLIENT_PEER_FEAT_3WAY &&
+ bta_hf_client_cb.scb.features & BTA_HF_CLIENT_FEAT_3WAY) {
+ bta_hf_client_send_at_chld('?', 0);
+ } else {
bta_hf_client_svc_conn_open(NULL);
send_post_slc_cmd();
- break;
+ }
+ break;
+
+ case BTA_HF_CLIENT_AT_CHLD:
+ bta_hf_client_svc_conn_open(NULL);
+ send_post_slc_cmd();
+ break;
default:
- /* If happen there is a bug in SLC creation procedure... */
- APPL_TRACE_ERROR("HFPClient: Failed to create SLCdue to unexpected AT command, disconnecting (%u)",
- bta_hf_client_cb.scb.at_cb.current_cmd);
+ /* If happen there is a bug in SLC creation procedure... */
+ APPL_TRACE_ERROR(
+ "HFPClient: Failed to create SLCdue to unexpected AT command, "
+ "disconnecting (%u)",
+ bta_hf_client_cb.scb.at_cb.current_cmd);
- bta_hf_client_sm_execute(BTA_HF_CLIENT_API_CLOSE_EVT, NULL);
- break;
- }
+ bta_hf_client_sm_execute(BTA_HF_CLIENT_API_CLOSE_EVT, NULL);
+ break;
+ }
}
#if (BTA_HF_CLIENT_DEBUG == TRUE)
#ifndef CASE_RETURN_STR
-#define CASE_RETURN_STR(const) case const: return #const;
+#define CASE_RETURN_STR(const) \
+ case const: \
+ return #const;
#endif
-static char *bta_hf_client_evt_str(uint16_t event)
-{
- switch (event)
- {
+static char* bta_hf_client_evt_str(uint16_t event) {
+ switch (event) {
CASE_RETURN_STR(BTA_HF_CLIENT_API_REGISTER_EVT)
CASE_RETURN_STR(BTA_HF_CLIENT_API_DEREGISTER_EVT)
CASE_RETURN_STR(BTA_HF_CLIENT_API_OPEN_EVT)
@@ -654,20 +689,18 @@
CASE_RETURN_STR(BTA_HF_CLIENT_SCO_CLOSE_EVT)
CASE_RETURN_STR(BTA_HF_CLIENT_SEND_AT_CMD_EVT)
default:
- return "Unknown HF Client Event";
- }
+ return "Unknown HF Client Event";
+ }
}
-static char *bta_hf_client_state_str(uint8_t state)
-{
- switch (state)
- {
+static char* bta_hf_client_state_str(uint8_t state) {
+ switch (state) {
CASE_RETURN_STR(BTA_HF_CLIENT_INIT_ST)
CASE_RETURN_STR(BTA_HF_CLIENT_OPENING_ST)
CASE_RETURN_STR(BTA_HF_CLIENT_OPEN_ST)
CASE_RETURN_STR(BTA_HF_CLIENT_CLOSING_ST)
default:
- return "Unknown HF Client State";
- }
+ return "Unknown HF Client State";
+ }
}
#endif
diff --git a/bta/hf_client/bta_hf_client_rfc.cc b/bta/hf_client/bta_hf_client_rfc.cc
index 38e5d46..4961dd8 100644
--- a/bta/hf_client/bta_hf_client_rfc.cc
+++ b/bta/hf_client/bta_hf_client_rfc.cc
@@ -26,11 +26,11 @@
#include <string.h>
+#include "bt_utils.h"
#include "bta_api.h"
#include "bta_hf_client_int.h"
#include "osi/include/osi.h"
#include "port_api.h"
-#include "bt_utils.h"
/*******************************************************************************
*
@@ -42,20 +42,20 @@
* Returns void
*
******************************************************************************/
-static void bta_hf_client_port_cback(UNUSED_ATTR uint32_t code, uint16_t port_handle)
-{
- /* ignore port events for port handles other than connected handle */
- if (port_handle != bta_hf_client_cb.scb.conn_handle)
- {
- APPL_TRACE_DEBUG("bta_hf_client_port_cback ignoring handle:%d conn_handle = %d",
- port_handle, bta_hf_client_cb.scb.conn_handle);
- return;
- }
+static void bta_hf_client_port_cback(UNUSED_ATTR uint32_t code,
+ uint16_t port_handle) {
+ /* ignore port events for port handles other than connected handle */
+ if (port_handle != bta_hf_client_cb.scb.conn_handle) {
+ APPL_TRACE_DEBUG(
+ "bta_hf_client_port_cback ignoring handle:%d conn_handle = %d",
+ port_handle, bta_hf_client_cb.scb.conn_handle);
+ return;
+ }
- BT_HDR *p_buf = (BT_HDR *)osi_malloc(sizeof(BT_HDR));
- p_buf->event = BTA_HF_CLIENT_RFC_DATA_EVT;
+ BT_HDR* p_buf = (BT_HDR*)osi_malloc(sizeof(BT_HDR));
+ p_buf->event = BTA_HF_CLIENT_RFC_DATA_EVT;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -68,49 +68,51 @@
* Returns void
*
******************************************************************************/
-static void bta_hf_client_mgmt_cback(uint32_t code, uint16_t port_handle)
-{
- uint16_t event;
+static void bta_hf_client_mgmt_cback(uint32_t code, uint16_t port_handle) {
+ uint16_t event;
- APPL_TRACE_DEBUG("bta_hf_client_mgmt_cback : code = %d, port_handle = %d, conn_handle = %d, serv_handle = %d",
- code, port_handle, bta_hf_client_cb.scb.conn_handle, bta_hf_client_cb.scb.serv_handle);
+ APPL_TRACE_DEBUG(
+ "bta_hf_client_mgmt_cback : code = %d, port_handle = %d, conn_handle = "
+ "%d, serv_handle = %d",
+ code, port_handle, bta_hf_client_cb.scb.conn_handle,
+ bta_hf_client_cb.scb.serv_handle);
- /* ignore close event for port handles other than connected handle */
- if ((code != PORT_SUCCESS) && (port_handle != bta_hf_client_cb.scb.conn_handle))
+ /* ignore close event for port handles other than connected handle */
+ if ((code != PORT_SUCCESS) &&
+ (port_handle != bta_hf_client_cb.scb.conn_handle)) {
+ APPL_TRACE_DEBUG("bta_hf_client_mgmt_cback ignoring handle:%d",
+ port_handle);
+ return;
+ }
+
+ if (code == PORT_SUCCESS) {
+ if ((bta_hf_client_cb.scb.conn_handle &&
+ (port_handle ==
+ bta_hf_client_cb.scb.conn_handle)) || /* outgoing connection */
+ (port_handle ==
+ bta_hf_client_cb.scb.serv_handle)) /* incoming connection */
{
- APPL_TRACE_DEBUG("bta_hf_client_mgmt_cback ignoring handle:%d", port_handle);
- return;
+ event = BTA_HF_CLIENT_RFC_OPEN_EVT;
+ } else {
+ APPL_TRACE_ERROR(
+ "bta_hf_client_mgmt_cback: PORT_SUCCESS, ignoring handle = %d",
+ port_handle);
+ return;
}
+ }
+ /* distinguish server close events */
+ else if (port_handle == bta_hf_client_cb.scb.conn_handle) {
+ event = BTA_HF_CLIENT_RFC_CLOSE_EVT;
+ } else {
+ event = BTA_HF_CLIENT_RFC_SRV_CLOSE_EVT;
+ }
- if (code == PORT_SUCCESS)
- {
- if ((bta_hf_client_cb.scb.conn_handle && (port_handle == bta_hf_client_cb.scb.conn_handle)) || /* outgoing connection */
- (port_handle == bta_hf_client_cb.scb.serv_handle)) /* incoming connection */
- {
- event = BTA_HF_CLIENT_RFC_OPEN_EVT;
- }
- else
- {
- APPL_TRACE_ERROR ("bta_hf_client_mgmt_cback: PORT_SUCCESS, ignoring handle = %d", port_handle);
- return;
- }
- }
- /* distinguish server close events */
- else if (port_handle == bta_hf_client_cb.scb.conn_handle)
- {
- event = BTA_HF_CLIENT_RFC_CLOSE_EVT;
- }
- else
- {
- event = BTA_HF_CLIENT_RFC_SRV_CLOSE_EVT;
- }
+ tBTA_HF_CLIENT_RFC* p_buf =
+ (tBTA_HF_CLIENT_RFC*)osi_malloc(sizeof(tBTA_HF_CLIENT_RFC));
+ p_buf->hdr.event = event;
+ p_buf->port_handle = port_handle;
- tBTA_HF_CLIENT_RFC *p_buf =
- (tBTA_HF_CLIENT_RFC *)osi_malloc(sizeof(tBTA_HF_CLIENT_RFC));
- p_buf->hdr.event = event;
- p_buf->port_handle = port_handle;
-
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -123,10 +125,9 @@
* Returns void
*
******************************************************************************/
-void bta_hf_client_setup_port(uint16_t handle)
-{
- PORT_SetEventMask(handle, PORT_EV_RXCHAR);
- PORT_SetEventCallback(handle, bta_hf_client_port_cback);
+void bta_hf_client_setup_port(uint16_t handle) {
+ PORT_SetEventMask(handle, PORT_EV_RXCHAR);
+ PORT_SetEventCallback(handle, bta_hf_client_port_cback);
}
/*******************************************************************************
@@ -139,34 +140,35 @@
* Returns void
*
******************************************************************************/
-void bta_hf_client_start_server(void)
-{
- int port_status;
+void bta_hf_client_start_server(void) {
+ int port_status;
- if (bta_hf_client_cb.scb.serv_handle > 0)
- {
- APPL_TRACE_DEBUG("%s already started, handle: %d", __func__, bta_hf_client_cb.scb.serv_handle);
- return;
- }
+ if (bta_hf_client_cb.scb.serv_handle > 0) {
+ APPL_TRACE_DEBUG("%s already started, handle: %d", __func__,
+ bta_hf_client_cb.scb.serv_handle);
+ return;
+ }
- BTM_SetSecurityLevel(false, "", BTM_SEC_SERVICE_HF_HANDSFREE, bta_hf_client_cb.scb.serv_sec_mask,
- BT_PSM_RFCOMM, BTM_SEC_PROTO_RFCOMM, bta_hf_client_cb.scn);
+ BTM_SetSecurityLevel(false, "", BTM_SEC_SERVICE_HF_HANDSFREE,
+ bta_hf_client_cb.scb.serv_sec_mask, BT_PSM_RFCOMM,
+ BTM_SEC_PROTO_RFCOMM, bta_hf_client_cb.scn);
- port_status = RFCOMM_CreateConnection(UUID_SERVCLASS_HF_HANDSFREE, bta_hf_client_cb.scn,
- true, BTA_HF_CLIENT_MTU, (uint8_t *) bd_addr_any, &(bta_hf_client_cb.scb.serv_handle),
- bta_hf_client_mgmt_cback);
+ port_status = RFCOMM_CreateConnection(
+ UUID_SERVCLASS_HF_HANDSFREE, bta_hf_client_cb.scn, true,
+ BTA_HF_CLIENT_MTU, (uint8_t*)bd_addr_any,
+ &(bta_hf_client_cb.scb.serv_handle), bta_hf_client_mgmt_cback);
- if (port_status == PORT_SUCCESS)
- {
- bta_hf_client_setup_port(bta_hf_client_cb.scb.serv_handle);
- }
- else
- {
- /* TODO: can we handle this better? */
- APPL_TRACE_DEBUG("bta_hf_client_start_server: RFCOMM_CreateConnection returned error:%d", port_status);
- }
+ if (port_status == PORT_SUCCESS) {
+ bta_hf_client_setup_port(bta_hf_client_cb.scb.serv_handle);
+ } else {
+ /* TODO: can we handle this better? */
+ APPL_TRACE_DEBUG(
+ "bta_hf_client_start_server: RFCOMM_CreateConnection returned error:%d",
+ port_status);
+ }
- APPL_TRACE_DEBUG("bta_hf_client_start_server handle: %d", bta_hf_client_cb.scb.serv_handle);
+ APPL_TRACE_DEBUG("bta_hf_client_start_server handle: %d",
+ bta_hf_client_cb.scb.serv_handle);
}
/*******************************************************************************
@@ -179,18 +181,16 @@
* Returns void
*
******************************************************************************/
-void bta_hf_client_close_server(void)
-{
- APPL_TRACE_DEBUG("%s %d", __func__, bta_hf_client_cb.scb.serv_handle);
+void bta_hf_client_close_server(void) {
+ APPL_TRACE_DEBUG("%s %d", __func__, bta_hf_client_cb.scb.serv_handle);
- if (bta_hf_client_cb.scb.serv_handle == 0)
- {
- APPL_TRACE_DEBUG("%s already stopped", __func__);
- return;
- }
+ if (bta_hf_client_cb.scb.serv_handle == 0) {
+ APPL_TRACE_DEBUG("%s already stopped", __func__);
+ return;
+ }
- RFCOMM_RemoveServer(bta_hf_client_cb.scb.serv_handle);
- bta_hf_client_cb.scb.serv_handle = 0;
+ RFCOMM_RemoveServer(bta_hf_client_cb.scb.serv_handle);
+ bta_hf_client_cb.scb.serv_handle = 0;
}
/*******************************************************************************
@@ -203,24 +203,24 @@
* Returns void
*
******************************************************************************/
-void bta_hf_client_rfc_do_open(tBTA_HF_CLIENT_DATA *p_data)
-{
- BTM_SetSecurityLevel(true, "", BTM_SEC_SERVICE_HF_HANDSFREE,
- bta_hf_client_cb.scb.cli_sec_mask, BT_PSM_RFCOMM,
- BTM_SEC_PROTO_RFCOMM, bta_hf_client_cb.scb.peer_scn);
+void bta_hf_client_rfc_do_open(tBTA_HF_CLIENT_DATA* p_data) {
+ BTM_SetSecurityLevel(true, "", BTM_SEC_SERVICE_HF_HANDSFREE,
+ bta_hf_client_cb.scb.cli_sec_mask, BT_PSM_RFCOMM,
+ BTM_SEC_PROTO_RFCOMM, bta_hf_client_cb.scb.peer_scn);
- if (RFCOMM_CreateConnection(UUID_SERVCLASS_HF_HANDSFREE, bta_hf_client_cb.scb.peer_scn,
- false, BTA_HF_CLIENT_MTU, bta_hf_client_cb.scb.peer_addr, &(bta_hf_client_cb.scb.conn_handle),
- bta_hf_client_mgmt_cback) == PORT_SUCCESS)
- {
- bta_hf_client_setup_port(bta_hf_client_cb.scb.conn_handle);
- APPL_TRACE_DEBUG("bta_hf_client_rfc_do_open : conn_handle = %d", bta_hf_client_cb.scb.conn_handle);
- }
- /* RFCOMM create connection failed; send ourselves RFCOMM close event */
- else
- {
- bta_hf_client_sm_execute(BTA_HF_CLIENT_RFC_CLOSE_EVT, p_data);
- }
+ if (RFCOMM_CreateConnection(UUID_SERVCLASS_HF_HANDSFREE,
+ bta_hf_client_cb.scb.peer_scn, false,
+ BTA_HF_CLIENT_MTU, bta_hf_client_cb.scb.peer_addr,
+ &(bta_hf_client_cb.scb.conn_handle),
+ bta_hf_client_mgmt_cback) == PORT_SUCCESS) {
+ bta_hf_client_setup_port(bta_hf_client_cb.scb.conn_handle);
+ APPL_TRACE_DEBUG("bta_hf_client_rfc_do_open : conn_handle = %d",
+ bta_hf_client_cb.scb.conn_handle);
+ }
+ /* RFCOMM create connection failed; send ourselves RFCOMM close event */
+ else {
+ bta_hf_client_sm_execute(BTA_HF_CLIENT_RFC_CLOSE_EVT, p_data);
+ }
}
/*******************************************************************************
@@ -233,24 +233,22 @@
* Returns void
*
******************************************************************************/
-void bta_hf_client_rfc_do_close(UNUSED_ATTR tBTA_HF_CLIENT_DATA *p_data)
-{
- if (bta_hf_client_cb.scb.conn_handle) {
- RFCOMM_RemoveConnection(bta_hf_client_cb.scb.conn_handle);
- } else {
- /* Close API was called while HF Client is in Opening state. */
- /* Need to trigger the state machine to send callback to the app */
- /* and move back to INIT state. */
- tBTA_HF_CLIENT_RFC *p_buf =
- (tBTA_HF_CLIENT_RFC *)osi_malloc(sizeof(tBTA_HF_CLIENT_RFC));
- p_buf->hdr.event = BTA_HF_CLIENT_RFC_CLOSE_EVT;
- bta_sys_sendmsg(p_buf);
+void bta_hf_client_rfc_do_close(UNUSED_ATTR tBTA_HF_CLIENT_DATA* p_data) {
+ if (bta_hf_client_cb.scb.conn_handle) {
+ RFCOMM_RemoveConnection(bta_hf_client_cb.scb.conn_handle);
+ } else {
+ /* Close API was called while HF Client is in Opening state. */
+ /* Need to trigger the state machine to send callback to the app */
+ /* and move back to INIT state. */
+ tBTA_HF_CLIENT_RFC* p_buf =
+ (tBTA_HF_CLIENT_RFC*)osi_malloc(sizeof(tBTA_HF_CLIENT_RFC));
+ p_buf->hdr.event = BTA_HF_CLIENT_RFC_CLOSE_EVT;
+ bta_sys_sendmsg(p_buf);
- /* Cancel SDP if it had been started. */
- if(bta_hf_client_cb.scb.p_disc_db)
- {
- (void)SDP_CancelServiceSearch (bta_hf_client_cb.scb.p_disc_db);
- bta_hf_client_free_db(NULL);
- }
+ /* Cancel SDP if it had been started. */
+ if (bta_hf_client_cb.scb.p_disc_db) {
+ (void)SDP_CancelServiceSearch(bta_hf_client_cb.scb.p_disc_db);
+ bta_hf_client_free_db(NULL);
}
+ }
}
diff --git a/bta/hf_client/bta_hf_client_sco.cc b/bta/hf_client/bta_hf_client_sco.cc
index f628681..05c1160 100644
--- a/bta/hf_client/bta_hf_client_sco.cc
+++ b/bta/hf_client/bta_hf_client_sco.cc
@@ -19,64 +19,59 @@
#include <string.h>
#include "bt_trace.h"
-#include "bta_hf_client_int.h"
#include "bt_utils.h"
+#include "bta_hf_client_int.h"
#include "osi/include/osi.h"
-#define BTA_HF_CLIENT_NO_EDR_ESCO (BTM_SCO_PKT_TYPES_MASK_NO_2_EV3 | \
- BTM_SCO_PKT_TYPES_MASK_NO_3_EV3 | \
- BTM_SCO_PKT_TYPES_MASK_NO_2_EV5 | \
- BTM_SCO_PKT_TYPES_MASK_NO_3_EV5)
+#define BTA_HF_CLIENT_NO_EDR_ESCO \
+ (BTM_SCO_PKT_TYPES_MASK_NO_2_EV3 | BTM_SCO_PKT_TYPES_MASK_NO_3_EV3 | \
+ BTM_SCO_PKT_TYPES_MASK_NO_2_EV5 | BTM_SCO_PKT_TYPES_MASK_NO_3_EV5)
static const tBTM_ESCO_PARAMS bta_hf_client_esco_params[] = {
- /* SCO CVSD */
- {
- .rx_bw = BTM_64KBITS_RATE,
- .tx_bw = BTM_64KBITS_RATE,
- .max_latency = 10,
- .voice_contfmt = BTM_VOICE_SETTING_CVSD,
- .packet_types = (BTM_SCO_LINK_ONLY_MASK |
- BTM_SCO_PKT_TYPES_MASK_NO_2_EV3 |
- BTM_SCO_PKT_TYPES_MASK_NO_3_EV3 |
- BTM_SCO_PKT_TYPES_MASK_NO_2_EV5 |
- BTM_SCO_PKT_TYPES_MASK_NO_3_EV5),
- .retrans_effort = BTM_ESCO_RETRANS_POWER,
- },
- /* ESCO CVSD */
- {
- .rx_bw = BTM_64KBITS_RATE,
- .tx_bw = BTM_64KBITS_RATE,
- .max_latency = 10,
- .voice_contfmt = BTM_VOICE_SETTING_CVSD,
- /* Allow controller to use all types available except 5-slot EDR */
- .packet_types = (BTM_SCO_LINK_ALL_PKT_MASK |
- BTM_SCO_PKT_TYPES_MASK_NO_2_EV5 |
- BTM_SCO_PKT_TYPES_MASK_NO_3_EV5),
- .retrans_effort = BTM_ESCO_RETRANS_POWER,
- },
- /* ESCO mSBC */
- {
- .rx_bw = BTM_64KBITS_RATE,
- .tx_bw = BTM_64KBITS_RATE,
- .max_latency = 13,
- .voice_contfmt = BTM_VOICE_SETTING_TRANS,
- /* Packet Types : EV3 + 2-EV3 */
- .packet_types = (BTM_SCO_PKT_TYPES_MASK_EV3 |
- BTM_SCO_PKT_TYPES_MASK_NO_3_EV3 |
- BTM_SCO_PKT_TYPES_MASK_NO_2_EV5 |
- BTM_SCO_PKT_TYPES_MASK_NO_3_EV5),
- .retrans_effort = BTM_ESCO_RETRANS_QUALITY,
- }
-};
+ /* SCO CVSD */
+ {
+ .rx_bw = BTM_64KBITS_RATE,
+ .tx_bw = BTM_64KBITS_RATE,
+ .max_latency = 10,
+ .voice_contfmt = BTM_VOICE_SETTING_CVSD,
+ .packet_types =
+ (BTM_SCO_LINK_ONLY_MASK | BTM_SCO_PKT_TYPES_MASK_NO_2_EV3 |
+ BTM_SCO_PKT_TYPES_MASK_NO_3_EV3 | BTM_SCO_PKT_TYPES_MASK_NO_2_EV5 |
+ BTM_SCO_PKT_TYPES_MASK_NO_3_EV5),
+ .retrans_effort = BTM_ESCO_RETRANS_POWER,
+ },
+ /* ESCO CVSD */
+ {
+ .rx_bw = BTM_64KBITS_RATE,
+ .tx_bw = BTM_64KBITS_RATE,
+ .max_latency = 10,
+ .voice_contfmt = BTM_VOICE_SETTING_CVSD,
+ /* Allow controller to use all types available except 5-slot EDR */
+ .packet_types =
+ (BTM_SCO_LINK_ALL_PKT_MASK | BTM_SCO_PKT_TYPES_MASK_NO_2_EV5 |
+ BTM_SCO_PKT_TYPES_MASK_NO_3_EV5),
+ .retrans_effort = BTM_ESCO_RETRANS_POWER,
+ },
+ /* ESCO mSBC */
+ {
+ .rx_bw = BTM_64KBITS_RATE,
+ .tx_bw = BTM_64KBITS_RATE,
+ .max_latency = 13,
+ .voice_contfmt = BTM_VOICE_SETTING_TRANS,
+ /* Packet Types : EV3 + 2-EV3 */
+ .packet_types =
+ (BTM_SCO_PKT_TYPES_MASK_EV3 | BTM_SCO_PKT_TYPES_MASK_NO_3_EV3 |
+ BTM_SCO_PKT_TYPES_MASK_NO_2_EV5 | BTM_SCO_PKT_TYPES_MASK_NO_3_EV5),
+ .retrans_effort = BTM_ESCO_RETRANS_QUALITY,
+ }};
-enum
-{
- BTA_HF_CLIENT_SCO_LISTEN_E,
- BTA_HF_CLIENT_SCO_OPEN_E, /* open request */
- BTA_HF_CLIENT_SCO_CLOSE_E, /* close request */
- BTA_HF_CLIENT_SCO_SHUTDOWN_E, /* shutdown request */
- BTA_HF_CLIENT_SCO_CONN_OPEN_E, /* sco opened */
- BTA_HF_CLIENT_SCO_CONN_CLOSE_E, /* sco closed */
+enum {
+ BTA_HF_CLIENT_SCO_LISTEN_E,
+ BTA_HF_CLIENT_SCO_OPEN_E, /* open request */
+ BTA_HF_CLIENT_SCO_CLOSE_E, /* close request */
+ BTA_HF_CLIENT_SCO_SHUTDOWN_E, /* shutdown request */
+ BTA_HF_CLIENT_SCO_CONN_OPEN_E, /* sco opened */
+ BTA_HF_CLIENT_SCO_CONN_CLOSE_E, /* sco closed */
};
/*******************************************************************************
@@ -84,35 +79,33 @@
* Function bta_hf_client_remove_sco
*
* Description Removes the specified SCO from the system.
- * If only_active is true, then SCO is only removed if connected
+ * If only_active is true, then SCO is only removed if
+ *connected
*
* Returns bool - true if Sco removal was started
*
******************************************************************************/
-static bool bta_hf_client_sco_remove(bool only_active)
-{
- bool removed_started = false;
- tBTM_STATUS status;
+static bool bta_hf_client_sco_remove(bool only_active) {
+ bool removed_started = false;
+ tBTM_STATUS status;
- APPL_TRACE_DEBUG("%s %d", __func__, only_active);
+ APPL_TRACE_DEBUG("%s %d", __func__, only_active);
- if (bta_hf_client_cb.scb.sco_idx != BTM_INVALID_SCO_INDEX)
- {
- status = BTM_RemoveSco(bta_hf_client_cb.scb.sco_idx);
+ if (bta_hf_client_cb.scb.sco_idx != BTM_INVALID_SCO_INDEX) {
+ status = BTM_RemoveSco(bta_hf_client_cb.scb.sco_idx);
- APPL_TRACE_DEBUG("%s idx 0x%04x, status:0x%x", __func__, bta_hf_client_cb.scb.sco_idx, status);
+ APPL_TRACE_DEBUG("%s idx 0x%04x, status:0x%x", __func__,
+ bta_hf_client_cb.scb.sco_idx, status);
- if (status == BTM_CMD_STARTED)
- {
- removed_started = true;
- }
- /* If no connection reset the sco handle */
- else if ( (status == BTM_SUCCESS) || (status == BTM_UNKNOWN_ADDR) )
- {
- bta_hf_client_cb.scb.sco_idx = BTM_INVALID_SCO_INDEX;
- }
+ if (status == BTM_CMD_STARTED) {
+ removed_started = true;
}
- return removed_started;
+ /* If no connection reset the sco handle */
+ else if ((status == BTM_SUCCESS) || (status == BTM_UNKNOWN_ADDR)) {
+ bta_hf_client_cb.scb.sco_idx = BTM_INVALID_SCO_INDEX;
+ }
+ }
+ return removed_started;
}
/*******************************************************************************
@@ -125,14 +118,13 @@
* Returns void
*
******************************************************************************/
-void bta_hf_client_cback_sco(uint8_t event)
-{
- tBTA_HF_CLIENT evt;
+void bta_hf_client_cback_sco(uint8_t event) {
+ tBTA_HF_CLIENT evt;
- memset(&evt, 0, sizeof(evt));
+ memset(&evt, 0, sizeof(evt));
- /* call app cback */
- (*bta_hf_client_cb.p_cback)(event, (tBTA_HF_CLIENT *) &evt);
+ /* call app cback */
+ (*bta_hf_client_cb.p_cback)(event, (tBTA_HF_CLIENT*)&evt);
}
/*******************************************************************************
@@ -145,33 +137,26 @@
* Returns void
*
******************************************************************************/
-static void bta_hf_client_sco_conn_rsp(tBTM_ESCO_CONN_REQ_EVT_DATA *p_data)
-{
- tBTM_ESCO_PARAMS resp;
- uint8_t hci_status = HCI_SUCCESS;
+static void bta_hf_client_sco_conn_rsp(tBTM_ESCO_CONN_REQ_EVT_DATA* p_data) {
+ tBTM_ESCO_PARAMS resp;
+ uint8_t hci_status = HCI_SUCCESS;
- APPL_TRACE_DEBUG("%s", __func__);
+ APPL_TRACE_DEBUG("%s", __func__);
- if (bta_hf_client_cb.scb.sco_state == BTA_HF_CLIENT_SCO_LISTEN_ST)
- {
- if (p_data->link_type == BTM_LINK_TYPE_SCO)
- {
- resp = bta_hf_client_esco_params[0];
- }
- else
- {
- resp = bta_hf_client_esco_params[bta_hf_client_cb.scb.negotiated_codec];
- }
-
- /* tell sys to stop av if any */
- bta_sys_sco_use(BTA_ID_HS, 1, bta_hf_client_cb.scb.peer_addr);
- }
- else
- {
- hci_status = HCI_ERR_HOST_REJECT_DEVICE;
+ if (bta_hf_client_cb.scb.sco_state == BTA_HF_CLIENT_SCO_LISTEN_ST) {
+ if (p_data->link_type == BTM_LINK_TYPE_SCO) {
+ resp = bta_hf_client_esco_params[0];
+ } else {
+ resp = bta_hf_client_esco_params[bta_hf_client_cb.scb.negotiated_codec];
}
- BTM_EScoConnRsp(p_data->sco_inx, hci_status, &resp);
+ /* tell sys to stop av if any */
+ bta_sys_sco_use(BTA_ID_HS, 1, bta_hf_client_cb.scb.peer_addr);
+ } else {
+ hci_status = HCI_ERR_HOST_REJECT_DEVICE;
+ }
+
+ BTM_EScoConnRsp(p_data->sco_inx, hci_status, &resp);
}
/*******************************************************************************
@@ -184,23 +169,22 @@
* Returns void
*
******************************************************************************/
-static void bta_hf_client_esco_connreq_cback(tBTM_ESCO_EVT event, tBTM_ESCO_EVT_DATA *p_data)
-{
- APPL_TRACE_DEBUG("%s %d", __func__, event);
+static void bta_hf_client_esco_connreq_cback(tBTM_ESCO_EVT event,
+ tBTM_ESCO_EVT_DATA* p_data) {
+ APPL_TRACE_DEBUG("%s %d", __func__, event);
- if (event != BTM_ESCO_CONN_REQ_EVT)
- {
- return;
- }
+ if (event != BTM_ESCO_CONN_REQ_EVT) {
+ return;
+ }
- /* TODO check remote bdaddr, should allow connect only from device with
- * active SLC */
+ /* TODO check remote bdaddr, should allow connect only from device with
+ * active SLC */
- bta_hf_client_cb.scb.sco_idx = p_data->conn_evt.sco_inx;
+ bta_hf_client_cb.scb.sco_idx = p_data->conn_evt.sco_inx;
- bta_hf_client_sco_conn_rsp(&p_data->conn_evt);
+ bta_hf_client_sco_conn_rsp(&p_data->conn_evt);
- bta_hf_client_cb.scb.sco_state = BTA_HF_CLIENT_SCO_OPENING_ST;
+ bta_hf_client_cb.scb.sco_state = BTA_HF_CLIENT_SCO_OPENING_ST;
}
/*******************************************************************************
@@ -213,28 +197,26 @@
* Returns void
*
******************************************************************************/
-static void bta_hf_client_sco_conn_cback(uint16_t sco_idx)
-{
- uint8_t *rem_bd;
+static void bta_hf_client_sco_conn_cback(uint16_t sco_idx) {
+ uint8_t* rem_bd;
- APPL_TRACE_DEBUG("%s %d", __func__, sco_idx);
+ APPL_TRACE_DEBUG("%s %d", __func__, sco_idx);
- rem_bd = BTM_ReadScoBdAddr(sco_idx);
+ rem_bd = BTM_ReadScoBdAddr(sco_idx);
- if (rem_bd && bdcmp(bta_hf_client_cb.scb.peer_addr, rem_bd) == 0 &&
- bta_hf_client_cb.scb.svc_conn && bta_hf_client_cb.scb.sco_idx == sco_idx)
- {
- BT_HDR *p_buf = (BT_HDR *)osi_malloc(sizeof(BT_HDR));
- p_buf->event = BTA_HF_CLIENT_SCO_OPEN_EVT;
- p_buf->layer_specific = bta_hf_client_cb.scb.conn_handle;
- bta_sys_sendmsg(p_buf);
- }
- /* no match found; disconnect sco, init sco variables */
- else
- {
- /* should not force the sco state to shutdown state here */
- BTM_RemoveSco(sco_idx);
- }
+ if (rem_bd && bdcmp(bta_hf_client_cb.scb.peer_addr, rem_bd) == 0 &&
+ bta_hf_client_cb.scb.svc_conn &&
+ bta_hf_client_cb.scb.sco_idx == sco_idx) {
+ BT_HDR* p_buf = (BT_HDR*)osi_malloc(sizeof(BT_HDR));
+ p_buf->event = BTA_HF_CLIENT_SCO_OPEN_EVT;
+ p_buf->layer_specific = bta_hf_client_cb.scb.conn_handle;
+ bta_sys_sendmsg(p_buf);
+ }
+ /* no match found; disconnect sco, init sco variables */
+ else {
+ /* should not force the sco state to shutdown state here */
+ BTM_RemoveSco(sco_idx);
+ }
}
/*******************************************************************************
@@ -247,16 +229,16 @@
* Returns void
*
******************************************************************************/
-static void bta_hf_client_sco_disc_cback(uint16_t sco_idx)
-{
- APPL_TRACE_DEBUG("%s %d", __func__, sco_idx);
+static void bta_hf_client_sco_disc_cback(uint16_t sco_idx) {
+ APPL_TRACE_DEBUG("%s %d", __func__, sco_idx);
- if (bta_hf_client_cb.scb.sco_idx == sco_idx) {
- BT_HDR *p_buf = (BT_HDR *)osi_malloc(sizeof(BT_HDR));
- p_buf->event = BTA_HF_CLIENT_SCO_CLOSE_EVT;
- p_buf->layer_specific = bta_hf_client_cb.scb.conn_handle;;
- bta_sys_sendmsg(p_buf);
- }
+ if (bta_hf_client_cb.scb.sco_idx == sco_idx) {
+ BT_HDR* p_buf = (BT_HDR*)osi_malloc(sizeof(BT_HDR));
+ p_buf->event = BTA_HF_CLIENT_SCO_CLOSE_EVT;
+ p_buf->layer_specific = bta_hf_client_cb.scb.conn_handle;
+ ;
+ bta_sys_sendmsg(p_buf);
+ }
}
/*******************************************************************************
@@ -269,73 +251,66 @@
* Returns void
*
******************************************************************************/
-static void bta_hf_client_sco_create(bool is_orig)
-{
- tBTM_STATUS status;
- uint8_t *p_bd_addr = NULL;
- tBTM_ESCO_PARAMS params;
+static void bta_hf_client_sco_create(bool is_orig) {
+ tBTM_STATUS status;
+ uint8_t* p_bd_addr = NULL;
+ tBTM_ESCO_PARAMS params;
- APPL_TRACE_DEBUG("%s %d", __func__, is_orig);
+ APPL_TRACE_DEBUG("%s %d", __func__, is_orig);
- /* Make sure this sco handle is not already in use */
- if (bta_hf_client_cb.scb.sco_idx != BTM_INVALID_SCO_INDEX)
- {
- APPL_TRACE_WARNING("%s: Index 0x%04x already in use", __func__,
- bta_hf_client_cb.scb.sco_idx);
- return;
+ /* Make sure this sco handle is not already in use */
+ if (bta_hf_client_cb.scb.sco_idx != BTM_INVALID_SCO_INDEX) {
+ APPL_TRACE_WARNING("%s: Index 0x%04x already in use", __func__,
+ bta_hf_client_cb.scb.sco_idx);
+ return;
+ }
+
+ params = bta_hf_client_esco_params[1];
+
+ /* if initiating set current scb and peer bd addr */
+ if (is_orig) {
+ /* Attempt to use eSCO if remote host supports HFP >= 1.5 */
+ if (bta_hf_client_cb.scb.peer_version >= HFP_VERSION_1_5 &&
+ !bta_hf_client_cb.scb.retry_with_sco_only) {
+ BTM_SetEScoMode(BTM_LINK_TYPE_ESCO, ¶ms);
+ /* If ESCO or EDR ESCO, retry with SCO only in case of failure */
+ if ((params.packet_types & BTM_ESCO_LINK_ONLY_MASK) ||
+ !((params.packet_types &
+ ~(BTM_ESCO_LINK_ONLY_MASK | BTM_SCO_LINK_ONLY_MASK)) ^
+ BTA_HF_CLIENT_NO_EDR_ESCO)) {
+ bta_hf_client_cb.scb.retry_with_sco_only = true;
+ APPL_TRACE_API("Setting retry_with_sco_only to true");
+ }
+ } else {
+ if (bta_hf_client_cb.scb.retry_with_sco_only)
+ APPL_TRACE_API("retrying with SCO only");
+ bta_hf_client_cb.scb.retry_with_sco_only = false;
+
+ BTM_SetEScoMode(BTM_LINK_TYPE_SCO, ¶ms);
}
- params = bta_hf_client_esco_params[1];
+ /* tell sys to stop av if any */
+ bta_sys_sco_use(BTA_ID_HS, 1, bta_hf_client_cb.scb.peer_addr);
+ } else {
+ bta_hf_client_cb.scb.retry_with_sco_only = false;
+ }
- /* if initiating set current scb and peer bd addr */
- if (is_orig)
- {
- /* Attempt to use eSCO if remote host supports HFP >= 1.5 */
- if (bta_hf_client_cb.scb.peer_version >= HFP_VERSION_1_5 && !bta_hf_client_cb.scb.retry_with_sco_only)
- {
- BTM_SetEScoMode(BTM_LINK_TYPE_ESCO, ¶ms);
- /* If ESCO or EDR ESCO, retry with SCO only in case of failure */
- if((params.packet_types & BTM_ESCO_LINK_ONLY_MASK)
- ||!((params.packet_types & ~(BTM_ESCO_LINK_ONLY_MASK | BTM_SCO_LINK_ONLY_MASK)) ^ BTA_HF_CLIENT_NO_EDR_ESCO))
- {
- bta_hf_client_cb.scb.retry_with_sco_only = true;
- APPL_TRACE_API("Setting retry_with_sco_only to true");
- }
- }
- else
- {
- if(bta_hf_client_cb.scb.retry_with_sco_only)
- APPL_TRACE_API("retrying with SCO only");
- bta_hf_client_cb.scb.retry_with_sco_only = false;
+ p_bd_addr = bta_hf_client_cb.scb.peer_addr;
- BTM_SetEScoMode(BTM_LINK_TYPE_SCO, ¶ms);
- }
+ status = BTM_CreateSco(
+ p_bd_addr, is_orig, params.packet_types, &bta_hf_client_cb.scb.sco_idx,
+ bta_hf_client_sco_conn_cback, bta_hf_client_sco_disc_cback);
+ if (status == BTM_CMD_STARTED && !is_orig) {
+ if (!BTM_RegForEScoEvts(bta_hf_client_cb.scb.sco_idx,
+ bta_hf_client_esco_connreq_cback))
+ APPL_TRACE_DEBUG("%s SCO registration success", __func__);
+ }
- /* tell sys to stop av if any */
- bta_sys_sco_use(BTA_ID_HS, 1, bta_hf_client_cb.scb.peer_addr);
- }
- else
- {
- bta_hf_client_cb.scb.retry_with_sco_only = false;
- }
-
- p_bd_addr = bta_hf_client_cb.scb.peer_addr;
-
- status = BTM_CreateSco(p_bd_addr, is_orig, params.packet_types,
- &bta_hf_client_cb.scb.sco_idx, bta_hf_client_sco_conn_cback,
- bta_hf_client_sco_disc_cback);
- if (status == BTM_CMD_STARTED && !is_orig)
- {
- if(!BTM_RegForEScoEvts(bta_hf_client_cb.scb.sco_idx, bta_hf_client_esco_connreq_cback))
- APPL_TRACE_DEBUG("%s SCO registration success", __func__);
- }
-
- APPL_TRACE_API("%s: orig %d, inx 0x%04x, status 0x%x, pkt types 0x%04x",
- __func__, is_orig, bta_hf_client_cb.scb.sco_idx,
- status, params.packet_types);
+ APPL_TRACE_API("%s: orig %d, inx 0x%04x, status 0x%x, pkt types 0x%04x",
+ __func__, is_orig, bta_hf_client_cb.scb.sco_idx, status,
+ params.packet_types);
}
-
/*******************************************************************************
*
* Function bta_hf_client_sco_event
@@ -346,229 +321,228 @@
* Returns void
*
******************************************************************************/
-static void bta_hf_client_sco_event(uint8_t event)
-{
- APPL_TRACE_DEBUG("%s state: %d event: %d", __func__,
- bta_hf_client_cb.scb.sco_state, event);
+static void bta_hf_client_sco_event(uint8_t event) {
+ APPL_TRACE_DEBUG("%s state: %d event: %d", __func__,
+ bta_hf_client_cb.scb.sco_state, event);
- switch (bta_hf_client_cb.scb.sco_state)
- {
- case BTA_HF_CLIENT_SCO_SHUTDOWN_ST:
- switch (event)
- {
- case BTA_HF_CLIENT_SCO_LISTEN_E:
- /* create sco listen connection */
- bta_hf_client_sco_create(false);
- bta_hf_client_cb.scb.sco_state = BTA_HF_CLIENT_SCO_LISTEN_ST;
- break;
-
- default:
- APPL_TRACE_WARNING("BTA_HF_CLIENT_SCO_SHUTDOWN_ST: Ignoring event %d", event);
- break;
- }
- break;
-
- case BTA_HF_CLIENT_SCO_LISTEN_ST:
- switch (event)
- {
- case BTA_HF_CLIENT_SCO_LISTEN_E:
- /* create sco listen connection (Additional channel) */
- bta_hf_client_sco_create(false);
- break;
-
- case BTA_HF_CLIENT_SCO_OPEN_E:
- /* remove listening connection */
- bta_hf_client_sco_remove(false);
-
- /* create sco connection to peer */
- bta_hf_client_sco_create(true);
- bta_hf_client_cb.scb.sco_state = BTA_HF_CLIENT_SCO_OPENING_ST;
- break;
-
- case BTA_HF_CLIENT_SCO_SHUTDOWN_E:
- /* remove listening connection */
- bta_hf_client_sco_remove(false);
-
- bta_hf_client_cb.scb.sco_state = BTA_HF_CLIENT_SCO_SHUTDOWN_ST;
- break;
-
- case BTA_HF_CLIENT_SCO_CLOSE_E:
- /* remove listening connection */
- /* Ignore the event. We need to keep listening SCO for the active SLC */
- APPL_TRACE_WARNING("BTA_HF_CLIENT_SCO_LISTEN_ST: Ignoring event %d", event);
- break;
-
- case BTA_HF_CLIENT_SCO_CONN_CLOSE_E:
- /* sco failed; create sco listen connection */
- bta_hf_client_sco_create(false);
- bta_hf_client_cb.scb.sco_state = BTA_HF_CLIENT_SCO_LISTEN_ST;
- break;
-
- default:
- APPL_TRACE_WARNING("BTA_HF_CLIENT_SCO_LISTEN_ST: Ignoring event %d", event);
- break;
- }
- break;
-
- case BTA_HF_CLIENT_SCO_OPENING_ST:
- switch (event)
- {
- case BTA_HF_CLIENT_SCO_CLOSE_E:
- bta_hf_client_cb.scb.sco_state = BTA_HF_CLIENT_SCO_OPEN_CL_ST;
- break;
-
- case BTA_HF_CLIENT_SCO_SHUTDOWN_E:
- bta_hf_client_cb.scb.sco_state = BTA_HF_CLIENT_SCO_SHUTTING_ST;
- break;
-
- case BTA_HF_CLIENT_SCO_CONN_OPEN_E:
- bta_hf_client_cb.scb.sco_state = BTA_HF_CLIENT_SCO_OPEN_ST;
- break;
-
- case BTA_HF_CLIENT_SCO_CONN_CLOSE_E:
- /* sco failed; create sco listen connection */
- bta_hf_client_sco_create(false);
- bta_hf_client_cb.scb.sco_state = BTA_HF_CLIENT_SCO_LISTEN_ST;
- break;
-
- default:
- APPL_TRACE_WARNING("BTA_HF_CLIENT_SCO_OPENING_ST: Ignoring event %d", event);
- break;
- }
- break;
-
- case BTA_HF_CLIENT_SCO_OPEN_CL_ST:
- switch (event)
- {
- case BTA_HF_CLIENT_SCO_OPEN_E:
- bta_hf_client_cb.scb.sco_state = BTA_HF_CLIENT_SCO_OPENING_ST;
- break;
-
- case BTA_HF_CLIENT_SCO_SHUTDOWN_E:
- bta_hf_client_cb.scb.sco_state = BTA_HF_CLIENT_SCO_SHUTTING_ST;
- break;
-
- case BTA_HF_CLIENT_SCO_CONN_OPEN_E:
- /* close sco connection */
- bta_hf_client_sco_remove(true);
-
- bta_hf_client_cb.scb.sco_state = BTA_HF_CLIENT_SCO_CLOSING_ST;
- break;
-
- case BTA_HF_CLIENT_SCO_CONN_CLOSE_E:
- /* sco failed; create sco listen connection */
-
- bta_hf_client_cb.scb.sco_state = BTA_HF_CLIENT_SCO_LISTEN_ST;
- break;
-
- default:
- APPL_TRACE_WARNING("BTA_HF_CLIENT_SCO_OPEN_CL_ST: Ignoring event %d", event);
- break;
- }
- break;
-
- case BTA_HF_CLIENT_SCO_OPEN_ST:
- switch (event)
- {
- case BTA_HF_CLIENT_SCO_CLOSE_E:
- /* close sco connection if active */
- if (bta_hf_client_sco_remove(true))
- {
- bta_hf_client_cb.scb.sco_state = BTA_HF_CLIENT_SCO_CLOSING_ST;
- }
- break;
-
- case BTA_HF_CLIENT_SCO_SHUTDOWN_E:
- /* remove all listening connections */
- bta_hf_client_sco_remove(false);
-
- bta_hf_client_cb.scb.sco_state = BTA_HF_CLIENT_SCO_SHUTTING_ST;
- break;
-
- case BTA_HF_CLIENT_SCO_CONN_CLOSE_E:
- /* peer closed sco; create sco listen connection */
- bta_hf_client_sco_create(false);
- bta_hf_client_cb.scb.sco_state = BTA_HF_CLIENT_SCO_LISTEN_ST;
- break;
-
- default:
- APPL_TRACE_WARNING("BTA_HF_CLIENT_SCO_OPEN_ST: Ignoring event %d", event);
- break;
- }
- break;
-
- case BTA_HF_CLIENT_SCO_CLOSING_ST:
- switch (event)
- {
- case BTA_HF_CLIENT_SCO_OPEN_E:
- bta_hf_client_cb.scb.sco_state = BTA_HF_CLIENT_SCO_CLOSE_OP_ST;
- break;
-
- case BTA_HF_CLIENT_SCO_SHUTDOWN_E:
- bta_hf_client_cb.scb.sco_state = BTA_HF_CLIENT_SCO_SHUTTING_ST;
- break;
-
- case BTA_HF_CLIENT_SCO_CONN_CLOSE_E:
- /* peer closed sco; create sco listen connection */
- bta_hf_client_sco_create(false);
-
- bta_hf_client_cb.scb.sco_state = BTA_HF_CLIENT_SCO_LISTEN_ST;
- break;
-
- default:
- APPL_TRACE_WARNING("BTA_HF_CLIENT_SCO_CLOSING_ST: Ignoring event %d", event);
- break;
- }
- break;
-
- case BTA_HF_CLIENT_SCO_CLOSE_OP_ST:
- switch (event)
- {
- case BTA_HF_CLIENT_SCO_CLOSE_E:
- bta_hf_client_cb.scb.sco_state = BTA_HF_CLIENT_SCO_CLOSING_ST;
- break;
-
- case BTA_HF_CLIENT_SCO_SHUTDOWN_E:
- bta_hf_client_cb.scb.sco_state = BTA_HF_CLIENT_SCO_SHUTTING_ST;
- break;
-
- case BTA_HF_CLIENT_SCO_CONN_CLOSE_E:
- /* open sco connection */
- bta_hf_client_sco_create(true);
- bta_hf_client_cb.scb.sco_state = BTA_HF_CLIENT_SCO_OPENING_ST;
- break;
-
- default:
- APPL_TRACE_WARNING("BTA_HF_CLIENT_SCO_CLOSE_OP_ST: Ignoring event %d", event);
- break;
- }
- break;
-
- case BTA_HF_CLIENT_SCO_SHUTTING_ST:
- switch (event)
- {
- case BTA_HF_CLIENT_SCO_CONN_OPEN_E:
- /* close sco connection; wait for conn close event */
- bta_hf_client_sco_remove(true);
- break;
-
- case BTA_HF_CLIENT_SCO_CONN_CLOSE_E:
- bta_hf_client_cb.scb.sco_state = BTA_HF_CLIENT_SCO_SHUTDOWN_ST;
- break;
-
- case BTA_HF_CLIENT_SCO_SHUTDOWN_E:
- bta_hf_client_cb.scb.sco_state = BTA_HF_CLIENT_SCO_SHUTDOWN_ST;
- break;
-
- default:
- APPL_TRACE_WARNING("BTA_HF_CLIENT_SCO_SHUTTING_ST: Ignoring event %d", event);
- break;
- }
- break;
+ switch (bta_hf_client_cb.scb.sco_state) {
+ case BTA_HF_CLIENT_SCO_SHUTDOWN_ST:
+ switch (event) {
+ case BTA_HF_CLIENT_SCO_LISTEN_E:
+ /* create sco listen connection */
+ bta_hf_client_sco_create(false);
+ bta_hf_client_cb.scb.sco_state = BTA_HF_CLIENT_SCO_LISTEN_ST;
+ break;
default:
- break;
- }
+ APPL_TRACE_WARNING("BTA_HF_CLIENT_SCO_SHUTDOWN_ST: Ignoring event %d",
+ event);
+ break;
+ }
+ break;
+
+ case BTA_HF_CLIENT_SCO_LISTEN_ST:
+ switch (event) {
+ case BTA_HF_CLIENT_SCO_LISTEN_E:
+ /* create sco listen connection (Additional channel) */
+ bta_hf_client_sco_create(false);
+ break;
+
+ case BTA_HF_CLIENT_SCO_OPEN_E:
+ /* remove listening connection */
+ bta_hf_client_sco_remove(false);
+
+ /* create sco connection to peer */
+ bta_hf_client_sco_create(true);
+ bta_hf_client_cb.scb.sco_state = BTA_HF_CLIENT_SCO_OPENING_ST;
+ break;
+
+ case BTA_HF_CLIENT_SCO_SHUTDOWN_E:
+ /* remove listening connection */
+ bta_hf_client_sco_remove(false);
+
+ bta_hf_client_cb.scb.sco_state = BTA_HF_CLIENT_SCO_SHUTDOWN_ST;
+ break;
+
+ case BTA_HF_CLIENT_SCO_CLOSE_E:
+ /* remove listening connection */
+ /* Ignore the event. We need to keep listening SCO for the active SLC
+ */
+ APPL_TRACE_WARNING("BTA_HF_CLIENT_SCO_LISTEN_ST: Ignoring event %d",
+ event);
+ break;
+
+ case BTA_HF_CLIENT_SCO_CONN_CLOSE_E:
+ /* sco failed; create sco listen connection */
+ bta_hf_client_sco_create(false);
+ bta_hf_client_cb.scb.sco_state = BTA_HF_CLIENT_SCO_LISTEN_ST;
+ break;
+
+ default:
+ APPL_TRACE_WARNING("BTA_HF_CLIENT_SCO_LISTEN_ST: Ignoring event %d",
+ event);
+ break;
+ }
+ break;
+
+ case BTA_HF_CLIENT_SCO_OPENING_ST:
+ switch (event) {
+ case BTA_HF_CLIENT_SCO_CLOSE_E:
+ bta_hf_client_cb.scb.sco_state = BTA_HF_CLIENT_SCO_OPEN_CL_ST;
+ break;
+
+ case BTA_HF_CLIENT_SCO_SHUTDOWN_E:
+ bta_hf_client_cb.scb.sco_state = BTA_HF_CLIENT_SCO_SHUTTING_ST;
+ break;
+
+ case BTA_HF_CLIENT_SCO_CONN_OPEN_E:
+ bta_hf_client_cb.scb.sco_state = BTA_HF_CLIENT_SCO_OPEN_ST;
+ break;
+
+ case BTA_HF_CLIENT_SCO_CONN_CLOSE_E:
+ /* sco failed; create sco listen connection */
+ bta_hf_client_sco_create(false);
+ bta_hf_client_cb.scb.sco_state = BTA_HF_CLIENT_SCO_LISTEN_ST;
+ break;
+
+ default:
+ APPL_TRACE_WARNING("BTA_HF_CLIENT_SCO_OPENING_ST: Ignoring event %d",
+ event);
+ break;
+ }
+ break;
+
+ case BTA_HF_CLIENT_SCO_OPEN_CL_ST:
+ switch (event) {
+ case BTA_HF_CLIENT_SCO_OPEN_E:
+ bta_hf_client_cb.scb.sco_state = BTA_HF_CLIENT_SCO_OPENING_ST;
+ break;
+
+ case BTA_HF_CLIENT_SCO_SHUTDOWN_E:
+ bta_hf_client_cb.scb.sco_state = BTA_HF_CLIENT_SCO_SHUTTING_ST;
+ break;
+
+ case BTA_HF_CLIENT_SCO_CONN_OPEN_E:
+ /* close sco connection */
+ bta_hf_client_sco_remove(true);
+
+ bta_hf_client_cb.scb.sco_state = BTA_HF_CLIENT_SCO_CLOSING_ST;
+ break;
+
+ case BTA_HF_CLIENT_SCO_CONN_CLOSE_E:
+ /* sco failed; create sco listen connection */
+
+ bta_hf_client_cb.scb.sco_state = BTA_HF_CLIENT_SCO_LISTEN_ST;
+ break;
+
+ default:
+ APPL_TRACE_WARNING("BTA_HF_CLIENT_SCO_OPEN_CL_ST: Ignoring event %d",
+ event);
+ break;
+ }
+ break;
+
+ case BTA_HF_CLIENT_SCO_OPEN_ST:
+ switch (event) {
+ case BTA_HF_CLIENT_SCO_CLOSE_E:
+ /* close sco connection if active */
+ if (bta_hf_client_sco_remove(true)) {
+ bta_hf_client_cb.scb.sco_state = BTA_HF_CLIENT_SCO_CLOSING_ST;
+ }
+ break;
+
+ case BTA_HF_CLIENT_SCO_SHUTDOWN_E:
+ /* remove all listening connections */
+ bta_hf_client_sco_remove(false);
+
+ bta_hf_client_cb.scb.sco_state = BTA_HF_CLIENT_SCO_SHUTTING_ST;
+ break;
+
+ case BTA_HF_CLIENT_SCO_CONN_CLOSE_E:
+ /* peer closed sco; create sco listen connection */
+ bta_hf_client_sco_create(false);
+ bta_hf_client_cb.scb.sco_state = BTA_HF_CLIENT_SCO_LISTEN_ST;
+ break;
+
+ default:
+ APPL_TRACE_WARNING("BTA_HF_CLIENT_SCO_OPEN_ST: Ignoring event %d",
+ event);
+ break;
+ }
+ break;
+
+ case BTA_HF_CLIENT_SCO_CLOSING_ST:
+ switch (event) {
+ case BTA_HF_CLIENT_SCO_OPEN_E:
+ bta_hf_client_cb.scb.sco_state = BTA_HF_CLIENT_SCO_CLOSE_OP_ST;
+ break;
+
+ case BTA_HF_CLIENT_SCO_SHUTDOWN_E:
+ bta_hf_client_cb.scb.sco_state = BTA_HF_CLIENT_SCO_SHUTTING_ST;
+ break;
+
+ case BTA_HF_CLIENT_SCO_CONN_CLOSE_E:
+ /* peer closed sco; create sco listen connection */
+ bta_hf_client_sco_create(false);
+
+ bta_hf_client_cb.scb.sco_state = BTA_HF_CLIENT_SCO_LISTEN_ST;
+ break;
+
+ default:
+ APPL_TRACE_WARNING("BTA_HF_CLIENT_SCO_CLOSING_ST: Ignoring event %d",
+ event);
+ break;
+ }
+ break;
+
+ case BTA_HF_CLIENT_SCO_CLOSE_OP_ST:
+ switch (event) {
+ case BTA_HF_CLIENT_SCO_CLOSE_E:
+ bta_hf_client_cb.scb.sco_state = BTA_HF_CLIENT_SCO_CLOSING_ST;
+ break;
+
+ case BTA_HF_CLIENT_SCO_SHUTDOWN_E:
+ bta_hf_client_cb.scb.sco_state = BTA_HF_CLIENT_SCO_SHUTTING_ST;
+ break;
+
+ case BTA_HF_CLIENT_SCO_CONN_CLOSE_E:
+ /* open sco connection */
+ bta_hf_client_sco_create(true);
+ bta_hf_client_cb.scb.sco_state = BTA_HF_CLIENT_SCO_OPENING_ST;
+ break;
+
+ default:
+ APPL_TRACE_WARNING("BTA_HF_CLIENT_SCO_CLOSE_OP_ST: Ignoring event %d",
+ event);
+ break;
+ }
+ break;
+
+ case BTA_HF_CLIENT_SCO_SHUTTING_ST:
+ switch (event) {
+ case BTA_HF_CLIENT_SCO_CONN_OPEN_E:
+ /* close sco connection; wait for conn close event */
+ bta_hf_client_sco_remove(true);
+ break;
+
+ case BTA_HF_CLIENT_SCO_CONN_CLOSE_E:
+ bta_hf_client_cb.scb.sco_state = BTA_HF_CLIENT_SCO_SHUTDOWN_ST;
+ break;
+
+ case BTA_HF_CLIENT_SCO_SHUTDOWN_E:
+ bta_hf_client_cb.scb.sco_state = BTA_HF_CLIENT_SCO_SHUTDOWN_ST;
+ break;
+
+ default:
+ APPL_TRACE_WARNING("BTA_HF_CLIENT_SCO_SHUTTING_ST: Ignoring event %d",
+ event);
+ break;
+ }
+ break;
+
+ default:
+ break;
+ }
}
/*******************************************************************************
@@ -581,11 +555,10 @@
* Returns void
*
******************************************************************************/
-void bta_hf_client_sco_listen(UNUSED_ATTR tBTA_HF_CLIENT_DATA *p_data)
-{
- APPL_TRACE_DEBUG("%s", __func__);
+void bta_hf_client_sco_listen(UNUSED_ATTR tBTA_HF_CLIENT_DATA* p_data) {
+ APPL_TRACE_DEBUG("%s", __func__);
- bta_hf_client_sco_event(BTA_HF_CLIENT_SCO_LISTEN_E);
+ bta_hf_client_sco_event(BTA_HF_CLIENT_SCO_LISTEN_E);
}
/*******************************************************************************
@@ -598,11 +571,10 @@
* Returns void
*
******************************************************************************/
-void bta_hf_client_sco_shutdown(UNUSED_ATTR tBTA_HF_CLIENT_DATA *p_data)
-{
- APPL_TRACE_DEBUG("%s", __func__);
+void bta_hf_client_sco_shutdown(UNUSED_ATTR tBTA_HF_CLIENT_DATA* p_data) {
+ APPL_TRACE_DEBUG("%s", __func__);
- bta_hf_client_sco_event(BTA_HF_CLIENT_SCO_SHUTDOWN_E);
+ bta_hf_client_sco_event(BTA_HF_CLIENT_SCO_SHUTDOWN_E);
}
/*******************************************************************************
@@ -615,24 +587,20 @@
* Returns void
*
******************************************************************************/
-void bta_hf_client_sco_conn_open(UNUSED_ATTR tBTA_HF_CLIENT_DATA *p_data)
-{
- APPL_TRACE_DEBUG("%s", __func__);
+void bta_hf_client_sco_conn_open(UNUSED_ATTR tBTA_HF_CLIENT_DATA* p_data) {
+ APPL_TRACE_DEBUG("%s", __func__);
- bta_hf_client_sco_event(BTA_HF_CLIENT_SCO_CONN_OPEN_E);
+ bta_hf_client_sco_event(BTA_HF_CLIENT_SCO_CONN_OPEN_E);
- bta_sys_sco_open(BTA_ID_HS, 1, bta_hf_client_cb.scb.peer_addr);
+ bta_sys_sco_open(BTA_ID_HS, 1, bta_hf_client_cb.scb.peer_addr);
- if (bta_hf_client_cb.scb.negotiated_codec == BTM_SCO_CODEC_MSBC)
- {
- bta_hf_client_cback_sco(BTA_HF_CLIENT_AUDIO_MSBC_OPEN_EVT);
- }
- else
- {
- bta_hf_client_cback_sco(BTA_HF_CLIENT_AUDIO_OPEN_EVT);
- }
+ if (bta_hf_client_cb.scb.negotiated_codec == BTM_SCO_CODEC_MSBC) {
+ bta_hf_client_cback_sco(BTA_HF_CLIENT_AUDIO_MSBC_OPEN_EVT);
+ } else {
+ bta_hf_client_cback_sco(BTA_HF_CLIENT_AUDIO_OPEN_EVT);
+ }
- bta_hf_client_cb.scb.retry_with_sco_only = false;
+ bta_hf_client_cb.scb.retry_with_sco_only = false;
}
/*******************************************************************************
@@ -645,37 +613,33 @@
* Returns void
*
******************************************************************************/
-void bta_hf_client_sco_conn_close(tBTA_HF_CLIENT_DATA *p_data)
-{
- APPL_TRACE_DEBUG("%s", __func__);
+void bta_hf_client_sco_conn_close(tBTA_HF_CLIENT_DATA* p_data) {
+ APPL_TRACE_DEBUG("%s", __func__);
- /* clear current scb */
- bta_hf_client_cb.scb.sco_idx = BTM_INVALID_SCO_INDEX;
+ /* clear current scb */
+ bta_hf_client_cb.scb.sco_idx = BTM_INVALID_SCO_INDEX;
- /* retry_with_sco_only, will be set only when initiator
- ** and HFClient is first trying to establish an eSCO connection */
- if (bta_hf_client_cb.scb.retry_with_sco_only && bta_hf_client_cb.scb.svc_conn)
- {
- bta_hf_client_sco_create(true);
+ /* retry_with_sco_only, will be set only when initiator
+ ** and HFClient is first trying to establish an eSCO connection */
+ if (bta_hf_client_cb.scb.retry_with_sco_only &&
+ bta_hf_client_cb.scb.svc_conn) {
+ bta_hf_client_sco_create(true);
+ } else {
+ bta_hf_client_sco_event(BTA_HF_CLIENT_SCO_CONN_CLOSE_E);
+
+ bta_sys_sco_close(BTA_ID_HS, 1, bta_hf_client_cb.scb.peer_addr);
+
+ bta_sys_sco_unuse(BTA_ID_HS, 1, bta_hf_client_cb.scb.peer_addr);
+
+ /* call app callback */
+ bta_hf_client_cback_sco(BTA_HF_CLIENT_AUDIO_CLOSE_EVT);
+
+ if (bta_hf_client_cb.scb.sco_close_rfc == true) {
+ bta_hf_client_cb.scb.sco_close_rfc = false;
+ bta_hf_client_rfc_do_close(p_data);
}
- else
- {
- bta_hf_client_sco_event(BTA_HF_CLIENT_SCO_CONN_CLOSE_E);
-
- bta_sys_sco_close(BTA_ID_HS, 1, bta_hf_client_cb.scb.peer_addr);
-
- bta_sys_sco_unuse(BTA_ID_HS, 1, bta_hf_client_cb.scb.peer_addr);
-
- /* call app callback */
- bta_hf_client_cback_sco(BTA_HF_CLIENT_AUDIO_CLOSE_EVT);
-
- if (bta_hf_client_cb.scb.sco_close_rfc == true)
- {
- bta_hf_client_cb.scb.sco_close_rfc = false;
- bta_hf_client_rfc_do_close(p_data);
- }
- }
- bta_hf_client_cb.scb.retry_with_sco_only = false;
+ }
+ bta_hf_client_cb.scb.retry_with_sco_only = false;
}
/*******************************************************************************
@@ -688,11 +652,10 @@
* Returns void
*
******************************************************************************/
-void bta_hf_client_sco_open(UNUSED_ATTR tBTA_HF_CLIENT_DATA *p_data)
-{
- APPL_TRACE_DEBUG("%s", __func__);
+void bta_hf_client_sco_open(UNUSED_ATTR tBTA_HF_CLIENT_DATA* p_data) {
+ APPL_TRACE_DEBUG("%s", __func__);
- bta_hf_client_sco_event(BTA_HF_CLIENT_SCO_OPEN_E);
+ bta_hf_client_sco_event(BTA_HF_CLIENT_SCO_OPEN_E);
}
/*******************************************************************************
@@ -705,12 +668,10 @@
* Returns void
*
******************************************************************************/
-void bta_hf_client_sco_close(UNUSED_ATTR tBTA_HF_CLIENT_DATA *p_data)
-{
- APPL_TRACE_DEBUG("%s 0x%x", __func__, bta_hf_client_cb.scb.sco_idx);
+void bta_hf_client_sco_close(UNUSED_ATTR tBTA_HF_CLIENT_DATA* p_data) {
+ APPL_TRACE_DEBUG("%s 0x%x", __func__, bta_hf_client_cb.scb.sco_idx);
- if (bta_hf_client_cb.scb.sco_idx != BTM_INVALID_SCO_INDEX)
- {
- bta_hf_client_sco_event(BTA_HF_CLIENT_SCO_CLOSE_E);
- }
+ if (bta_hf_client_cb.scb.sco_idx != BTM_INVALID_SCO_INDEX) {
+ bta_hf_client_sco_event(BTA_HF_CLIENT_SCO_CLOSE_E);
+ }
}
diff --git a/bta/hf_client/bta_hf_client_sdp.cc b/bta/hf_client/bta_hf_client_sdp.cc
index 0837ba2..b4e063c 100644
--- a/bta/hf_client/bta_hf_client_sdp.cc
+++ b/bta/hf_client/bta_hf_client_sdp.cc
@@ -26,18 +26,18 @@
#include <string.h>
-#include "bta_api.h"
-#include "bta_sys.h"
#include "bt_utils.h"
+#include "bta_api.h"
#include "bta_hf_client_api.h"
#include "bta_hf_client_int.h"
+#include "bta_sys.h"
#include "osi/include/osi.h"
/* Number of protocol elements in protocol element list. */
-#define BTA_HF_CLIENT_NUM_PROTO_ELEMS 2
+#define BTA_HF_CLIENT_NUM_PROTO_ELEMS 2
/* Number of elements in service class id list. */
-#define BTA_HF_CLIENT_NUM_SVC_ELEMS 2
+#define BTA_HF_CLIENT_NUM_SVC_ELEMS 2
/*******************************************************************************
*
@@ -49,24 +49,23 @@
* Returns void
*
******************************************************************************/
-static void bta_hf_client_sdp_cback(uint16_t status)
-{
- uint16_t event;
- tBTA_HF_CLIENT_DISC_RESULT *p_buf =
- (tBTA_HF_CLIENT_DISC_RESULT *)osi_malloc(sizeof(tBTA_HF_CLIENT_DISC_RESULT));
+static void bta_hf_client_sdp_cback(uint16_t status) {
+ uint16_t event;
+ tBTA_HF_CLIENT_DISC_RESULT* p_buf = (tBTA_HF_CLIENT_DISC_RESULT*)osi_malloc(
+ sizeof(tBTA_HF_CLIENT_DISC_RESULT));
- APPL_TRACE_DEBUG("bta_hf_client_sdp_cback status:0x%x", status);
+ APPL_TRACE_DEBUG("bta_hf_client_sdp_cback status:0x%x", status);
- /* set event according to int/acp */
- if (bta_hf_client_cb.scb.role == BTA_HF_CLIENT_ACP)
- event = BTA_HF_CLIENT_DISC_ACP_RES_EVT;
- else
- event = BTA_HF_CLIENT_DISC_INT_RES_EVT;
+ /* set event according to int/acp */
+ if (bta_hf_client_cb.scb.role == BTA_HF_CLIENT_ACP)
+ event = BTA_HF_CLIENT_DISC_ACP_RES_EVT;
+ else
+ event = BTA_HF_CLIENT_DISC_INT_RES_EVT;
- p_buf->hdr.event = event;
- p_buf->status = status;
+ p_buf->hdr.event = event;
+ p_buf->status = status;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/******************************************************************************
@@ -82,75 +81,77 @@
* false if function execution failed.
*
*****************************************************************************/
-bool bta_hf_client_add_record(char *p_service_name, uint8_t scn,
- tBTA_HF_CLIENT_FEAT features, uint32_t sdp_handle)
-{
- tSDP_PROTOCOL_ELEM proto_elem_list[BTA_HF_CLIENT_NUM_PROTO_ELEMS];
- uint16_t svc_class_id_list[BTA_HF_CLIENT_NUM_SVC_ELEMS];
- uint16_t browse_list[] = {UUID_SERVCLASS_PUBLIC_BROWSE_GROUP};
- uint16_t version;
- uint16_t profile_uuid;
- bool result = true;
- uint8_t buf[2];
- uint16_t sdp_features = 0;
+bool bta_hf_client_add_record(char* p_service_name, uint8_t scn,
+ tBTA_HF_CLIENT_FEAT features,
+ uint32_t sdp_handle) {
+ tSDP_PROTOCOL_ELEM proto_elem_list[BTA_HF_CLIENT_NUM_PROTO_ELEMS];
+ uint16_t svc_class_id_list[BTA_HF_CLIENT_NUM_SVC_ELEMS];
+ uint16_t browse_list[] = {UUID_SERVCLASS_PUBLIC_BROWSE_GROUP};
+ uint16_t version;
+ uint16_t profile_uuid;
+ bool result = true;
+ uint8_t buf[2];
+ uint16_t sdp_features = 0;
- APPL_TRACE_DEBUG("bta_hf_client_add_record");
+ APPL_TRACE_DEBUG("bta_hf_client_add_record");
- memset( proto_elem_list, 0 , BTA_HF_CLIENT_NUM_PROTO_ELEMS*sizeof(tSDP_PROTOCOL_ELEM));
+ memset(proto_elem_list, 0,
+ BTA_HF_CLIENT_NUM_PROTO_ELEMS * sizeof(tSDP_PROTOCOL_ELEM));
- /* add the protocol element sequence */
- proto_elem_list[0].protocol_uuid = UUID_PROTOCOL_L2CAP;
- proto_elem_list[0].num_params = 0;
- proto_elem_list[1].protocol_uuid = UUID_PROTOCOL_RFCOMM;
- proto_elem_list[1].num_params = 1;
- proto_elem_list[1].params[0] = scn;
- result &= SDP_AddProtocolList(sdp_handle, BTA_HF_CLIENT_NUM_PROTO_ELEMS, proto_elem_list);
+ /* add the protocol element sequence */
+ proto_elem_list[0].protocol_uuid = UUID_PROTOCOL_L2CAP;
+ proto_elem_list[0].num_params = 0;
+ proto_elem_list[1].protocol_uuid = UUID_PROTOCOL_RFCOMM;
+ proto_elem_list[1].num_params = 1;
+ proto_elem_list[1].params[0] = scn;
+ result &= SDP_AddProtocolList(sdp_handle, BTA_HF_CLIENT_NUM_PROTO_ELEMS,
+ proto_elem_list);
- /* add service class id list */
- svc_class_id_list[0] = UUID_SERVCLASS_HF_HANDSFREE;
- svc_class_id_list[1] = UUID_SERVCLASS_GENERIC_AUDIO;
- result &= SDP_AddServiceClassIdList(sdp_handle, BTA_HF_CLIENT_NUM_SVC_ELEMS, svc_class_id_list);
+ /* add service class id list */
+ svc_class_id_list[0] = UUID_SERVCLASS_HF_HANDSFREE;
+ svc_class_id_list[1] = UUID_SERVCLASS_GENERIC_AUDIO;
+ result &= SDP_AddServiceClassIdList(sdp_handle, BTA_HF_CLIENT_NUM_SVC_ELEMS,
+ svc_class_id_list);
- /* add profile descriptor list */
- profile_uuid = UUID_SERVCLASS_HF_HANDSFREE;
- version = HFP_VERSION_1_6;
+ /* add profile descriptor list */
+ profile_uuid = UUID_SERVCLASS_HF_HANDSFREE;
+ version = HFP_VERSION_1_6;
- result &= SDP_AddProfileDescriptorList(sdp_handle, profile_uuid, version);
+ result &= SDP_AddProfileDescriptorList(sdp_handle, profile_uuid, version);
- /* add service name */
- if (p_service_name != NULL && p_service_name[0] != 0)
- {
- result &= SDP_AddAttribute(sdp_handle, ATTR_ID_SERVICE_NAME, TEXT_STR_DESC_TYPE,
- (uint32_t)(strlen(p_service_name)+1), (uint8_t *) p_service_name);
- }
+ /* add service name */
+ if (p_service_name != NULL && p_service_name[0] != 0) {
+ result &= SDP_AddAttribute(
+ sdp_handle, ATTR_ID_SERVICE_NAME, TEXT_STR_DESC_TYPE,
+ (uint32_t)(strlen(p_service_name) + 1), (uint8_t*)p_service_name);
+ }
- /* add features */
- if (features & BTA_HF_CLIENT_FEAT_ECNR)
- sdp_features |= BTA_HF_CLIENT_FEAT_ECNR;
+ /* add features */
+ if (features & BTA_HF_CLIENT_FEAT_ECNR)
+ sdp_features |= BTA_HF_CLIENT_FEAT_ECNR;
- if (features & BTA_HF_CLIENT_FEAT_3WAY)
- sdp_features |= BTA_HF_CLIENT_FEAT_3WAY;
+ if (features & BTA_HF_CLIENT_FEAT_3WAY)
+ sdp_features |= BTA_HF_CLIENT_FEAT_3WAY;
- if (features & BTA_HF_CLIENT_FEAT_CLI)
- sdp_features |= BTA_HF_CLIENT_FEAT_CLI;
+ if (features & BTA_HF_CLIENT_FEAT_CLI) sdp_features |= BTA_HF_CLIENT_FEAT_CLI;
- if (features & BTA_HF_CLIENT_FEAT_VREC)
- sdp_features |= BTA_HF_CLIENT_FEAT_VREC;
+ if (features & BTA_HF_CLIENT_FEAT_VREC)
+ sdp_features |= BTA_HF_CLIENT_FEAT_VREC;
- if (features & BTA_HF_CLIENT_FEAT_VOL)
- sdp_features |= BTA_HF_CLIENT_FEAT_VOL;
+ if (features & BTA_HF_CLIENT_FEAT_VOL) sdp_features |= BTA_HF_CLIENT_FEAT_VOL;
- /* Codec bit position is different in SDP (bit 5) and in BRSF (bit 7) */
- if (features & BTA_HF_CLIENT_FEAT_CODEC)
- sdp_features |= 0x0020;
+ /* Codec bit position is different in SDP (bit 5) and in BRSF (bit 7) */
+ if (features & BTA_HF_CLIENT_FEAT_CODEC) sdp_features |= 0x0020;
- UINT16_TO_BE_FIELD(buf, sdp_features);
- result &= SDP_AddAttribute(sdp_handle, ATTR_ID_SUPPORTED_FEATURES, UINT_DESC_TYPE, 2, buf);
+ UINT16_TO_BE_FIELD(buf, sdp_features);
+ result &= SDP_AddAttribute(sdp_handle, ATTR_ID_SUPPORTED_FEATURES,
+ UINT_DESC_TYPE, 2, buf);
- /* add browse group list */
- result &= SDP_AddUuidSequence(sdp_handle, ATTR_ID_BROWSE_GROUP_LIST, 1, browse_list);
+ /* add browse group list */
+ result &= SDP_AddUuidSequence(sdp_handle, ATTR_ID_BROWSE_GROUP_LIST, 1,
+ browse_list);
- return result;
+ return result;
}
/*******************************************************************************
@@ -163,21 +164,17 @@
* Returns void
*
******************************************************************************/
-void bta_hf_client_create_record(tBTA_HF_CLIENT_DATA *p_data)
-{
- /* add sdp record if not already registered */
- if (bta_hf_client_cb.sdp_handle == 0)
- {
- bta_hf_client_cb.sdp_handle = SDP_CreateRecord();
- bta_hf_client_cb.scn = BTM_AllocateSCN();
- bta_hf_client_add_record(p_data->api_register.name,
- bta_hf_client_cb.scn,
- p_data->api_register.features,
- bta_hf_client_cb.sdp_handle);
+void bta_hf_client_create_record(tBTA_HF_CLIENT_DATA* p_data) {
+ /* add sdp record if not already registered */
+ if (bta_hf_client_cb.sdp_handle == 0) {
+ bta_hf_client_cb.sdp_handle = SDP_CreateRecord();
+ bta_hf_client_cb.scn = BTM_AllocateSCN();
+ bta_hf_client_add_record(p_data->api_register.name, bta_hf_client_cb.scn,
+ p_data->api_register.features,
+ bta_hf_client_cb.sdp_handle);
- bta_sys_add_uuid(UUID_SERVCLASS_HF_HANDSFREE);
- }
-
+ bta_sys_add_uuid(UUID_SERVCLASS_HF_HANDSFREE);
+ }
}
/*******************************************************************************
@@ -190,18 +187,16 @@
* Returns void
*
******************************************************************************/
-void bta_hf_client_del_record(UNUSED_ATTR tBTA_HF_CLIENT_DATA *p_data)
-{
- APPL_TRACE_DEBUG("bta_hf_client_del_record");
+void bta_hf_client_del_record(UNUSED_ATTR tBTA_HF_CLIENT_DATA* p_data) {
+ APPL_TRACE_DEBUG("bta_hf_client_del_record");
- if (bta_hf_client_cb.sdp_handle != 0)
- {
- SDP_DeleteRecord(bta_hf_client_cb.sdp_handle);
- bta_hf_client_cb.sdp_handle = 0;
- BTM_FreeSCN(bta_hf_client_cb.scn);
- BTM_SecClrService(BTM_SEC_SERVICE_HF_HANDSFREE);
- bta_sys_remove_uuid(UUID_SERVCLASS_HF_HANDSFREE);
- }
+ if (bta_hf_client_cb.sdp_handle != 0) {
+ SDP_DeleteRecord(bta_hf_client_cb.sdp_handle);
+ bta_hf_client_cb.sdp_handle = 0;
+ BTM_FreeSCN(bta_hf_client_cb.scn);
+ BTM_SecClrService(BTM_SEC_SERVICE_HF_HANDSFREE);
+ bta_sys_remove_uuid(UUID_SERVCLASS_HF_HANDSFREE);
+ }
}
/*******************************************************************************
@@ -214,78 +209,70 @@
* Returns true if results found, false otherwise.
*
******************************************************************************/
-bool bta_hf_client_sdp_find_attr(void)
-{
- tSDP_DISC_REC *p_rec = NULL;
- tSDP_DISC_ATTR *p_attr;
- tSDP_PROTOCOL_ELEM pe;
- bool result = false;
+bool bta_hf_client_sdp_find_attr(void) {
+ tSDP_DISC_REC* p_rec = NULL;
+ tSDP_DISC_ATTR* p_attr;
+ tSDP_PROTOCOL_ELEM pe;
+ bool result = false;
- bta_hf_client_cb.scb.peer_version = HFP_VERSION_1_1; /* Default version */
+ bta_hf_client_cb.scb.peer_version = HFP_VERSION_1_1; /* Default version */
- /* loop through all records we found */
- while (true)
- {
- /* get next record; if none found, we're done */
- if ((p_rec = SDP_FindServiceInDb(bta_hf_client_cb.scb.p_disc_db, UUID_SERVCLASS_AG_HANDSFREE, p_rec)) == NULL)
- {
- break;
- }
-
- /* get scn from proto desc list if initiator */
- if (bta_hf_client_cb.scb.role == BTA_HF_CLIENT_INT)
- {
- if (SDP_FindProtocolListElemInRec(p_rec, UUID_PROTOCOL_RFCOMM, &pe))
- {
- bta_hf_client_cb.scb.peer_scn = (uint8_t) pe.params[0];
- }
- else
- {
- continue;
- }
- }
-
- /* get profile version (if failure, version parameter is not updated) */
- SDP_FindProfileVersionInRec(p_rec, UUID_SERVCLASS_HF_HANDSFREE, &bta_hf_client_cb.scb.peer_version);
-
- /* get features */
- if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_SUPPORTED_FEATURES)) != NULL)
- {
- /* Found attribute. Get value. */
- /* There might be race condition between SDP and BRSF. */
- /* Do not update if we already received BRSF. */
- if (bta_hf_client_cb.scb.peer_features == 0)
- {
- bta_hf_client_cb.scb.peer_features = p_attr->attr_value.v.u16;
-
- /* SDP and BRSF WBS bit are different, correct it if set */
- if (bta_hf_client_cb.scb.peer_features & 0x0020)
- {
- bta_hf_client_cb.scb.peer_features &= ~0x0020;
- bta_hf_client_cb.scb.peer_features |= BTA_HF_CLIENT_PEER_CODEC;
- }
-
- /* get network for ability to reject calls */
- if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_NETWORK)) != NULL)
- {
- if (p_attr->attr_value.v.u16 == 0x01)
- {
- bta_hf_client_cb.scb.peer_features |= BTA_HF_CLIENT_PEER_REJECT;
- }
- }
- }
- }
-
- /* found what we needed */
- result = true;
- break;
+ /* loop through all records we found */
+ while (true) {
+ /* get next record; if none found, we're done */
+ if ((p_rec = SDP_FindServiceInDb(bta_hf_client_cb.scb.p_disc_db,
+ UUID_SERVCLASS_AG_HANDSFREE, p_rec)) ==
+ NULL) {
+ break;
}
- APPL_TRACE_DEBUG("%s peer_version=0x%x peer_features=0x%x",
- __func__, bta_hf_client_cb.scb.peer_version,
- bta_hf_client_cb.scb.peer_features);
+ /* get scn from proto desc list if initiator */
+ if (bta_hf_client_cb.scb.role == BTA_HF_CLIENT_INT) {
+ if (SDP_FindProtocolListElemInRec(p_rec, UUID_PROTOCOL_RFCOMM, &pe)) {
+ bta_hf_client_cb.scb.peer_scn = (uint8_t)pe.params[0];
+ } else {
+ continue;
+ }
+ }
- return result;
+ /* get profile version (if failure, version parameter is not updated) */
+ SDP_FindProfileVersionInRec(p_rec, UUID_SERVCLASS_HF_HANDSFREE,
+ &bta_hf_client_cb.scb.peer_version);
+
+ /* get features */
+ if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_SUPPORTED_FEATURES)) !=
+ NULL) {
+ /* Found attribute. Get value. */
+ /* There might be race condition between SDP and BRSF. */
+ /* Do not update if we already received BRSF. */
+ if (bta_hf_client_cb.scb.peer_features == 0) {
+ bta_hf_client_cb.scb.peer_features = p_attr->attr_value.v.u16;
+
+ /* SDP and BRSF WBS bit are different, correct it if set */
+ if (bta_hf_client_cb.scb.peer_features & 0x0020) {
+ bta_hf_client_cb.scb.peer_features &= ~0x0020;
+ bta_hf_client_cb.scb.peer_features |= BTA_HF_CLIENT_PEER_CODEC;
+ }
+
+ /* get network for ability to reject calls */
+ if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_NETWORK)) != NULL) {
+ if (p_attr->attr_value.v.u16 == 0x01) {
+ bta_hf_client_cb.scb.peer_features |= BTA_HF_CLIENT_PEER_REJECT;
+ }
+ }
+ }
+ }
+
+ /* found what we needed */
+ result = true;
+ break;
+ }
+
+ APPL_TRACE_DEBUG("%s peer_version=0x%x peer_features=0x%x", __func__,
+ bta_hf_client_cb.scb.peer_version,
+ bta_hf_client_cb.scb.peer_features);
+
+ return result;
}
/*******************************************************************************
@@ -298,59 +285,55 @@
* Returns void
*
******************************************************************************/
-void bta_hf_client_do_disc(void)
-{
- tSDP_UUID uuid_list[2];
- uint16_t num_uuid = 1;
- uint16_t attr_list[4];
- uint8_t num_attr;
- bool db_inited = false;
+void bta_hf_client_do_disc(void) {
+ tSDP_UUID uuid_list[2];
+ uint16_t num_uuid = 1;
+ uint16_t attr_list[4];
+ uint8_t num_attr;
+ bool db_inited = false;
- /* initiator; get proto list and features */
- if (bta_hf_client_cb.scb.role == BTA_HF_CLIENT_INT)
- {
- attr_list[0] = ATTR_ID_SERVICE_CLASS_ID_LIST;
- attr_list[1] = ATTR_ID_PROTOCOL_DESC_LIST;
- attr_list[2] = ATTR_ID_BT_PROFILE_DESC_LIST;
- attr_list[3] = ATTR_ID_SUPPORTED_FEATURES;
- num_attr = 4;
- uuid_list[0].uu.uuid16 = UUID_SERVCLASS_AG_HANDSFREE;
- }
- /* acceptor; get features */
- else
- {
- attr_list[0] = ATTR_ID_SERVICE_CLASS_ID_LIST;
- attr_list[1] = ATTR_ID_BT_PROFILE_DESC_LIST;
- attr_list[2] = ATTR_ID_SUPPORTED_FEATURES;
- num_attr = 3;
- uuid_list[0].uu.uuid16 = UUID_SERVCLASS_AG_HANDSFREE;
- }
+ /* initiator; get proto list and features */
+ if (bta_hf_client_cb.scb.role == BTA_HF_CLIENT_INT) {
+ attr_list[0] = ATTR_ID_SERVICE_CLASS_ID_LIST;
+ attr_list[1] = ATTR_ID_PROTOCOL_DESC_LIST;
+ attr_list[2] = ATTR_ID_BT_PROFILE_DESC_LIST;
+ attr_list[3] = ATTR_ID_SUPPORTED_FEATURES;
+ num_attr = 4;
+ uuid_list[0].uu.uuid16 = UUID_SERVCLASS_AG_HANDSFREE;
+ }
+ /* acceptor; get features */
+ else {
+ attr_list[0] = ATTR_ID_SERVICE_CLASS_ID_LIST;
+ attr_list[1] = ATTR_ID_BT_PROFILE_DESC_LIST;
+ attr_list[2] = ATTR_ID_SUPPORTED_FEATURES;
+ num_attr = 3;
+ uuid_list[0].uu.uuid16 = UUID_SERVCLASS_AG_HANDSFREE;
+ }
- /* allocate buffer for sdp database */
- bta_hf_client_cb.scb.p_disc_db = (tSDP_DISCOVERY_DB *)osi_malloc(BT_DEFAULT_BUFFER_SIZE);
+ /* allocate buffer for sdp database */
+ bta_hf_client_cb.scb.p_disc_db =
+ (tSDP_DISCOVERY_DB*)osi_malloc(BT_DEFAULT_BUFFER_SIZE);
- /* set up service discovery database; attr happens to be attr_list len */
- uuid_list[0].len = LEN_UUID_16;
- uuid_list[1].len = LEN_UUID_16;
- db_inited = SDP_InitDiscoveryDb(bta_hf_client_cb.scb.p_disc_db,
- BT_DEFAULT_BUFFER_SIZE, num_uuid,
- uuid_list, num_attr, attr_list);
+ /* set up service discovery database; attr happens to be attr_list len */
+ uuid_list[0].len = LEN_UUID_16;
+ uuid_list[1].len = LEN_UUID_16;
+ db_inited = SDP_InitDiscoveryDb(bta_hf_client_cb.scb.p_disc_db,
+ BT_DEFAULT_BUFFER_SIZE, num_uuid, uuid_list,
+ num_attr, attr_list);
- if (db_inited)
- {
- /*Service discovery not initiated */
- db_inited = SDP_ServiceSearchAttributeRequest(bta_hf_client_cb.scb.peer_addr,
- bta_hf_client_cb.scb.p_disc_db, bta_hf_client_sdp_cback);
- }
+ if (db_inited) {
+ /*Service discovery not initiated */
+ db_inited = SDP_ServiceSearchAttributeRequest(
+ bta_hf_client_cb.scb.peer_addr, bta_hf_client_cb.scb.p_disc_db,
+ bta_hf_client_sdp_cback);
+ }
- if (!db_inited)
- {
- /*free discover db */
- bta_hf_client_free_db(NULL);
- /* sent failed event */
- bta_hf_client_sm_execute(BTA_HF_CLIENT_DISC_FAIL_EVT, NULL);
- }
-
+ if (!db_inited) {
+ /*free discover db */
+ bta_hf_client_free_db(NULL);
+ /* sent failed event */
+ bta_hf_client_sm_execute(BTA_HF_CLIENT_DISC_FAIL_EVT, NULL);
+ }
}
/*******************************************************************************
@@ -363,7 +346,6 @@
* Returns void
*
******************************************************************************/
-void bta_hf_client_free_db(UNUSED_ATTR tBTA_HF_CLIENT_DATA *p_data)
-{
- osi_free_and_reset((void **)&bta_hf_client_cb.scb.p_disc_db);
+void bta_hf_client_free_db(UNUSED_ATTR tBTA_HF_CLIENT_DATA* p_data) {
+ osi_free_and_reset((void**)&bta_hf_client_cb.scb.p_disc_db);
}
diff --git a/bta/hh/bta_hh_act.cc b/bta/hh/bta_hh_act.cc
index 503f095..3437ce3 100644
--- a/bta/hh/bta_hh_act.cc
+++ b/bta/hh/bta_hh_act.cc
@@ -28,11 +28,11 @@
#include <string.h>
+#include "bta_hh_co.h"
+#include "bta_hh_int.h"
#include "bta_sys.h"
#include "btm_api.h"
#include "l2c_api.h"
-#include "bta_hh_int.h"
-#include "bta_hh_co.h"
#include "osi/include/osi.h"
#include "utl.h"
@@ -40,17 +40,16 @@
* Constants
****************************************************************************/
-
/*****************************************************************************
* Local Function prototypes
****************************************************************************/
-static void bta_hh_cback (uint8_t dev_handle, BD_ADDR addr, uint8_t event,
- uint32_t data, BT_HDR *pdata);
+static void bta_hh_cback(uint8_t dev_handle, BD_ADDR addr, uint8_t event,
+ uint32_t data, BT_HDR* pdata);
static tBTA_HH_STATUS bta_hh_get_trans_status(uint32_t result);
#if (BTA_HH_DEBUG == TRUE)
static const char* bta_hh_get_w4_event(uint16_t event);
-static const char * bta_hh_hid_event_name(uint16_t event);
+static const char* bta_hh_hid_event_name(uint16_t event);
#endif
/*****************************************************************************
@@ -66,47 +65,42 @@
* Returns void
*
******************************************************************************/
-void bta_hh_api_enable(tBTA_HH_DATA *p_data)
-{
- tBTA_HH_STATUS status = BTA_HH_ERR;
- uint8_t xx;
+void bta_hh_api_enable(tBTA_HH_DATA* p_data) {
+ tBTA_HH_STATUS status = BTA_HH_ERR;
+ uint8_t xx;
- /* initialize BTE HID */
- HID_HostInit();
+ /* initialize BTE HID */
+ HID_HostInit();
- memset(&bta_hh_cb, 0, sizeof(tBTA_HH_CB));
+ memset(&bta_hh_cb, 0, sizeof(tBTA_HH_CB));
- HID_HostSetSecurityLevel("", p_data->api_enable.sec_mask);
+ HID_HostSetSecurityLevel("", p_data->api_enable.sec_mask);
- /* Register with L2CAP */
- if ( HID_HostRegister (bta_hh_cback) == HID_SUCCESS)
- {
- /* store parameters */
- bta_hh_cb.p_cback = p_data->api_enable.p_cback;
+ /* Register with L2CAP */
+ if (HID_HostRegister(bta_hh_cback) == HID_SUCCESS) {
+ /* store parameters */
+ bta_hh_cb.p_cback = p_data->api_enable.p_cback;
- status = BTA_HH_OK;
- /* initialize device CB */
- for (xx = 0; xx < BTA_HH_MAX_DEVICE; xx ++)
- {
- bta_hh_cb.kdev[xx].state = BTA_HH_IDLE_ST;
- bta_hh_cb.kdev[xx].hid_handle = BTA_HH_INVALID_HANDLE;
- bta_hh_cb.kdev[xx].index = xx;
- }
-
- /* initialize control block map */
- for (xx = 0; xx < BTA_HH_MAX_KNOWN; xx ++)
- bta_hh_cb.cb_index[xx] = BTA_HH_IDX_INVALID;
+ status = BTA_HH_OK;
+ /* initialize device CB */
+ for (xx = 0; xx < BTA_HH_MAX_DEVICE; xx++) {
+ bta_hh_cb.kdev[xx].state = BTA_HH_IDLE_ST;
+ bta_hh_cb.kdev[xx].hid_handle = BTA_HH_INVALID_HANDLE;
+ bta_hh_cb.kdev[xx].index = xx;
}
+ /* initialize control block map */
+ for (xx = 0; xx < BTA_HH_MAX_KNOWN; xx++)
+ bta_hh_cb.cb_index[xx] = BTA_HH_IDX_INVALID;
+ }
+
#if (BTA_HH_LE_INCLUDED == TRUE)
- if (status == BTA_HH_OK)
- {
- bta_hh_le_enable();
- }
- else
+ if (status == BTA_HH_OK) {
+ bta_hh_le_enable();
+ } else
#endif
- /* signal BTA call back event */
- (* bta_hh_cb.p_cback)(BTA_HH_ENABLE_EVT, (tBTA_HH *)&status);
+ /* signal BTA call back event */
+ (*bta_hh_cb.p_cback)(BTA_HH_ENABLE_EVT, (tBTA_HH*)&status);
}
/*******************************************************************************
*
@@ -118,37 +112,29 @@
* Returns void
*
******************************************************************************/
-void bta_hh_api_disable(void)
-{
- uint8_t xx;
+void bta_hh_api_disable(void) {
+ uint8_t xx;
- /* service is not enabled */
- if (bta_hh_cb.p_cback == NULL)
- return;
+ /* service is not enabled */
+ if (bta_hh_cb.p_cback == NULL) return;
- /* no live connection, signal DISC_CMPL_EVT directly */
- if (!bta_hh_cb.cnt_num)
- {
- bta_hh_disc_cmpl();
+ /* no live connection, signal DISC_CMPL_EVT directly */
+ if (!bta_hh_cb.cnt_num) {
+ bta_hh_disc_cmpl();
+ } else /* otherwise, disconnect all live connections */
+ {
+ bta_hh_cb.w4_disable = true;
+
+ for (xx = 0; xx < BTA_HH_MAX_DEVICE; xx++) {
+ /* send API_CLOSE event to every connected device */
+ if (bta_hh_cb.kdev[xx].state == BTA_HH_CONN_ST) {
+ /* disconnect all connected devices */
+ bta_hh_sm_execute(&bta_hh_cb.kdev[xx], BTA_HH_API_CLOSE_EVT, NULL);
+ }
}
- else /* otherwise, disconnect all live connections */
- {
- bta_hh_cb.w4_disable = true;
+ }
- for(xx = 0; xx < BTA_HH_MAX_DEVICE; xx ++)
- {
- /* send API_CLOSE event to every connected device */
- if ( bta_hh_cb.kdev[xx].state == BTA_HH_CONN_ST )
- {
- /* disconnect all connected devices */
- bta_hh_sm_execute(&bta_hh_cb.kdev[xx],
- BTA_HH_API_CLOSE_EVT,
- NULL);
- }
- }
- }
-
- return;
+ return;
}
/*******************************************************************************
@@ -161,19 +147,17 @@
* Returns void
*
******************************************************************************/
-void bta_hh_disc_cmpl(void)
-{
+void bta_hh_disc_cmpl(void) {
#if (BTA_HH_LE_INCLUDED == TRUE)
- HID_HostDeregister();
- bta_hh_le_deregister();
+ HID_HostDeregister();
+ bta_hh_le_deregister();
#else
- tBTA_HH_STATUS status = BTA_HH_OK;
+ tBTA_HH_STATUS status = BTA_HH_OK;
- /* Deregister with lower layer */
- if (HID_HostDeregister() != HID_SUCCESS)
- status = BTA_HH_ERR;
+ /* Deregister with lower layer */
+ if (HID_HostDeregister() != HID_SUCCESS) status = BTA_HH_ERR;
- bta_hh_cleanup_disable(status);
+ bta_hh_cleanup_disable(status);
#endif
}
@@ -187,76 +171,64 @@
*
******************************************************************************/
static void bta_hh_sdp_cback(uint16_t result, uint16_t attr_mask,
- tHID_DEV_SDP_INFO *sdp_rec )
-{
- tBTA_HH_DEV_CB *p_cb = bta_hh_cb.p_cur;
- uint8_t hdl = 0;
- tBTA_HH_STATUS status = BTA_HH_ERR_SDP;
+ tHID_DEV_SDP_INFO* sdp_rec) {
+ tBTA_HH_DEV_CB* p_cb = bta_hh_cb.p_cur;
+ uint8_t hdl = 0;
+ tBTA_HH_STATUS status = BTA_HH_ERR_SDP;
- /* make sure sdp succeeded and hh has not been disabled */
- if ((result == SDP_SUCCESS) && (p_cb != NULL))
- {
- /* security is required for the connection, add attr_mask bit*/
- if (p_cb->sec_mask)
- attr_mask |= HID_SEC_REQUIRED;
+ /* make sure sdp succeeded and hh has not been disabled */
+ if ((result == SDP_SUCCESS) && (p_cb != NULL)) {
+ /* security is required for the connection, add attr_mask bit*/
+ if (p_cb->sec_mask) attr_mask |= HID_SEC_REQUIRED;
#if (BTA_HH_DEBUG == TRUE)
- APPL_TRACE_EVENT("bta_hh_sdp_cback: p_cb: %d result 0x%02x, \
- attr_mask 0x%02x, handle %x", \
- p_cb, result, attr_mask,p_cb->hid_handle);
+ APPL_TRACE_EVENT(
+ "bta_hh_sdp_cback: p_cb: %d result 0x%02x, \
+ attr_mask 0x%02x, handle %x",
+ p_cb, result, attr_mask, p_cb->hid_handle);
#endif
- /* check to see type of device is supported , and should not been added before */
- if (bta_hh_tod_spt(p_cb, sdp_rec->sub_class))
- {
- /* if not added before */
- if (p_cb->hid_handle == BTA_HH_INVALID_HANDLE)
- {
- /* add device/update attr_mask information */
- if(HID_HostAddDev (p_cb->addr, attr_mask, &hdl) == HID_SUCCESS)
- {
- status = BTA_HH_OK;
- /* update cb_index[] map */
- bta_hh_cb.cb_index[hdl] = p_cb->index;
- }
- else
- {
- p_cb->app_id = 0;
- }
- }
- else
- {
- hdl = p_cb->hid_handle;
- }
- /* else : incoming connection after SDP should update the SDP information as well */
-
- if (p_cb->app_id != 0)
- {
- /* update cb information with attr_mask, dscp_info etc. */
- bta_hh_add_device_to_list(p_cb, hdl, attr_mask,
- &sdp_rec->dscp_info,
- sdp_rec->sub_class,
- sdp_rec->ssr_max_latency,
- sdp_rec->ssr_min_tout,
- p_cb->app_id);
-
- p_cb->dscp_info.ctry_code = sdp_rec->ctry_code;
-
- status = BTA_HH_OK;
- }
-
+ /* check to see type of device is supported , and should not been added
+ * before */
+ if (bta_hh_tod_spt(p_cb, sdp_rec->sub_class)) {
+ /* if not added before */
+ if (p_cb->hid_handle == BTA_HH_INVALID_HANDLE) {
+ /* add device/update attr_mask information */
+ if (HID_HostAddDev(p_cb->addr, attr_mask, &hdl) == HID_SUCCESS) {
+ status = BTA_HH_OK;
+ /* update cb_index[] map */
+ bta_hh_cb.cb_index[hdl] = p_cb->index;
+ } else {
+ p_cb->app_id = 0;
}
- else /* type of device is not supported */
- status = BTA_HH_ERR_TOD_UNSPT;
- }
+ } else {
+ hdl = p_cb->hid_handle;
+ }
+ /* else : incoming connection after SDP should update the SDP information
+ * as well */
- /* free disc_db when SDP is completed */
- osi_free_and_reset((void **)&bta_hh_cb.p_disc_db);
+ if (p_cb->app_id != 0) {
+ /* update cb information with attr_mask, dscp_info etc. */
+ bta_hh_add_device_to_list(p_cb, hdl, attr_mask, &sdp_rec->dscp_info,
+ sdp_rec->sub_class, sdp_rec->ssr_max_latency,
+ sdp_rec->ssr_min_tout, p_cb->app_id);
- /* send SDP_CMPL_EVT into state machine */
- bta_hh_sm_execute(p_cb, BTA_HH_SDP_CMPL_EVT, (tBTA_HH_DATA *)&status);
+ p_cb->dscp_info.ctry_code = sdp_rec->ctry_code;
- return;
+ status = BTA_HH_OK;
+ }
+
+ } else /* type of device is not supported */
+ status = BTA_HH_ERR_TOD_UNSPT;
+ }
+
+ /* free disc_db when SDP is completed */
+ osi_free_and_reset((void**)&bta_hh_cb.p_disc_db);
+
+ /* send SDP_CMPL_EVT into state machine */
+ bta_hh_sm_execute(p_cb, BTA_HH_SDP_CMPL_EVT, (tBTA_HH_DATA*)&status);
+
+ return;
}
/*******************************************************************************
*
@@ -267,63 +239,59 @@
* Returns void
*
******************************************************************************/
-static void bta_hh_di_sdp_cback(uint16_t result)
-{
- tBTA_HH_DEV_CB *p_cb = bta_hh_cb.p_cur;
- tBTA_HH_STATUS status = BTA_HH_ERR_SDP;
- tSDP_DI_GET_RECORD di_rec;
- tHID_STATUS ret;
+static void bta_hh_di_sdp_cback(uint16_t result) {
+ tBTA_HH_DEV_CB* p_cb = bta_hh_cb.p_cur;
+ tBTA_HH_STATUS status = BTA_HH_ERR_SDP;
+ tSDP_DI_GET_RECORD di_rec;
+ tHID_STATUS ret;
#if (BTA_HH_DEBUG == TRUE)
- APPL_TRACE_EVENT("bta_hh_di_sdp_cback: p_cb: %d result 0x%02x", p_cb, result);
+ APPL_TRACE_EVENT("bta_hh_di_sdp_cback: p_cb: %d result 0x%02x", p_cb, result);
#endif
- /* if DI record does not exist on remote device, vendor_id in tBTA_HH_DEV_DSCP_INFO will be
- * set to 0xffff and we will allow the connection to go through. Spec mandates that DI
- * record be set, but many HID devices do not set this. So for IOP purposes, we allow the
- * connection to go through and update the DI record to invalid DI entry.*/
- if (((result == SDP_SUCCESS) || (result == SDP_NO_RECS_MATCH)) && (p_cb != NULL))
+ /* if DI record does not exist on remote device, vendor_id in
+ * tBTA_HH_DEV_DSCP_INFO will be
+ * set to 0xffff and we will allow the connection to go through. Spec
+ * mandates that DI
+ * record be set, but many HID devices do not set this. So for IOP
+ * purposes, we allow the
+ * connection to go through and update the DI record to invalid DI
+ * entry.*/
+ if (((result == SDP_SUCCESS) || (result == SDP_NO_RECS_MATCH)) &&
+ (p_cb != NULL)) {
+ if (result == SDP_SUCCESS &&
+ SDP_GetNumDiRecords(bta_hh_cb.p_disc_db) != 0) {
+ /* always update information with primary DI record */
+ if (SDP_GetDiRecord(1, &di_rec, bta_hh_cb.p_disc_db) == SDP_SUCCESS) {
+ bta_hh_update_di_info(p_cb, di_rec.rec.vendor, di_rec.rec.product,
+ di_rec.rec.version, 0);
+ }
+
+ } else /* no DI recrod available */
{
- if(result == SDP_SUCCESS && SDP_GetNumDiRecords(bta_hh_cb.p_disc_db) != 0)
- {
- /* always update information with primary DI record */
- if (SDP_GetDiRecord(1, &di_rec, bta_hh_cb.p_disc_db) == SDP_SUCCESS)
- {
- bta_hh_update_di_info(p_cb, di_rec.rec.vendor, di_rec.rec.product, di_rec.rec.version, 0);
- }
+ bta_hh_update_di_info(p_cb, BTA_HH_VENDOR_ID_INVALID, 0, 0, 0);
+ }
- }
- else /* no DI recrod available */
- {
- bta_hh_update_di_info(p_cb, BTA_HH_VENDOR_ID_INVALID, 0, 0, 0);
- }
-
- if ((ret = HID_HostGetSDPRecord(p_cb->addr,
- bta_hh_cb.p_disc_db,
- p_bta_hh_cfg->sdp_db_size,
- bta_hh_sdp_cback)) == HID_SUCCESS)
- {
- status = BTA_HH_OK;
- }
- else
- {
+ if ((ret = HID_HostGetSDPRecord(p_cb->addr, bta_hh_cb.p_disc_db,
+ p_bta_hh_cfg->sdp_db_size,
+ bta_hh_sdp_cback)) == HID_SUCCESS) {
+ status = BTA_HH_OK;
+ } else {
#if (BTA_HH_DEBUG == TRUE)
- APPL_TRACE_DEBUG ("bta_hh_di_sdp_cback: HID_HostGetSDPRecord failed: Status 0x%2x",
- ret);
+ APPL_TRACE_DEBUG(
+ "bta_hh_di_sdp_cback: HID_HostGetSDPRecord failed: Status 0x%2x",
+ ret);
#endif
- }
}
+ }
-
- if (status != BTA_HH_OK) {
- osi_free_and_reset((void **)&bta_hh_cb.p_disc_db);
- /* send SDP_CMPL_EVT into state machine */
- bta_hh_sm_execute(p_cb, BTA_HH_SDP_CMPL_EVT, (tBTA_HH_DATA *)&status);
- }
- return;
-
+ if (status != BTA_HH_OK) {
+ osi_free_and_reset((void**)&bta_hh_cb.p_disc_db);
+ /* send SDP_CMPL_EVT into state machine */
+ bta_hh_sm_execute(p_cb, BTA_HH_SDP_CMPL_EVT, (tBTA_HH_DATA*)&status);
+ }
+ return;
}
-
/*******************************************************************************
*
* Function bta_hh_start_sdp
@@ -336,182 +304,166 @@
* Returns void
*
******************************************************************************/
-void bta_hh_start_sdp(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data)
-{
- tBTA_HH_STATUS status = BTA_HH_ERR_SDP;
- uint8_t hdl;
+void bta_hh_start_sdp(tBTA_HH_DEV_CB* p_cb, tBTA_HH_DATA* p_data) {
+ tBTA_HH_STATUS status = BTA_HH_ERR_SDP;
+ uint8_t hdl;
- p_cb->sec_mask = p_data->api_conn.sec_mask;
- p_cb->mode = p_data->api_conn.mode;
- bta_hh_cb.p_cur = p_cb;
+ p_cb->sec_mask = p_data->api_conn.sec_mask;
+ p_cb->mode = p_data->api_conn.mode;
+ bta_hh_cb.p_cur = p_cb;
#if (BTA_HH_LE_INCLUDED == TRUE)
- if (bta_hh_is_le_device(p_cb, p_data->api_conn.bd_addr))
- {
- bta_hh_le_open_conn(p_cb, p_data->api_conn.bd_addr);
- return;
- }
+ if (bta_hh_is_le_device(p_cb, p_data->api_conn.bd_addr)) {
+ bta_hh_le_open_conn(p_cb, p_data->api_conn.bd_addr);
+ return;
+ }
#endif
- /* if previously virtually cabled device, skip SDP */
- if (p_cb->app_id)
- {
- status = BTA_HH_OK;
+ /* if previously virtually cabled device, skip SDP */
+ if (p_cb->app_id) {
+ status = BTA_HH_OK;
#if (BTA_HH_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hh_start_sdp:: skip SDP for known devices");
+ APPL_TRACE_DEBUG("bta_hh_start_sdp:: skip SDP for known devices");
#endif
- if (p_cb->hid_handle == BTA_HH_INVALID_HANDLE)
- {
- if (HID_HostAddDev (p_cb->addr, p_cb->attr_mask, &hdl) \
- == HID_SUCCESS)
- {
- /* update device CB with newly register device handle */
- bta_hh_add_device_to_list(p_cb, hdl, p_cb->attr_mask, NULL,
- p_cb->sub_class,
- p_cb->dscp_info.ssr_max_latency,
- p_cb->dscp_info.ssr_min_tout,
- p_cb->app_id);
- /* update cb_index[] map */
- bta_hh_cb.cb_index[hdl] = p_cb->index;
- }
- else
- status = BTA_HH_ERR_NO_RES;
- }
- bta_hh_sm_execute(p_cb, BTA_HH_SDP_CMPL_EVT, (tBTA_HH_DATA *)&status);
-
- return;
+ if (p_cb->hid_handle == BTA_HH_INVALID_HANDLE) {
+ if (HID_HostAddDev(p_cb->addr, p_cb->attr_mask, &hdl) == HID_SUCCESS) {
+ /* update device CB with newly register device handle */
+ bta_hh_add_device_to_list(p_cb, hdl, p_cb->attr_mask, NULL,
+ p_cb->sub_class,
+ p_cb->dscp_info.ssr_max_latency,
+ p_cb->dscp_info.ssr_min_tout, p_cb->app_id);
+ /* update cb_index[] map */
+ bta_hh_cb.cb_index[hdl] = p_cb->index;
+ } else
+ status = BTA_HH_ERR_NO_RES;
}
- /* GetSDPRecord. at one time only one SDP precedure can be active */
- else if (!bta_hh_cb.p_disc_db)
- {
- bta_hh_cb.p_disc_db = (tSDP_DISCOVERY_DB *)osi_malloc(p_bta_hh_cfg->sdp_db_size);
- bta_hh_cb.p_cur = p_cb;
- /* do DI discovery first */
- if (SDP_DiDiscover(p_data->api_conn.bd_addr,
- bta_hh_cb.p_disc_db,
- p_bta_hh_cfg->sdp_db_size,
- bta_hh_di_sdp_cback) != SDP_SUCCESS) {
-#if (BTA_HH_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hh_start_sdp: SDP_DiDiscover failed: \
- Status 0x%2X",status);
-#endif
- status = BTA_HH_ERR_SDP;
- osi_free_and_reset((void **)&bta_hh_cb.p_disc_db);
- } else {
- status = BTA_HH_OK;
- }
- } else if (bta_hh_cb.p_disc_db) {
- /* It is possible that there is incoming/outgoing collision case. DUT initiated
- * HID connection at same time remote has connected L2CAP for HID control,
- * so SDP would be in progress, when this flow reaches here. Just do nothing
- * when the code reaches here, and ongoing SDP completion or failure will handle this case.
- */
- APPL_TRACE_DEBUG("%s: ignoring as SDP already in progress", __func__);
- return;
- }
-
- if (status != BTA_HH_OK)
- bta_hh_sm_execute(p_cb, BTA_HH_SDP_CMPL_EVT, (tBTA_HH_DATA *)&status);
+ bta_hh_sm_execute(p_cb, BTA_HH_SDP_CMPL_EVT, (tBTA_HH_DATA*)&status);
return;
+ }
+ /* GetSDPRecord. at one time only one SDP precedure can be active */
+ else if (!bta_hh_cb.p_disc_db) {
+ bta_hh_cb.p_disc_db =
+ (tSDP_DISCOVERY_DB*)osi_malloc(p_bta_hh_cfg->sdp_db_size);
+ bta_hh_cb.p_cur = p_cb;
+ /* do DI discovery first */
+ if (SDP_DiDiscover(p_data->api_conn.bd_addr, bta_hh_cb.p_disc_db,
+ p_bta_hh_cfg->sdp_db_size,
+ bta_hh_di_sdp_cback) != SDP_SUCCESS) {
+#if (BTA_HH_DEBUG == TRUE)
+ APPL_TRACE_DEBUG(
+ "bta_hh_start_sdp: SDP_DiDiscover failed: \
+ Status 0x%2X",
+ status);
+#endif
+ status = BTA_HH_ERR_SDP;
+ osi_free_and_reset((void**)&bta_hh_cb.p_disc_db);
+ } else {
+ status = BTA_HH_OK;
+ }
+ } else if (bta_hh_cb.p_disc_db) {
+ /* It is possible that there is incoming/outgoing collision case. DUT
+ * initiated
+ * HID connection at same time remote has connected L2CAP for HID control,
+ * so SDP would be in progress, when this flow reaches here. Just do nothing
+ * when the code reaches here, and ongoing SDP completion or failure will
+ * handle this case.
+ */
+ APPL_TRACE_DEBUG("%s: ignoring as SDP already in progress", __func__);
+ return;
+ }
+ if (status != BTA_HH_OK)
+ bta_hh_sm_execute(p_cb, BTA_HH_SDP_CMPL_EVT, (tBTA_HH_DATA*)&status);
+
+ return;
}
/*******************************************************************************
*
* Function bta_hh_sdp_cmpl
*
- * Description When SDP completed, initiate a connection or report error depend
+ * Description When SDP completed, initiate a connection or report error
+ *depend
* on SDP result.
*
*
* Returns void
*
******************************************************************************/
-void bta_hh_sdp_cmpl(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data)
-{
- tBTA_HH_CONN conn_dat;
- tBTA_HH_STATUS status = p_data->status;
+void bta_hh_sdp_cmpl(tBTA_HH_DEV_CB* p_cb, tBTA_HH_DATA* p_data) {
+ tBTA_HH_CONN conn_dat;
+ tBTA_HH_STATUS status = p_data->status;
#if (BTA_HH_DEBUG == TRUE)
- APPL_TRACE_DEBUG ("bta_hh_sdp_cmpl: status 0x%2X",p_data->status);
+ APPL_TRACE_DEBUG("bta_hh_sdp_cmpl: status 0x%2X", p_data->status);
#endif
- /* initialize call back data */
- memset((void *)&conn_dat, 0, sizeof(tBTA_HH_CONN));
- conn_dat.handle = p_cb->hid_handle;
- bdcpy(conn_dat.bda, p_cb->addr);
+ /* initialize call back data */
+ memset((void*)&conn_dat, 0, sizeof(tBTA_HH_CONN));
+ conn_dat.handle = p_cb->hid_handle;
+ bdcpy(conn_dat.bda, p_cb->addr);
- /* if SDP compl success */
- if ( status == BTA_HH_OK)
+ /* if SDP compl success */
+ if (status == BTA_HH_OK) {
+ /* not incoming connection doing SDP, initiate a HID connection */
+ if (!p_cb->incoming_conn) {
+ tHID_STATUS ret;
+ /* set security level */
+ HID_HostSetSecurityLevel("", p_cb->sec_mask);
+
+ /* open HID connection */
+ ret = HID_HostOpenDev(p_cb->hid_handle);
+ APPL_TRACE_DEBUG("%s: HID_HostOpenDev returned=%d", __func__, ret);
+ if (ret == HID_SUCCESS || ret == HID_ERR_ALREADY_CONN) {
+ status = BTA_HH_OK;
+ } else if (ret == HID_ERR_CONN_IN_PROCESS) {
+ /* Connection already in progress, return from here, SDP
+ * will be performed after connection is completed.
+ */
+ APPL_TRACE_DEBUG("%s: connection already in progress", __func__);
+ return;
+ } else {
+#if (BTA_HH_DEBUG == TRUE)
+ APPL_TRACE_DEBUG("%s: HID_HostOpenDev failed: Status 0x%2X", __func__,
+ ret);
+#endif
+ /* open fail, remove device from management device list */
+ HID_HostRemoveDev(p_cb->hid_handle);
+ status = BTA_HH_ERR;
+ }
+ } else /* incoming connection SDP finish */
{
- /* not incoming connection doing SDP, initiate a HID connection */
- if (!p_cb->incoming_conn)
- {
- tHID_STATUS ret;
- /* set security level */
- HID_HostSetSecurityLevel("", p_cb->sec_mask);
-
- /* open HID connection */
- ret = HID_HostOpenDev (p_cb->hid_handle);
- APPL_TRACE_DEBUG ("%s: HID_HostOpenDev returned=%d", __func__, ret);
- if (ret == HID_SUCCESS || ret == HID_ERR_ALREADY_CONN)
- {
- status = BTA_HH_OK;
- }
- else if (ret == HID_ERR_CONN_IN_PROCESS)
- {
- /* Connection already in progress, return from here, SDP
- * will be performed after connection is completed.
- */
- APPL_TRACE_DEBUG ("%s: connection already in progress", __func__);
- return;
- }
- else
- {
-#if (BTA_HH_DEBUG == TRUE)
- APPL_TRACE_DEBUG ("%s: HID_HostOpenDev failed: Status 0x%2X", __func__, ret);
-#endif
- /* open fail, remove device from management device list */
- HID_HostRemoveDev( p_cb->hid_handle);
- status = BTA_HH_ERR;
- }
- }
- else /* incoming connection SDP finish */
- {
- bta_hh_sm_execute(p_cb, BTA_HH_OPEN_CMPL_EVT, NULL);
- }
+ bta_hh_sm_execute(p_cb, BTA_HH_OPEN_CMPL_EVT, NULL);
}
+ }
- if (status != BTA_HH_OK)
- {
- /* Check if this was incoming connection request from an unknown device
- **and connection failed due to missing HID Device SDP UUID
- **In above condition, disconnect the link as well as remove the
- **device from list of HID devices*/
- if ((status == BTA_HH_ERR_SDP) &&
- (p_cb->incoming_conn) &&(p_cb->app_id == 0))
- {
- APPL_TRACE_DEBUG ("bta_hh_sdp_cmpl:SDP failed for incoming conn :hndl %d",
- p_cb->incoming_hid_handle);
- HID_HostRemoveDev( p_cb->incoming_hid_handle);
- }
- conn_dat.status = status;
- (* bta_hh_cb.p_cback)(BTA_HH_OPEN_EVT, (tBTA_HH *)&conn_dat);
-
- /* move state machine W4_CONN ->IDLE */
- bta_hh_sm_execute(p_cb, BTA_HH_API_CLOSE_EVT, NULL);
-
- /* if this is an outgoing connection to an unknown device, clean up cb */
- if (p_cb->app_id == 0 && !p_cb->incoming_conn)
- {
- /* clean up device control block */
- bta_hh_clean_up_kdev(p_cb);
- }
-#if (BTA_HH_DEBUG == TRUE)
- bta_hh_trace_dev_db();
-#endif
+ if (status != BTA_HH_OK) {
+ /* Check if this was incoming connection request from an unknown device
+ **and connection failed due to missing HID Device SDP UUID
+ **In above condition, disconnect the link as well as remove the
+ **device from list of HID devices*/
+ if ((status == BTA_HH_ERR_SDP) && (p_cb->incoming_conn) &&
+ (p_cb->app_id == 0)) {
+ APPL_TRACE_DEBUG("bta_hh_sdp_cmpl:SDP failed for incoming conn :hndl %d",
+ p_cb->incoming_hid_handle);
+ HID_HostRemoveDev(p_cb->incoming_hid_handle);
}
- return;
+ conn_dat.status = status;
+ (*bta_hh_cb.p_cback)(BTA_HH_OPEN_EVT, (tBTA_HH*)&conn_dat);
+
+ /* move state machine W4_CONN ->IDLE */
+ bta_hh_sm_execute(p_cb, BTA_HH_API_CLOSE_EVT, NULL);
+
+ /* if this is an outgoing connection to an unknown device, clean up cb */
+ if (p_cb->app_id == 0 && !p_cb->incoming_conn) {
+ /* clean up device control block */
+ bta_hh_clean_up_kdev(p_cb);
+ }
+#if (BTA_HH_DEBUG == TRUE)
+ bta_hh_trace_dev_db();
+#endif
+ }
+ return;
}
/*******************************************************************************
@@ -524,29 +476,27 @@
* Returns void
*
******************************************************************************/
-void bta_hh_api_disc_act(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data)
-{
- tBTA_HH_CBDATA disc_dat;
- tHID_STATUS status;
+void bta_hh_api_disc_act(tBTA_HH_DEV_CB* p_cb, tBTA_HH_DATA* p_data) {
+ tBTA_HH_CBDATA disc_dat;
+ tHID_STATUS status;
#if (BTA_HH_LE_INCLUDED == TRUE)
- if (p_cb->is_le_device)
- bta_hh_le_api_disc_act(p_cb);
- else
+ if (p_cb->is_le_device)
+ bta_hh_le_api_disc_act(p_cb);
+ else
#endif
- {
- /* found an active connection */
- disc_dat.handle = p_data ?(uint8_t)p_data->hdr.layer_specific :p_cb->hid_handle;
- disc_dat.status = BTA_HH_ERR;
+ {
+ /* found an active connection */
+ disc_dat.handle =
+ p_data ? (uint8_t)p_data->hdr.layer_specific : p_cb->hid_handle;
+ disc_dat.status = BTA_HH_ERR;
- status = HID_HostCloseDev(disc_dat.handle);
+ status = HID_HostCloseDev(disc_dat.handle);
- if (status)
- (* bta_hh_cb.p_cback)(BTA_HH_CLOSE_EVT, (tBTA_HH *)&disc_dat);
- }
+ if (status) (*bta_hh_cb.p_cback)(BTA_HH_CLOSE_EVT, (tBTA_HH*)&disc_dat);
+ }
- return;
-
+ return;
}
/*******************************************************************************
*
@@ -558,62 +508,54 @@
* Returns void
*
******************************************************************************/
-void bta_hh_open_cmpl_act(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data)
-{
- tBTA_HH_CONN conn ;
- uint8_t dev_handle = p_data ? (uint8_t)p_data->hid_cback.hdr.layer_specific : \
- p_cb->hid_handle;
+void bta_hh_open_cmpl_act(tBTA_HH_DEV_CB* p_cb, tBTA_HH_DATA* p_data) {
+ tBTA_HH_CONN conn;
+ uint8_t dev_handle =
+ p_data ? (uint8_t)p_data->hid_cback.hdr.layer_specific : p_cb->hid_handle;
- memset((void *)&conn, 0, sizeof (tBTA_HH_CONN));
- conn.handle = dev_handle;
- bdcpy(conn.bda, p_cb->addr);
+ memset((void*)&conn, 0, sizeof(tBTA_HH_CONN));
+ conn.handle = dev_handle;
+ bdcpy(conn.bda, p_cb->addr);
- /* increase connection number */
- bta_hh_cb.cnt_num ++;
+ /* increase connection number */
+ bta_hh_cb.cnt_num++;
- /* initialize device driver */
- bta_hh_co_open(p_cb->hid_handle, p_cb->sub_class,
- p_cb->attr_mask, p_cb->app_id);
+ /* initialize device driver */
+ bta_hh_co_open(p_cb->hid_handle, p_cb->sub_class, p_cb->attr_mask,
+ p_cb->app_id);
#if (BTA_HH_LE_INCLUDED == TRUE)
- conn.status = p_cb->status;
- conn.le_hid = p_cb->is_le_device;
- conn.scps_supported = p_cb->scps_supported;
+ conn.status = p_cb->status;
+ conn.le_hid = p_cb->is_le_device;
+ conn.scps_supported = p_cb->scps_supported;
- if (!p_cb->is_le_device)
+ if (!p_cb->is_le_device)
#endif
- {
- /* inform role manager */
- bta_sys_conn_open( BTA_ID_HH ,p_cb->app_id, p_cb->addr);
- }
- /* set protocol mode when not default report mode */
- if ( p_cb->mode != BTA_HH_PROTO_RPT_MODE
+ {
+ /* inform role manager */
+ bta_sys_conn_open(BTA_ID_HH, p_cb->app_id, p_cb->addr);
+ }
+ /* set protocol mode when not default report mode */
+ if (p_cb->mode != BTA_HH_PROTO_RPT_MODE
#if (BTA_HH_LE_INCLUDED == TRUE)
- && !p_cb->is_le_device
+ && !p_cb->is_le_device
#endif
- )
- {
- if ((HID_HostWriteDev(dev_handle,
- HID_TRANS_SET_PROTOCOL, HID_PAR_PROTOCOL_BOOT_MODE,
- 0,
- 0, NULL)) != HID_SUCCESS)
- {
- /* HID connection is up, while SET_PROTO fail */
- conn.status = BTA_HH_ERR_PROTO;
- (* bta_hh_cb.p_cback)(BTA_HH_OPEN_EVT, (tBTA_HH *)&conn);
- }
- else
- {
- conn.status = BTA_HH_OK;
- p_cb->w4_evt = BTA_HH_OPEN_EVT;
- }
+ ) {
+ if ((HID_HostWriteDev(dev_handle, HID_TRANS_SET_PROTOCOL,
+ HID_PAR_PROTOCOL_BOOT_MODE, 0, 0, NULL)) !=
+ HID_SUCCESS) {
+ /* HID connection is up, while SET_PROTO fail */
+ conn.status = BTA_HH_ERR_PROTO;
+ (*bta_hh_cb.p_cback)(BTA_HH_OPEN_EVT, (tBTA_HH*)&conn);
+ } else {
+ conn.status = BTA_HH_OK;
+ p_cb->w4_evt = BTA_HH_OPEN_EVT;
}
- else
- (* bta_hh_cb.p_cback)(BTA_HH_OPEN_EVT, (tBTA_HH *)&conn);
+ } else
+ (*bta_hh_cb.p_cback)(BTA_HH_OPEN_EVT, (tBTA_HH*)&conn);
- p_cb->incoming_conn = false;
- p_cb->incoming_hid_handle = BTA_HH_INVALID_HANDLE;
-
+ p_cb->incoming_conn = false;
+ p_cb->incoming_hid_handle = BTA_HH_INVALID_HANDLE;
}
/*******************************************************************************
*
@@ -625,39 +567,35 @@
* Returns void
*
******************************************************************************/
-void bta_hh_open_act(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data)
-{
- tBTA_HH_API_CONN conn_data;
+void bta_hh_open_act(tBTA_HH_DEV_CB* p_cb, tBTA_HH_DATA* p_data) {
+ tBTA_HH_API_CONN conn_data;
- uint8_t dev_handle = p_data ? (uint8_t)p_data->hid_cback.hdr.layer_specific : \
- p_cb->hid_handle;
+ uint8_t dev_handle =
+ p_data ? (uint8_t)p_data->hid_cback.hdr.layer_specific : p_cb->hid_handle;
#if (BTA_HH_DEBUG == TRUE)
- APPL_TRACE_EVENT ("bta_hh_open_act: Device[%d] connected", dev_handle);
+ APPL_TRACE_EVENT("bta_hh_open_act: Device[%d] connected", dev_handle);
#endif
- /* SDP has been done */
- if (p_cb->app_id != 0)
- {
- bta_hh_sm_execute(p_cb, BTA_HH_OPEN_CMPL_EVT, p_data);
- }
- else
- /* app_id == 0 indicates an incoming conenction request arrives without SDP
- performed, do it first */
- {
- p_cb->incoming_conn = true;
- /* store the handle here in case sdp fails - need to disconnect */
- p_cb->incoming_hid_handle = dev_handle;
+ /* SDP has been done */
+ if (p_cb->app_id != 0) {
+ bta_hh_sm_execute(p_cb, BTA_HH_OPEN_CMPL_EVT, p_data);
+ } else
+ /* app_id == 0 indicates an incoming conenction request arrives without SDP
+ performed, do it first */
+ {
+ p_cb->incoming_conn = true;
+ /* store the handle here in case sdp fails - need to disconnect */
+ p_cb->incoming_hid_handle = dev_handle;
- memset(&conn_data, 0, sizeof(tBTA_HH_API_CONN));
- bdcpy(conn_data.bd_addr, p_cb->addr);
- bta_hh_start_sdp(p_cb, (tBTA_HH_DATA *)&conn_data);
- }
+ memset(&conn_data, 0, sizeof(tBTA_HH_API_CONN));
+ bdcpy(conn_data.bd_addr, p_cb->addr);
+ bta_hh_start_sdp(p_cb, (tBTA_HH_DATA*)&conn_data);
+ }
- return;
+ return;
}
-
/*******************************************************************************
*
* Function bta_hh_data_act
@@ -668,18 +606,17 @@
* Returns void
*
******************************************************************************/
-void bta_hh_data_act(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA * p_data)
-{
- BT_HDR *pdata = p_data->hid_cback.p_data;
- uint8_t *p_rpt = (uint8_t *)(pdata + 1) + pdata->offset;
+void bta_hh_data_act(tBTA_HH_DEV_CB* p_cb, tBTA_HH_DATA* p_data) {
+ BT_HDR* pdata = p_data->hid_cback.p_data;
+ uint8_t* p_rpt = (uint8_t*)(pdata + 1) + pdata->offset;
- bta_hh_co_data((uint8_t)p_data->hid_cback.hdr.layer_specific, p_rpt, pdata->len,
- p_cb->mode, p_cb->sub_class, p_cb->dscp_info.ctry_code, p_cb->addr, p_cb->app_id);
+ bta_hh_co_data((uint8_t)p_data->hid_cback.hdr.layer_specific, p_rpt,
+ pdata->len, p_cb->mode, p_cb->sub_class,
+ p_cb->dscp_info.ctry_code, p_cb->addr, p_cb->app_id);
- osi_free_and_reset((void **)&pdata);
+ osi_free_and_reset((void**)&pdata);
}
-
/*******************************************************************************
*
* Function bta_hh_handsk_act
@@ -690,68 +627,67 @@
* Returns void
*
******************************************************************************/
-void bta_hh_handsk_act(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA * p_data)
-{
- tBTA_HH_CBDATA cback_data ;
- tBTA_HH_HSDATA hs_data;
- tBTA_HH_CONN conn ;
+void bta_hh_handsk_act(tBTA_HH_DEV_CB* p_cb, tBTA_HH_DATA* p_data) {
+ tBTA_HH_CBDATA cback_data;
+ tBTA_HH_HSDATA hs_data;
+ tBTA_HH_CONN conn;
#if (BTA_HH_DEBUG == TRUE)
- APPL_TRACE_DEBUG("HANDSHAKE received for: event = %s data= %d",
- bta_hh_get_w4_event(p_cb->w4_evt), p_data->hid_cback.data);
+ APPL_TRACE_DEBUG("HANDSHAKE received for: event = %s data= %d",
+ bta_hh_get_w4_event(p_cb->w4_evt), p_data->hid_cback.data);
#endif
- memset(&hs_data, 0, sizeof(tBTA_HH_HSDATA));
- memset(&cback_data, 0, sizeof(tBTA_HH_CBDATA));
+ memset(&hs_data, 0, sizeof(tBTA_HH_HSDATA));
+ memset(&cback_data, 0, sizeof(tBTA_HH_CBDATA));
- switch (p_cb->w4_evt)
- {
- /* GET_ transsaction, handshake indicate unsupported request */
- case BTA_HH_GET_PROTO_EVT:
- hs_data.rsp_data.proto_mode = BTA_HH_PROTO_UNKNOWN;
- /* fall through */
- case BTA_HH_GET_RPT_EVT:
- case BTA_HH_GET_IDLE_EVT :
- hs_data.handle = p_cb->hid_handle;
- /* if handshake gives an OK code for these transaction, fill in UNSUPT */
- if ((hs_data.status = bta_hh_get_trans_status(p_data->hid_cback.data)) == BTA_HH_OK)
- hs_data.status = BTA_HH_HS_TRANS_NOT_SPT;
+ switch (p_cb->w4_evt) {
+ /* GET_ transsaction, handshake indicate unsupported request */
+ case BTA_HH_GET_PROTO_EVT:
+ hs_data.rsp_data.proto_mode = BTA_HH_PROTO_UNKNOWN;
+ /* fall through */
+ case BTA_HH_GET_RPT_EVT:
+ case BTA_HH_GET_IDLE_EVT:
+ hs_data.handle = p_cb->hid_handle;
+ /* if handshake gives an OK code for these transaction, fill in UNSUPT */
+ if ((hs_data.status = bta_hh_get_trans_status(p_data->hid_cback.data)) ==
+ BTA_HH_OK)
+ hs_data.status = BTA_HH_HS_TRANS_NOT_SPT;
- (* bta_hh_cb.p_cback)(p_cb->w4_evt, (tBTA_HH *)&hs_data);
- p_cb->w4_evt = 0;
- break;
+ (*bta_hh_cb.p_cback)(p_cb->w4_evt, (tBTA_HH*)&hs_data);
+ p_cb->w4_evt = 0;
+ break;
- /* acknoledgement from HID device for SET_ transaction */
- case BTA_HH_SET_RPT_EVT:
- case BTA_HH_SET_PROTO_EVT:
- case BTA_HH_SET_IDLE_EVT :
- cback_data.handle = p_cb->hid_handle;
- cback_data.status = bta_hh_get_trans_status(p_data->hid_cback.data);
- (* bta_hh_cb.p_cback)(p_cb->w4_evt, (tBTA_HH *)&cback_data);
- p_cb->w4_evt = 0;
- break;
+ /* acknoledgement from HID device for SET_ transaction */
+ case BTA_HH_SET_RPT_EVT:
+ case BTA_HH_SET_PROTO_EVT:
+ case BTA_HH_SET_IDLE_EVT:
+ cback_data.handle = p_cb->hid_handle;
+ cback_data.status = bta_hh_get_trans_status(p_data->hid_cback.data);
+ (*bta_hh_cb.p_cback)(p_cb->w4_evt, (tBTA_HH*)&cback_data);
+ p_cb->w4_evt = 0;
+ break;
- /* SET_PROTOCOL when open connection */
- case BTA_HH_OPEN_EVT:
- conn.status =p_data->hid_cback.data ? BTA_HH_ERR_PROTO: BTA_HH_OK;
- conn.handle = p_cb->hid_handle;
- bdcpy(conn.bda, p_cb->addr);
- (* bta_hh_cb.p_cback)(p_cb->w4_evt, (tBTA_HH *)&conn);
+ /* SET_PROTOCOL when open connection */
+ case BTA_HH_OPEN_EVT:
+ conn.status = p_data->hid_cback.data ? BTA_HH_ERR_PROTO : BTA_HH_OK;
+ conn.handle = p_cb->hid_handle;
+ bdcpy(conn.bda, p_cb->addr);
+ (*bta_hh_cb.p_cback)(p_cb->w4_evt, (tBTA_HH*)&conn);
#if (BTA_HH_DEBUG == TRUE)
- bta_hh_trace_dev_db();
+ bta_hh_trace_dev_db();
#endif
- p_cb->w4_evt = 0;
- break;
+ p_cb->w4_evt = 0;
+ break;
- default:
- /* unknow transaction handshake response */
- APPL_TRACE_DEBUG("unknown transaction type");
- break;
- }
+ default:
+ /* unknow transaction handshake response */
+ APPL_TRACE_DEBUG("unknown transaction type");
+ break;
+ }
- /* transaction achknoledgement received, inform PM for mode change */
- bta_sys_idle(BTA_ID_HH, p_cb->app_id, p_cb->addr);
- return;
+ /* transaction achknoledgement received, inform PM for mode change */
+ bta_sys_idle(BTA_ID_HH, p_cb->app_id, p_cb->addr);
+ return;
}
/*******************************************************************************
*
@@ -763,104 +699,103 @@
* Returns void
*
******************************************************************************/
-void bta_hh_ctrl_dat_act(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA * p_data)
-{
- BT_HDR *pdata = p_data->hid_cback.p_data;
- uint8_t *data = (uint8_t *)(pdata + 1) + pdata->offset;
- tBTA_HH_HSDATA hs_data;
+void bta_hh_ctrl_dat_act(tBTA_HH_DEV_CB* p_cb, tBTA_HH_DATA* p_data) {
+ BT_HDR* pdata = p_data->hid_cback.p_data;
+ uint8_t* data = (uint8_t*)(pdata + 1) + pdata->offset;
+ tBTA_HH_HSDATA hs_data;
#if (BTA_HH_DEBUG == TRUE)
- APPL_TRACE_DEBUG("Ctrl DATA received w4: event[%s]",
- bta_hh_get_w4_event(p_cb->w4_evt));
+ APPL_TRACE_DEBUG("Ctrl DATA received w4: event[%s]",
+ bta_hh_get_w4_event(p_cb->w4_evt));
#endif
- hs_data.status = BTA_HH_OK;
- hs_data.handle = p_cb->hid_handle;
+ hs_data.status = BTA_HH_OK;
+ hs_data.handle = p_cb->hid_handle;
- switch (p_cb->w4_evt)
- {
+ switch (p_cb->w4_evt) {
case BTA_HH_GET_IDLE_EVT:
- hs_data.rsp_data.idle_rate = *data;
- break;
+ hs_data.rsp_data.idle_rate = *data;
+ break;
case BTA_HH_GET_RPT_EVT:
- hs_data.rsp_data.p_rpt_data = pdata;
- break;
+ hs_data.rsp_data.p_rpt_data = pdata;
+ break;
case BTA_HH_GET_PROTO_EVT:
- /* match up BTE/BTA report/boot mode def*/
- hs_data.rsp_data.proto_mode = ((*data) == HID_PAR_PROTOCOL_REPORT)? \
- BTA_HH_PROTO_RPT_MODE : BTA_HH_PROTO_BOOT_MODE;
+ /* match up BTE/BTA report/boot mode def*/
+ hs_data.rsp_data.proto_mode = ((*data) == HID_PAR_PROTOCOL_REPORT)
+ ? BTA_HH_PROTO_RPT_MODE
+ : BTA_HH_PROTO_BOOT_MODE;
#if (BTA_HH_DEBUG == TRUE)
- APPL_TRACE_DEBUG("GET_PROTOCOL Mode = [%s]",
- (hs_data.rsp_data.proto_mode == BTA_HH_PROTO_RPT_MODE)? "Report" : "Boot");
+ APPL_TRACE_DEBUG("GET_PROTOCOL Mode = [%s]",
+ (hs_data.rsp_data.proto_mode == BTA_HH_PROTO_RPT_MODE)
+ ? "Report"
+ : "Boot");
#endif
- break;
+ break;
/* should not expect control DATA for SET_ transaction */
case BTA_HH_SET_PROTO_EVT:
- /* fall through */
+ /* fall through */
case BTA_HH_SET_RPT_EVT:
- /* fall through */
- case BTA_HH_SET_IDLE_EVT :
- /* fall through */
+ /* fall through */
+ case BTA_HH_SET_IDLE_EVT:
+ /* fall through */
default:
#if (BTA_HH_DEBUG == TRUE)
- APPL_TRACE_DEBUG("invalid transaction type for DATA payload: 4_evt[%s]",
- bta_hh_get_w4_event(p_cb->w4_evt));
+ APPL_TRACE_DEBUG("invalid transaction type for DATA payload: 4_evt[%s]",
+ bta_hh_get_w4_event(p_cb->w4_evt));
#endif
- break;
- }
+ break;
+ }
- /* inform PM for mode change */
- bta_sys_busy(BTA_ID_HH, p_cb->app_id, p_cb->addr);
- bta_sys_idle(BTA_ID_HH, p_cb->app_id, p_cb->addr);
+ /* inform PM for mode change */
+ bta_sys_busy(BTA_ID_HH, p_cb->app_id, p_cb->addr);
+ bta_sys_idle(BTA_ID_HH, p_cb->app_id, p_cb->addr);
- (* bta_hh_cb.p_cback)(p_cb->w4_evt, (tBTA_HH *)&hs_data);
+ (*bta_hh_cb.p_cback)(p_cb->w4_evt, (tBTA_HH*)&hs_data);
- p_cb->w4_evt = 0;
- osi_free_and_reset((void **)&pdata);
-
+ p_cb->w4_evt = 0;
+ osi_free_and_reset((void**)&pdata);
}
/*******************************************************************************
*
* Function bta_hh_open_failure
*
- * Description report HID open failure when at wait for connection state and receive
+ * Description report HID open failure when at wait for connection state
+ *and receive
* device close event.
*
*
* Returns void
*
******************************************************************************/
-void bta_hh_open_failure(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data)
-{
- tBTA_HH_CONN conn_dat ;
- uint32_t reason = p_data->hid_cback.data; /* Reason for closing (32-bit) */
+void bta_hh_open_failure(tBTA_HH_DEV_CB* p_cb, tBTA_HH_DATA* p_data) {
+ tBTA_HH_CONN conn_dat;
+ uint32_t reason = p_data->hid_cback.data; /* Reason for closing (32-bit) */
- memset(&conn_dat, 0, sizeof(tBTA_HH_CONN));
- conn_dat.handle = p_cb->hid_handle;
- conn_dat.status = (reason == HID_ERR_AUTH_FAILED) ?
- BTA_HH_ERR_AUTH_FAILED : BTA_HH_ERR;
- bdcpy(conn_dat.bda, p_cb->addr);
- HID_HostCloseDev(p_cb->hid_handle);
+ memset(&conn_dat, 0, sizeof(tBTA_HH_CONN));
+ conn_dat.handle = p_cb->hid_handle;
+ conn_dat.status =
+ (reason == HID_ERR_AUTH_FAILED) ? BTA_HH_ERR_AUTH_FAILED : BTA_HH_ERR;
+ bdcpy(conn_dat.bda, p_cb->addr);
+ HID_HostCloseDev(p_cb->hid_handle);
- /* Report OPEN fail event */
- (*bta_hh_cb.p_cback)(BTA_HH_OPEN_EVT, (tBTA_HH *)&conn_dat);
+ /* Report OPEN fail event */
+ (*bta_hh_cb.p_cback)(BTA_HH_OPEN_EVT, (tBTA_HH*)&conn_dat);
#if (BTA_HH_DEBUG == TRUE)
- bta_hh_trace_dev_db();
+ bta_hh_trace_dev_db();
#endif
- /* clean up control block, but retain SDP info and device handle */
- p_cb->vp = false;
- p_cb->w4_evt = 0;
+ /* clean up control block, but retain SDP info and device handle */
+ p_cb->vp = false;
+ p_cb->w4_evt = 0;
- /* if no connection is active and HH disable is signaled, disable service */
- if (bta_hh_cb.cnt_num == 0 && bta_hh_cb.w4_disable)
- {
- bta_hh_disc_cmpl();
- }
+ /* if no connection is active and HH disable is signaled, disable service */
+ if (bta_hh_cb.cnt_num == 0 && bta_hh_cb.w4_disable) {
+ bta_hh_disc_cmpl();
+ }
- /* Error in opening hid connection, reset flags */
- p_cb->incoming_conn = false;
- p_cb->incoming_hid_handle = BTA_HH_INVALID_HANDLE;
+ /* Error in opening hid connection, reset flags */
+ p_cb->incoming_conn = false;
+ p_cb->incoming_hid_handle = BTA_HH_INVALID_HANDLE;
}
/*******************************************************************************
@@ -873,75 +808,74 @@
* Returns void
*
******************************************************************************/
-void bta_hh_close_act (tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data)
-{
- tBTA_HH_CONN conn_dat ;
- tBTA_HH_CBDATA disc_dat = {BTA_HH_OK, 0};
- uint32_t reason = p_data->hid_cback.data; /* Reason for closing (32-bit) */
+void bta_hh_close_act(tBTA_HH_DEV_CB* p_cb, tBTA_HH_DATA* p_data) {
+ tBTA_HH_CONN conn_dat;
+ tBTA_HH_CBDATA disc_dat = {BTA_HH_OK, 0};
+ uint32_t reason = p_data->hid_cback.data; /* Reason for closing (32-bit) */
- /* if HID_HDEV_EVT_VC_UNPLUG was received, report BTA_HH_VC_UNPLUG_EVT */
- uint16_t event = p_cb->vp ? BTA_HH_VC_UNPLUG_EVT : BTA_HH_CLOSE_EVT;
+ /* if HID_HDEV_EVT_VC_UNPLUG was received, report BTA_HH_VC_UNPLUG_EVT */
+ uint16_t event = p_cb->vp ? BTA_HH_VC_UNPLUG_EVT : BTA_HH_CLOSE_EVT;
- disc_dat.handle = p_cb->hid_handle;
- disc_dat.status = p_data->hid_cback.data;
+ disc_dat.handle = p_cb->hid_handle;
+ disc_dat.status = p_data->hid_cback.data;
- /* Check reason for closing */
- if ((reason & (HID_L2CAP_CONN_FAIL|HID_L2CAP_REQ_FAIL)) || /* Failure to initialize connection (page timeout or l2cap error) */
- (reason == HID_ERR_AUTH_FAILED) || /* Authenication error (while initiating) */
- (reason == HID_ERR_L2CAP_FAILED)) /* Failure creating l2cap connection */
- {
- /* Failure in opening connection */
- conn_dat.handle = p_cb->hid_handle;
- conn_dat.status = (reason == HID_ERR_AUTH_FAILED) ? BTA_HH_ERR_AUTH_FAILED : BTA_HH_ERR;
- bdcpy(conn_dat.bda, p_cb->addr);
- HID_HostCloseDev(p_cb->hid_handle);
+ /* Check reason for closing */
+ if ((reason & (HID_L2CAP_CONN_FAIL |
+ HID_L2CAP_REQ_FAIL)) || /* Failure to initialize connection
+ (page timeout or l2cap error) */
+ (reason ==
+ HID_ERR_AUTH_FAILED) || /* Authenication error (while initiating) */
+ (reason == HID_ERR_L2CAP_FAILED)) /* Failure creating l2cap connection */
+ {
+ /* Failure in opening connection */
+ conn_dat.handle = p_cb->hid_handle;
+ conn_dat.status =
+ (reason == HID_ERR_AUTH_FAILED) ? BTA_HH_ERR_AUTH_FAILED : BTA_HH_ERR;
+ bdcpy(conn_dat.bda, p_cb->addr);
+ HID_HostCloseDev(p_cb->hid_handle);
- /* Report OPEN fail event */
- (*bta_hh_cb.p_cback)(BTA_HH_OPEN_EVT, (tBTA_HH *)&conn_dat);
+ /* Report OPEN fail event */
+ (*bta_hh_cb.p_cback)(BTA_HH_OPEN_EVT, (tBTA_HH*)&conn_dat);
#if (BTA_HH_DEBUG == TRUE)
- bta_hh_trace_dev_db();
+ bta_hh_trace_dev_db();
#endif
- return;
- }
- /* otherwise report CLOSE/VC_UNPLUG event */
- else
- {
- /* finaliza device driver */
- bta_hh_co_close(p_cb->hid_handle, p_cb->app_id);
- /* inform role manager */
- bta_sys_conn_close( BTA_ID_HH ,p_cb->app_id, p_cb->addr);
- /* update total conn number */
- bta_hh_cb.cnt_num --;
-
- if (disc_dat.status)
- disc_dat.status = BTA_HH_ERR;
-
- (*bta_hh_cb.p_cback)(event, (tBTA_HH *)&disc_dat);
-
- /* if virtually unplug, remove device */
- if (p_cb->vp )
- {
- HID_HostRemoveDev( p_cb->hid_handle);
- bta_hh_clean_up_kdev(p_cb);
- }
-
-#if (BTA_HH_DEBUG == TRUE)
- bta_hh_trace_dev_db();
-#endif
- }
-
- /* clean up control block, but retain SDP info and device handle */
- p_cb->vp = false;
- p_cb->w4_evt = 0;
-
- /* if no connection is active and HH disable is signaled, disable service */
- if (bta_hh_cb.cnt_num == 0 && bta_hh_cb.w4_disable)
- {
- bta_hh_disc_cmpl();
- }
-
return;
+ }
+ /* otherwise report CLOSE/VC_UNPLUG event */
+ else {
+ /* finaliza device driver */
+ bta_hh_co_close(p_cb->hid_handle, p_cb->app_id);
+ /* inform role manager */
+ bta_sys_conn_close(BTA_ID_HH, p_cb->app_id, p_cb->addr);
+ /* update total conn number */
+ bta_hh_cb.cnt_num--;
+
+ if (disc_dat.status) disc_dat.status = BTA_HH_ERR;
+
+ (*bta_hh_cb.p_cback)(event, (tBTA_HH*)&disc_dat);
+
+ /* if virtually unplug, remove device */
+ if (p_cb->vp) {
+ HID_HostRemoveDev(p_cb->hid_handle);
+ bta_hh_clean_up_kdev(p_cb);
+ }
+
+#if (BTA_HH_DEBUG == TRUE)
+ bta_hh_trace_dev_db();
+#endif
+ }
+
+ /* clean up control block, but retain SDP info and device handle */
+ p_cb->vp = false;
+ p_cb->w4_evt = 0;
+
+ /* if no connection is active and HH disable is signaled, disable service */
+ if (bta_hh_cb.cnt_num == 0 && bta_hh_cb.w4_disable) {
+ bta_hh_disc_cmpl();
+ }
+
+ return;
}
/*******************************************************************************
@@ -954,18 +888,14 @@
* Returns void
*
******************************************************************************/
-void bta_hh_get_dscp_act(tBTA_HH_DEV_CB *p_cb,
- UNUSED_ATTR tBTA_HH_DATA *p_data)
-{
-
+void bta_hh_get_dscp_act(tBTA_HH_DEV_CB* p_cb,
+ UNUSED_ATTR tBTA_HH_DATA* p_data) {
#if (BTA_HH_LE_INCLUDED == TRUE)
- if (p_cb->is_le_device)
- {
- bta_hh_le_get_dscp_act(p_cb);
- }
- else
+ if (p_cb->is_le_device) {
+ bta_hh_le_get_dscp_act(p_cb);
+ } else
#endif
- (*bta_hh_cb.p_cback)(BTA_HH_GET_DSCP_EVT, (tBTA_HH *)&p_cb->dscp_info);
+ (*bta_hh_cb.p_cback)(BTA_HH_GET_DSCP_EVT, (tBTA_HH*)&p_cb->dscp_info);
}
/*******************************************************************************
@@ -978,104 +908,89 @@
* Returns void
*
******************************************************************************/
-void bta_hh_maint_dev_act(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data)
-{
- tBTA_HH_MAINT_DEV *p_dev_info = &p_data->api_maintdev;
- tBTA_HH_DEV_INFO dev_info ;
- uint8_t dev_handle;
+void bta_hh_maint_dev_act(tBTA_HH_DEV_CB* p_cb, tBTA_HH_DATA* p_data) {
+ tBTA_HH_MAINT_DEV* p_dev_info = &p_data->api_maintdev;
+ tBTA_HH_DEV_INFO dev_info;
+ uint8_t dev_handle;
- dev_info.status = BTA_HH_ERR;
- dev_info.handle = BTA_HH_INVALID_HANDLE;
+ dev_info.status = BTA_HH_ERR;
+ dev_info.handle = BTA_HH_INVALID_HANDLE;
- switch (p_dev_info->sub_event)
- {
- case BTA_HH_ADD_DEV_EVT: /* add a device */
- bdcpy(dev_info.bda, p_dev_info->bda);
- /* initialize callback data */
- if (p_cb->hid_handle == BTA_HH_INVALID_HANDLE)
- {
+ switch (p_dev_info->sub_event) {
+ case BTA_HH_ADD_DEV_EVT: /* add a device */
+ bdcpy(dev_info.bda, p_dev_info->bda);
+ /* initialize callback data */
+ if (p_cb->hid_handle == BTA_HH_INVALID_HANDLE) {
#if (BTA_HH_LE_INCLUDED == TRUE)
- if (bta_hh_is_le_device(p_cb, p_data->api_conn.bd_addr))
- {
- dev_info.handle = bta_hh_le_add_device(p_cb, p_dev_info);
- dev_info.status = BTA_HH_OK;
- }
- else
+ if (bta_hh_is_le_device(p_cb, p_data->api_conn.bd_addr)) {
+ dev_info.handle = bta_hh_le_add_device(p_cb, p_dev_info);
+ dev_info.status = BTA_HH_OK;
+ } else
#endif
- if (HID_HostAddDev(p_dev_info->bda, p_dev_info->attr_mask, &dev_handle)\
- == HID_SUCCESS)
- {
- dev_info.handle = dev_handle;
- dev_info.status = BTA_HH_OK;
+ if (HID_HostAddDev(p_dev_info->bda, p_dev_info->attr_mask,
+ &dev_handle) == HID_SUCCESS) {
+ dev_info.handle = dev_handle;
+ dev_info.status = BTA_HH_OK;
#if (BTA_HH_LE_INCLUDED == TRUE)
- /* update DI information */
- bta_hh_update_di_info(p_cb,
- p_dev_info->dscp_info.vendor_id,
- p_dev_info->dscp_info.product_id,
- p_dev_info->dscp_info.version,
- p_dev_info->dscp_info.flag);
+ /* update DI information */
+ bta_hh_update_di_info(p_cb, p_dev_info->dscp_info.vendor_id,
+ p_dev_info->dscp_info.product_id,
+ p_dev_info->dscp_info.version,
+ p_dev_info->dscp_info.flag);
#else
- bta_hh_update_di_info(p_cb,
- p_dev_info->dscp_info.vendor_id,
- p_dev_info->dscp_info.product_id,
- p_dev_info->dscp_info.version,
- 0);
+ bta_hh_update_di_info(p_cb, p_dev_info->dscp_info.vendor_id,
+ p_dev_info->dscp_info.product_id,
+ p_dev_info->dscp_info.version, 0);
#endif
- /* add to BTA device list */
- bta_hh_add_device_to_list(p_cb, dev_handle,
- p_dev_info->attr_mask,
- &p_dev_info->dscp_info.descriptor,
- p_dev_info->sub_class,
- p_dev_info->dscp_info.ssr_max_latency,
- p_dev_info->dscp_info.ssr_min_tout,
- p_dev_info->app_id);
- /* update cb_index[] map */
- bta_hh_cb.cb_index[dev_handle] = p_cb->index;
- }
+ /* add to BTA device list */
+ bta_hh_add_device_to_list(
+ p_cb, dev_handle, p_dev_info->attr_mask,
+ &p_dev_info->dscp_info.descriptor, p_dev_info->sub_class,
+ p_dev_info->dscp_info.ssr_max_latency,
+ p_dev_info->dscp_info.ssr_min_tout, p_dev_info->app_id);
+ /* update cb_index[] map */
+ bta_hh_cb.cb_index[dev_handle] = p_cb->index;
}
- else /* device already been added */
- {
- dev_info.handle = p_cb->hid_handle;
- dev_info.status = BTA_HH_OK;
- }
+ } else /* device already been added */
+ {
+ dev_info.handle = p_cb->hid_handle;
+ dev_info.status = BTA_HH_OK;
+ }
#if (BTA_HH_DEBUG == TRUE)
- bta_hh_trace_dev_db();
+ bta_hh_trace_dev_db();
#endif
- break;
- case BTA_HH_RMV_DEV_EVT: /* remove device */
- dev_info.handle = (uint8_t)p_dev_info->hdr.layer_specific;
- bdcpy(dev_info.bda, p_cb->addr);
+ break;
+ case BTA_HH_RMV_DEV_EVT: /* remove device */
+ dev_info.handle = (uint8_t)p_dev_info->hdr.layer_specific;
+ bdcpy(dev_info.bda, p_cb->addr);
#if (BTA_HH_LE_INCLUDED == TRUE)
- if (p_cb->is_le_device)
- {
- bta_hh_le_remove_dev_bg_conn(p_cb);
- bta_hh_sm_execute(p_cb, BTA_HH_API_CLOSE_EVT, NULL);
- bta_hh_clean_up_kdev(p_cb);
- }
- else
+ if (p_cb->is_le_device) {
+ bta_hh_le_remove_dev_bg_conn(p_cb);
+ bta_hh_sm_execute(p_cb, BTA_HH_API_CLOSE_EVT, NULL);
+ bta_hh_clean_up_kdev(p_cb);
+ } else
#endif
- {
- if(HID_HostRemoveDev( dev_info.handle ) == HID_SUCCESS)
- {
- dev_info.status = BTA_HH_OK;
+ {
+ if (HID_HostRemoveDev(dev_info.handle) == HID_SUCCESS) {
+ dev_info.status = BTA_HH_OK;
- /* remove from known device list in BTA */
- bta_hh_clean_up_kdev(p_cb);
- }
+ /* remove from known device list in BTA */
+ bta_hh_clean_up_kdev(p_cb);
}
- break;
+ }
+ break;
default:
- APPL_TRACE_DEBUG("invalid command");
- break;
- }
+ APPL_TRACE_DEBUG("invalid command");
+ break;
+ }
- (* bta_hh_cb.p_cback)(p_dev_info->sub_event, (tBTA_HH *)&dev_info);
+ (*bta_hh_cb.p_cback)(p_dev_info->sub_event, (tBTA_HH*)&dev_info);
}
/*******************************************************************************
*
@@ -1086,98 +1001,86 @@
* Returns void
*
******************************************************************************/
-void bta_hh_write_dev_act(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data)
-{
- tBTA_HH_CBDATA cbdata = {BTA_HH_OK, 0};
- uint16_t event = (p_data->api_sndcmd.t_type - BTA_HH_FST_BTE_TRANS_EVT) +
- BTA_HH_FST_TRANS_CB_EVT;
+void bta_hh_write_dev_act(tBTA_HH_DEV_CB* p_cb, tBTA_HH_DATA* p_data) {
+ tBTA_HH_CBDATA cbdata = {BTA_HH_OK, 0};
+ uint16_t event = (p_data->api_sndcmd.t_type - BTA_HH_FST_BTE_TRANS_EVT) +
+ BTA_HH_FST_TRANS_CB_EVT;
#if (BTA_HH_LE_INCLUDED == TRUE)
- if (p_cb->is_le_device)
- bta_hh_le_write_dev_act(p_cb, p_data);
- else
+ if (p_cb->is_le_device)
+ bta_hh_le_write_dev_act(p_cb, p_data);
+ else
#endif
- {
+ {
cbdata.handle = p_cb->hid_handle;
/* match up BTE/BTA report/boot mode def */
- if (p_data->api_sndcmd.t_type == HID_TRANS_SET_PROTOCOL)
- {
- p_data->api_sndcmd.param = ( p_data->api_sndcmd.param == BTA_HH_PROTO_RPT_MODE) ?\
- HID_PAR_PROTOCOL_REPORT :HID_PAR_PROTOCOL_BOOT_MODE;
+ if (p_data->api_sndcmd.t_type == HID_TRANS_SET_PROTOCOL) {
+ p_data->api_sndcmd.param =
+ (p_data->api_sndcmd.param == BTA_HH_PROTO_RPT_MODE)
+ ? HID_PAR_PROTOCOL_REPORT
+ : HID_PAR_PROTOCOL_BOOT_MODE;
}
- if (HID_HostWriteDev (p_cb->hid_handle,
- p_data->api_sndcmd.t_type,
- p_data->api_sndcmd.param,
- p_data->api_sndcmd.data,
- p_data->api_sndcmd.rpt_id,
- p_data->api_sndcmd.p_data) != HID_SUCCESS)
- {
- APPL_TRACE_ERROR("HID_HostWriteDev Error ");
- cbdata.status = BTA_HH_ERR;
+ if (HID_HostWriteDev(p_cb->hid_handle, p_data->api_sndcmd.t_type,
+ p_data->api_sndcmd.param, p_data->api_sndcmd.data,
+ p_data->api_sndcmd.rpt_id,
+ p_data->api_sndcmd.p_data) != HID_SUCCESS) {
+ APPL_TRACE_ERROR("HID_HostWriteDev Error ");
+ cbdata.status = BTA_HH_ERR;
- if (p_data->api_sndcmd.t_type != HID_TRANS_CONTROL &&
- p_data->api_sndcmd.t_type != HID_TRANS_DATA)
- (* bta_hh_cb.p_cback)(event, (tBTA_HH *)&cbdata);
- else if (p_data->api_sndcmd.param == BTA_HH_CTRL_VIRTUAL_CABLE_UNPLUG)
- (* bta_hh_cb.p_cback)(BTA_HH_VC_UNPLUG_EVT, (tBTA_HH *)&cbdata);
- }
- else
- {
-
- switch(p_data->api_sndcmd.t_type)
- {
+ if (p_data->api_sndcmd.t_type != HID_TRANS_CONTROL &&
+ p_data->api_sndcmd.t_type != HID_TRANS_DATA)
+ (*bta_hh_cb.p_cback)(event, (tBTA_HH*)&cbdata);
+ else if (p_data->api_sndcmd.param == BTA_HH_CTRL_VIRTUAL_CABLE_UNPLUG)
+ (*bta_hh_cb.p_cback)(BTA_HH_VC_UNPLUG_EVT, (tBTA_HH*)&cbdata);
+ } else {
+ switch (p_data->api_sndcmd.t_type) {
case HID_TRANS_SET_PROTOCOL:
- /* fall through */
+ /* fall through */
case HID_TRANS_GET_REPORT:
- /* fall through */
+ /* fall through */
case HID_TRANS_SET_REPORT:
- /* fall through */
+ /* fall through */
case HID_TRANS_GET_PROTOCOL:
- /* fall through */
+ /* fall through */
case HID_TRANS_GET_IDLE:
- /* fall through */
- case HID_TRANS_SET_IDLE:/* set w4_handsk event name for callback function use */
- p_cb->w4_evt = event;
- break;
- case HID_TRANS_DATA: /* output report */
- /* fall through */
+ /* fall through */
+ case HID_TRANS_SET_IDLE: /* set w4_handsk event name for callback
+ function use */
+ p_cb->w4_evt = event;
+ break;
+ case HID_TRANS_DATA: /* output report */
+ /* fall through */
case HID_TRANS_CONTROL:
- /* no handshake event will be generated */
- /* if VC_UNPLUG is issued, set flag */
- if (p_data->api_sndcmd.param == BTA_HH_CTRL_VIRTUAL_CABLE_UNPLUG)
- p_cb->vp = true;
+ /* no handshake event will be generated */
+ /* if VC_UNPLUG is issued, set flag */
+ if (p_data->api_sndcmd.param == BTA_HH_CTRL_VIRTUAL_CABLE_UNPLUG)
+ p_cb->vp = true;
- break;
+ break;
/* currently not expected */
case HID_TRANS_DATAC:
default:
- APPL_TRACE_DEBUG("bta_hh_write_dev_act:: cmd type = %d",
- p_data->api_sndcmd.t_type);
- break;
- }
+ APPL_TRACE_DEBUG("bta_hh_write_dev_act:: cmd type = %d",
+ p_data->api_sndcmd.t_type);
+ break;
+ }
- /* if not control type transaction, notify PM for energy control */
- if (p_data->api_sndcmd.t_type != HID_TRANS_CONTROL)
- {
- /* inform PM for mode change */
- bta_sys_busy(BTA_ID_HH, p_cb->app_id, p_cb->addr);
- bta_sys_idle(BTA_ID_HH, p_cb->app_id, p_cb->addr);
- }
- else if (p_data->api_sndcmd.param == BTA_HH_CTRL_SUSPEND)
- {
- bta_sys_sco_close(BTA_ID_HH, p_cb->app_id, p_cb->addr);
- }
- else if (p_data->api_sndcmd.param == BTA_HH_CTRL_EXIT_SUSPEND)
- {
- bta_sys_busy(BTA_ID_HH, p_cb->app_id, p_cb->addr);
- }
+ /* if not control type transaction, notify PM for energy control */
+ if (p_data->api_sndcmd.t_type != HID_TRANS_CONTROL) {
+ /* inform PM for mode change */
+ bta_sys_busy(BTA_ID_HH, p_cb->app_id, p_cb->addr);
+ bta_sys_idle(BTA_ID_HH, p_cb->app_id, p_cb->addr);
+ } else if (p_data->api_sndcmd.param == BTA_HH_CTRL_SUSPEND) {
+ bta_sys_sco_close(BTA_ID_HH, p_cb->app_id, p_cb->addr);
+ } else if (p_data->api_sndcmd.param == BTA_HH_CTRL_EXIT_SUSPEND) {
+ bta_sys_busy(BTA_ID_HH, p_cb->app_id, p_cb->addr);
+ }
}
-
- }
- return;
+ }
+ return;
}
/*****************************************************************************
@@ -1193,64 +1096,60 @@
* Returns void
*
******************************************************************************/
-static void bta_hh_cback (uint8_t dev_handle, BD_ADDR addr, uint8_t event,
- uint32_t data, BT_HDR *pdata)
-{
- uint16_t sm_event = BTA_HH_INVALID_EVT;
- uint8_t xx = 0;
+static void bta_hh_cback(uint8_t dev_handle, BD_ADDR addr, uint8_t event,
+ uint32_t data, BT_HDR* pdata) {
+ uint16_t sm_event = BTA_HH_INVALID_EVT;
+ uint8_t xx = 0;
#if (BTA_HH_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hh_cback::HID_event [%s]", bta_hh_hid_event_name(event));
+ APPL_TRACE_DEBUG("bta_hh_cback::HID_event [%s]",
+ bta_hh_hid_event_name(event));
#endif
- switch (event)
- {
+ switch (event) {
case HID_HDEV_EVT_OPEN:
- sm_event = BTA_HH_INT_OPEN_EVT;
- break;
+ sm_event = BTA_HH_INT_OPEN_EVT;
+ break;
case HID_HDEV_EVT_CLOSE:
- sm_event = BTA_HH_INT_CLOSE_EVT;
- break;
+ sm_event = BTA_HH_INT_CLOSE_EVT;
+ break;
case HID_HDEV_EVT_INTR_DATA:
- sm_event = BTA_HH_INT_DATA_EVT;
- break;
+ sm_event = BTA_HH_INT_DATA_EVT;
+ break;
case HID_HDEV_EVT_HANDSHAKE:
- sm_event = BTA_HH_INT_HANDSK_EVT;
- break;
+ sm_event = BTA_HH_INT_HANDSK_EVT;
+ break;
case HID_HDEV_EVT_CTRL_DATA:
- sm_event = BTA_HH_INT_CTRL_DATA;
- break;
+ sm_event = BTA_HH_INT_CTRL_DATA;
+ break;
case HID_HDEV_EVT_RETRYING:
- break;
+ break;
case HID_HDEV_EVT_INTR_DATC:
case HID_HDEV_EVT_CTRL_DATC:
- /* Unhandled events: Free buffer for DATAC */
- osi_free_and_reset((void **)&pdata);
- break;
+ /* Unhandled events: Free buffer for DATAC */
+ osi_free_and_reset((void**)&pdata);
+ break;
case HID_HDEV_EVT_VC_UNPLUG:
- for (xx = 0; xx < BTA_HH_MAX_DEVICE; xx++)
- {
- if (bta_hh_cb.kdev[xx].hid_handle == dev_handle)
- {
- bta_hh_cb.kdev[xx].vp = true;
- break;
- }
+ for (xx = 0; xx < BTA_HH_MAX_DEVICE; xx++) {
+ if (bta_hh_cb.kdev[xx].hid_handle == dev_handle) {
+ bta_hh_cb.kdev[xx].vp = true;
+ break;
}
- break;
- }
+ }
+ break;
+ }
- if (sm_event != BTA_HH_INVALID_EVT) {
- tBTA_HH_CBACK_DATA *p_buf =
- (tBTA_HH_CBACK_DATA *)osi_malloc(sizeof(tBTA_HH_CBACK_DATA) +
- sizeof(BT_HDR));
- p_buf->hdr.event = sm_event;
- p_buf->hdr.layer_specific = (uint16_t)dev_handle;
- p_buf->data = data;
- bdcpy(p_buf->addr, addr);
- p_buf->p_data = pdata;
+ if (sm_event != BTA_HH_INVALID_EVT) {
+ tBTA_HH_CBACK_DATA* p_buf = (tBTA_HH_CBACK_DATA*)osi_malloc(
+ sizeof(tBTA_HH_CBACK_DATA) + sizeof(BT_HDR));
+ p_buf->hdr.event = sm_event;
+ p_buf->hdr.layer_specific = (uint16_t)dev_handle;
+ p_buf->data = data;
+ bdcpy(p_buf->addr, addr);
+ p_buf->p_data = pdata;
- bta_sys_sendmsg(p_buf);
- }
+ bta_sys_sendmsg(p_buf);
+ }
}
/*******************************************************************************
@@ -1261,79 +1160,71 @@
* status code
*
******************************************************************************/
-static tBTA_HH_STATUS bta_hh_get_trans_status(uint32_t result)
-{
- switch(result)
- {
- case HID_PAR_HANDSHAKE_RSP_SUCCESS : /* (0) */
- return BTA_HH_OK;
- case HID_PAR_HANDSHAKE_RSP_NOT_READY : /* (1) */
- case HID_PAR_HANDSHAKE_RSP_ERR_INVALID_REP_ID: /* (2) */
- case HID_PAR_HANDSHAKE_RSP_ERR_UNSUPPORTED_REQ : /* (3) */
- case HID_PAR_HANDSHAKE_RSP_ERR_INVALID_PARAM : /* (4) */
- return (tBTA_HH_STATUS)result;
- case HID_PAR_HANDSHAKE_RSP_ERR_UNKNOWN : /* (14) */
- case HID_PAR_HANDSHAKE_RSP_ERR_FATAL : /* (15) */
+static tBTA_HH_STATUS bta_hh_get_trans_status(uint32_t result) {
+ switch (result) {
+ case HID_PAR_HANDSHAKE_RSP_SUCCESS: /* (0) */
+ return BTA_HH_OK;
+ case HID_PAR_HANDSHAKE_RSP_NOT_READY: /* (1) */
+ case HID_PAR_HANDSHAKE_RSP_ERR_INVALID_REP_ID: /* (2) */
+ case HID_PAR_HANDSHAKE_RSP_ERR_UNSUPPORTED_REQ: /* (3) */
+ case HID_PAR_HANDSHAKE_RSP_ERR_INVALID_PARAM: /* (4) */
+ return (tBTA_HH_STATUS)result;
+ case HID_PAR_HANDSHAKE_RSP_ERR_UNKNOWN: /* (14) */
+ case HID_PAR_HANDSHAKE_RSP_ERR_FATAL: /* (15) */
default:
- return BTA_HH_HS_ERROR;
- break;
- }
+ return BTA_HH_HS_ERROR;
+ break;
+ }
}
/*****************************************************************************
* Debug Functions
****************************************************************************/
#if (BTA_HH_DEBUG == TRUE)
-static const char* bta_hh_get_w4_event(uint16_t event)
-{
- switch (event)
- {
+static const char* bta_hh_get_w4_event(uint16_t event) {
+ switch (event) {
case BTA_HH_GET_RPT_EVT:
- return "BTA_HH_GET_RPT_EVT";
+ return "BTA_HH_GET_RPT_EVT";
case BTA_HH_SET_RPT_EVT:
- return "BTA_HH_SET_RPT_EVT";
+ return "BTA_HH_SET_RPT_EVT";
case BTA_HH_GET_PROTO_EVT:
- return "BTA_HH_GET_PROTO_EVT";
+ return "BTA_HH_GET_PROTO_EVT";
case BTA_HH_SET_PROTO_EVT:
- return "BTA_HH_SET_PROTO_EVT";
+ return "BTA_HH_SET_PROTO_EVT";
case BTA_HH_GET_IDLE_EVT:
- return "BTA_HH_GET_IDLE_EVT";
+ return "BTA_HH_GET_IDLE_EVT";
case BTA_HH_SET_IDLE_EVT:
- return "BTA_HH_SET_IDLE_EVT";
+ return "BTA_HH_SET_IDLE_EVT";
case BTA_HH_OPEN_EVT:
- return "BTA_HH_OPEN_EVT";
+ return "BTA_HH_OPEN_EVT";
default:
- return "Unknown event";
- }
-
+ return "Unknown event";
+ }
}
-static const char * bta_hh_hid_event_name(uint16_t event)
-{
- switch (event)
- {
+static const char* bta_hh_hid_event_name(uint16_t event) {
+ switch (event) {
case HID_HDEV_EVT_OPEN:
- return "HID_HDEV_EVT_OPEN";
+ return "HID_HDEV_EVT_OPEN";
case HID_HDEV_EVT_CLOSE:
- return "HID_HDEV_EVT_CLOSE";
+ return "HID_HDEV_EVT_CLOSE";
case HID_HDEV_EVT_RETRYING:
- return "HID_HDEV_EVT_RETRYING";
+ return "HID_HDEV_EVT_RETRYING";
case HID_HDEV_EVT_INTR_DATA:
- return "HID_HDEV_EVT_INTR_DATA";
+ return "HID_HDEV_EVT_INTR_DATA";
case HID_HDEV_EVT_INTR_DATC:
- return "HID_HDEV_EVT_INTR_DATC";
+ return "HID_HDEV_EVT_INTR_DATC";
case HID_HDEV_EVT_CTRL_DATA:
- return "HID_HDEV_EVT_CTRL_DATA";
+ return "HID_HDEV_EVT_CTRL_DATA";
case HID_HDEV_EVT_CTRL_DATC:
- return "HID_HDEV_EVT_CTRL_DATC";
+ return "HID_HDEV_EVT_CTRL_DATC";
case HID_HDEV_EVT_HANDSHAKE:
- return "HID_HDEV_EVT_HANDSHAKE";
+ return "HID_HDEV_EVT_HANDSHAKE";
case HID_HDEV_EVT_VC_UNPLUG:
- return "HID_HDEV_EVT_VC_UNPLUG";
+ return "HID_HDEV_EVT_VC_UNPLUG";
default:
- return "Unknown HID event";
- }
+ return "Unknown HID event";
+ }
}
#endif
#endif /* BTA_HH_INCLUDED */
-
diff --git a/bta/hh/bta_hh_api.cc b/bta/hh/bta_hh_api.cc
index a4c5f34..1aa32b4 100644
--- a/bta/hh/bta_hh_api.cc
+++ b/bta/hh/bta_hh_api.cc
@@ -44,11 +44,7 @@
* Constants
****************************************************************************/
-static const tBTA_SYS_REG bta_hh_reg =
-{
- bta_hh_hdl_event,
- BTA_HhDisable
-};
+static const tBTA_SYS_REG bta_hh_reg = {bta_hh_hdl_event, BTA_HhDisable};
/*******************************************************************************
*
@@ -63,22 +59,20 @@
* Returns void
*
******************************************************************************/
-void BTA_HhEnable(tBTA_SEC sec_mask, tBTA_HH_CBACK *p_cback)
-{
- tBTA_HH_API_ENABLE *p_buf =
- (tBTA_HH_API_ENABLE *)osi_calloc(sizeof(tBTA_HH_API_ENABLE));
+void BTA_HhEnable(tBTA_SEC sec_mask, tBTA_HH_CBACK* p_cback) {
+ tBTA_HH_API_ENABLE* p_buf =
+ (tBTA_HH_API_ENABLE*)osi_calloc(sizeof(tBTA_HH_API_ENABLE));
- LOG_INFO(LOG_TAG, "%s sec_mask:0x%x p_cback:%p", __func__, sec_mask,
- p_cback);
+ LOG_INFO(LOG_TAG, "%s sec_mask:0x%x p_cback:%p", __func__, sec_mask, p_cback);
- /* register with BTA system manager */
- bta_sys_register(BTA_ID_HH, &bta_hh_reg);
+ /* register with BTA system manager */
+ bta_sys_register(BTA_ID_HH, &bta_hh_reg);
- p_buf->hdr.event = BTA_HH_API_ENABLE_EVT;
- p_buf->p_cback = p_cback;
- p_buf->sec_mask = sec_mask;
+ p_buf->hdr.event = BTA_HH_API_ENABLE_EVT;
+ p_buf->p_cback = p_cback;
+ p_buf->sec_mask = sec_mask;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -91,14 +85,13 @@
* Returns void
*
******************************************************************************/
-void BTA_HhDisable(void)
-{
- BT_HDR *p_buf = (BT_HDR *)osi_malloc(sizeof(BT_HDR));
+void BTA_HhDisable(void) {
+ BT_HDR* p_buf = (BT_HDR*)osi_malloc(sizeof(BT_HDR));
- bta_sys_deregister(BTA_ID_HH);
- p_buf->event = BTA_HH_API_DISABLE_EVT;
+ bta_sys_deregister(BTA_ID_HH);
+ p_buf->event = BTA_HH_API_DISABLE_EVT;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -110,14 +103,13 @@
* Returns void
*
******************************************************************************/
-void BTA_HhClose(uint8_t dev_handle)
-{
- BT_HDR *p_buf = (BT_HDR *)osi_calloc(sizeof(BT_HDR));
+void BTA_HhClose(uint8_t dev_handle) {
+ BT_HDR* p_buf = (BT_HDR*)osi_calloc(sizeof(BT_HDR));
- p_buf->event = BTA_HH_API_CLOSE_EVT;
- p_buf->layer_specific = (uint16_t)dev_handle;
+ p_buf->event = BTA_HH_API_CLOSE_EVT;
+ p_buf->layer_specific = (uint16_t)dev_handle;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -130,18 +122,17 @@
* Returns void
*
******************************************************************************/
-void BTA_HhOpen(BD_ADDR dev_bda, tBTA_HH_PROTO_MODE mode, tBTA_SEC sec_mask)
-{
- tBTA_HH_API_CONN *p_buf =
- (tBTA_HH_API_CONN *)osi_calloc(sizeof(tBTA_HH_API_CONN));
+void BTA_HhOpen(BD_ADDR dev_bda, tBTA_HH_PROTO_MODE mode, tBTA_SEC sec_mask) {
+ tBTA_HH_API_CONN* p_buf =
+ (tBTA_HH_API_CONN*)osi_calloc(sizeof(tBTA_HH_API_CONN));
- p_buf->hdr.event = BTA_HH_API_OPEN_EVT;
- p_buf->hdr.layer_specific = BTA_HH_INVALID_HANDLE;
- p_buf->sec_mask = sec_mask;
- p_buf->mode = mode;
- bdcpy(p_buf->bd_addr, dev_bda);
+ p_buf->hdr.event = BTA_HH_API_OPEN_EVT;
+ p_buf->hdr.layer_specific = BTA_HH_INVALID_HANDLE;
+ p_buf->sec_mask = sec_mask;
+ p_buf->mode = mode;
+ bdcpy(p_buf->bd_addr, dev_bda);
- bta_sys_sendmsg((void *)p_buf);
+ bta_sys_sendmsg((void*)p_buf);
}
/*******************************************************************************
@@ -149,21 +140,21 @@
* Function bta_hh_snd_write_dev
*
******************************************************************************/
-static void bta_hh_snd_write_dev(uint8_t dev_handle, uint8_t t_type, uint8_t param,
- uint16_t data, uint8_t rpt_id, BT_HDR *p_data)
-{
- tBTA_HH_CMD_DATA *p_buf =
- (tBTA_HH_CMD_DATA *)osi_calloc(sizeof(tBTA_HH_CMD_DATA));
+static void bta_hh_snd_write_dev(uint8_t dev_handle, uint8_t t_type,
+ uint8_t param, uint16_t data, uint8_t rpt_id,
+ BT_HDR* p_data) {
+ tBTA_HH_CMD_DATA* p_buf =
+ (tBTA_HH_CMD_DATA*)osi_calloc(sizeof(tBTA_HH_CMD_DATA));
- p_buf->hdr.event = BTA_HH_API_WRITE_DEV_EVT;
- p_buf->hdr.layer_specific = (uint16_t)dev_handle;
- p_buf->t_type = t_type;
- p_buf->data = data;
- p_buf->param = param;
- p_buf->p_data = p_data;
- p_buf->rpt_id = rpt_id;
+ p_buf->hdr.event = BTA_HH_API_WRITE_DEV_EVT;
+ p_buf->hdr.layer_specific = (uint16_t)dev_handle;
+ p_buf->t_type = t_type;
+ p_buf->data = data;
+ p_buf->param = param;
+ p_buf->p_data = p_data;
+ p_buf->rpt_id = rpt_id;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -178,9 +169,9 @@
* Returns void
*
******************************************************************************/
-void BTA_HhSetReport(uint8_t dev_handle, tBTA_HH_RPT_TYPE r_type, BT_HDR *p_data)
-{
- bta_hh_snd_write_dev(dev_handle, HID_TRANS_SET_REPORT, r_type, 0, 0, p_data);
+void BTA_HhSetReport(uint8_t dev_handle, tBTA_HH_RPT_TYPE r_type,
+ BT_HDR* p_data) {
+ bta_hh_snd_write_dev(dev_handle, HID_TRANS_SET_REPORT, r_type, 0, 0, p_data);
}
/*******************************************************************************
*
@@ -191,12 +182,12 @@
* Returns void
*
******************************************************************************/
-void BTA_HhGetReport(uint8_t dev_handle, tBTA_HH_RPT_TYPE r_type, uint8_t rpt_id, uint16_t buf_size)
-{
- uint8_t param = (buf_size) ? (r_type | 0x08) : r_type;
+void BTA_HhGetReport(uint8_t dev_handle, tBTA_HH_RPT_TYPE r_type,
+ uint8_t rpt_id, uint16_t buf_size) {
+ uint8_t param = (buf_size) ? (r_type | 0x08) : r_type;
- bta_hh_snd_write_dev(dev_handle, HID_TRANS_GET_REPORT, param,
- buf_size, rpt_id, NULL);
+ bta_hh_snd_write_dev(dev_handle, HID_TRANS_GET_REPORT, param, buf_size,
+ rpt_id, NULL);
}
/*******************************************************************************
*
@@ -207,10 +198,9 @@
* Returns void
*
******************************************************************************/
-void BTA_HhSetProtoMode(uint8_t dev_handle, tBTA_HH_PROTO_MODE p_type)
-{
- bta_hh_snd_write_dev(dev_handle, HID_TRANS_SET_PROTOCOL, (uint8_t)p_type,
- 0, 0, NULL);
+void BTA_HhSetProtoMode(uint8_t dev_handle, tBTA_HH_PROTO_MODE p_type) {
+ bta_hh_snd_write_dev(dev_handle, HID_TRANS_SET_PROTOCOL, (uint8_t)p_type, 0,
+ 0, NULL);
}
/*******************************************************************************
*
@@ -221,9 +211,8 @@
* Returns void
*
******************************************************************************/
-void BTA_HhGetProtoMode(uint8_t dev_handle)
-{
- bta_hh_snd_write_dev(dev_handle, HID_TRANS_GET_PROTOCOL, 0, 0, 0, NULL);
+void BTA_HhGetProtoMode(uint8_t dev_handle) {
+ bta_hh_snd_write_dev(dev_handle, HID_TRANS_GET_PROTOCOL, 0, 0, 0, NULL);
}
/*******************************************************************************
*
@@ -234,9 +223,8 @@
* Returns void
*
******************************************************************************/
-void BTA_HhSetIdle(uint8_t dev_handle, uint16_t idle_rate)
-{
- bta_hh_snd_write_dev(dev_handle, HID_TRANS_SET_IDLE, 0, idle_rate, 0, NULL);
+void BTA_HhSetIdle(uint8_t dev_handle, uint16_t idle_rate) {
+ bta_hh_snd_write_dev(dev_handle, HID_TRANS_SET_IDLE, 0, idle_rate, 0, NULL);
}
/*******************************************************************************
@@ -248,9 +236,8 @@
* Returns void
*
******************************************************************************/
-void BTA_HhGetIdle(uint8_t dev_handle)
-{
- bta_hh_snd_write_dev(dev_handle, HID_TRANS_GET_IDLE, 0, 0, 0, NULL);
+void BTA_HhGetIdle(uint8_t dev_handle) {
+ bta_hh_snd_write_dev(dev_handle, HID_TRANS_GET_IDLE, 0, 0, 0, NULL);
}
/*******************************************************************************
*
@@ -261,9 +248,9 @@
* Returns void
*
******************************************************************************/
-void BTA_HhSendCtrl(uint8_t dev_handle, tBTA_HH_TRANS_CTRL_TYPE c_type)
-{
- bta_hh_snd_write_dev(dev_handle, HID_TRANS_CONTROL, (uint8_t)c_type, 0, 0, NULL);
+void BTA_HhSendCtrl(uint8_t dev_handle, tBTA_HH_TRANS_CTRL_TYPE c_type) {
+ bta_hh_snd_write_dev(dev_handle, HID_TRANS_CONTROL, (uint8_t)c_type, 0, 0,
+ NULL);
}
/*******************************************************************************
*
@@ -274,26 +261,31 @@
* Parameter dev_handle: device handle
* dev_bda: remote device address
* p_data: data to be sent in the DATA transaction; or
- * the data to be write into the Output Report of a LE HID
- * device. The report is identified the report ID which is
- * the value of the byte (uint8_t *)(p_buf + 1) + p_buf->offset.
- * p_data->layer_specific needs to be set to the report type,
+ * the data to be write into the Output Report of a LE
+ *HID
+ * device. The report is identified the report ID which
+ *is
+ * the value of the byte (uint8_t *)(p_buf + 1) +
+ *p_buf->offset.
+ * p_data->layer_specific needs to be set to the report
+ *type,
* it can be OUTPUT report, or FEATURE report.
*
* Returns void
*
******************************************************************************/
-void BTA_HhSendData(uint8_t dev_handle,
- UNUSED_ATTR BD_ADDR dev_bda, BT_HDR *p_data)
-{
+void BTA_HhSendData(uint8_t dev_handle, UNUSED_ATTR BD_ADDR dev_bda,
+ BT_HDR* p_data) {
#if (BTA_HH_LE_INCLUDED == TRUE)
- if (p_data->layer_specific != BTA_HH_RPTT_OUTPUT)
- {
- APPL_TRACE_ERROR("ERROR! Wrong report type! Write Command only valid for output report!");
- return;
- }
+ if (p_data->layer_specific != BTA_HH_RPTT_OUTPUT) {
+ APPL_TRACE_ERROR(
+ "ERROR! Wrong report type! Write Command only valid for output "
+ "report!");
+ return;
+ }
#endif
- bta_hh_snd_write_dev(dev_handle, HID_TRANS_DATA, (uint8_t)p_data->layer_specific, 0, 0, p_data);
+ bta_hh_snd_write_dev(dev_handle, HID_TRANS_DATA,
+ (uint8_t)p_data->layer_specific, 0, 0, p_data);
}
/*******************************************************************************
@@ -305,14 +297,13 @@
* Returns void
*
******************************************************************************/
-void BTA_HhGetDscpInfo(uint8_t dev_handle)
-{
- BT_HDR *p_buf = (BT_HDR *)osi_calloc(sizeof(BT_HDR));
+void BTA_HhGetDscpInfo(uint8_t dev_handle) {
+ BT_HDR* p_buf = (BT_HDR*)osi_calloc(sizeof(BT_HDR));
- p_buf->event = BTA_HH_API_GET_DSCP_EVT;
- p_buf->layer_specific = (uint16_t)dev_handle;
+ p_buf->event = BTA_HH_API_GET_DSCP_EVT;
+ p_buf->layer_specific = (uint16_t)dev_handle;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -328,33 +319,31 @@
*
******************************************************************************/
void BTA_HhAddDev(BD_ADDR bda, tBTA_HH_ATTR_MASK attr_mask, uint8_t sub_class,
- uint8_t app_id, tBTA_HH_DEV_DSCP_INFO dscp_info)
-{
- size_t len = sizeof(tBTA_HH_MAINT_DEV) + dscp_info.descriptor.dl_len;
- tBTA_HH_MAINT_DEV *p_buf = (tBTA_HH_MAINT_DEV *)osi_calloc(len);
+ uint8_t app_id, tBTA_HH_DEV_DSCP_INFO dscp_info) {
+ size_t len = sizeof(tBTA_HH_MAINT_DEV) + dscp_info.descriptor.dl_len;
+ tBTA_HH_MAINT_DEV* p_buf = (tBTA_HH_MAINT_DEV*)osi_calloc(len);
- p_buf->hdr.event = BTA_HH_API_MAINT_DEV_EVT;
- p_buf->sub_event = BTA_HH_ADD_DEV_EVT;
- p_buf->hdr.layer_specific = BTA_HH_INVALID_HANDLE;
+ p_buf->hdr.event = BTA_HH_API_MAINT_DEV_EVT;
+ p_buf->sub_event = BTA_HH_ADD_DEV_EVT;
+ p_buf->hdr.layer_specific = BTA_HH_INVALID_HANDLE;
- p_buf->attr_mask = (uint16_t) attr_mask;
- p_buf->sub_class = sub_class;
- p_buf->app_id = app_id;
- bdcpy(p_buf->bda, bda);
+ p_buf->attr_mask = (uint16_t)attr_mask;
+ p_buf->sub_class = sub_class;
+ p_buf->app_id = app_id;
+ bdcpy(p_buf->bda, bda);
- memcpy(&p_buf->dscp_info, &dscp_info, sizeof(tBTA_HH_DEV_DSCP_INFO));
- if ( dscp_info.descriptor.dl_len != 0 && dscp_info.descriptor.dsc_list) {
- p_buf->dscp_info.descriptor.dl_len = dscp_info.descriptor.dl_len;
- p_buf->dscp_info.descriptor.dsc_list = (uint8_t *)(p_buf + 1);
- memcpy(p_buf->dscp_info.descriptor.dsc_list,
- dscp_info.descriptor.dsc_list,
- dscp_info.descriptor.dl_len);
- } else {
- p_buf->dscp_info.descriptor.dsc_list = NULL;
- p_buf->dscp_info.descriptor.dl_len = 0;
- }
+ memcpy(&p_buf->dscp_info, &dscp_info, sizeof(tBTA_HH_DEV_DSCP_INFO));
+ if (dscp_info.descriptor.dl_len != 0 && dscp_info.descriptor.dsc_list) {
+ p_buf->dscp_info.descriptor.dl_len = dscp_info.descriptor.dl_len;
+ p_buf->dscp_info.descriptor.dsc_list = (uint8_t*)(p_buf + 1);
+ memcpy(p_buf->dscp_info.descriptor.dsc_list, dscp_info.descriptor.dsc_list,
+ dscp_info.descriptor.dl_len);
+ } else {
+ p_buf->dscp_info.descriptor.dsc_list = NULL;
+ p_buf->dscp_info.descriptor.dl_len = 0;
+ }
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -366,22 +355,19 @@
* Returns void
*
******************************************************************************/
-void BTA_HhRemoveDev(uint8_t dev_handle )
-{
- tBTA_HH_MAINT_DEV *p_buf =
- (tBTA_HH_MAINT_DEV *)osi_calloc(sizeof(tBTA_HH_MAINT_DEV));
+void BTA_HhRemoveDev(uint8_t dev_handle) {
+ tBTA_HH_MAINT_DEV* p_buf =
+ (tBTA_HH_MAINT_DEV*)osi_calloc(sizeof(tBTA_HH_MAINT_DEV));
- p_buf->hdr.event = BTA_HH_API_MAINT_DEV_EVT;
- p_buf->sub_event = BTA_HH_RMV_DEV_EVT;
- p_buf->hdr.layer_specific = (uint16_t)dev_handle;
+ p_buf->hdr.event = BTA_HH_API_MAINT_DEV_EVT;
+ p_buf->sub_event = BTA_HH_RMV_DEV_EVT;
+ p_buf->hdr.layer_specific = (uint16_t)dev_handle;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
-
-
/*******************************************************************************/
-/* Utility Function */
+/* Utility Function */
/*******************************************************************************/
/*******************************************************************************
@@ -397,33 +383,32 @@
* Returns void
*
******************************************************************************/
-void BTA_HhParseBootRpt(tBTA_HH_BOOT_RPT *p_data, uint8_t *p_report,
- uint16_t report_len)
-{
- p_data->dev_type = BTA_HH_DEVT_UNKNOWN;
+void BTA_HhParseBootRpt(tBTA_HH_BOOT_RPT* p_data, uint8_t* p_report,
+ uint16_t report_len) {
+ p_data->dev_type = BTA_HH_DEVT_UNKNOWN;
- if (p_report)
- {
- /* first byte is report ID */
- switch (p_report[0])
- {
- case BTA_HH_KEYBD_RPT_ID: /* key board report ID */
- p_data->dev_type = p_report[0];
- bta_hh_parse_keybd_rpt(p_data, p_report + 1, (uint16_t)(report_len -1));
- break;
+ if (p_report) {
+ /* first byte is report ID */
+ switch (p_report[0]) {
+ case BTA_HH_KEYBD_RPT_ID: /* key board report ID */
+ p_data->dev_type = p_report[0];
+ bta_hh_parse_keybd_rpt(p_data, p_report + 1,
+ (uint16_t)(report_len - 1));
+ break;
- case BTA_HH_MOUSE_RPT_ID: /* mouse report ID */
- p_data->dev_type = p_report[0];
- bta_hh_parse_mice_rpt(p_data, p_report + 1, (uint16_t)(report_len - 1));
- break;
+ case BTA_HH_MOUSE_RPT_ID: /* mouse report ID */
+ p_data->dev_type = p_report[0];
+ bta_hh_parse_mice_rpt(p_data, p_report + 1, (uint16_t)(report_len - 1));
+ break;
- default:
- APPL_TRACE_DEBUG("Unknown boot report: %d", p_report[0]);;
- break;
- }
+ default:
+ APPL_TRACE_DEBUG("Unknown boot report: %d", p_report[0]);
+ ;
+ break;
}
+ }
- return;
+ return;
}
#endif /* BTA_HH_INCLUDED */
diff --git a/bta/hh/bta_hh_cfg.cc b/bta/hh/bta_hh_cfg.cc
index ae4650f..9479e8b 100644
--- a/bta/hh/bta_hh_cfg.cc
+++ b/bta/hh/bta_hh_cfg.cc
@@ -27,36 +27,29 @@
#include "bta_hh_api.h"
/* max number of device types supported by BTA */
-#define BTA_HH_MAX_DEVT_SPT 9
+#define BTA_HH_MAX_DEVT_SPT 9
/* size of database for service discovery */
#ifndef BTA_HH_DISC_BUF_SIZE
-#define BTA_HH_DISC_BUF_SIZE BT_DEFAULT_BUFFER_SIZE
+#define BTA_HH_DISC_BUF_SIZE BT_DEFAULT_BUFFER_SIZE
#endif
-
-
/* The type of devices supported by BTA HH and corresponding application ID */
-tBTA_HH_SPT_TOD p_devt_list[BTA_HH_MAX_DEVT_SPT] =
-{
+tBTA_HH_SPT_TOD p_devt_list[BTA_HH_MAX_DEVT_SPT] = {
{BTA_HH_DEVT_MIC, BTA_HH_APP_ID_MI},
{BTA_HH_DEVT_KBD, BTA_HH_APP_ID_KB},
- {BTA_HH_DEVT_KBD|BTA_HH_DEVT_MIC, BTA_HH_APP_ID_KB},
+ {BTA_HH_DEVT_KBD | BTA_HH_DEVT_MIC, BTA_HH_APP_ID_KB},
{BTA_HH_DEVT_RMC, BTA_HH_APP_ID_RMC},
{BTA_HH_DEVT_RMC | BTA_HH_DEVT_KBD, BTA_HH_APP_ID_RMC},
{BTA_HH_DEVT_MIC | BTA_HH_DEVT_DGT, BTA_HH_APP_ID_MI},
{BTA_HH_DEVT_JOS, BTA_HH_APP_ID_JOY},
{BTA_HH_DEVT_GPD, BTA_HH_APP_ID_GPAD},
- {BTA_HH_DEVT_UNKNOWN, BTA_HH_APP_ID_3DSG}
+ {BTA_HH_DEVT_UNKNOWN, BTA_HH_APP_ID_3DSG}};
+
+const tBTA_HH_CFG bta_hh_cfg = {
+ BTA_HH_MAX_DEVT_SPT, /* number of supported type of devices */
+ p_devt_list, /* ToD & AppID list */
+ BTA_HH_DISC_BUF_SIZE /* HH SDP discovery database size */
};
-
-const tBTA_HH_CFG bta_hh_cfg =
-{
- BTA_HH_MAX_DEVT_SPT, /* number of supported type of devices */
- p_devt_list, /* ToD & AppID list */
- BTA_HH_DISC_BUF_SIZE /* HH SDP discovery database size */
-};
-
-
-tBTA_HH_CFG *p_bta_hh_cfg = (tBTA_HH_CFG *)&bta_hh_cfg;
+tBTA_HH_CFG* p_bta_hh_cfg = (tBTA_HH_CFG*)&bta_hh_cfg;
diff --git a/bta/hh/bta_hh_int.h b/bta/hh/bta_hh_int.h
index 5f9da6e..0edbf60 100644
--- a/bta/hh/bta_hh_int.h
+++ b/bta/hh/bta_hh_int.h
@@ -25,365 +25,364 @@
#ifndef BTA_HH_INT_H
#define BTA_HH_INT_H
+#include "bta_hh_api.h"
#include "bta_sys.h"
#include "utl.h"
-#include "bta_hh_api.h"
#if (BTA_HH_LE_INCLUDED == TRUE)
#include "bta_gatt_api.h"
#endif
/* can be moved to bta_api.h */
-#define BTA_HH_MAX_RPT_CHARS 8
+#define BTA_HH_MAX_RPT_CHARS 8
#if (BTA_GATT_INCLUDED == FALSE || BLE_INCLUDED == FALSE)
#undef BTA_HH_LE_INCLUDED
-#define BTA_HH_LE_INCLUDED false
+#define BTA_HH_LE_INCLUDED false
#endif
/* state machine events, these events are handled by the state machine */
-enum
-{
- BTA_HH_API_OPEN_EVT = BTA_SYS_EVT_START(BTA_ID_HH),
- BTA_HH_API_CLOSE_EVT,
- BTA_HH_INT_OPEN_EVT,
- BTA_HH_INT_CLOSE_EVT,
- BTA_HH_INT_DATA_EVT,
- BTA_HH_INT_CTRL_DATA,
- BTA_HH_INT_HANDSK_EVT,
- BTA_HH_SDP_CMPL_EVT,
- BTA_HH_API_WRITE_DEV_EVT,
- BTA_HH_API_GET_DSCP_EVT,
- BTA_HH_API_MAINT_DEV_EVT,
- BTA_HH_OPEN_CMPL_EVT,
+enum {
+ BTA_HH_API_OPEN_EVT = BTA_SYS_EVT_START(BTA_ID_HH),
+ BTA_HH_API_CLOSE_EVT,
+ BTA_HH_INT_OPEN_EVT,
+ BTA_HH_INT_CLOSE_EVT,
+ BTA_HH_INT_DATA_EVT,
+ BTA_HH_INT_CTRL_DATA,
+ BTA_HH_INT_HANDSK_EVT,
+ BTA_HH_SDP_CMPL_EVT,
+ BTA_HH_API_WRITE_DEV_EVT,
+ BTA_HH_API_GET_DSCP_EVT,
+ BTA_HH_API_MAINT_DEV_EVT,
+ BTA_HH_OPEN_CMPL_EVT,
#if (BTA_HH_LE_INCLUDED == TRUE)
- BTA_HH_GATT_CLOSE_EVT,
- BTA_HH_GATT_OPEN_EVT,
- BTA_HH_START_ENC_EVT,
- BTA_HH_ENC_CMPL_EVT,
- BTA_HH_GATT_ENC_CMPL_EVT,
+ BTA_HH_GATT_CLOSE_EVT,
+ BTA_HH_GATT_OPEN_EVT,
+ BTA_HH_START_ENC_EVT,
+ BTA_HH_ENC_CMPL_EVT,
+ BTA_HH_GATT_ENC_CMPL_EVT,
#endif
- /* not handled by execute state machine */
- BTA_HH_API_ENABLE_EVT,
- BTA_HH_API_DISABLE_EVT,
- BTA_HH_DISC_CMPL_EVT
+ /* not handled by execute state machine */
+ BTA_HH_API_ENABLE_EVT,
+ BTA_HH_API_DISABLE_EVT,
+ BTA_HH_DISC_CMPL_EVT
};
-typedef uint16_t tBTA_HH_INT_EVT; /* HID host internal events */
+typedef uint16_t tBTA_HH_INT_EVT; /* HID host internal events */
-#define BTA_HH_INVALID_EVT (BTA_HH_DISC_CMPL_EVT + 1)
+#define BTA_HH_INVALID_EVT (BTA_HH_DISC_CMPL_EVT + 1)
/* event used to map between BTE event and BTA event */
-#define BTA_HH_FST_TRANS_CB_EVT BTA_HH_GET_RPT_EVT
-#define BTA_HH_FST_BTE_TRANS_EVT HID_TRANS_GET_REPORT
+#define BTA_HH_FST_TRANS_CB_EVT BTA_HH_GET_RPT_EVT
+#define BTA_HH_FST_BTE_TRANS_EVT HID_TRANS_GET_REPORT
/* sub event code used for device maintainence API call */
-#define BTA_HH_ADD_DEV 0
-#define BTA_HH_REMOVE_DEV 1
+#define BTA_HH_ADD_DEV 0
+#define BTA_HH_REMOVE_DEV 1
/* state machine states */
-enum
-{
- BTA_HH_NULL_ST,
- BTA_HH_IDLE_ST,
- BTA_HH_W4_CONN_ST,
- BTA_HH_CONN_ST
+enum {
+ BTA_HH_NULL_ST,
+ BTA_HH_IDLE_ST,
+ BTA_HH_W4_CONN_ST,
+ BTA_HH_CONN_ST
#if (BTA_HH_LE_INCLUDED == TRUE)
- ,BTA_HH_W4_SEC
+ ,
+ BTA_HH_W4_SEC
#endif
- ,BTA_HH_INVALID_ST /* Used to check invalid states before executing SM function */
+ ,
+ BTA_HH_INVALID_ST /* Used to check invalid states before executing SM function
+ */
};
typedef uint8_t tBTA_HH_STATE;
/* data structure used to send a command/data to HID device */
-typedef struct
-{
- BT_HDR hdr;
- uint8_t t_type;
- uint8_t param;
- uint8_t rpt_id;
+typedef struct {
+ BT_HDR hdr;
+ uint8_t t_type;
+ uint8_t param;
+ uint8_t rpt_id;
#if (BTA_HH_LE_INCLUDED == TRUE)
- uint8_t srvc_id;
+ uint8_t srvc_id;
#endif
- uint16_t data;
- BT_HDR *p_data;
-}tBTA_HH_CMD_DATA;
+ uint16_t data;
+ BT_HDR* p_data;
+} tBTA_HH_CMD_DATA;
/* data type for BTA_HH_API_ENABLE_EVT */
-typedef struct
-{
- BT_HDR hdr;
- uint8_t sec_mask;
- uint8_t service_name[BTA_SERVICE_NAME_LEN+1];
- tBTA_HH_CBACK *p_cback;
+typedef struct {
+ BT_HDR hdr;
+ uint8_t sec_mask;
+ uint8_t service_name[BTA_SERVICE_NAME_LEN + 1];
+ tBTA_HH_CBACK* p_cback;
} tBTA_HH_API_ENABLE;
-typedef struct
-{
- BT_HDR hdr;
- BD_ADDR bd_addr;
- uint8_t sec_mask;
- tBTA_HH_PROTO_MODE mode;
-}tBTA_HH_API_CONN;
+typedef struct {
+ BT_HDR hdr;
+ BD_ADDR bd_addr;
+ uint8_t sec_mask;
+ tBTA_HH_PROTO_MODE mode;
+} tBTA_HH_API_CONN;
/* internal event data from BTE HID callback */
-typedef struct
-{
- BT_HDR hdr;
- BD_ADDR addr;
- uint32_t data;
- BT_HDR *p_data;
-}tBTA_HH_CBACK_DATA;
+typedef struct {
+ BT_HDR hdr;
+ BD_ADDR addr;
+ uint32_t data;
+ BT_HDR* p_data;
+} tBTA_HH_CBACK_DATA;
-typedef struct
-{
- BT_HDR hdr;
- BD_ADDR bda;
- uint16_t attr_mask;
- uint16_t sub_event;
- uint8_t sub_class;
- uint8_t app_id;
- tBTA_HH_DEV_DSCP_INFO dscp_info;
-}tBTA_HH_MAINT_DEV;
+typedef struct {
+ BT_HDR hdr;
+ BD_ADDR bda;
+ uint16_t attr_mask;
+ uint16_t sub_event;
+ uint8_t sub_class;
+ uint8_t app_id;
+ tBTA_HH_DEV_DSCP_INFO dscp_info;
+} tBTA_HH_MAINT_DEV;
#if (BTA_HH_LE_INCLUDED == TRUE)
-typedef struct
-{
- BT_HDR hdr;
- uint16_t conn_id;
- tBTA_GATT_REASON reason; /* disconnect reason code, not useful when connect event is reported */
+typedef struct {
+ BT_HDR hdr;
+ uint16_t conn_id;
+ tBTA_GATT_REASON reason; /* disconnect reason code, not useful when connect
+ event is reported */
-}tBTA_HH_LE_CLOSE;
+} tBTA_HH_LE_CLOSE;
-typedef struct
-{
- BT_HDR hdr;
- uint16_t scan_int;
- uint16_t scan_win;
-}tBTA_HH_SCPP_UPDATE;
+typedef struct {
+ BT_HDR hdr;
+ uint16_t scan_int;
+ uint16_t scan_win;
+} tBTA_HH_SCPP_UPDATE;
#endif
/* union of all event data types */
-typedef union
-{
- BT_HDR hdr;
- tBTA_HH_API_ENABLE api_enable;
- tBTA_HH_API_CONN api_conn;
- tBTA_HH_CMD_DATA api_sndcmd;
- tBTA_HH_CBACK_DATA hid_cback;
- tBTA_HH_STATUS status;
- tBTA_HH_MAINT_DEV api_maintdev;
+typedef union {
+ BT_HDR hdr;
+ tBTA_HH_API_ENABLE api_enable;
+ tBTA_HH_API_CONN api_conn;
+ tBTA_HH_CMD_DATA api_sndcmd;
+ tBTA_HH_CBACK_DATA hid_cback;
+ tBTA_HH_STATUS status;
+ tBTA_HH_MAINT_DEV api_maintdev;
#if (BTA_HH_LE_INCLUDED == TRUE)
- tBTA_HH_LE_CLOSE le_close;
- tBTA_GATTC_OPEN le_open;
- tBTA_HH_SCPP_UPDATE le_scpp_update;
- tBTA_GATTC_ENC_CMPL_CB le_enc_cmpl;
+ tBTA_HH_LE_CLOSE le_close;
+ tBTA_GATTC_OPEN le_open;
+ tBTA_HH_SCPP_UPDATE le_scpp_update;
+ tBTA_GATTC_ENC_CMPL_CB le_enc_cmpl;
#endif
} tBTA_HH_DATA;
#if (BTA_HH_LE_INCLUDED == TRUE)
-typedef struct
-{
- uint8_t index;
- bool in_use;
- uint8_t srvc_inst_id;
- uint8_t char_inst_id;
- tBTA_HH_RPT_TYPE rpt_type;
- uint16_t uuid;
- uint8_t rpt_id;
- bool client_cfg_exist;
- uint16_t client_cfg_value;
-}tBTA_HH_LE_RPT;
+typedef struct {
+ uint8_t index;
+ bool in_use;
+ uint8_t srvc_inst_id;
+ uint8_t char_inst_id;
+ tBTA_HH_RPT_TYPE rpt_type;
+ uint16_t uuid;
+ uint8_t rpt_id;
+ bool client_cfg_exist;
+ uint16_t client_cfg_value;
+} tBTA_HH_LE_RPT;
#ifndef BTA_HH_LE_RPT_MAX
-#define BTA_HH_LE_RPT_MAX 20
+#define BTA_HH_LE_RPT_MAX 20
#endif
-typedef struct
-{
- bool in_use;
- uint8_t srvc_inst_id;
- tBTA_HH_LE_RPT report[BTA_HH_LE_RPT_MAX];
+typedef struct {
+ bool in_use;
+ uint8_t srvc_inst_id;
+ tBTA_HH_LE_RPT report[BTA_HH_LE_RPT_MAX];
- uint16_t proto_mode_handle;
- uint8_t control_point_handle;
+ uint16_t proto_mode_handle;
+ uint8_t control_point_handle;
- uint8_t incl_srvc_inst; /* assuming only one included service : battery service */
- uint8_t cur_expl_char_idx; /* currently discovering service index */
- uint8_t *rpt_map;
- uint16_t ext_rpt_ref;
- tBTA_HH_DEV_DESCR descriptor;
+ uint8_t
+ incl_srvc_inst; /* assuming only one included service : battery service */
+ uint8_t cur_expl_char_idx; /* currently discovering service index */
+ uint8_t* rpt_map;
+ uint16_t ext_rpt_ref;
+ tBTA_HH_DEV_DESCR descriptor;
-}tBTA_HH_LE_HID_SRVC;
+} tBTA_HH_LE_HID_SRVC;
/* convert a HID handle to the LE CB index */
-#define BTA_HH_GET_LE_CB_IDX(x) (((x) >> 4) - 1)
-/* convert a GATT connection ID to HID device handle, it is the hi 4 bits of a uint8_t */
-#define BTA_HH_GET_LE_DEV_HDL(x) (uint8_t)(((x) + 1) << 4)
+#define BTA_HH_GET_LE_CB_IDX(x) (((x) >> 4) - 1)
+/* convert a GATT connection ID to HID device handle, it is the hi 4 bits of a
+ * uint8_t */
+#define BTA_HH_GET_LE_DEV_HDL(x) (uint8_t)(((x) + 1) << 4)
/* check to see if th edevice handle is a LE device handle */
-#define BTA_HH_IS_LE_DEV_HDL(x) ((x) & 0xf0)
-#define BTA_HH_IS_LE_DEV_HDL_VALID(x) (((x)>>4) <= BTA_HH_LE_MAX_KNOWN)
+#define BTA_HH_IS_LE_DEV_HDL(x) ((x)&0xf0)
+#define BTA_HH_IS_LE_DEV_HDL_VALID(x) (((x) >> 4) <= BTA_HH_LE_MAX_KNOWN)
#endif
/* device control block */
-typedef struct
-{
- tBTA_HH_DEV_DSCP_INFO dscp_info; /* report descriptor and DI information */
- BD_ADDR addr; /* BD-Addr of the HID device */
- uint16_t attr_mask; /* attribute mask */
- uint16_t w4_evt; /* W4_handshake event name */
- uint8_t index; /* index number referenced to handle index */
- uint8_t sub_class; /* Cod sub class */
- uint8_t sec_mask; /* security mask */
- uint8_t app_id; /* application ID for this connection */
- uint8_t hid_handle; /* device handle : low 4 bits for regular HID: HID_HOST_MAX_DEVICES can not exceed 15;
- high 4 bits for LE HID: GATT_MAX_PHY_CHANNEL can not exceed 15 */
- bool vp; /* virtually unplug flag */
- bool in_use; /* control block currently in use */
- bool incoming_conn; /* is incoming connection? */
- uint8_t incoming_hid_handle; /* temporary handle for incoming connection? */
- bool opened; /* true if device successfully opened HID connection */
- tBTA_HH_PROTO_MODE mode; /* protocol mode */
- tBTA_HH_STATE state; /* CB state */
+typedef struct {
+ tBTA_HH_DEV_DSCP_INFO dscp_info; /* report descriptor and DI information */
+ BD_ADDR addr; /* BD-Addr of the HID device */
+ uint16_t attr_mask; /* attribute mask */
+ uint16_t w4_evt; /* W4_handshake event name */
+ uint8_t index; /* index number referenced to handle index */
+ uint8_t sub_class; /* Cod sub class */
+ uint8_t sec_mask; /* security mask */
+ uint8_t app_id; /* application ID for this connection */
+ uint8_t hid_handle; /* device handle : low 4 bits for regular HID:
+ HID_HOST_MAX_DEVICES can not exceed 15;
+ high 4 bits for LE HID:
+ GATT_MAX_PHY_CHANNEL can not exceed 15 */
+ bool vp; /* virtually unplug flag */
+ bool in_use; /* control block currently in use */
+ bool incoming_conn; /* is incoming connection? */
+ uint8_t incoming_hid_handle; /* temporary handle for incoming connection? */
+ bool opened; /* true if device successfully opened HID connection */
+ tBTA_HH_PROTO_MODE mode; /* protocol mode */
+ tBTA_HH_STATE state; /* CB state */
#if (BTA_HH_LE_INCLUDED == TRUE)
-#define BTA_HH_LE_DISC_NONE 0x00
-#define BTA_HH_LE_DISC_HIDS 0x01
-#define BTA_HH_LE_DISC_DIS 0x02
-#define BTA_HH_LE_DISC_SCPS 0x04
+#define BTA_HH_LE_DISC_NONE 0x00
+#define BTA_HH_LE_DISC_HIDS 0x01
+#define BTA_HH_LE_DISC_DIS 0x02
+#define BTA_HH_LE_DISC_SCPS 0x04
- uint8_t disc_active;
- tBTA_HH_STATUS status;
- tBTA_GATT_REASON reason;
- bool is_le_device;
- tBTA_HH_LE_HID_SRVC hid_srvc;
- uint16_t conn_id;
- bool in_bg_conn;
- uint8_t clt_cfg_idx;
- uint16_t scan_refresh_char_handle;
- bool scps_supported;
+ uint8_t disc_active;
+ tBTA_HH_STATUS status;
+ tBTA_GATT_REASON reason;
+ bool is_le_device;
+ tBTA_HH_LE_HID_SRVC hid_srvc;
+ uint16_t conn_id;
+ bool in_bg_conn;
+ uint8_t clt_cfg_idx;
+ uint16_t scan_refresh_char_handle;
+ bool scps_supported;
-#define BTA_HH_LE_SCPS_NOTIFY_NONE 0
-#define BTA_HH_LE_SCPS_NOTIFY_SPT 0x01
-#define BTA_HH_LE_SCPS_NOTIFY_ENB 0x02
- uint8_t scps_notify; /* scan refresh supported/notification enabled */
+#define BTA_HH_LE_SCPS_NOTIFY_NONE 0
+#define BTA_HH_LE_SCPS_NOTIFY_SPT 0x01
+#define BTA_HH_LE_SCPS_NOTIFY_ENB 0x02
+ uint8_t scps_notify; /* scan refresh supported/notification enabled */
#endif
- bool security_pending;
+ bool security_pending;
} tBTA_HH_DEV_CB;
/* key board parsing control block */
-typedef struct
-{
- bool mod_key[4]; /* ctrl, shift(upper), Alt, GUI */
- bool num_lock;
- bool caps_lock;
- uint8_t last_report[BTA_HH_MAX_RPT_CHARS];
+typedef struct {
+ bool mod_key[4]; /* ctrl, shift(upper), Alt, GUI */
+ bool num_lock;
+ bool caps_lock;
+ uint8_t last_report[BTA_HH_MAX_RPT_CHARS];
} tBTA_HH_KB_CB;
/******************************************************************************
* Main Control Block
******************************************************************************/
-typedef struct
-{
- tBTA_HH_KB_CB kb_cb; /* key board control block,
- suppose BTA will connect
- to only one keyboard at
- the same time */
- tBTA_HH_DEV_CB kdev[BTA_HH_MAX_DEVICE]; /* device control block */
- tBTA_HH_DEV_CB* p_cur; /* current device control
- block idx, used in sdp */
- uint8_t cb_index[BTA_HH_MAX_KNOWN]; /* maintain a CB index
- map to dev handle */
+typedef struct {
+ tBTA_HH_KB_CB kb_cb; /* key board control block,
+ suppose BTA will connect
+ to only one keyboard at
+ the same time */
+ tBTA_HH_DEV_CB kdev[BTA_HH_MAX_DEVICE]; /* device control block */
+ tBTA_HH_DEV_CB* p_cur; /* current device control
+ block idx, used in sdp */
+ uint8_t cb_index[BTA_HH_MAX_KNOWN]; /* maintain a CB index
+ map to dev handle */
#if (BTA_HH_LE_INCLUDED == TRUE)
- uint8_t le_cb_index[BTA_HH_MAX_DEVICE]; /* maintain a CB index map to LE dev handle */
- tBTA_GATTC_IF gatt_if;
+ uint8_t le_cb_index[BTA_HH_MAX_DEVICE]; /* maintain a CB index map to LE dev
+ handle */
+ tBTA_GATTC_IF gatt_if;
#endif
- tBTA_HH_CBACK *p_cback; /* Application callbacks */
- tSDP_DISCOVERY_DB* p_disc_db;
- uint8_t trace_level; /* tracing level */
- uint8_t cnt_num; /* connected device number */
- bool w4_disable; /* w4 disable flag */
-}
-tBTA_HH_CB;
+ tBTA_HH_CBACK* p_cback; /* Application callbacks */
+ tSDP_DISCOVERY_DB* p_disc_db;
+ uint8_t trace_level; /* tracing level */
+ uint8_t cnt_num; /* connected device number */
+ bool w4_disable; /* w4 disable flag */
+} tBTA_HH_CB;
-extern tBTA_HH_CB bta_hh_cb;
+extern tBTA_HH_CB bta_hh_cb;
/* from bta_hh_cfg.c */
-extern tBTA_HH_CFG *p_bta_hh_cfg;
+extern tBTA_HH_CFG* p_bta_hh_cfg;
/*****************************************************************************
* Function prototypes
****************************************************************************/
-extern bool bta_hh_hdl_event(BT_HDR *p_msg);
-extern void bta_hh_sm_execute(tBTA_HH_DEV_CB *p_cb, uint16_t event,
- tBTA_HH_DATA *p_data);
+extern bool bta_hh_hdl_event(BT_HDR* p_msg);
+extern void bta_hh_sm_execute(tBTA_HH_DEV_CB* p_cb, uint16_t event,
+ tBTA_HH_DATA* p_data);
/* action functions */
-extern void bta_hh_api_disc_act(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data);
-extern void bta_hh_open_act(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data);
-extern void bta_hh_close_act(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data);
-extern void bta_hh_data_act(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA * p_data);
-extern void bta_hh_ctrl_dat_act(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA * p_data);
-extern void bta_hh_start_sdp(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data);
-extern void bta_hh_sdp_cmpl(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data);
-extern void bta_hh_write_dev_act(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data);
-extern void bta_hh_get_dscp_act(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data);
-extern void bta_hh_handsk_act(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data);
-extern void bta_hh_maint_dev_act(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data);
-extern void bta_hh_open_cmpl_act(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data);
-extern void bta_hh_open_failure(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data);
+extern void bta_hh_api_disc_act(tBTA_HH_DEV_CB* p_cb, tBTA_HH_DATA* p_data);
+extern void bta_hh_open_act(tBTA_HH_DEV_CB* p_cb, tBTA_HH_DATA* p_data);
+extern void bta_hh_close_act(tBTA_HH_DEV_CB* p_cb, tBTA_HH_DATA* p_data);
+extern void bta_hh_data_act(tBTA_HH_DEV_CB* p_cb, tBTA_HH_DATA* p_data);
+extern void bta_hh_ctrl_dat_act(tBTA_HH_DEV_CB* p_cb, tBTA_HH_DATA* p_data);
+extern void bta_hh_start_sdp(tBTA_HH_DEV_CB* p_cb, tBTA_HH_DATA* p_data);
+extern void bta_hh_sdp_cmpl(tBTA_HH_DEV_CB* p_cb, tBTA_HH_DATA* p_data);
+extern void bta_hh_write_dev_act(tBTA_HH_DEV_CB* p_cb, tBTA_HH_DATA* p_data);
+extern void bta_hh_get_dscp_act(tBTA_HH_DEV_CB* p_cb, tBTA_HH_DATA* p_data);
+extern void bta_hh_handsk_act(tBTA_HH_DEV_CB* p_cb, tBTA_HH_DATA* p_data);
+extern void bta_hh_maint_dev_act(tBTA_HH_DEV_CB* p_cb, tBTA_HH_DATA* p_data);
+extern void bta_hh_open_cmpl_act(tBTA_HH_DEV_CB* p_cb, tBTA_HH_DATA* p_data);
+extern void bta_hh_open_failure(tBTA_HH_DEV_CB* p_cb, tBTA_HH_DATA* p_data);
/* utility functions */
-extern uint8_t bta_hh_find_cb(BD_ADDR bda);
-extern void bta_hh_parse_keybd_rpt(tBTA_HH_BOOT_RPT *p_kb_data,
- uint8_t *p_report, uint16_t report_len);
-extern void bta_hh_parse_mice_rpt(tBTA_HH_BOOT_RPT *p_kb_data,
- uint8_t *p_report, uint16_t report_len);
-extern bool bta_hh_tod_spt(tBTA_HH_DEV_CB *p_cb,uint8_t sub_class);
-extern void bta_hh_clean_up_kdev(tBTA_HH_DEV_CB *p_cb);
+extern uint8_t bta_hh_find_cb(BD_ADDR bda);
+extern void bta_hh_parse_keybd_rpt(tBTA_HH_BOOT_RPT* p_kb_data,
+ uint8_t* p_report, uint16_t report_len);
+extern void bta_hh_parse_mice_rpt(tBTA_HH_BOOT_RPT* p_kb_data,
+ uint8_t* p_report, uint16_t report_len);
+extern bool bta_hh_tod_spt(tBTA_HH_DEV_CB* p_cb, uint8_t sub_class);
+extern void bta_hh_clean_up_kdev(tBTA_HH_DEV_CB* p_cb);
-extern void bta_hh_add_device_to_list(tBTA_HH_DEV_CB *p_cb, uint8_t handle,
+extern void bta_hh_add_device_to_list(tBTA_HH_DEV_CB* p_cb, uint8_t handle,
uint16_t attr_mask,
- tHID_DEV_DSCP_INFO *p_dscp_info,
- uint8_t sub_class, uint16_t max_latency, uint16_t min_tout, uint8_t app_id);
-extern void bta_hh_update_di_info(tBTA_HH_DEV_CB *p_cb, uint16_t vendor_id, uint16_t product_id,
- uint16_t version, uint8_t flag);
+ tHID_DEV_DSCP_INFO* p_dscp_info,
+ uint8_t sub_class, uint16_t max_latency,
+ uint16_t min_tout, uint8_t app_id);
+extern void bta_hh_update_di_info(tBTA_HH_DEV_CB* p_cb, uint16_t vendor_id,
+ uint16_t product_id, uint16_t version,
+ uint8_t flag);
extern void bta_hh_cleanup_disable(tBTA_HH_STATUS status);
extern uint8_t bta_hh_dev_handle_to_cb_idx(uint8_t dev_handle);
/* action functions used outside state machine */
-extern void bta_hh_api_enable(tBTA_HH_DATA *p_data);
+extern void bta_hh_api_enable(tBTA_HH_DATA* p_data);
extern void bta_hh_api_disable(void);
extern void bta_hh_disc_cmpl(void);
-extern tBTA_HH_STATUS bta_hh_read_ssr_param(BD_ADDR bd_addr, uint16_t *p_max_ssr_lat, uint16_t *p_min_ssr_tout);
+extern tBTA_HH_STATUS bta_hh_read_ssr_param(BD_ADDR bd_addr,
+ uint16_t* p_max_ssr_lat,
+ uint16_t* p_min_ssr_tout);
/* functions for LE HID */
extern void bta_hh_le_enable(void);
extern bool bta_hh_le_is_hh_gatt_if(tBTA_GATTC_IF client_if);
extern void bta_hh_le_deregister(void);
-extern bool bta_hh_is_le_device(tBTA_HH_DEV_CB *p_cb, BD_ADDR remote_bda);
-extern void bta_hh_le_open_conn(tBTA_HH_DEV_CB *p_cb, BD_ADDR remote_bda);
-extern void bta_hh_le_api_disc_act(tBTA_HH_DEV_CB *p_cb);
-extern void bta_hh_le_get_dscp_act(tBTA_HH_DEV_CB *p_cb);
-extern void bta_hh_le_write_dev_act(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data);
-extern uint8_t bta_hh_le_add_device(tBTA_HH_DEV_CB *p_cb, tBTA_HH_MAINT_DEV *p_dev_info);
-extern void bta_hh_le_remove_dev_bg_conn(tBTA_HH_DEV_CB *p_cb);
-extern void bta_hh_le_open_fail(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data);
-extern void bta_hh_gatt_open(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data);
-extern void bta_hh_gatt_close(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data);
-extern void bta_hh_start_security(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_buf);
-extern void bta_hh_start_srvc_discovery(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_buf);
-extern void bta_hh_start_security(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_buf);
-extern void bta_hh_security_cmpl(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_buf);
-extern void bta_hh_le_notify_enc_cmpl(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data);
-extern void bta_hh_ci_load_rpt (tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_buf);
+extern bool bta_hh_is_le_device(tBTA_HH_DEV_CB* p_cb, BD_ADDR remote_bda);
+extern void bta_hh_le_open_conn(tBTA_HH_DEV_CB* p_cb, BD_ADDR remote_bda);
+extern void bta_hh_le_api_disc_act(tBTA_HH_DEV_CB* p_cb);
+extern void bta_hh_le_get_dscp_act(tBTA_HH_DEV_CB* p_cb);
+extern void bta_hh_le_write_dev_act(tBTA_HH_DEV_CB* p_cb, tBTA_HH_DATA* p_data);
+extern uint8_t bta_hh_le_add_device(tBTA_HH_DEV_CB* p_cb,
+ tBTA_HH_MAINT_DEV* p_dev_info);
+extern void bta_hh_le_remove_dev_bg_conn(tBTA_HH_DEV_CB* p_cb);
+extern void bta_hh_le_open_fail(tBTA_HH_DEV_CB* p_cb, tBTA_HH_DATA* p_data);
+extern void bta_hh_gatt_open(tBTA_HH_DEV_CB* p_cb, tBTA_HH_DATA* p_data);
+extern void bta_hh_gatt_close(tBTA_HH_DEV_CB* p_cb, tBTA_HH_DATA* p_data);
+extern void bta_hh_start_security(tBTA_HH_DEV_CB* p_cb, tBTA_HH_DATA* p_buf);
+extern void bta_hh_start_srvc_discovery(tBTA_HH_DEV_CB* p_cb,
+ tBTA_HH_DATA* p_buf);
+extern void bta_hh_start_security(tBTA_HH_DEV_CB* p_cb, tBTA_HH_DATA* p_buf);
+extern void bta_hh_security_cmpl(tBTA_HH_DEV_CB* p_cb, tBTA_HH_DATA* p_buf);
+extern void bta_hh_le_notify_enc_cmpl(tBTA_HH_DEV_CB* p_cb,
+ tBTA_HH_DATA* p_data);
+extern void bta_hh_ci_load_rpt(tBTA_HH_DEV_CB* p_cb, tBTA_HH_DATA* p_buf);
#if (BTA_HH_DEBUG == TRUE)
extern void bta_hh_trace_dev_db(void);
#endif
#endif
-
diff --git a/bta/hh/bta_hh_le.cc b/bta/hh/bta_hh_le.cc
index 2b343a4..bbda22c 100644
--- a/bta/hh/bta_hh_le.cc
+++ b/bta/hh/bta_hh_le.cc
@@ -45,30 +45,28 @@
using std::vector;
#ifndef BTA_HH_LE_RECONN
-#define BTA_HH_LE_RECONN true
+#define BTA_HH_LE_RECONN true
#endif
-#define BTA_HH_APP_ID_LE 0xff
+#define BTA_HH_APP_ID_LE 0xff
-#define BTA_HH_LE_RPT_TYPE_VALID(x) ((x) <= BTA_LE_HID_RPT_FEATURE && (x)>=BTA_LE_HID_RPT_INPUT)
+#define BTA_HH_LE_RPT_TYPE_VALID(x) \
+ ((x) <= BTA_LE_HID_RPT_FEATURE && (x) >= BTA_LE_HID_RPT_INPUT)
-#define BTA_HH_LE_PROTO_BOOT_MODE 0x00
-#define BTA_HH_LE_PROTO_REPORT_MODE 0x01
+#define BTA_HH_LE_PROTO_BOOT_MODE 0x00
+#define BTA_HH_LE_PROTO_REPORT_MODE 0x01
-#define BTA_LE_HID_RTP_UUID_MAX 5
-static const uint16_t bta_hh_uuid_to_rtp_type[BTA_LE_HID_RTP_UUID_MAX][2] =
-{
- {GATT_UUID_HID_REPORT, BTA_HH_RPTT_INPUT},
- {GATT_UUID_HID_BT_KB_INPUT, BTA_HH_RPTT_INPUT},
+#define BTA_LE_HID_RTP_UUID_MAX 5
+static const uint16_t bta_hh_uuid_to_rtp_type[BTA_LE_HID_RTP_UUID_MAX][2] = {
+ {GATT_UUID_HID_REPORT, BTA_HH_RPTT_INPUT},
+ {GATT_UUID_HID_BT_KB_INPUT, BTA_HH_RPTT_INPUT},
{GATT_UUID_HID_BT_KB_OUTPUT, BTA_HH_RPTT_OUTPUT},
{GATT_UUID_HID_BT_MOUSE_INPUT, BTA_HH_RPTT_INPUT},
- {GATT_UUID_BATTERY_LEVEL, BTA_HH_RPTT_INPUT}
-};
+ {GATT_UUID_BATTERY_LEVEL, BTA_HH_RPTT_INPUT}};
-
-static void bta_hh_gattc_callback(tBTA_GATTC_EVT event, tBTA_GATTC *p_data);
-static void bta_hh_le_add_dev_bg_conn(tBTA_HH_DEV_CB *p_cb, bool check_bond);
-//TODO(jpawlowski): uncomment when fixed
+static void bta_hh_gattc_callback(tBTA_GATTC_EVT event, tBTA_GATTC* p_data);
+static void bta_hh_le_add_dev_bg_conn(tBTA_HH_DEV_CB* p_cb, bool check_bond);
+// TODO(jpawlowski): uncomment when fixed
// static void bta_hh_process_cache_rpt (tBTA_HH_DEV_CB *p_cb,
// tBTA_HH_RPT_CACHE_ENTRY *p_rpt_cache,
// uint8_t num_rpt);
@@ -80,16 +78,16 @@
/* Holds pending GATT operations */
struct gatt_operation {
- uint8_t type;
- uint16_t handle;
- GATT_READ_OP_CB read_cb;
- void* read_cb_data;
- GATT_WRITE_OP_CB write_cb;
- void* write_cb_data;
+ uint8_t type;
+ uint16_t handle;
+ GATT_READ_OP_CB read_cb;
+ void* read_cb_data;
+ GATT_WRITE_OP_CB write_cb;
+ void* write_cb_data;
- /* write-specific fields */
- tBTA_GATTC_WRITE_TYPE write_type;
- vector<uint8_t> value;
+ /* write-specific fields */
+ tBTA_GATTC_WRITE_TYPE write_type;
+ vector<uint8_t> value;
};
// maps connection id to operations waiting for execution
@@ -98,104 +96,111 @@
static std::unordered_set<uint16_t> gatt_op_queue_executing;
static void mark_as_not_executing(uint16_t conn_id) {
- gatt_op_queue_executing.erase(conn_id);
+ gatt_op_queue_executing.erase(conn_id);
}
static void gatt_op_queue_clean(uint16_t conn_id) {
- gatt_op_queue.erase(conn_id);
- gatt_op_queue_executing.erase(conn_id);
+ gatt_op_queue.erase(conn_id);
+ gatt_op_queue_executing.erase(conn_id);
}
static void gatt_execute_next_op(uint16_t conn_id);
GATT_READ_OP_CB act_read_cb = NULL;
void* act_read_cb_data = NULL;
-static void gatt_read_op_finished(uint16_t conn_id, tGATT_STATUS status, uint16_t handle, uint16_t len, uint8_t *value, void* data) {
- GATT_READ_OP_CB tmp_cb = act_read_cb;
- void* tmp_cb_data = act_read_cb_data;
+static void gatt_read_op_finished(uint16_t conn_id, tGATT_STATUS status,
+ uint16_t handle, uint16_t len, uint8_t* value,
+ void* data) {
+ GATT_READ_OP_CB tmp_cb = act_read_cb;
+ void* tmp_cb_data = act_read_cb_data;
- act_read_cb = NULL;
- act_read_cb_data = NULL;
+ act_read_cb = NULL;
+ act_read_cb_data = NULL;
- mark_as_not_executing(conn_id);
- gatt_execute_next_op(conn_id);
+ mark_as_not_executing(conn_id);
+ gatt_execute_next_op(conn_id);
- if (tmp_cb) {
- tmp_cb(conn_id, status, handle, len, value, tmp_cb_data);
- return;
- }
+ if (tmp_cb) {
+ tmp_cb(conn_id, status, handle, len, value, tmp_cb_data);
+ return;
+ }
}
GATT_WRITE_OP_CB act_write_cb = NULL;
void* act_write_cb_data = NULL;
-static void gatt_write_op_finished(uint16_t conn_id, tGATT_STATUS status, uint16_t handle, void* data) {
- GATT_WRITE_OP_CB tmp_cb = act_write_cb;
- void* tmp_cb_data = act_write_cb_data;
- act_write_cb = NULL;
- act_write_cb_data = NULL;
+static void gatt_write_op_finished(uint16_t conn_id, tGATT_STATUS status,
+ uint16_t handle, void* data) {
+ GATT_WRITE_OP_CB tmp_cb = act_write_cb;
+ void* tmp_cb_data = act_write_cb_data;
+ act_write_cb = NULL;
+ act_write_cb_data = NULL;
- mark_as_not_executing(conn_id);
- gatt_execute_next_op(conn_id);
+ mark_as_not_executing(conn_id);
+ gatt_execute_next_op(conn_id);
- if (tmp_cb) {
- tmp_cb(conn_id, status, handle, tmp_cb_data);
- return;
- }
+ if (tmp_cb) {
+ tmp_cb(conn_id, status, handle, tmp_cb_data);
+ return;
+ }
}
static void gatt_execute_next_op(uint16_t conn_id) {
- APPL_TRACE_DEBUG("%s:", __func__, conn_id);
- if (gatt_op_queue.empty()) {
- APPL_TRACE_DEBUG("%s: op queue is empty", __func__);
- return;
- }
+ APPL_TRACE_DEBUG("%s:", __func__, conn_id);
+ if (gatt_op_queue.empty()) {
+ APPL_TRACE_DEBUG("%s: op queue is empty", __func__);
+ return;
+ }
- auto map_ptr = gatt_op_queue.find(conn_id);
- if (map_ptr == gatt_op_queue.end() || map_ptr->second.empty()) {
- APPL_TRACE_DEBUG("%s: no more operations queued for conn_id %d", __func__, conn_id);
- return;
- }
+ auto map_ptr = gatt_op_queue.find(conn_id);
+ if (map_ptr == gatt_op_queue.end() || map_ptr->second.empty()) {
+ APPL_TRACE_DEBUG("%s: no more operations queued for conn_id %d", __func__,
+ conn_id);
+ return;
+ }
- if (gatt_op_queue_executing.count(conn_id)) {
- APPL_TRACE_DEBUG("%s: can't enqueue next op, already executing", __func__);
- return;
- }
+ if (gatt_op_queue_executing.count(conn_id)) {
+ APPL_TRACE_DEBUG("%s: can't enqueue next op, already executing", __func__);
+ return;
+ }
- gatt_op_queue_executing.insert(conn_id);
+ gatt_op_queue_executing.insert(conn_id);
- std::list<gatt_operation> &gatt_ops = map_ptr->second;
+ std::list<gatt_operation>& gatt_ops = map_ptr->second;
- gatt_operation &op = gatt_ops.front();
+ gatt_operation& op = gatt_ops.front();
- if (op.type == GATT_READ_CHAR) {
- act_read_cb = op.read_cb;
- act_read_cb_data = op.read_cb_data;
- BTA_GATTC_ReadCharacteristic(conn_id, op.handle, BTA_GATT_AUTH_REQ_NONE,
- gatt_read_op_finished, NULL);
+ if (op.type == GATT_READ_CHAR) {
+ act_read_cb = op.read_cb;
+ act_read_cb_data = op.read_cb_data;
+ BTA_GATTC_ReadCharacteristic(conn_id, op.handle, BTA_GATT_AUTH_REQ_NONE,
+ gatt_read_op_finished, NULL);
- } else if (op.type == GATT_READ_DESC) {
- act_read_cb = op.read_cb;
- act_read_cb_data = op.read_cb_data;
- BTA_GATTC_ReadCharDescr(conn_id, op.handle, BTA_GATT_AUTH_REQ_NONE,
- gatt_read_op_finished, NULL);
+ } else if (op.type == GATT_READ_DESC) {
+ act_read_cb = op.read_cb;
+ act_read_cb_data = op.read_cb_data;
+ BTA_GATTC_ReadCharDescr(conn_id, op.handle, BTA_GATT_AUTH_REQ_NONE,
+ gatt_read_op_finished, NULL);
- } else if (op.type == GATT_WRITE_CHAR) {
- act_write_cb = op.write_cb;
- act_write_cb_data = op.write_cb_data;
- BTA_GATTC_WriteCharValue(conn_id, op.handle, op.write_type, std::move(op.value),
- BTA_GATT_AUTH_REQ_NONE, gatt_write_op_finished, NULL);
+ } else if (op.type == GATT_WRITE_CHAR) {
+ act_write_cb = op.write_cb;
+ act_write_cb_data = op.write_cb_data;
+ BTA_GATTC_WriteCharValue(conn_id, op.handle, op.write_type,
+ std::move(op.value), BTA_GATT_AUTH_REQ_NONE,
+ gatt_write_op_finished, NULL);
- } else if (op.type == GATT_WRITE_DESC) {
- act_write_cb = op.write_cb;
- act_write_cb_data = op.write_cb_data;
- BTA_GATTC_WriteCharDescr(conn_id, op.handle, std::move(op.value),
- BTA_GATT_AUTH_REQ_NONE, gatt_write_op_finished, NULL);
- }
+ } else if (op.type == GATT_WRITE_DESC) {
+ act_write_cb = op.write_cb;
+ act_write_cb_data = op.write_cb_data;
+ BTA_GATTC_WriteCharDescr(conn_id, op.handle, std::move(op.value),
+ BTA_GATT_AUTH_REQ_NONE, gatt_write_op_finished,
+ NULL);
+ }
- gatt_ops.pop_front();
+ gatt_ops.pop_front();
}
-static void gatt_queue_read_op(uint8_t op_type, uint16_t conn_id, uint16_t handle,
- GATT_READ_OP_CB cb, void* cb_data) {
+static void gatt_queue_read_op(uint8_t op_type, uint16_t conn_id,
+ uint16_t handle, GATT_READ_OP_CB cb,
+ void* cb_data) {
gatt_operation op;
op.type = op_type;
op.handle = handle;
@@ -205,8 +210,8 @@
gatt_execute_next_op(conn_id);
}
-static void gatt_queue_write_op(uint8_t op_type, uint16_t conn_id, uint16_t handle,
- vector<uint8_t> value,
+static void gatt_queue_write_op(uint8_t op_type, uint16_t conn_id,
+ uint16_t handle, vector<uint8_t> value,
tBTA_GATTC_WRITE_TYPE write_type,
GATT_WRITE_OP_CB cb, void* cb_data) {
gatt_operation op;
@@ -222,58 +227,46 @@
}
#if (BTA_HH_DEBUG == TRUE)
-static const char *bta_hh_le_rpt_name[4] =
-{
- "UNKNOWN",
- "INPUT",
- "OUTPUT",
- "FEATURE"
-};
+static const char* bta_hh_le_rpt_name[4] = {"UNKNOWN", "INPUT", "OUTPUT",
+ "FEATURE"};
/*******************************************************************************
*
* Function bta_hh_le_hid_report_dbg
*
- * Description debug function to print out all HID report available on remote
+ * Description debug function to print out all HID report available on
+ *remote
* device.
*
* Returns void
*
******************************************************************************/
-static void bta_hh_le_hid_report_dbg(tBTA_HH_DEV_CB *p_cb)
-{
- APPL_TRACE_DEBUG("%s: HID Report DB", __func__);
+static void bta_hh_le_hid_report_dbg(tBTA_HH_DEV_CB* p_cb) {
+ APPL_TRACE_DEBUG("%s: HID Report DB", __func__);
- if (!p_cb->hid_srvc.in_use)
- return;
+ if (!p_cb->hid_srvc.in_use) return;
- tBTA_HH_LE_RPT *p_rpt = &p_cb->hid_srvc.report[0];
+ tBTA_HH_LE_RPT* p_rpt = &p_cb->hid_srvc.report[0];
- for (int j = 0; j < BTA_HH_LE_RPT_MAX; j ++, p_rpt++)
- {
- const char * rpt_name = "Unknown";
+ for (int j = 0; j < BTA_HH_LE_RPT_MAX; j++, p_rpt++) {
+ const char* rpt_name = "Unknown";
- if (!p_rpt->in_use)
- break;
+ if (!p_rpt->in_use) break;
- if (p_rpt->uuid == GATT_UUID_HID_REPORT)
- rpt_name = "Report";
- if (p_rpt->uuid == GATT_UUID_HID_BT_KB_INPUT)
- rpt_name = "Boot KB Input";
- if (p_rpt->uuid == GATT_UUID_HID_BT_KB_OUTPUT)
- rpt_name = "Boot KB Output";
- if (p_rpt->uuid == GATT_UUID_HID_BT_MOUSE_INPUT)
- rpt_name = "Boot MI Input";
+ if (p_rpt->uuid == GATT_UUID_HID_REPORT) rpt_name = "Report";
+ if (p_rpt->uuid == GATT_UUID_HID_BT_KB_INPUT) rpt_name = "Boot KB Input";
+ if (p_rpt->uuid == GATT_UUID_HID_BT_KB_OUTPUT) rpt_name = "Boot KB Output";
+ if (p_rpt->uuid == GATT_UUID_HID_BT_MOUSE_INPUT) rpt_name = "Boot MI Input";
- APPL_TRACE_DEBUG("\t\t [%s- 0x%04x] [Type: %s], [ReportID: %d] [srvc_inst_id: %d] [char_inst_id: %d] [Clt_cfg: %d]",
- rpt_name,
- p_rpt->uuid ,
- ((p_rpt->rpt_type < 4) ? bta_hh_le_rpt_name[p_rpt->rpt_type] : "UNKNOWN"),
- p_rpt->rpt_id,
- p_rpt->srvc_inst_id,
- p_rpt->char_inst_id,
- p_rpt->client_cfg_value);
- }
+ APPL_TRACE_DEBUG(
+ "\t\t [%s- 0x%04x] [Type: %s], [ReportID: %d] [srvc_inst_id: %d] "
+ "[char_inst_id: %d] [Clt_cfg: %d]",
+ rpt_name, p_rpt->uuid,
+ ((p_rpt->rpt_type < 4) ? bta_hh_le_rpt_name[p_rpt->rpt_type]
+ : "UNKNOWN"),
+ p_rpt->rpt_id, p_rpt->srvc_inst_id, p_rpt->char_inst_id,
+ p_rpt->client_cfg_value);
+ }
}
/*******************************************************************************
@@ -285,35 +278,33 @@
* Returns void
*
******************************************************************************/
-static const char *bta_hh_uuid_to_str(uint16_t uuid)
-{
- switch(uuid)
- {
- case GATT_UUID_HID_INFORMATION:
- return "GATT_UUID_HID_INFORMATION";
- case GATT_UUID_HID_REPORT_MAP:
- return "GATT_UUID_HID_REPORT_MAP";
- case GATT_UUID_HID_CONTROL_POINT:
- return "GATT_UUID_HID_CONTROL_POINT";
- case GATT_UUID_HID_REPORT:
- return "GATT_UUID_HID_REPORT";
- case GATT_UUID_HID_PROTO_MODE:
- return "GATT_UUID_HID_PROTO_MODE";
- case GATT_UUID_HID_BT_KB_INPUT:
- return "GATT_UUID_HID_BT_KB_INPUT";
- case GATT_UUID_HID_BT_KB_OUTPUT:
- return "GATT_UUID_HID_BT_KB_OUTPUT";
- case GATT_UUID_HID_BT_MOUSE_INPUT:
- return "GATT_UUID_HID_BT_MOUSE_INPUT";
- case GATT_UUID_CHAR_CLIENT_CONFIG:
- return "GATT_UUID_CHAR_CLIENT_CONFIG";
- case GATT_UUID_EXT_RPT_REF_DESCR:
- return "GATT_UUID_EXT_RPT_REF_DESCR";
- case GATT_UUID_RPT_REF_DESCR:
- return "GATT_UUID_RPT_REF_DESCR";
- default:
- return "Unknown UUID";
- }
+static const char* bta_hh_uuid_to_str(uint16_t uuid) {
+ switch (uuid) {
+ case GATT_UUID_HID_INFORMATION:
+ return "GATT_UUID_HID_INFORMATION";
+ case GATT_UUID_HID_REPORT_MAP:
+ return "GATT_UUID_HID_REPORT_MAP";
+ case GATT_UUID_HID_CONTROL_POINT:
+ return "GATT_UUID_HID_CONTROL_POINT";
+ case GATT_UUID_HID_REPORT:
+ return "GATT_UUID_HID_REPORT";
+ case GATT_UUID_HID_PROTO_MODE:
+ return "GATT_UUID_HID_PROTO_MODE";
+ case GATT_UUID_HID_BT_KB_INPUT:
+ return "GATT_UUID_HID_BT_KB_INPUT";
+ case GATT_UUID_HID_BT_KB_OUTPUT:
+ return "GATT_UUID_HID_BT_KB_OUTPUT";
+ case GATT_UUID_HID_BT_MOUSE_INPUT:
+ return "GATT_UUID_HID_BT_MOUSE_INPUT";
+ case GATT_UUID_CHAR_CLIENT_CONFIG:
+ return "GATT_UUID_CHAR_CLIENT_CONFIG";
+ case GATT_UUID_EXT_RPT_REF_DESCR:
+ return "GATT_UUID_EXT_RPT_REF_DESCR";
+ case GATT_UUID_RPT_REF_DESCR:
+ return "GATT_UUID_RPT_REF_DESCR";
+ default:
+ return "Unknown UUID";
+ }
}
#endif
@@ -327,25 +318,24 @@
* Returns void
*
******************************************************************************/
-void bta_hh_le_enable(void)
-{
- char app_name[LEN_UUID_128 + 1];
- tBT_UUID app_uuid = {LEN_UUID_128,{0}};
- uint8_t xx;
+void bta_hh_le_enable(void) {
+ char app_name[LEN_UUID_128 + 1];
+ tBT_UUID app_uuid = {LEN_UUID_128, {0}};
+ uint8_t xx;
- bta_hh_cb.gatt_if = BTA_GATTS_INVALID_IF;
+ bta_hh_cb.gatt_if = BTA_GATTS_INVALID_IF;
- for (xx = 0; xx < BTA_HH_MAX_DEVICE; xx ++)
- bta_hh_cb.le_cb_index[xx] = BTA_HH_IDX_INVALID;
+ for (xx = 0; xx < BTA_HH_MAX_DEVICE; xx++)
+ bta_hh_cb.le_cb_index[xx] = BTA_HH_IDX_INVALID;
- memset (app_name, 0, LEN_UUID_128 + 1);
- strncpy(app_name, "BTA HH OVER LE", LEN_UUID_128);
+ memset(app_name, 0, LEN_UUID_128 + 1);
+ strncpy(app_name, "BTA HH OVER LE", LEN_UUID_128);
- memcpy((void *)app_uuid.uu.uuid128, (void *)app_name, LEN_UUID_128);
+ memcpy((void*)app_uuid.uu.uuid128, (void*)app_name, LEN_UUID_128);
- BTA_GATTC_AppRegister(&app_uuid, bta_hh_gattc_callback);
+ BTA_GATTC_AppRegister(&app_uuid, bta_hh_gattc_callback);
- return;
+ return;
}
/*******************************************************************************
@@ -357,20 +347,17 @@
* Parameters:
*
******************************************************************************/
-void bta_hh_le_register_cmpl(tBTA_GATTC_REG *p_reg)
-{
- tBTA_HH_STATUS status = BTA_HH_ERR;
+void bta_hh_le_register_cmpl(tBTA_GATTC_REG* p_reg) {
+ tBTA_HH_STATUS status = BTA_HH_ERR;
- if (p_reg->status == BTA_GATT_OK)
- {
- bta_hh_cb.gatt_if = p_reg->client_if;
- status = BTA_HH_OK;
- }
- else
- bta_hh_cb.gatt_if = BTA_GATTS_INVALID_IF;
+ if (p_reg->status == BTA_GATT_OK) {
+ bta_hh_cb.gatt_if = p_reg->client_if;
+ status = BTA_HH_OK;
+ } else
+ bta_hh_cb.gatt_if = BTA_GATTS_INVALID_IF;
- /* signal BTA call back event */
- (* bta_hh_cb.p_cback)(BTA_HH_ENABLE_EVT, (tBTA_HH *)&status);
+ /* signal BTA call back event */
+ (*bta_hh_cb.p_cback)(BTA_HH_ENABLE_EVT, (tBTA_HH*)&status);
}
/*******************************************************************************
@@ -383,9 +370,8 @@
* Returns whether it is HH GATT IF
*
******************************************************************************/
-bool bta_hh_le_is_hh_gatt_if(tBTA_GATTC_IF client_if)
-{
- return (bta_hh_cb.gatt_if == client_if);
+bool bta_hh_le_is_hh_gatt_if(tBTA_GATTC_IF client_if) {
+ return (bta_hh_cb.gatt_if == client_if);
}
/*******************************************************************************
@@ -398,10 +384,7 @@
* Returns void
*
******************************************************************************/
-void bta_hh_le_deregister(void)
-{
- BTA_GATTC_AppDeregister(bta_hh_cb.gatt_if);
-}
+void bta_hh_le_deregister(void) { BTA_GATTC_AppDeregister(bta_hh_cb.gatt_if); }
/*******************************************************************************
*
@@ -412,11 +395,10 @@
* Parameters:
*
******************************************************************************/
-bool bta_hh_is_le_device(tBTA_HH_DEV_CB *p_cb, BD_ADDR remote_bda)
-{
- p_cb->is_le_device = BTM_UseLeLink (remote_bda);
+bool bta_hh_is_le_device(tBTA_HH_DEV_CB* p_cb, BD_ADDR remote_bda) {
+ p_cb->is_le_device = BTM_UseLeLink(remote_bda);
- return p_cb->is_le_device;
+ return p_cb->is_le_device;
}
/*******************************************************************************
@@ -428,35 +410,32 @@
* Parameters:
*
******************************************************************************/
-void bta_hh_le_open_conn(tBTA_HH_DEV_CB *p_cb, BD_ADDR remote_bda)
-{
- /* update cb_index[] map */
- p_cb->hid_handle = BTA_HH_GET_LE_DEV_HDL(p_cb->index);
- memcpy(p_cb->addr, remote_bda, BD_ADDR_LEN);
- bta_hh_cb.le_cb_index[BTA_HH_GET_LE_CB_IDX(p_cb->hid_handle)] = p_cb->index;
- p_cb->in_use = true;
+void bta_hh_le_open_conn(tBTA_HH_DEV_CB* p_cb, BD_ADDR remote_bda) {
+ /* update cb_index[] map */
+ p_cb->hid_handle = BTA_HH_GET_LE_DEV_HDL(p_cb->index);
+ memcpy(p_cb->addr, remote_bda, BD_ADDR_LEN);
+ bta_hh_cb.le_cb_index[BTA_HH_GET_LE_CB_IDX(p_cb->hid_handle)] = p_cb->index;
+ p_cb->in_use = true;
- BTA_GATTC_Open(bta_hh_cb.gatt_if, remote_bda, true, BTA_GATT_TRANSPORT_LE);
+ BTA_GATTC_Open(bta_hh_cb.gatt_if, remote_bda, true, BTA_GATT_TRANSPORT_LE);
}
/*******************************************************************************
*
* Function bta_hh_le_find_dev_cb_by_conn_id
*
- * Description Utility function find a device control block by connection ID.
+ * Description Utility function find a device control block by connection
+ *ID.
*
******************************************************************************/
-tBTA_HH_DEV_CB * bta_hh_le_find_dev_cb_by_conn_id(uint16_t conn_id)
-{
- uint8_t i;
- tBTA_HH_DEV_CB *p_dev_cb = &bta_hh_cb.kdev[0];
+tBTA_HH_DEV_CB* bta_hh_le_find_dev_cb_by_conn_id(uint16_t conn_id) {
+ uint8_t i;
+ tBTA_HH_DEV_CB* p_dev_cb = &bta_hh_cb.kdev[0];
- for (i = 0; i < BTA_HH_MAX_DEVICE; i ++, p_dev_cb ++)
- {
- if (p_dev_cb->in_use && p_dev_cb->conn_id == conn_id)
- return p_dev_cb;
- }
- return NULL;
+ for (i = 0; i < BTA_HH_MAX_DEVICE; i++, p_dev_cb++) {
+ if (p_dev_cb->in_use && p_dev_cb->conn_id == conn_id) return p_dev_cb;
+ }
+ return NULL;
}
/*******************************************************************************
@@ -466,18 +445,15 @@
* Description Utility function find a device control block by BD address.
*
******************************************************************************/
-tBTA_HH_DEV_CB * bta_hh_le_find_dev_cb_by_bda(BD_ADDR bda)
-{
- uint8_t i;
- tBTA_HH_DEV_CB *p_dev_cb = &bta_hh_cb.kdev[0];
+tBTA_HH_DEV_CB* bta_hh_le_find_dev_cb_by_bda(BD_ADDR bda) {
+ uint8_t i;
+ tBTA_HH_DEV_CB* p_dev_cb = &bta_hh_cb.kdev[0];
- for (i = 0; i < BTA_HH_MAX_DEVICE; i ++, p_dev_cb ++)
- {
- if (p_dev_cb->in_use &&
- memcmp(p_dev_cb->addr, bda, BD_ADDR_LEN) == 0)
- return p_dev_cb;
- }
- return NULL;
+ for (i = 0; i < BTA_HH_MAX_DEVICE; i++, p_dev_cb++) {
+ if (p_dev_cb->in_use && memcmp(p_dev_cb->addr, bda, BD_ADDR_LEN) == 0)
+ return p_dev_cb;
+ }
+ return NULL;
}
/*******************************************************************************
@@ -487,55 +463,46 @@
* Description find HID service instance ID by battery service instance ID
*
******************************************************************************/
-uint8_t bta_hh_le_find_service_inst_by_battery_inst_id(tBTA_HH_DEV_CB *p_cb, uint8_t ba_inst_id)
-{
- if (p_cb->hid_srvc.in_use &&
- p_cb->hid_srvc.incl_srvc_inst == ba_inst_id)
- {
- return p_cb->hid_srvc.srvc_inst_id;
- }
- return BTA_HH_IDX_INVALID;
+uint8_t bta_hh_le_find_service_inst_by_battery_inst_id(tBTA_HH_DEV_CB* p_cb,
+ uint8_t ba_inst_id) {
+ if (p_cb->hid_srvc.in_use && p_cb->hid_srvc.incl_srvc_inst == ba_inst_id) {
+ return p_cb->hid_srvc.srvc_inst_id;
+ }
+ return BTA_HH_IDX_INVALID;
}
/*******************************************************************************
*
* Function bta_hh_le_find_report_entry
*
- * Description find the report entry by service instance and report UUID and
+ * Description find the report entry by service instance and report UUID
+ *and
* instance ID
*
******************************************************************************/
-tBTA_HH_LE_RPT * bta_hh_le_find_report_entry(tBTA_HH_DEV_CB *p_cb,
- uint8_t srvc_inst_id, /* service instance ID */
- uint16_t rpt_uuid,
- uint8_t char_inst_id)
-{
- uint8_t i;
- uint8_t hid_inst_id = srvc_inst_id;
- tBTA_HH_LE_RPT *p_rpt;
+tBTA_HH_LE_RPT* bta_hh_le_find_report_entry(
+ tBTA_HH_DEV_CB* p_cb, uint8_t srvc_inst_id, /* service instance ID */
+ uint16_t rpt_uuid, uint8_t char_inst_id) {
+ uint8_t i;
+ uint8_t hid_inst_id = srvc_inst_id;
+ tBTA_HH_LE_RPT* p_rpt;
- if (rpt_uuid == GATT_UUID_BATTERY_LEVEL)
- {
- hid_inst_id = bta_hh_le_find_service_inst_by_battery_inst_id(p_cb, srvc_inst_id);
+ if (rpt_uuid == GATT_UUID_BATTERY_LEVEL) {
+ hid_inst_id =
+ bta_hh_le_find_service_inst_by_battery_inst_id(p_cb, srvc_inst_id);
- if (hid_inst_id == BTA_HH_IDX_INVALID)
- return NULL;
+ if (hid_inst_id == BTA_HH_IDX_INVALID) return NULL;
+ }
+
+ p_rpt = &p_cb->hid_srvc.report[0];
+
+ for (i = 0; i < BTA_HH_LE_RPT_MAX; i++, p_rpt++) {
+ if (p_rpt->uuid == rpt_uuid && p_rpt->srvc_inst_id == srvc_inst_id &&
+ p_rpt->char_inst_id == char_inst_id) {
+ return p_rpt;
}
-
- p_rpt = &p_cb->hid_srvc.report[0];
-
- for (i = 0; i < BTA_HH_LE_RPT_MAX; i ++, p_rpt ++)
- {
- if (p_rpt->uuid == rpt_uuid &&
- p_rpt->srvc_inst_id == srvc_inst_id &&
- p_rpt->char_inst_id == char_inst_id)
- {
-
- return p_rpt;
- }
- }
- return NULL;
-
+ }
+ return NULL;
}
/*******************************************************************************
@@ -547,121 +514,112 @@
* Returns void
*
******************************************************************************/
-tBTA_HH_LE_RPT * bta_hh_le_find_rpt_by_idtype(tBTA_HH_LE_RPT*p_head, uint8_t mode,
- tBTA_HH_RPT_TYPE r_type, uint8_t rpt_id)
-{
- tBTA_HH_LE_RPT *p_rpt = p_head;
- uint8_t i;
+tBTA_HH_LE_RPT* bta_hh_le_find_rpt_by_idtype(tBTA_HH_LE_RPT* p_head,
+ uint8_t mode,
+ tBTA_HH_RPT_TYPE r_type,
+ uint8_t rpt_id) {
+ tBTA_HH_LE_RPT* p_rpt = p_head;
+ uint8_t i;
#if (BTA_HH_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hh_le_find_rpt_by_idtype: r_type: %d rpt_id: %d", r_type, rpt_id);
+ APPL_TRACE_DEBUG("bta_hh_le_find_rpt_by_idtype: r_type: %d rpt_id: %d",
+ r_type, rpt_id);
#endif
- for (i = 0 ; i < BTA_HH_LE_RPT_MAX; i ++, p_rpt++)
- {
- if (p_rpt->in_use && p_rpt->rpt_id == rpt_id && r_type == p_rpt->rpt_type)
- {
- /* return battery report w/o condition */
- if (p_rpt->uuid == GATT_UUID_BATTERY_LEVEL)
- return p_rpt;
+ for (i = 0; i < BTA_HH_LE_RPT_MAX; i++, p_rpt++) {
+ if (p_rpt->in_use && p_rpt->rpt_id == rpt_id && r_type == p_rpt->rpt_type) {
+ /* return battery report w/o condition */
+ if (p_rpt->uuid == GATT_UUID_BATTERY_LEVEL) return p_rpt;
- if (mode == BTA_HH_PROTO_RPT_MODE && p_rpt->uuid == GATT_UUID_HID_REPORT)
- return p_rpt;
+ if (mode == BTA_HH_PROTO_RPT_MODE && p_rpt->uuid == GATT_UUID_HID_REPORT)
+ return p_rpt;
- if ( mode ==BTA_HH_PROTO_BOOT_MODE &&
- (p_rpt->uuid >= GATT_UUID_HID_BT_KB_INPUT && p_rpt->uuid <= GATT_UUID_HID_BT_MOUSE_INPUT))
- return p_rpt;
- }
+ if (mode == BTA_HH_PROTO_BOOT_MODE &&
+ (p_rpt->uuid >= GATT_UUID_HID_BT_KB_INPUT &&
+ p_rpt->uuid <= GATT_UUID_HID_BT_MOUSE_INPUT))
+ return p_rpt;
}
- return NULL;
+ }
+ return NULL;
}
/*******************************************************************************
*
* Function bta_hh_le_find_alloc_report_entry
*
- * Description find or allocate a report entry in the HID service report list.
+ * Description find or allocate a report entry in the HID service report
+ *list.
*
******************************************************************************/
-tBTA_HH_LE_RPT * bta_hh_le_find_alloc_report_entry(tBTA_HH_DEV_CB *p_cb,
- uint8_t srvc_inst_id,
- uint16_t rpt_uuid,
- uint8_t inst_id)
-{
- uint8_t i, hid_inst_id = srvc_inst_id;
- tBTA_HH_LE_RPT *p_rpt;
+tBTA_HH_LE_RPT* bta_hh_le_find_alloc_report_entry(tBTA_HH_DEV_CB* p_cb,
+ uint8_t srvc_inst_id,
+ uint16_t rpt_uuid,
+ uint8_t inst_id) {
+ uint8_t i, hid_inst_id = srvc_inst_id;
+ tBTA_HH_LE_RPT* p_rpt;
- if (rpt_uuid == GATT_UUID_BATTERY_LEVEL)
- {
- hid_inst_id = bta_hh_le_find_service_inst_by_battery_inst_id(p_cb, srvc_inst_id);
+ if (rpt_uuid == GATT_UUID_BATTERY_LEVEL) {
+ hid_inst_id =
+ bta_hh_le_find_service_inst_by_battery_inst_id(p_cb, srvc_inst_id);
- if (hid_inst_id == BTA_HH_IDX_INVALID)
- return NULL;
- }
- p_rpt = &p_cb->hid_srvc.report[0];
+ if (hid_inst_id == BTA_HH_IDX_INVALID) return NULL;
+ }
+ p_rpt = &p_cb->hid_srvc.report[0];
- for (i = 0; i < BTA_HH_LE_RPT_MAX; i ++, p_rpt ++)
- {
- if (!p_rpt->in_use ||
- (p_rpt->uuid == rpt_uuid &&
- p_rpt->srvc_inst_id == srvc_inst_id &&
- p_rpt->char_inst_id == inst_id))
- {
- if (!p_rpt->in_use)
- {
- p_rpt->in_use = true;
- p_rpt->index = i;
- p_rpt->srvc_inst_id = srvc_inst_id;
- p_rpt->char_inst_id = inst_id;
- p_rpt->uuid = rpt_uuid;
+ for (i = 0; i < BTA_HH_LE_RPT_MAX; i++, p_rpt++) {
+ if (!p_rpt->in_use ||
+ (p_rpt->uuid == rpt_uuid && p_rpt->srvc_inst_id == srvc_inst_id &&
+ p_rpt->char_inst_id == inst_id)) {
+ if (!p_rpt->in_use) {
+ p_rpt->in_use = true;
+ p_rpt->index = i;
+ p_rpt->srvc_inst_id = srvc_inst_id;
+ p_rpt->char_inst_id = inst_id;
+ p_rpt->uuid = rpt_uuid;
- /* assign report type */
- for (i = 0; i < BTA_LE_HID_RTP_UUID_MAX; i ++)
- {
- if (bta_hh_uuid_to_rtp_type[i][0] == rpt_uuid)
- {
- p_rpt->rpt_type = (tBTA_HH_RPT_TYPE)bta_hh_uuid_to_rtp_type[i][1];
+ /* assign report type */
+ for (i = 0; i < BTA_LE_HID_RTP_UUID_MAX; i++) {
+ if (bta_hh_uuid_to_rtp_type[i][0] == rpt_uuid) {
+ p_rpt->rpt_type = (tBTA_HH_RPT_TYPE)bta_hh_uuid_to_rtp_type[i][1];
- if (rpt_uuid == GATT_UUID_HID_BT_KB_INPUT || rpt_uuid == GATT_UUID_HID_BT_KB_OUTPUT)
- p_rpt->rpt_id = BTA_HH_KEYBD_RPT_ID;
+ if (rpt_uuid == GATT_UUID_HID_BT_KB_INPUT ||
+ rpt_uuid == GATT_UUID_HID_BT_KB_OUTPUT)
+ p_rpt->rpt_id = BTA_HH_KEYBD_RPT_ID;
- if (rpt_uuid == GATT_UUID_HID_BT_MOUSE_INPUT)
- p_rpt->rpt_id = BTA_HH_MOUSE_RPT_ID;
+ if (rpt_uuid == GATT_UUID_HID_BT_MOUSE_INPUT)
+ p_rpt->rpt_id = BTA_HH_MOUSE_RPT_ID;
- break;
- }
- }
- }
- return p_rpt;
+ break;
+ }
}
+ }
+ return p_rpt;
}
- return NULL;
+ }
+ return NULL;
}
-static tBTA_GATTC_DESCRIPTOR *find_descriptor_by_short_uuid(uint16_t conn_id,
- uint16_t char_handle,
- uint16_t short_uuid) {
- const tBTA_GATTC_CHARACTERISTIC *p_char =
- BTA_GATTC_GetCharacteristic(conn_id, char_handle);
+static tBTA_GATTC_DESCRIPTOR* find_descriptor_by_short_uuid(
+ uint16_t conn_id, uint16_t char_handle, uint16_t short_uuid) {
+ const tBTA_GATTC_CHARACTERISTIC* p_char =
+ BTA_GATTC_GetCharacteristic(conn_id, char_handle);
- if (!p_char) {
- LOG_WARN(LOG_TAG, "%s No such characteristic: %d", __func__, char_handle);
- return NULL;
- }
-
- if (!p_char->descriptors || list_is_empty(p_char->descriptors))
- return NULL;
-
- for (list_node_t *dn = list_begin(p_char->descriptors);
- dn != list_end(p_char->descriptors); dn = list_next(dn)) {
- tBTA_GATTC_DESCRIPTOR *p_desc = (tBTA_GATTC_DESCRIPTOR*) list_node(dn);
-
- if (p_char->uuid.len == LEN_UUID_16 &&
- p_desc->uuid.uu.uuid16 == short_uuid)
- return p_desc;
- }
-
+ if (!p_char) {
+ LOG_WARN(LOG_TAG, "%s No such characteristic: %d", __func__, char_handle);
return NULL;
+ }
+
+ if (!p_char->descriptors || list_is_empty(p_char->descriptors)) return NULL;
+
+ for (list_node_t* dn = list_begin(p_char->descriptors);
+ dn != list_end(p_char->descriptors); dn = list_next(dn)) {
+ tBTA_GATTC_DESCRIPTOR* p_desc = (tBTA_GATTC_DESCRIPTOR*)list_node(dn);
+
+ if (p_char->uuid.len == LEN_UUID_16 && p_desc->uuid.uu.uuid16 == short_uuid)
+ return p_desc;
+ }
+
+ return NULL;
}
/*******************************************************************************
@@ -671,17 +629,18 @@
* Description read characteristic descriptor
*
******************************************************************************/
-static tBTA_HH_STATUS bta_hh_le_read_char_descriptor(tBTA_HH_DEV_CB *p_cb, uint16_t char_handle,
- uint16_t short_uuid, GATT_READ_OP_CB cb,
- void* cb_data)
-{
- const tBTA_GATTC_DESCRIPTOR *p_desc =
- find_descriptor_by_short_uuid(p_cb->conn_id, char_handle, short_uuid);
- if (!p_desc)
- return BTA_HH_ERR;
+static tBTA_HH_STATUS bta_hh_le_read_char_descriptor(tBTA_HH_DEV_CB* p_cb,
+ uint16_t char_handle,
+ uint16_t short_uuid,
+ GATT_READ_OP_CB cb,
+ void* cb_data) {
+ const tBTA_GATTC_DESCRIPTOR* p_desc =
+ find_descriptor_by_short_uuid(p_cb->conn_id, char_handle, short_uuid);
+ if (!p_desc) return BTA_HH_ERR;
- gatt_queue_read_op(GATT_READ_DESC, p_cb->conn_id, p_desc->handle, cb, cb_data);
- return BTA_HH_OK;
+ gatt_queue_read_op(GATT_READ_DESC, p_cb->conn_id, p_desc->handle, cb,
+ cb_data);
+ return BTA_HH_OK;
}
/*******************************************************************************
@@ -693,48 +652,44 @@
* Parameters:
*
******************************************************************************/
-void bta_hh_le_save_report_ref(tBTA_HH_DEV_CB *p_dev_cb, tBTA_HH_LE_RPT *p_rpt,
- tGATT_STATUS status, uint8_t *value, uint16_t len)
-{
- if (status == BTA_GATT_INSUF_AUTHENTICATION)
- {
- /* close connection right away */
- p_dev_cb->status = BTA_HH_ERR_AUTH_FAILED;
- /* close the connection and report service discovery complete with error */
- bta_hh_le_api_disc_act(p_dev_cb);
- return;
- }
+void bta_hh_le_save_report_ref(tBTA_HH_DEV_CB* p_dev_cb, tBTA_HH_LE_RPT* p_rpt,
+ tGATT_STATUS status, uint8_t* value,
+ uint16_t len) {
+ if (status == BTA_GATT_INSUF_AUTHENTICATION) {
+ /* close connection right away */
+ p_dev_cb->status = BTA_HH_ERR_AUTH_FAILED;
+ /* close the connection and report service discovery complete with error */
+ bta_hh_le_api_disc_act(p_dev_cb);
+ return;
+ }
- /* if the length of the descriptor value is right, parse it */
- if (status == BTA_GATT_OK && len == 2)
- {
- uint8_t *pp = value;
+ /* if the length of the descriptor value is right, parse it */
+ if (status == BTA_GATT_OK && len == 2) {
+ uint8_t* pp = value;
- STREAM_TO_UINT8(p_rpt->rpt_id, pp);
- STREAM_TO_UINT8(p_rpt->rpt_type, pp);
+ STREAM_TO_UINT8(p_rpt->rpt_id, pp);
+ STREAM_TO_UINT8(p_rpt->rpt_type, pp);
- if (p_rpt->rpt_type > BTA_HH_RPTT_FEATURE) /* invalid report type */
- p_rpt->rpt_type = BTA_HH_RPTT_RESRV;
+ if (p_rpt->rpt_type > BTA_HH_RPTT_FEATURE) /* invalid report type */
+ p_rpt->rpt_type = BTA_HH_RPTT_RESRV;
#if (BTA_HH_DEBUG == TRUE)
- APPL_TRACE_DEBUG("%s: report ID: %d", __func__, p_rpt->rpt_id);
+ APPL_TRACE_DEBUG("%s: report ID: %d", __func__, p_rpt->rpt_id);
#endif
- tBTA_HH_RPT_CACHE_ENTRY rpt_entry;
- rpt_entry.rpt_id = p_rpt->rpt_id;
- rpt_entry.rpt_type = p_rpt->rpt_type;
- rpt_entry.rpt_uuid = p_rpt->uuid;
- rpt_entry.srvc_inst_id = p_rpt->srvc_inst_id;
- rpt_entry.char_inst_id = p_rpt->char_inst_id;
+ tBTA_HH_RPT_CACHE_ENTRY rpt_entry;
+ rpt_entry.rpt_id = p_rpt->rpt_id;
+ rpt_entry.rpt_type = p_rpt->rpt_type;
+ rpt_entry.rpt_uuid = p_rpt->uuid;
+ rpt_entry.srvc_inst_id = p_rpt->srvc_inst_id;
+ rpt_entry.char_inst_id = p_rpt->char_inst_id;
- bta_hh_le_co_rpt_info(p_dev_cb->addr,
- &rpt_entry,
- p_dev_cb->app_id);
- }
+ bta_hh_le_co_rpt_info(p_dev_cb->addr, &rpt_entry, p_dev_cb->app_id);
+ }
- if (p_rpt->index < BTA_HH_LE_RPT_MAX - 1)
- p_rpt ++;
- else
- p_rpt = NULL;
+ if (p_rpt->index < BTA_HH_LE_RPT_MAX - 1)
+ p_rpt++;
+ else
+ p_rpt = NULL;
}
/*******************************************************************************
@@ -747,66 +702,59 @@
* Parameters:
*
******************************************************************************/
-void bta_hh_le_register_input_notif(tBTA_HH_DEV_CB *p_dev_cb, uint8_t proto_mode, bool register_ba)
-{
- tBTA_HH_LE_RPT *p_rpt = &p_dev_cb->hid_srvc.report[0];
+void bta_hh_le_register_input_notif(tBTA_HH_DEV_CB* p_dev_cb,
+ uint8_t proto_mode, bool register_ba) {
+ tBTA_HH_LE_RPT* p_rpt = &p_dev_cb->hid_srvc.report[0];
#if (BTA_HH_DEBUG == TRUE)
- APPL_TRACE_DEBUG("%s: bta_hh_le_register_input_notif mode: %d", __func__, proto_mode);
+ APPL_TRACE_DEBUG("%s: bta_hh_le_register_input_notif mode: %d", __func__,
+ proto_mode);
#endif
- for (int i = 0; i < BTA_HH_LE_RPT_MAX; i ++, p_rpt ++)
- {
- if (p_rpt->rpt_type == BTA_HH_RPTT_INPUT)
- {
-
- if (register_ba && p_rpt->uuid == GATT_UUID_BATTERY_LEVEL)
- {
- BTA_GATTC_RegisterForNotifications(bta_hh_cb.gatt_if, p_dev_cb->addr,
- p_rpt->char_inst_id);
- }
- /* boot mode, deregister report input notification */
- else if (proto_mode == BTA_HH_PROTO_BOOT_MODE)
- {
- if (p_rpt->uuid == GATT_UUID_HID_REPORT &&
- p_rpt->client_cfg_value == BTA_GATT_CLT_CONFIG_NOTIFICATION)
- {
- APPL_TRACE_DEBUG("%s ---> Deregister Report ID: %d", __func__, p_rpt->rpt_id);
- BTA_GATTC_DeregisterForNotifications(bta_hh_cb.gatt_if, p_dev_cb->addr,
- p_rpt->char_inst_id);
- }
- /* register boot reports notification */
- else if (p_rpt->uuid == GATT_UUID_HID_BT_KB_INPUT ||
- p_rpt->uuid == GATT_UUID_HID_BT_MOUSE_INPUT)
- {
- APPL_TRACE_DEBUG("%s <--- Register Boot Report ID: %d", __func__, p_rpt->rpt_id);
- BTA_GATTC_RegisterForNotifications(bta_hh_cb.gatt_if, p_dev_cb->addr,
- p_rpt->char_inst_id);
- }
- }
- else if (proto_mode == BTA_HH_PROTO_RPT_MODE)
- {
- if ((p_rpt->uuid == GATT_UUID_HID_BT_KB_INPUT ||
- p_rpt->uuid == GATT_UUID_HID_BT_MOUSE_INPUT) &&
- p_rpt->client_cfg_value == BTA_GATT_CLT_CONFIG_NOTIFICATION)
- {
-
- APPL_TRACE_DEBUG("%s ---> Deregister Boot Report ID: %d", __func__, p_rpt->rpt_id);
- BTA_GATTC_DeregisterForNotifications(bta_hh_cb.gatt_if, p_dev_cb->addr,
- p_rpt->char_inst_id);
- }
- else if (p_rpt->uuid == GATT_UUID_HID_REPORT &&
- p_rpt->client_cfg_value == BTA_GATT_CLT_CONFIG_NOTIFICATION)
- {
- APPL_TRACE_DEBUG("%s <--- Register Report ID: %d", __func__, p_rpt->rpt_id);
- BTA_GATTC_RegisterForNotifications(bta_hh_cb.gatt_if, p_dev_cb->addr,
- p_rpt->char_inst_id);
- }
- }
- /*
- else unknow protocol mode */
+ for (int i = 0; i < BTA_HH_LE_RPT_MAX; i++, p_rpt++) {
+ if (p_rpt->rpt_type == BTA_HH_RPTT_INPUT) {
+ if (register_ba && p_rpt->uuid == GATT_UUID_BATTERY_LEVEL) {
+ BTA_GATTC_RegisterForNotifications(bta_hh_cb.gatt_if, p_dev_cb->addr,
+ p_rpt->char_inst_id);
+ }
+ /* boot mode, deregister report input notification */
+ else if (proto_mode == BTA_HH_PROTO_BOOT_MODE) {
+ if (p_rpt->uuid == GATT_UUID_HID_REPORT &&
+ p_rpt->client_cfg_value == BTA_GATT_CLT_CONFIG_NOTIFICATION) {
+ APPL_TRACE_DEBUG("%s ---> Deregister Report ID: %d", __func__,
+ p_rpt->rpt_id);
+ BTA_GATTC_DeregisterForNotifications(
+ bta_hh_cb.gatt_if, p_dev_cb->addr, p_rpt->char_inst_id);
}
+ /* register boot reports notification */
+ else if (p_rpt->uuid == GATT_UUID_HID_BT_KB_INPUT ||
+ p_rpt->uuid == GATT_UUID_HID_BT_MOUSE_INPUT) {
+ APPL_TRACE_DEBUG("%s <--- Register Boot Report ID: %d", __func__,
+ p_rpt->rpt_id);
+ BTA_GATTC_RegisterForNotifications(bta_hh_cb.gatt_if, p_dev_cb->addr,
+ p_rpt->char_inst_id);
+ }
+ } else if (proto_mode == BTA_HH_PROTO_RPT_MODE) {
+ if ((p_rpt->uuid == GATT_UUID_HID_BT_KB_INPUT ||
+ p_rpt->uuid == GATT_UUID_HID_BT_MOUSE_INPUT) &&
+ p_rpt->client_cfg_value == BTA_GATT_CLT_CONFIG_NOTIFICATION) {
+ APPL_TRACE_DEBUG("%s ---> Deregister Boot Report ID: %d", __func__,
+ p_rpt->rpt_id);
+ BTA_GATTC_DeregisterForNotifications(
+ bta_hh_cb.gatt_if, p_dev_cb->addr, p_rpt->char_inst_id);
+ } else if (p_rpt->uuid == GATT_UUID_HID_REPORT &&
+ p_rpt->client_cfg_value ==
+ BTA_GATT_CLT_CONFIG_NOTIFICATION) {
+ APPL_TRACE_DEBUG("%s <--- Register Report ID: %d", __func__,
+ p_rpt->rpt_id);
+ BTA_GATTC_RegisterForNotifications(bta_hh_cb.gatt_if, p_dev_cb->addr,
+ p_rpt->char_inst_id);
+ }
+ }
+ /*
+ else unknow protocol mode */
}
+ }
}
/*******************************************************************************
@@ -816,34 +764,29 @@
* Description Deregister all notifications
*
******************************************************************************/
-void bta_hh_le_deregister_input_notif(tBTA_HH_DEV_CB *p_dev_cb)
-{
- tBTA_HH_LE_RPT *p_rpt = &p_dev_cb->hid_srvc.report[0];
+void bta_hh_le_deregister_input_notif(tBTA_HH_DEV_CB* p_dev_cb) {
+ tBTA_HH_LE_RPT* p_rpt = &p_dev_cb->hid_srvc.report[0];
- for (uint8_t i = 0; i < BTA_HH_LE_RPT_MAX; i++, p_rpt++)
- {
- if (p_rpt->rpt_type == BTA_HH_RPTT_INPUT)
- {
- if (p_rpt->uuid == GATT_UUID_HID_REPORT &&
- p_rpt->client_cfg_value == BTA_GATT_CLT_CONFIG_NOTIFICATION)
- {
- APPL_TRACE_DEBUG("%s ---> Deregister Report ID: %d", __func__, p_rpt->rpt_id);
- BTA_GATTC_DeregisterForNotifications(bta_hh_cb.gatt_if, p_dev_cb->addr,
- p_rpt->char_inst_id);
- }
- else if ((p_rpt->uuid == GATT_UUID_HID_BT_KB_INPUT ||
- p_rpt->uuid == GATT_UUID_HID_BT_MOUSE_INPUT) &&
- p_rpt->client_cfg_value == BTA_GATT_CLT_CONFIG_NOTIFICATION)
- {
- APPL_TRACE_DEBUG("%s ---> Deregister Boot Report ID: %d", __func__, p_rpt->rpt_id);
- BTA_GATTC_DeregisterForNotifications(bta_hh_cb.gatt_if, p_dev_cb->addr,
- p_rpt->char_inst_id);
- }
- }
+ for (uint8_t i = 0; i < BTA_HH_LE_RPT_MAX; i++, p_rpt++) {
+ if (p_rpt->rpt_type == BTA_HH_RPTT_INPUT) {
+ if (p_rpt->uuid == GATT_UUID_HID_REPORT &&
+ p_rpt->client_cfg_value == BTA_GATT_CLT_CONFIG_NOTIFICATION) {
+ APPL_TRACE_DEBUG("%s ---> Deregister Report ID: %d", __func__,
+ p_rpt->rpt_id);
+ BTA_GATTC_DeregisterForNotifications(bta_hh_cb.gatt_if, p_dev_cb->addr,
+ p_rpt->char_inst_id);
+ } else if ((p_rpt->uuid == GATT_UUID_HID_BT_KB_INPUT ||
+ p_rpt->uuid == GATT_UUID_HID_BT_MOUSE_INPUT) &&
+ p_rpt->client_cfg_value == BTA_GATT_CLT_CONFIG_NOTIFICATION) {
+ APPL_TRACE_DEBUG("%s ---> Deregister Boot Report ID: %d", __func__,
+ p_rpt->rpt_id);
+ BTA_GATTC_DeregisterForNotifications(bta_hh_cb.gatt_if, p_dev_cb->addr,
+ p_rpt->char_inst_id);
+ }
}
+ }
}
-
/*******************************************************************************
*
* Function bta_hh_le_open_cmpl
@@ -851,23 +794,20 @@
* Description HID over GATT connection sucessfully opened
*
******************************************************************************/
-void bta_hh_le_open_cmpl(tBTA_HH_DEV_CB *p_cb)
-{
- if ( p_cb->disc_active == BTA_HH_LE_DISC_NONE)
- {
+void bta_hh_le_open_cmpl(tBTA_HH_DEV_CB* p_cb) {
+ if (p_cb->disc_active == BTA_HH_LE_DISC_NONE) {
#if (BTA_HH_DEBUG == TRUE)
- bta_hh_le_hid_report_dbg(p_cb);
+ bta_hh_le_hid_report_dbg(p_cb);
#endif
- bta_hh_le_register_input_notif(p_cb, p_cb->mode, true);
- bta_hh_sm_execute(p_cb, BTA_HH_OPEN_CMPL_EVT, NULL);
+ bta_hh_le_register_input_notif(p_cb, p_cb->mode, true);
+ bta_hh_sm_execute(p_cb, BTA_HH_OPEN_CMPL_EVT, NULL);
#if (BTA_HH_LE_RECONN == TRUE)
- if (p_cb->status == BTA_HH_OK)
- {
- bta_hh_le_add_dev_bg_conn(p_cb, true);
- }
-#endif
+ if (p_cb->status == BTA_HH_OK) {
+ bta_hh_le_add_dev_bg_conn(p_cb, true);
}
+#endif
+ }
}
/*******************************************************************************
@@ -878,56 +818,54 @@
* a characteristic
*
******************************************************************************/
-bool bta_hh_le_write_ccc(tBTA_HH_DEV_CB *p_cb,
- uint8_t char_handle,
- uint16_t clt_cfg_value,
- GATT_WRITE_OP_CB cb,
- void* cb_data)
-{
- tBTA_GATTC_DESCRIPTOR *p_desc = find_descriptor_by_short_uuid(p_cb->conn_id,
- char_handle, GATT_UUID_CHAR_CLIENT_CONFIG);
- if (!p_desc)
- return false;
+bool bta_hh_le_write_ccc(tBTA_HH_DEV_CB* p_cb, uint8_t char_handle,
+ uint16_t clt_cfg_value, GATT_WRITE_OP_CB cb,
+ void* cb_data) {
+ tBTA_GATTC_DESCRIPTOR* p_desc = find_descriptor_by_short_uuid(
+ p_cb->conn_id, char_handle, GATT_UUID_CHAR_CLIENT_CONFIG);
+ if (!p_desc) return false;
- vector<uint8_t> value(2);
- uint8_t* ptr = value.data();
- UINT16_TO_STREAM(ptr, clt_cfg_value);
+ vector<uint8_t> value(2);
+ uint8_t* ptr = value.data();
+ UINT16_TO_STREAM(ptr, clt_cfg_value);
- gatt_queue_write_op(GATT_WRITE_DESC, p_cb->conn_id, p_desc->handle,
- std::move(value), BTA_GATTC_TYPE_WRITE, cb, cb_data);
- return true;
+ gatt_queue_write_op(GATT_WRITE_DESC, p_cb->conn_id, p_desc->handle,
+ std::move(value), BTA_GATTC_TYPE_WRITE, cb, cb_data);
+ return true;
}
-bool bta_hh_le_write_rpt_clt_cfg(tBTA_HH_DEV_CB *p_cb);
+bool bta_hh_le_write_rpt_clt_cfg(tBTA_HH_DEV_CB* p_cb);
-static void write_rpt_ctl_cfg_cb(uint16_t conn_id, tGATT_STATUS status, uint16_t handle, void* data) {
- uint8_t srvc_inst_id, hid_inst_id;
+static void write_rpt_ctl_cfg_cb(uint16_t conn_id, tGATT_STATUS status,
+ uint16_t handle, void* data) {
+ uint8_t srvc_inst_id, hid_inst_id;
- tBTA_HH_DEV_CB *p_dev_cb = (tBTA_HH_DEV_CB*)data;
- const tBTA_GATTC_DESCRIPTOR *p_desc = BTA_GATTC_GetDescriptor(conn_id, handle);
+ tBTA_HH_DEV_CB* p_dev_cb = (tBTA_HH_DEV_CB*)data;
+ const tBTA_GATTC_DESCRIPTOR* p_desc =
+ BTA_GATTC_GetDescriptor(conn_id, handle);
- uint16_t char_uuid = p_desc->characteristic->uuid.uu.uuid16;
+ uint16_t char_uuid = p_desc->characteristic->uuid.uu.uuid16;
- srvc_inst_id = p_desc->characteristic->service->handle;
- hid_inst_id = srvc_inst_id;
- switch (char_uuid)
- {
+ srvc_inst_id = p_desc->characteristic->service->handle;
+ hid_inst_id = srvc_inst_id;
+ switch (char_uuid) {
case GATT_UUID_BATTERY_LEVEL: /* battery level clt cfg registered */
- hid_inst_id = bta_hh_le_find_service_inst_by_battery_inst_id(p_dev_cb, srvc_inst_id);
- /* FALLTHROUGH */
+ hid_inst_id = bta_hh_le_find_service_inst_by_battery_inst_id(
+ p_dev_cb, srvc_inst_id);
+ /* FALLTHROUGH */
case GATT_UUID_HID_BT_KB_INPUT:
case GATT_UUID_HID_BT_MOUSE_INPUT:
case GATT_UUID_HID_REPORT:
- if (status == BTA_GATT_OK)
- p_dev_cb->hid_srvc.report[p_dev_cb->clt_cfg_idx].client_cfg_value =
- BTA_GATT_CLT_CONFIG_NOTIFICATION;
- p_dev_cb->clt_cfg_idx ++;
- bta_hh_le_write_rpt_clt_cfg(p_dev_cb);
- break;
+ if (status == BTA_GATT_OK)
+ p_dev_cb->hid_srvc.report[p_dev_cb->clt_cfg_idx].client_cfg_value =
+ BTA_GATT_CLT_CONFIG_NOTIFICATION;
+ p_dev_cb->clt_cfg_idx++;
+ bta_hh_le_write_rpt_clt_cfg(p_dev_cb);
+ break;
default:
- APPL_TRACE_ERROR("Unknown char ID clt cfg: 0x%04x", char_uuid);
- }
+ APPL_TRACE_ERROR("Unknown char ID clt cfg: 0x%04x", char_uuid);
+ }
}
/*******************************************************************************
*
@@ -937,63 +875,59 @@
* enable all input notification upon connection open.
*
******************************************************************************/
-bool bta_hh_le_write_rpt_clt_cfg(tBTA_HH_DEV_CB *p_cb)
-{
- uint8_t i;
- tBTA_HH_LE_RPT *p_rpt = &p_cb->hid_srvc.report[p_cb->clt_cfg_idx];
+bool bta_hh_le_write_rpt_clt_cfg(tBTA_HH_DEV_CB* p_cb) {
+ uint8_t i;
+ tBTA_HH_LE_RPT* p_rpt = &p_cb->hid_srvc.report[p_cb->clt_cfg_idx];
- for (i = p_cb->clt_cfg_idx; i < BTA_HH_LE_RPT_MAX && p_rpt->in_use; i ++, p_rpt ++)
- {
- /* enable notification for all input report, regardless mode */
- if (p_rpt->rpt_type == BTA_HH_RPTT_INPUT)
- {
- if (bta_hh_le_write_ccc(p_cb, p_rpt->char_inst_id,
- BTA_GATT_CLT_CONFIG_NOTIFICATION,
- write_rpt_ctl_cfg_cb, p_cb))
- {
- p_cb->clt_cfg_idx = i;
- return true;
- }
- }
+ for (i = p_cb->clt_cfg_idx; i < BTA_HH_LE_RPT_MAX && p_rpt->in_use;
+ i++, p_rpt++) {
+ /* enable notification for all input report, regardless mode */
+ if (p_rpt->rpt_type == BTA_HH_RPTT_INPUT) {
+ if (bta_hh_le_write_ccc(p_cb, p_rpt->char_inst_id,
+ BTA_GATT_CLT_CONFIG_NOTIFICATION,
+ write_rpt_ctl_cfg_cb, p_cb)) {
+ p_cb->clt_cfg_idx = i;
+ return true;
+ }
}
- p_cb->clt_cfg_idx = 0;
+ }
+ p_cb->clt_cfg_idx = 0;
- /* client configuration is completed, send open callback */
- if (p_cb->state == BTA_HH_W4_CONN_ST)
- {
- p_cb->disc_active &= ~BTA_HH_LE_DISC_HIDS;
+ /* client configuration is completed, send open callback */
+ if (p_cb->state == BTA_HH_W4_CONN_ST) {
+ p_cb->disc_active &= ~BTA_HH_LE_DISC_HIDS;
- bta_hh_le_open_cmpl(p_cb);
- }
- return false;
+ bta_hh_le_open_cmpl(p_cb);
+ }
+ return false;
}
-static void write_proto_mode_cb(uint16_t conn_id, tGATT_STATUS status, uint16_t handle, void* data) {
- tBTA_HH_DEV_CB *p_dev_cb = (tBTA_HH_DEV_CB*) data;
+static void write_proto_mode_cb(uint16_t conn_id, tGATT_STATUS status,
+ uint16_t handle, void* data) {
+ tBTA_HH_DEV_CB* p_dev_cb = (tBTA_HH_DEV_CB*)data;
- if (p_dev_cb->state == BTA_HH_CONN_ST) {
- /* Set protocol finished in CONN state*/
+ if (p_dev_cb->state == BTA_HH_CONN_ST) {
+ /* Set protocol finished in CONN state*/
- uint16_t cb_evt = p_dev_cb->w4_evt;
- if (cb_evt == 0)
- return;
+ uint16_t cb_evt = p_dev_cb->w4_evt;
+ if (cb_evt == 0) return;
- tBTA_HH_CBDATA cback_data;
+ tBTA_HH_CBDATA cback_data;
- cback_data.handle = p_dev_cb->hid_handle;
- cback_data.status = (status == BTA_GATT_OK) ? BTA_HH_OK : BTA_HH_ERR;
+ cback_data.handle = p_dev_cb->hid_handle;
+ cback_data.status = (status == BTA_GATT_OK) ? BTA_HH_OK : BTA_HH_ERR;
- if (status == BTA_GATT_OK)
- bta_hh_le_register_input_notif(p_dev_cb, p_dev_cb->mode, false);
+ if (status == BTA_GATT_OK)
+ bta_hh_le_register_input_notif(p_dev_cb, p_dev_cb->mode, false);
- p_dev_cb->w4_evt = 0;
- (* bta_hh_cb.p_cback)(cb_evt, (tBTA_HH *)&cback_data);
- } else if (p_dev_cb->state == BTA_HH_W4_CONN_ST) {
- p_dev_cb->status = (status == BTA_GATT_OK) ? BTA_HH_OK : BTA_HH_ERR_PROTO;
+ p_dev_cb->w4_evt = 0;
+ (*bta_hh_cb.p_cback)(cb_evt, (tBTA_HH*)&cback_data);
+ } else if (p_dev_cb->state == BTA_HH_W4_CONN_ST) {
+ p_dev_cb->status = (status == BTA_GATT_OK) ? BTA_HH_OK : BTA_HH_ERR_PROTO;
- if ((p_dev_cb->disc_active & BTA_HH_LE_DISC_HIDS) == 0)
- bta_hh_le_open_cmpl(p_dev_cb);
- }
+ if ((p_dev_cb->disc_active & BTA_HH_LE_DISC_HIDS) == 0)
+ bta_hh_le_open_cmpl(p_dev_cb);
+ }
}
/*******************************************************************************
@@ -1003,85 +937,87 @@
* Description Set remote device protocol mode.
*
******************************************************************************/
-bool bta_hh_le_set_protocol_mode(tBTA_HH_DEV_CB *p_cb, tBTA_HH_PROTO_MODE mode)
-{
- tBTA_HH_CBDATA cback_data;
+bool bta_hh_le_set_protocol_mode(tBTA_HH_DEV_CB* p_cb,
+ tBTA_HH_PROTO_MODE mode) {
+ tBTA_HH_CBDATA cback_data;
- APPL_TRACE_DEBUG("%s attempt mode: %s", __func__,
- (mode == BTA_HH_PROTO_RPT_MODE)? "Report": "Boot");
+ APPL_TRACE_DEBUG("%s attempt mode: %s", __func__,
+ (mode == BTA_HH_PROTO_RPT_MODE) ? "Report" : "Boot");
- cback_data.handle = p_cb->hid_handle;
- /* boot mode is not supported in the remote device */
- if (p_cb->hid_srvc.proto_mode_handle == 0)
- {
- p_cb->mode = BTA_HH_PROTO_RPT_MODE;
+ cback_data.handle = p_cb->hid_handle;
+ /* boot mode is not supported in the remote device */
+ if (p_cb->hid_srvc.proto_mode_handle == 0) {
+ p_cb->mode = BTA_HH_PROTO_RPT_MODE;
- if (mode == BTA_HH_PROTO_BOOT_MODE)
- {
- APPL_TRACE_ERROR("Set Boot Mode failed!! No PROTO_MODE Char!");
- cback_data.status = BTA_HH_ERR;
- }
- else
- {
- /* if set to report mode, need to de-register all input report notification */
- bta_hh_le_register_input_notif(p_cb, p_cb->mode, false);
- cback_data.status = BTA_HH_OK;
- }
- if (p_cb->state == BTA_HH_W4_CONN_ST)
- {
- p_cb->status = (cback_data.status == BTA_HH_OK)? BTA_HH_OK: BTA_HH_ERR_PROTO;
- }
- else
- (* bta_hh_cb.p_cback)(BTA_HH_SET_PROTO_EVT, (tBTA_HH *)&cback_data);
- } else if (p_cb->mode != mode) {
- p_cb->mode = mode;
- mode = (mode == BTA_HH_PROTO_BOOT_MODE)? BTA_HH_LE_PROTO_BOOT_MODE : BTA_HH_LE_PROTO_REPORT_MODE;
-
- gatt_queue_write_op(GATT_WRITE_CHAR, p_cb->conn_id, p_cb->hid_srvc.proto_mode_handle,
- { mode }, BTA_GATTC_TYPE_WRITE_NO_RSP, write_proto_mode_cb, p_cb);
- return true;
+ if (mode == BTA_HH_PROTO_BOOT_MODE) {
+ APPL_TRACE_ERROR("Set Boot Mode failed!! No PROTO_MODE Char!");
+ cback_data.status = BTA_HH_ERR;
+ } else {
+ /* if set to report mode, need to de-register all input report
+ * notification */
+ bta_hh_le_register_input_notif(p_cb, p_cb->mode, false);
+ cback_data.status = BTA_HH_OK;
}
+ if (p_cb->state == BTA_HH_W4_CONN_ST) {
+ p_cb->status =
+ (cback_data.status == BTA_HH_OK) ? BTA_HH_OK : BTA_HH_ERR_PROTO;
+ } else
+ (*bta_hh_cb.p_cback)(BTA_HH_SET_PROTO_EVT, (tBTA_HH*)&cback_data);
+ } else if (p_cb->mode != mode) {
+ p_cb->mode = mode;
+ mode = (mode == BTA_HH_PROTO_BOOT_MODE) ? BTA_HH_LE_PROTO_BOOT_MODE
+ : BTA_HH_LE_PROTO_REPORT_MODE;
- return false;
+ gatt_queue_write_op(GATT_WRITE_CHAR, p_cb->conn_id,
+ p_cb->hid_srvc.proto_mode_handle, {mode},
+ BTA_GATTC_TYPE_WRITE_NO_RSP, write_proto_mode_cb, p_cb);
+ return true;
+ }
+
+ return false;
}
/*******************************************************************************
* Function get_protocol_mode_cb
*
- * Description Process the Read protocol mode, send GET_PROTO_EVT to application
+ * Description Process the Read protocol mode, send GET_PROTO_EVT to
+ *application
* with the protocol mode.
*
******************************************************************************/
-static void get_protocol_mode_cb(uint16_t conn_id, tGATT_STATUS status, uint16_t handle, uint16_t len,
- uint8_t *value, void* data) {
- tBTA_HH_DEV_CB *p_dev_cb = (tBTA_HH_DEV_CB *)data;
- tBTA_HH_HSDATA hs_data;
+static void get_protocol_mode_cb(uint16_t conn_id, tGATT_STATUS status,
+ uint16_t handle, uint16_t len, uint8_t* value,
+ void* data) {
+ tBTA_HH_DEV_CB* p_dev_cb = (tBTA_HH_DEV_CB*)data;
+ tBTA_HH_HSDATA hs_data;
- hs_data.status = BTA_HH_ERR;
- hs_data.handle = p_dev_cb->hid_handle;
- hs_data.rsp_data.proto_mode = p_dev_cb->mode;
+ hs_data.status = BTA_HH_ERR;
+ hs_data.handle = p_dev_cb->hid_handle;
+ hs_data.rsp_data.proto_mode = p_dev_cb->mode;
- if (status == BTA_GATT_OK && len)
- {
- hs_data.status = BTA_HH_OK;
- /* match up BTE/BTA report/boot mode def*/
- hs_data.rsp_data.proto_mode = *(value);
- /* LE repot mode is the opposite value of BR/EDR report mode, flip it here */
- if (hs_data.rsp_data.proto_mode == 0)
- hs_data.rsp_data.proto_mode = BTA_HH_PROTO_BOOT_MODE;
- else
- hs_data.rsp_data.proto_mode = BTA_HH_PROTO_RPT_MODE;
+ if (status == BTA_GATT_OK && len) {
+ hs_data.status = BTA_HH_OK;
+ /* match up BTE/BTA report/boot mode def*/
+ hs_data.rsp_data.proto_mode = *(value);
+ /* LE repot mode is the opposite value of BR/EDR report mode, flip it here
+ */
+ if (hs_data.rsp_data.proto_mode == 0)
+ hs_data.rsp_data.proto_mode = BTA_HH_PROTO_BOOT_MODE;
+ else
+ hs_data.rsp_data.proto_mode = BTA_HH_PROTO_RPT_MODE;
- p_dev_cb->mode = hs_data.rsp_data.proto_mode;
- }
+ p_dev_cb->mode = hs_data.rsp_data.proto_mode;
+ }
#if (BTA_HH_DEBUG == TRUE)
- APPL_TRACE_DEBUG("LE GET_PROTOCOL Mode = [%s]",
- (hs_data.rsp_data.proto_mode == BTA_HH_PROTO_RPT_MODE)? "Report" : "Boot");
+ APPL_TRACE_DEBUG("LE GET_PROTOCOL Mode = [%s]",
+ (hs_data.rsp_data.proto_mode == BTA_HH_PROTO_RPT_MODE)
+ ? "Report"
+ : "Boot");
#endif
- p_dev_cb->w4_evt = 0;
- (* bta_hh_cb.p_cback)(BTA_HH_GET_PROTO_EVT, (tBTA_HH *)&hs_data);
+ p_dev_cb->w4_evt = 0;
+ (*bta_hh_cb.p_cback)(BTA_HH_GET_PROTO_EVT, (tBTA_HH*)&hs_data);
}
/*******************************************************************************
@@ -1091,23 +1027,23 @@
* Description Get remote device protocol mode.
*
******************************************************************************/
-void bta_hh_le_get_protocol_mode(tBTA_HH_DEV_CB *p_cb)
-{
- tBTA_HH_HSDATA hs_data;
- p_cb->w4_evt = BTA_HH_GET_PROTO_EVT;
+void bta_hh_le_get_protocol_mode(tBTA_HH_DEV_CB* p_cb) {
+ tBTA_HH_HSDATA hs_data;
+ p_cb->w4_evt = BTA_HH_GET_PROTO_EVT;
- if (p_cb->hid_srvc.in_use && p_cb->hid_srvc.proto_mode_handle != 0) {
- gatt_queue_read_op(GATT_READ_CHAR, p_cb->conn_id, p_cb->hid_srvc.proto_mode_handle,
- get_protocol_mode_cb, p_cb);
- return;
- }
+ if (p_cb->hid_srvc.in_use && p_cb->hid_srvc.proto_mode_handle != 0) {
+ gatt_queue_read_op(GATT_READ_CHAR, p_cb->conn_id,
+ p_cb->hid_srvc.proto_mode_handle, get_protocol_mode_cb,
+ p_cb);
+ return;
+ }
- /* no service support protocol_mode, by default report mode */
- hs_data.status = BTA_HH_OK;
- hs_data.handle = p_cb->hid_handle;
- hs_data.rsp_data.proto_mode = BTA_HH_PROTO_RPT_MODE;
- p_cb->w4_evt = 0;
- (* bta_hh_cb.p_cback)(BTA_HH_GET_PROTO_EVT, (tBTA_HH *)&hs_data);
+ /* no service support protocol_mode, by default report mode */
+ hs_data.status = BTA_HH_OK;
+ hs_data.handle = p_cb->hid_handle;
+ hs_data.rsp_data.proto_mode = BTA_HH_PROTO_RPT_MODE;
+ p_cb->w4_evt = 0;
+ (*bta_hh_cb.p_cback)(BTA_HH_GET_PROTO_EVT, (tBTA_HH*)&hs_data);
}
/*******************************************************************************
@@ -1119,65 +1055,60 @@
* Parameters:
*
******************************************************************************/
-void bta_hh_le_dis_cback(BD_ADDR addr, tDIS_VALUE *p_dis_value)
-{
- tBTA_HH_DEV_CB *p_cb = bta_hh_le_find_dev_cb_by_bda(addr);
+void bta_hh_le_dis_cback(BD_ADDR addr, tDIS_VALUE* p_dis_value) {
+ tBTA_HH_DEV_CB* p_cb = bta_hh_le_find_dev_cb_by_bda(addr);
+ if (p_cb == NULL || p_dis_value == NULL) {
+ APPL_TRACE_ERROR("received unexpected/error DIS callback");
+ return;
+ }
- if (p_cb == NULL || p_dis_value == NULL)
- {
- APPL_TRACE_ERROR("received unexpected/error DIS callback");
- return;
- }
-
- p_cb->disc_active &= ~BTA_HH_LE_DISC_DIS;
- /* plug in the PnP info for this device */
- if (p_dis_value->attr_mask & DIS_ATTR_PNP_ID_BIT)
- {
+ p_cb->disc_active &= ~BTA_HH_LE_DISC_DIS;
+ /* plug in the PnP info for this device */
+ if (p_dis_value->attr_mask & DIS_ATTR_PNP_ID_BIT) {
#if (BTA_HH_DEBUG == TRUE)
- APPL_TRACE_DEBUG("Plug in PnP info: product_id = %02x, vendor_id = %04x, version = %04x",
- p_dis_value->pnp_id.product_id,
- p_dis_value->pnp_id.vendor_id,
- p_dis_value->pnp_id.product_version);
+ APPL_TRACE_DEBUG(
+ "Plug in PnP info: product_id = %02x, vendor_id = %04x, version = %04x",
+ p_dis_value->pnp_id.product_id, p_dis_value->pnp_id.vendor_id,
+ p_dis_value->pnp_id.product_version);
#endif
- p_cb->dscp_info.product_id = p_dis_value->pnp_id.product_id;
- p_cb->dscp_info.vendor_id = p_dis_value->pnp_id.vendor_id;
- p_cb->dscp_info.version = p_dis_value->pnp_id.product_version;
- }
- bta_hh_le_open_cmpl(p_cb);
+ p_cb->dscp_info.product_id = p_dis_value->pnp_id.product_id;
+ p_cb->dscp_info.vendor_id = p_dis_value->pnp_id.vendor_id;
+ p_cb->dscp_info.version = p_dis_value->pnp_id.product_version;
+ }
+ bta_hh_le_open_cmpl(p_cb);
}
/*******************************************************************************
*
* Function bta_hh_le_pri_service_discovery
*
- * Description Initialize GATT discovery on the remote LE HID device by opening
+ * Description Initialize GATT discovery on the remote LE HID device by
+ *opening
* a GATT connection first.
*
* Parameters:
*
******************************************************************************/
-void bta_hh_le_pri_service_discovery(tBTA_HH_DEV_CB *p_cb)
-{
- tBT_UUID pri_srvc;
+void bta_hh_le_pri_service_discovery(tBTA_HH_DEV_CB* p_cb) {
+ tBT_UUID pri_srvc;
- bta_hh_le_co_reset_rpt_cache(p_cb->addr, p_cb->app_id);
+ bta_hh_le_co_reset_rpt_cache(p_cb->addr, p_cb->app_id);
- p_cb->disc_active |= (BTA_HH_LE_DISC_HIDS|BTA_HH_LE_DISC_DIS);
+ p_cb->disc_active |= (BTA_HH_LE_DISC_HIDS | BTA_HH_LE_DISC_DIS);
- /* read DIS info */
- if (!DIS_ReadDISInfo(p_cb->addr, bta_hh_le_dis_cback, DIS_ATTR_PNP_ID_BIT))
- {
- APPL_TRACE_ERROR("read DIS failed");
- p_cb->disc_active &= ~BTA_HH_LE_DISC_DIS;
- }
+ /* read DIS info */
+ if (!DIS_ReadDISInfo(p_cb->addr, bta_hh_le_dis_cback, DIS_ATTR_PNP_ID_BIT)) {
+ APPL_TRACE_ERROR("read DIS failed");
+ p_cb->disc_active &= ~BTA_HH_LE_DISC_DIS;
+ }
- /* in parallel */
- /* start primary service discovery for HID service */
- pri_srvc.len = LEN_UUID_16;
- pri_srvc.uu.uuid16 = UUID_SERVCLASS_LE_HID;
- BTA_GATTC_ServiceSearchRequest(p_cb->conn_id, &pri_srvc);
- return;
+ /* in parallel */
+ /* start primary service discovery for HID service */
+ pri_srvc.len = LEN_UUID_16;
+ pri_srvc.uu.uuid16 = UUID_SERVCLASS_LE_HID;
+ BTA_GATTC_ServiceSearchRequest(p_cb->conn_id, &pri_srvc);
+ return;
}
/*******************************************************************************
@@ -1189,23 +1120,22 @@
* Returns None
*
******************************************************************************/
-void bta_hh_le_encrypt_cback(BD_ADDR bd_addr, UNUSED_ATTR tBTA_GATT_TRANSPORT transport,
- UNUSED_ATTR void *p_ref_data, tBTM_STATUS result)
-{
- uint8_t idx = bta_hh_find_cb(bd_addr);
- tBTA_HH_DEV_CB *p_dev_cb;
+void bta_hh_le_encrypt_cback(BD_ADDR bd_addr,
+ UNUSED_ATTR tBTA_GATT_TRANSPORT transport,
+ UNUSED_ATTR void* p_ref_data, tBTM_STATUS result) {
+ uint8_t idx = bta_hh_find_cb(bd_addr);
+ tBTA_HH_DEV_CB* p_dev_cb;
- if (idx != BTA_HH_IDX_INVALID)
- p_dev_cb = &bta_hh_cb.kdev[idx];
- else
- {
- APPL_TRACE_ERROR("unexpected encryption callback, ignore");
- return;
- }
- p_dev_cb->status = (result == BTM_SUCCESS) ? BTA_HH_OK : BTA_HH_ERR_SEC;
- p_dev_cb->reason = result;
+ if (idx != BTA_HH_IDX_INVALID)
+ p_dev_cb = &bta_hh_cb.kdev[idx];
+ else {
+ APPL_TRACE_ERROR("unexpected encryption callback, ignore");
+ return;
+ }
+ p_dev_cb->status = (result == BTM_SUCCESS) ? BTA_HH_OK : BTA_HH_ERR_SEC;
+ p_dev_cb->reason = result;
- bta_hh_sm_execute(p_dev_cb, BTA_HH_ENC_CMPL_EVT, NULL);
+ bta_hh_sm_execute(p_dev_cb, BTA_HH_ENC_CMPL_EVT, NULL);
}
/*******************************************************************************
@@ -1213,54 +1143,48 @@
* Function bta_hh_security_cmpl
*
* Description Security check completed, start the service discovery
- * if no cache available, otherwise report connection open completed
+ * if no cache available, otherwise report connection open
+ *completed
*
* Parameters:
*
******************************************************************************/
-void bta_hh_security_cmpl(tBTA_HH_DEV_CB *p_cb,
- UNUSED_ATTR tBTA_HH_DATA *p_buf)
-{
- APPL_TRACE_DEBUG("%s", __func__);
- if (p_cb->status == BTA_HH_OK)
- {
- if (!p_cb->hid_srvc.in_use)
- {
- APPL_TRACE_DEBUG("bta_hh_security_cmpl no reports loaded, try to load");
+void bta_hh_security_cmpl(tBTA_HH_DEV_CB* p_cb,
+ UNUSED_ATTR tBTA_HH_DATA* p_buf) {
+ APPL_TRACE_DEBUG("%s", __func__);
+ if (p_cb->status == BTA_HH_OK) {
+ if (!p_cb->hid_srvc.in_use) {
+ APPL_TRACE_DEBUG("bta_hh_security_cmpl no reports loaded, try to load");
- /* start loading the cache if not in stack */
- //TODO(jpawlowski): cache storage is broken, fix it
- // tBTA_HH_RPT_CACHE_ENTRY *p_rpt_cache;
- // uint8_t num_rpt = 0;
- // if ((p_rpt_cache = bta_hh_le_co_cache_load(p_cb->addr, &num_rpt, p_cb->app_id)) != NULL)
- // {
- // bta_hh_process_cache_rpt(p_cb, p_rpt_cache, num_rpt);
- // }
- }
- /* discovery has been done for HID service */
- if (p_cb->app_id != 0 && p_cb->hid_srvc.in_use)
- {
- APPL_TRACE_DEBUG("%s: discovery has been done for HID service", __func__);
- /* configure protocol mode */
- if (bta_hh_le_set_protocol_mode(p_cb, p_cb->mode) == false)
- {
- bta_hh_le_open_cmpl(p_cb);
- }
- }
- /* start primary service discovery for HID service */
- else
- {
- APPL_TRACE_DEBUG("%s: Starting service discovery", __func__);
- bta_hh_le_pri_service_discovery(p_cb);
- }
+ /* start loading the cache if not in stack */
+ // TODO(jpawlowski): cache storage is broken, fix it
+ // tBTA_HH_RPT_CACHE_ENTRY *p_rpt_cache;
+ // uint8_t num_rpt = 0;
+ // if ((p_rpt_cache = bta_hh_le_co_cache_load(p_cb->addr, &num_rpt,
+ // p_cb->app_id)) != NULL)
+ // {
+ // bta_hh_process_cache_rpt(p_cb, p_rpt_cache, num_rpt);
+ // }
}
- else
- {
- APPL_TRACE_ERROR("%s() - encryption failed; status=0x%04x, reason=0x%04x",
- __func__, p_cb->status, p_cb->reason);
- if (!(p_cb->status == BTA_HH_ERR_SEC && p_cb->reason == BTM_ERR_PROCESSING))
- bta_hh_le_api_disc_act(p_cb);
+ /* discovery has been done for HID service */
+ if (p_cb->app_id != 0 && p_cb->hid_srvc.in_use) {
+ APPL_TRACE_DEBUG("%s: discovery has been done for HID service", __func__);
+ /* configure protocol mode */
+ if (bta_hh_le_set_protocol_mode(p_cb, p_cb->mode) == false) {
+ bta_hh_le_open_cmpl(p_cb);
+ }
}
+ /* start primary service discovery for HID service */
+ else {
+ APPL_TRACE_DEBUG("%s: Starting service discovery", __func__);
+ bta_hh_le_pri_service_discovery(p_cb);
+ }
+ } else {
+ APPL_TRACE_ERROR("%s() - encryption failed; status=0x%04x, reason=0x%04x",
+ __func__, p_cb->status, p_cb->reason);
+ if (!(p_cb->status == BTA_HH_ERR_SEC && p_cb->reason == BTM_ERR_PROCESSING))
+ bta_hh_le_api_disc_act(p_cb);
+ }
}
/*******************************************************************************
@@ -1272,16 +1196,14 @@
* Returns
*
******************************************************************************/
-void bta_hh_le_notify_enc_cmpl(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_buf)
-{
- if (p_cb == NULL || p_cb->security_pending == false ||
- p_buf == NULL || p_buf->le_enc_cmpl.client_if != bta_hh_cb.gatt_if)
- {
- return;
- }
+void bta_hh_le_notify_enc_cmpl(tBTA_HH_DEV_CB* p_cb, tBTA_HH_DATA* p_buf) {
+ if (p_cb == NULL || p_cb->security_pending == false || p_buf == NULL ||
+ p_buf->le_enc_cmpl.client_if != bta_hh_cb.gatt_if) {
+ return;
+ }
- p_cb->security_pending = false;
- bta_hh_start_security(p_cb, NULL);
+ p_cb->security_pending = false;
+ bta_hh_start_security(p_cb, NULL);
}
/*******************************************************************************
@@ -1293,15 +1215,14 @@
* Parameters:
*
******************************************************************************/
-void bta_hh_clear_service_cache(tBTA_HH_DEV_CB *p_cb)
-{
- tBTA_HH_LE_HID_SRVC *p_hid_srvc = &p_cb->hid_srvc;
+void bta_hh_clear_service_cache(tBTA_HH_DEV_CB* p_cb) {
+ tBTA_HH_LE_HID_SRVC* p_hid_srvc = &p_cb->hid_srvc;
- p_cb->app_id = 0;
- p_cb->dscp_info.descriptor.dsc_list = NULL;
+ p_cb->app_id = 0;
+ p_cb->dscp_info.descriptor.dsc_list = NULL;
- osi_free_and_reset((void **)&p_hid_srvc->rpt_map);
- memset(p_hid_srvc, 0, sizeof(tBTA_HH_LE_HID_SRVC));
+ osi_free_and_reset((void**)&p_hid_srvc->rpt_map);
+ memset(p_hid_srvc, 0, sizeof(tBTA_HH_LE_HID_SRVC));
}
/*******************************************************************************
@@ -1313,54 +1234,47 @@
* Parameters:
*
******************************************************************************/
-void bta_hh_start_security(tBTA_HH_DEV_CB *p_cb,
- UNUSED_ATTR tBTA_HH_DATA *p_buf)
-{
- uint8_t sec_flag=0;
- tBTM_SEC_DEV_REC *p_dev_rec;
+void bta_hh_start_security(tBTA_HH_DEV_CB* p_cb,
+ UNUSED_ATTR tBTA_HH_DATA* p_buf) {
+ uint8_t sec_flag = 0;
+ tBTM_SEC_DEV_REC* p_dev_rec;
- p_dev_rec = btm_find_dev(p_cb->addr);
- if (p_dev_rec)
- {
- if (p_dev_rec->sec_state == BTM_SEC_STATE_ENCRYPTING ||
- p_dev_rec->sec_state == BTM_SEC_STATE_AUTHENTICATING)
- {
- /* if security collision happened, wait for encryption done */
- p_cb->security_pending = true;
- return;
- }
+ p_dev_rec = btm_find_dev(p_cb->addr);
+ if (p_dev_rec) {
+ if (p_dev_rec->sec_state == BTM_SEC_STATE_ENCRYPTING ||
+ p_dev_rec->sec_state == BTM_SEC_STATE_AUTHENTICATING) {
+ /* if security collision happened, wait for encryption done */
+ p_cb->security_pending = true;
+ return;
}
+ }
- /* verify bond */
- BTM_GetSecurityFlagsByTransport(p_cb->addr, &sec_flag, BT_TRANSPORT_LE);
+ /* verify bond */
+ BTM_GetSecurityFlagsByTransport(p_cb->addr, &sec_flag, BT_TRANSPORT_LE);
- /* if link has been encrypted */
- if (sec_flag & BTM_SEC_FLAG_ENCRYPTED)
- {
- bta_hh_sm_execute(p_cb, BTA_HH_ENC_CMPL_EVT, NULL);
- }
- /* if bonded and link not encrypted */
- else if (sec_flag & BTM_SEC_FLAG_LKEY_KNOWN)
- {
- sec_flag = BTM_BLE_SEC_ENCRYPT;
- p_cb->status = BTA_HH_ERR_AUTH_FAILED;
- BTM_SetEncryption(p_cb->addr, BTA_TRANSPORT_LE, bta_hh_le_encrypt_cback, NULL, sec_flag);
- }
- /* unbonded device, report security error here */
- else if (p_cb->sec_mask != BTA_SEC_NONE)
- {
- sec_flag = BTM_BLE_SEC_ENCRYPT_NO_MITM;
- p_cb->status = BTA_HH_ERR_AUTH_FAILED;
- bta_hh_clear_service_cache(p_cb);
- BTM_SetEncryption(p_cb->addr, BTA_TRANSPORT_LE, bta_hh_le_encrypt_cback, NULL, sec_flag);
- }
- /* otherwise let it go through */
- else
- {
- bta_hh_sm_execute(p_cb, BTA_HH_ENC_CMPL_EVT, NULL);
- }
-
-
+ /* if link has been encrypted */
+ if (sec_flag & BTM_SEC_FLAG_ENCRYPTED) {
+ bta_hh_sm_execute(p_cb, BTA_HH_ENC_CMPL_EVT, NULL);
+ }
+ /* if bonded and link not encrypted */
+ else if (sec_flag & BTM_SEC_FLAG_LKEY_KNOWN) {
+ sec_flag = BTM_BLE_SEC_ENCRYPT;
+ p_cb->status = BTA_HH_ERR_AUTH_FAILED;
+ BTM_SetEncryption(p_cb->addr, BTA_TRANSPORT_LE, bta_hh_le_encrypt_cback,
+ NULL, sec_flag);
+ }
+ /* unbonded device, report security error here */
+ else if (p_cb->sec_mask != BTA_SEC_NONE) {
+ sec_flag = BTM_BLE_SEC_ENCRYPT_NO_MITM;
+ p_cb->status = BTA_HH_ERR_AUTH_FAILED;
+ bta_hh_clear_service_cache(p_cb);
+ BTM_SetEncryption(p_cb->addr, BTA_TRANSPORT_LE, bta_hh_le_encrypt_cback,
+ NULL, sec_flag);
+ }
+ /* otherwise let it go through */
+ else {
+ bta_hh_sm_execute(p_cb, BTA_HH_ENC_CMPL_EVT, NULL);
+ }
}
/*******************************************************************************
@@ -1372,45 +1286,42 @@
* Parameters:
*
******************************************************************************/
-void bta_hh_gatt_open(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_buf)
-{
- tBTA_GATTC_OPEN *p_data = &p_buf->le_open;
- uint8_t *p2;
- tHID_STATUS status = BTA_HH_ERR;
+void bta_hh_gatt_open(tBTA_HH_DEV_CB* p_cb, tBTA_HH_DATA* p_buf) {
+ tBTA_GATTC_OPEN* p_data = &p_buf->le_open;
+ uint8_t* p2;
+ tHID_STATUS status = BTA_HH_ERR;
- /* if received invalid callback data , ignore it */
- if (p_cb == NULL || p_data == NULL)
- return;
+ /* if received invalid callback data , ignore it */
+ if (p_cb == NULL || p_data == NULL) return;
- p2 = p_data->remote_bda;
+ p2 = p_data->remote_bda;
- APPL_TRACE_DEBUG("bta_hh_gatt_open BTA_GATTC_OPEN_EVT bda= [%08x%04x] status =%d",
- ((p2[0])<<24)+((p2[1])<<16)+((p2[2])<<8)+(p2[3]),
- ((p2[4])<<8)+ p2[5],p_data->status);
+ APPL_TRACE_DEBUG(
+ "bta_hh_gatt_open BTA_GATTC_OPEN_EVT bda= [%08x%04x] status =%d",
+ ((p2[0]) << 24) + ((p2[1]) << 16) + ((p2[2]) << 8) + (p2[3]),
+ ((p2[4]) << 8) + p2[5], p_data->status);
- if (p_data->status == BTA_GATT_OK)
- {
- p_cb->is_le_device = true;
- p_cb->in_use = true;
- p_cb->conn_id = p_data->conn_id;
- p_cb->hid_handle = BTA_HH_GET_LE_DEV_HDL(p_cb->index);
+ if (p_data->status == BTA_GATT_OK) {
+ p_cb->is_le_device = true;
+ p_cb->in_use = true;
+ p_cb->conn_id = p_data->conn_id;
+ p_cb->hid_handle = BTA_HH_GET_LE_DEV_HDL(p_cb->index);
- bta_hh_cb.le_cb_index[BTA_HH_GET_LE_CB_IDX(p_cb->hid_handle)] = p_cb->index;
+ bta_hh_cb.le_cb_index[BTA_HH_GET_LE_CB_IDX(p_cb->hid_handle)] = p_cb->index;
- gatt_op_queue_clean(p_cb->conn_id);
+ gatt_op_queue_clean(p_cb->conn_id);
#if (BTA_HH_DEBUG == TRUE)
- APPL_TRACE_DEBUG("hid_handle = %2x conn_id = %04x cb_index = %d", p_cb->hid_handle, p_cb->conn_id, p_cb->index);
+ APPL_TRACE_DEBUG("hid_handle = %2x conn_id = %04x cb_index = %d",
+ p_cb->hid_handle, p_cb->conn_id, p_cb->index);
#endif
- bta_hh_sm_execute(p_cb, BTA_HH_START_ENC_EVT, NULL);
+ bta_hh_sm_execute(p_cb, BTA_HH_START_ENC_EVT, NULL);
- }
- else /* open failure */
- {
- bta_hh_sm_execute(p_cb, BTA_HH_SDP_CMPL_EVT, (tBTA_HH_DATA *)&status);
- }
-
+ } else /* open failure */
+ {
+ bta_hh_sm_execute(p_cb, BTA_HH_SDP_CMPL_EVT, (tBTA_HH_DATA*)&status);
+ }
}
/*******************************************************************************
@@ -1423,23 +1334,22 @@
* Parameters:
*
******************************************************************************/
-void bta_hh_le_close(tBTA_GATTC_CLOSE * p_data)
-{
- tBTA_HH_DEV_CB *p_dev_cb = bta_hh_le_find_dev_cb_by_bda(p_data->remote_bda);
- uint16_t sm_event = BTA_HH_GATT_CLOSE_EVT;
+void bta_hh_le_close(tBTA_GATTC_CLOSE* p_data) {
+ tBTA_HH_DEV_CB* p_dev_cb = bta_hh_le_find_dev_cb_by_bda(p_data->remote_bda);
+ uint16_t sm_event = BTA_HH_GATT_CLOSE_EVT;
- if (p_dev_cb != NULL) {
- tBTA_HH_LE_CLOSE *p_buf =
- (tBTA_HH_LE_CLOSE *)osi_malloc(sizeof(tBTA_HH_LE_CLOSE));
- p_buf->hdr.event = sm_event;
- p_buf->hdr.layer_specific = (uint16_t)p_dev_cb->hid_handle;
- p_buf->conn_id = p_data->conn_id;
- p_buf->reason = p_data->reason;
+ if (p_dev_cb != NULL) {
+ tBTA_HH_LE_CLOSE* p_buf =
+ (tBTA_HH_LE_CLOSE*)osi_malloc(sizeof(tBTA_HH_LE_CLOSE));
+ p_buf->hdr.event = sm_event;
+ p_buf->hdr.layer_specific = (uint16_t)p_dev_cb->hid_handle;
+ p_buf->conn_id = p_data->conn_id;
+ p_buf->reason = p_data->reason;
- p_dev_cb->conn_id = BTA_GATT_INVALID_CONN_ID;
- p_dev_cb->security_pending = false;
- bta_sys_sendmsg(p_buf);
- }
+ p_dev_cb->conn_id = BTA_GATT_INVALID_CONN_ID;
+ p_dev_cb->security_pending = false;
+ bta_sys_sendmsg(p_buf);
+ }
}
/*******************************************************************************
@@ -1451,147 +1361,148 @@
* Parameters:
*
******************************************************************************/
-void bta_hh_le_gatt_disc_cmpl(tBTA_HH_DEV_CB *p_cb, tBTA_HH_STATUS status)
-{
- APPL_TRACE_DEBUG("bta_hh_le_gatt_disc_cmpl ");
+void bta_hh_le_gatt_disc_cmpl(tBTA_HH_DEV_CB* p_cb, tBTA_HH_STATUS status) {
+ APPL_TRACE_DEBUG("bta_hh_le_gatt_disc_cmpl ");
- /* if open sucessful or protocol mode not desired, keep the connection open but inform app */
- if (status == BTA_HH_OK || status == BTA_HH_ERR_PROTO)
- {
- /* assign a special APP ID temp, since device type unknown */
- p_cb->app_id = BTA_HH_APP_ID_LE;
+ /* if open sucessful or protocol mode not desired, keep the connection open
+ * but inform app */
+ if (status == BTA_HH_OK || status == BTA_HH_ERR_PROTO) {
+ /* assign a special APP ID temp, since device type unknown */
+ p_cb->app_id = BTA_HH_APP_ID_LE;
- /* set report notification configuration */
- p_cb->clt_cfg_idx = 0;
- bta_hh_le_write_rpt_clt_cfg(p_cb);
- }
- else /* error, close the GATT connection */
- {
- /* close GATT connection if it's on */
- bta_hh_le_api_disc_act(p_cb);
- }
+ /* set report notification configuration */
+ p_cb->clt_cfg_idx = 0;
+ bta_hh_le_write_rpt_clt_cfg(p_cb);
+ } else /* error, close the GATT connection */
+ {
+ /* close GATT connection if it's on */
+ bta_hh_le_api_disc_act(p_cb);
+ }
}
-static void read_hid_info_cb(uint16_t conn_id, tGATT_STATUS status, uint16_t handle, uint16_t len,
- uint8_t *value, void* data) {
- if (status != BTA_GATT_OK) {
- APPL_TRACE_ERROR("%s: error: %d", __func__, status);
- return;
- }
+static void read_hid_info_cb(uint16_t conn_id, tGATT_STATUS status,
+ uint16_t handle, uint16_t len, uint8_t* value,
+ void* data) {
+ if (status != BTA_GATT_OK) {
+ APPL_TRACE_ERROR("%s: error: %d", __func__, status);
+ return;
+ }
- if (len != 4) {
- APPL_TRACE_ERROR("%s: wrong length: %d", __func__, len);
- return;
- }
+ if (len != 4) {
+ APPL_TRACE_ERROR("%s: wrong length: %d", __func__, len);
+ return;
+ }
- tBTA_HH_DEV_CB *p_dev_cb = (tBTA_HH_DEV_CB*)data;
- uint8_t *pp = value;
- /* save device information */
- STREAM_TO_UINT16(p_dev_cb->dscp_info.version, pp);
- STREAM_TO_UINT8(p_dev_cb->dscp_info.ctry_code, pp);
- STREAM_TO_UINT8(p_dev_cb->dscp_info.flag, pp);
+ tBTA_HH_DEV_CB* p_dev_cb = (tBTA_HH_DEV_CB*)data;
+ uint8_t* pp = value;
+ /* save device information */
+ STREAM_TO_UINT16(p_dev_cb->dscp_info.version, pp);
+ STREAM_TO_UINT8(p_dev_cb->dscp_info.ctry_code, pp);
+ STREAM_TO_UINT8(p_dev_cb->dscp_info.flag, pp);
}
-static void read_hid_report_map_cb(uint16_t conn_id, tGATT_STATUS status, uint16_t handle,
- uint16_t len, uint8_t *value, void* data) {
- if (status != BTA_GATT_OK) {
- APPL_TRACE_ERROR("%s: error reading characteristic: %d", __func__, status);
- return;
- }
+static void read_hid_report_map_cb(uint16_t conn_id, tGATT_STATUS status,
+ uint16_t handle, uint16_t len,
+ uint8_t* value, void* data) {
+ if (status != BTA_GATT_OK) {
+ APPL_TRACE_ERROR("%s: error reading characteristic: %d", __func__, status);
+ return;
+ }
- tBTA_HH_DEV_CB *p_dev_cb = (tBTA_HH_DEV_CB*)data;
- tBTA_HH_LE_HID_SRVC *p_srvc = &p_dev_cb->hid_srvc;
+ tBTA_HH_DEV_CB* p_dev_cb = (tBTA_HH_DEV_CB*)data;
+ tBTA_HH_LE_HID_SRVC* p_srvc = &p_dev_cb->hid_srvc;
- osi_free_and_reset((void **)&p_srvc->rpt_map);
+ osi_free_and_reset((void**)&p_srvc->rpt_map);
- if (len > 0) {
- p_srvc->rpt_map = (uint8_t *)osi_malloc(len);
+ if (len > 0) {
+ p_srvc->rpt_map = (uint8_t*)osi_malloc(len);
- uint8_t *pp = value;
- STREAM_TO_ARRAY(p_srvc->rpt_map, pp, len);
- p_srvc->descriptor.dl_len = len;
- p_srvc->descriptor.dsc_list = p_dev_cb->hid_srvc.rpt_map;
- }
+ uint8_t* pp = value;
+ STREAM_TO_ARRAY(p_srvc->rpt_map, pp, len);
+ p_srvc->descriptor.dl_len = len;
+ p_srvc->descriptor.dsc_list = p_dev_cb->hid_srvc.rpt_map;
+ }
}
-static void read_ext_rpt_ref_desc_cb(uint16_t conn_id, tGATT_STATUS status, uint16_t handle,
- uint16_t len, uint8_t *value, void* data) {
- if (status != BTA_GATT_OK) {
- APPL_TRACE_ERROR("%s: error: %d", __func__, status);
- return;
- }
+static void read_ext_rpt_ref_desc_cb(uint16_t conn_id, tGATT_STATUS status,
+ uint16_t handle, uint16_t len,
+ uint8_t* value, void* data) {
+ if (status != BTA_GATT_OK) {
+ APPL_TRACE_ERROR("%s: error: %d", __func__, status);
+ return;
+ }
- /* if the length of the descriptor value is right, parse it assume it's a 16 bits UUID */
- if (len != LEN_UUID_16) {
- APPL_TRACE_ERROR("%s: we support only 16bit UUID: %d", __func__, len);
- return;
- }
+ /* if the length of the descriptor value is right, parse it assume it's a 16
+ * bits UUID */
+ if (len != LEN_UUID_16) {
+ APPL_TRACE_ERROR("%s: we support only 16bit UUID: %d", __func__, len);
+ return;
+ }
- tBTA_HH_DEV_CB *p_dev_cb = (tBTA_HH_DEV_CB*)data;
- uint8_t *pp = value;
+ tBTA_HH_DEV_CB* p_dev_cb = (tBTA_HH_DEV_CB*)data;
+ uint8_t* pp = value;
- STREAM_TO_UINT16(p_dev_cb->hid_srvc.ext_rpt_ref, pp);
+ STREAM_TO_UINT16(p_dev_cb->hid_srvc.ext_rpt_ref, pp);
#if (BTA_HH_DEBUG == TRUE)
- APPL_TRACE_DEBUG("%s: External Report Reference UUID 0x%04x", __func__,
- p_dev_cb->hid_srvc.ext_rpt_ref);
+ APPL_TRACE_DEBUG("%s: External Report Reference UUID 0x%04x", __func__,
+ p_dev_cb->hid_srvc.ext_rpt_ref);
#endif
}
-static void read_report_ref_desc_cb(uint16_t conn_id, tGATT_STATUS status, uint16_t handle,
- uint16_t len, uint8_t *value, void* data) {
- if (status != BTA_GATT_OK) {
- APPL_TRACE_ERROR("%s: error: %d", __func__, status);
- return;
- }
+static void read_report_ref_desc_cb(uint16_t conn_id, tGATT_STATUS status,
+ uint16_t handle, uint16_t len,
+ uint8_t* value, void* data) {
+ if (status != BTA_GATT_OK) {
+ APPL_TRACE_ERROR("%s: error: %d", __func__, status);
+ return;
+ }
- tBTA_HH_DEV_CB *p_dev_cb = (tBTA_HH_DEV_CB*)data;
- const tBTA_GATTC_DESCRIPTOR *p_desc = BTA_GATTC_GetDescriptor(conn_id, handle);
+ tBTA_HH_DEV_CB* p_dev_cb = (tBTA_HH_DEV_CB*)data;
+ const tBTA_GATTC_DESCRIPTOR* p_desc =
+ BTA_GATTC_GetDescriptor(conn_id, handle);
- tBTA_HH_LE_RPT *p_rpt;
- if ((p_rpt = bta_hh_le_find_report_entry(p_dev_cb,
- p_desc->characteristic->service->handle,
- GATT_UUID_HID_REPORT,
- p_desc->characteristic->handle)))
- bta_hh_le_save_report_ref(p_dev_cb, p_rpt, status, value, len);
+ tBTA_HH_LE_RPT* p_rpt;
+ if ((p_rpt = bta_hh_le_find_report_entry(
+ p_dev_cb, p_desc->characteristic->service->handle,
+ GATT_UUID_HID_REPORT, p_desc->characteristic->handle)))
+ bta_hh_le_save_report_ref(p_dev_cb, p_rpt, status, value, len);
}
+void read_pref_conn_params_cb(uint16_t conn_id, tGATT_STATUS status,
+ uint16_t handle, uint16_t len, uint8_t* value,
+ void* data) {
+ if (status != BTA_GATT_OK) {
+ APPL_TRACE_ERROR("%s: error: %d", __func__, status);
+ return;
+ }
+ if (len != 8) {
+ APPL_TRACE_ERROR("%s: we support only 16bit UUID: %d", __func__, len);
+ return;
+ }
-void read_pref_conn_params_cb(uint16_t conn_id, tGATT_STATUS status, uint16_t handle,
- uint16_t len, uint8_t *value, void* data) {
- if (status != BTA_GATT_OK) {
- APPL_TRACE_ERROR("%s: error: %d", __func__, status);
- return;
- }
+ // TODO(jpawlowski): this should be done by GAP profile, remove when GAP is
+ // fixed.
+ uint8_t* pp = value;
+ uint16_t min, max, latency, tout;
+ STREAM_TO_UINT16(min, pp);
+ STREAM_TO_UINT16(max, pp);
+ STREAM_TO_UINT16(latency, pp);
+ STREAM_TO_UINT16(tout, pp);
- if (len != 8) {
- APPL_TRACE_ERROR("%s: we support only 16bit UUID: %d", __func__, len);
- return;
- }
+ // Make sure both min, and max are bigger than 11.25ms, lower values can
+ // introduce
+ // audio issues if A2DP is also active.
+ if (min < BTM_BLE_CONN_INT_MIN_LIMIT) min = BTM_BLE_CONN_INT_MIN_LIMIT;
+ if (max < BTM_BLE_CONN_INT_MIN_LIMIT) max = BTM_BLE_CONN_INT_MIN_LIMIT;
- //TODO(jpawlowski): this should be done by GAP profile, remove when GAP is fixed.
- uint8_t *pp = value;
- uint16_t min, max, latency, tout;
- STREAM_TO_UINT16(min, pp);
- STREAM_TO_UINT16(max, pp);
- STREAM_TO_UINT16(latency, pp);
- STREAM_TO_UINT16(tout, pp);
+ // If the device has no preferred connection timeout, use the default.
+ if (tout == BTM_BLE_CONN_PARAM_UNDEF) tout = BTM_BLE_CONN_TIMEOUT_DEF;
- // Make sure both min, and max are bigger than 11.25ms, lower values can introduce
- // audio issues if A2DP is also active.
- if (min < BTM_BLE_CONN_INT_MIN_LIMIT)
- min = BTM_BLE_CONN_INT_MIN_LIMIT;
- if (max < BTM_BLE_CONN_INT_MIN_LIMIT)
- max = BTM_BLE_CONN_INT_MIN_LIMIT;
-
- // If the device has no preferred connection timeout, use the default.
- if (tout == BTM_BLE_CONN_PARAM_UNDEF)
- tout = BTM_BLE_CONN_TIMEOUT_DEF;
-
- tBTA_HH_DEV_CB *p_dev_cb = (tBTA_HH_DEV_CB*)data;
- BTM_BleSetPrefConnParams(p_dev_cb->addr, min, max, latency, tout);
- L2CA_UpdateBleConnParams(p_dev_cb->addr, min, max, latency, tout);
+ tBTA_HH_DEV_CB* p_dev_cb = (tBTA_HH_DEV_CB*)data;
+ BTM_BleSetPrefConnParams(p_dev_cb->addr, min, max, latency, tout);
+ L2CA_UpdateBleConnParams(p_dev_cb->addr, min, max, latency, tout);
}
/*******************************************************************************
@@ -1604,87 +1515,87 @@
* Parameters:
*
******************************************************************************/
-static void bta_hh_le_search_hid_chars(tBTA_HH_DEV_CB *p_dev_cb, tBTA_GATTC_SERVICE *service)
-{
- tBTA_HH_LE_RPT *p_rpt;
+static void bta_hh_le_search_hid_chars(tBTA_HH_DEV_CB* p_dev_cb,
+ tBTA_GATTC_SERVICE* service) {
+ tBTA_HH_LE_RPT* p_rpt;
- for (list_node_t *cn = list_begin(service->characteristics);
- cn != list_end(service->characteristics); cn = list_next(cn)) {
- tBTA_GATTC_CHARACTERISTIC *p_char = (tBTA_GATTC_CHARACTERISTIC*) list_node(cn);
+ for (list_node_t* cn = list_begin(service->characteristics);
+ cn != list_end(service->characteristics); cn = list_next(cn)) {
+ tBTA_GATTC_CHARACTERISTIC* p_char =
+ (tBTA_GATTC_CHARACTERISTIC*)list_node(cn);
- if (p_char->uuid.len != LEN_UUID_16)
- continue;
+ if (p_char->uuid.len != LEN_UUID_16) continue;
- LOG_DEBUG(LOG_TAG, "%s: %s 0x%04d", __func__, bta_hh_uuid_to_str(p_char->uuid.uu.uuid16),
- p_char->uuid.uu.uuid16);
+ LOG_DEBUG(LOG_TAG, "%s: %s 0x%04d", __func__,
+ bta_hh_uuid_to_str(p_char->uuid.uu.uuid16),
+ p_char->uuid.uu.uuid16);
- switch (p_char->uuid.uu.uuid16)
- {
- case GATT_UUID_HID_CONTROL_POINT:
- p_dev_cb->hid_srvc.control_point_handle = p_char->handle;
- break;
- case GATT_UUID_HID_INFORMATION:
- /* only one instance per HID service */
- gatt_queue_read_op(GATT_READ_CHAR, p_dev_cb->conn_id, p_char->handle, read_hid_info_cb,
- p_dev_cb);
- break;
- case GATT_UUID_HID_REPORT_MAP:
- /* only one instance per HID service */
- gatt_queue_read_op(GATT_READ_CHAR, p_dev_cb->conn_id, p_char->handle,
- read_hid_report_map_cb, p_dev_cb);
- /* descriptor is optional */
- bta_hh_le_read_char_descriptor(p_dev_cb, p_char->handle,
- GATT_UUID_EXT_RPT_REF_DESCR, read_ext_rpt_ref_desc_cb, p_dev_cb);
- break;
+ switch (p_char->uuid.uu.uuid16) {
+ case GATT_UUID_HID_CONTROL_POINT:
+ p_dev_cb->hid_srvc.control_point_handle = p_char->handle;
+ break;
+ case GATT_UUID_HID_INFORMATION:
+ /* only one instance per HID service */
+ gatt_queue_read_op(GATT_READ_CHAR, p_dev_cb->conn_id, p_char->handle,
+ read_hid_info_cb, p_dev_cb);
+ break;
+ case GATT_UUID_HID_REPORT_MAP:
+ /* only one instance per HID service */
+ gatt_queue_read_op(GATT_READ_CHAR, p_dev_cb->conn_id, p_char->handle,
+ read_hid_report_map_cb, p_dev_cb);
+ /* descriptor is optional */
+ bta_hh_le_read_char_descriptor(p_dev_cb, p_char->handle,
+ GATT_UUID_EXT_RPT_REF_DESCR,
+ read_ext_rpt_ref_desc_cb, p_dev_cb);
+ break;
- case GATT_UUID_HID_REPORT:
- p_rpt = bta_hh_le_find_alloc_report_entry(p_dev_cb,
- p_dev_cb->hid_srvc.srvc_inst_id,
- GATT_UUID_HID_REPORT,
- p_char->handle);
- if (p_rpt == NULL) {
- APPL_TRACE_ERROR("%s: Add report entry failed !!!", __func__);
- break;
- }
+ case GATT_UUID_HID_REPORT:
+ p_rpt = bta_hh_le_find_alloc_report_entry(
+ p_dev_cb, p_dev_cb->hid_srvc.srvc_inst_id, GATT_UUID_HID_REPORT,
+ p_char->handle);
+ if (p_rpt == NULL) {
+ APPL_TRACE_ERROR("%s: Add report entry failed !!!", __func__);
+ break;
+ }
- if (p_rpt->rpt_type != BTA_HH_RPTT_INPUT)
- break;
+ if (p_rpt->rpt_type != BTA_HH_RPTT_INPUT) break;
- bta_hh_le_read_char_descriptor(p_dev_cb, p_char->handle, GATT_UUID_RPT_REF_DESCR,
+ bta_hh_le_read_char_descriptor(p_dev_cb, p_char->handle,
+ GATT_UUID_RPT_REF_DESCR,
read_report_ref_desc_cb, p_dev_cb);
- break;
+ break;
- /* found boot mode report types */
- case GATT_UUID_HID_BT_KB_OUTPUT:
- case GATT_UUID_HID_BT_MOUSE_INPUT:
- case GATT_UUID_HID_BT_KB_INPUT:
- if (bta_hh_le_find_alloc_report_entry(p_dev_cb,
- service->handle,
- p_char->uuid.uu.uuid16,
- p_char->handle) == NULL)
- APPL_TRACE_ERROR("%s: Add report entry failed !!!", __func__);
+ /* found boot mode report types */
+ case GATT_UUID_HID_BT_KB_OUTPUT:
+ case GATT_UUID_HID_BT_MOUSE_INPUT:
+ case GATT_UUID_HID_BT_KB_INPUT:
+ if (bta_hh_le_find_alloc_report_entry(p_dev_cb, service->handle,
+ p_char->uuid.uu.uuid16,
+ p_char->handle) == NULL)
+ APPL_TRACE_ERROR("%s: Add report entry failed !!!", __func__);
- break;
+ break;
- default:
- APPL_TRACE_DEBUG("%s: not processing %s 0x%04d", __func__,
- bta_hh_uuid_to_str(p_char->uuid.uu.uuid16),
- p_char->uuid.uu.uuid16);
- }
+ default:
+ APPL_TRACE_DEBUG("%s: not processing %s 0x%04d", __func__,
+ bta_hh_uuid_to_str(p_char->uuid.uu.uuid16),
+ p_char->uuid.uu.uuid16);
}
+ }
- /* Make sure PROTO_MODE is processed as last */
- for (list_node_t *cn = list_begin(service->characteristics);
- cn != list_end(service->characteristics); cn = list_next(cn)) {
- tBTA_GATTC_CHARACTERISTIC *p_char = (tBTA_GATTC_CHARACTERISTIC*) list_node(cn);
+ /* Make sure PROTO_MODE is processed as last */
+ for (list_node_t* cn = list_begin(service->characteristics);
+ cn != list_end(service->characteristics); cn = list_next(cn)) {
+ tBTA_GATTC_CHARACTERISTIC* p_char =
+ (tBTA_GATTC_CHARACTERISTIC*)list_node(cn);
- if (p_char->uuid.len != LEN_UUID_16 &&
- p_char->uuid.uu.uuid16 == GATT_UUID_HID_PROTO_MODE) {
- p_dev_cb->hid_srvc.proto_mode_handle = p_char->handle;
- bta_hh_le_set_protocol_mode(p_dev_cb, p_dev_cb->mode);
- break;
- }
+ if (p_char->uuid.len != LEN_UUID_16 &&
+ p_char->uuid.uu.uuid16 == GATT_UUID_HID_PROTO_MODE) {
+ p_dev_cb->hid_srvc.proto_mode_handle = p_char->handle;
+ bta_hh_le_set_protocol_mode(p_dev_cb, p_dev_cb->mode);
+ break;
}
+ }
}
/*******************************************************************************
@@ -1696,81 +1607,79 @@
* Parameters:
*
******************************************************************************/
-void bta_hh_le_srvc_search_cmpl(tBTA_GATTC_SEARCH_CMPL *p_data)
-{
- tBTA_HH_DEV_CB *p_dev_cb = bta_hh_le_find_dev_cb_by_conn_id(p_data->conn_id);
+void bta_hh_le_srvc_search_cmpl(tBTA_GATTC_SEARCH_CMPL* p_data) {
+ tBTA_HH_DEV_CB* p_dev_cb = bta_hh_le_find_dev_cb_by_conn_id(p_data->conn_id);
- /* service search exception or no HID service is supported on remote */
- if (p_dev_cb == NULL)
- return;
+ /* service search exception or no HID service is supported on remote */
+ if (p_dev_cb == NULL) return;
- if (p_data->status != BTA_GATT_OK)
- {
- p_dev_cb->status = BTA_HH_ERR_SDP;
- /* close the connection and report service discovery complete with error */
- bta_hh_le_api_disc_act(p_dev_cb);
- return;
- }
+ if (p_data->status != BTA_GATT_OK) {
+ p_dev_cb->status = BTA_HH_ERR_SDP;
+ /* close the connection and report service discovery complete with error */
+ bta_hh_le_api_disc_act(p_dev_cb);
+ return;
+ }
- const list_t *services = BTA_GATTC_GetServices(p_data->conn_id);
+ const list_t* services = BTA_GATTC_GetServices(p_data->conn_id);
- bool have_hid = false;
- for (list_node_t *sn = list_begin(services);
- sn != list_end(services); sn = list_next(sn)) {
- tBTA_GATTC_SERVICE *service = (tBTA_GATTC_SERVICE*) list_node(sn);
+ bool have_hid = false;
+ for (list_node_t* sn = list_begin(services); sn != list_end(services);
+ sn = list_next(sn)) {
+ tBTA_GATTC_SERVICE* service = (tBTA_GATTC_SERVICE*)list_node(sn);
- if (service->uuid.uu.uuid16 == UUID_SERVCLASS_LE_HID &&
- service->is_primary && !have_hid) {
- have_hid = true;
+ if (service->uuid.uu.uuid16 == UUID_SERVCLASS_LE_HID &&
+ service->is_primary && !have_hid) {
+ have_hid = true;
- /* found HID primamry service */
- p_dev_cb->hid_srvc.in_use = true;
- p_dev_cb->hid_srvc.srvc_inst_id = service->handle;
- p_dev_cb->hid_srvc.proto_mode_handle = 0;
- p_dev_cb->hid_srvc.control_point_handle = 0;
+ /* found HID primamry service */
+ p_dev_cb->hid_srvc.in_use = true;
+ p_dev_cb->hid_srvc.srvc_inst_id = service->handle;
+ p_dev_cb->hid_srvc.proto_mode_handle = 0;
+ p_dev_cb->hid_srvc.control_point_handle = 0;
- bta_hh_le_search_hid_chars(p_dev_cb, service);
+ bta_hh_le_search_hid_chars(p_dev_cb, service);
- APPL_TRACE_DEBUG("%s: have HID service inst_id= %d", __func__,
- p_dev_cb->hid_srvc.srvc_inst_id);
- } else if (service->uuid.uu.uuid16 == UUID_SERVCLASS_SCAN_PARAM) {
- p_dev_cb->scan_refresh_char_handle = 0;
+ APPL_TRACE_DEBUG("%s: have HID service inst_id= %d", __func__,
+ p_dev_cb->hid_srvc.srvc_inst_id);
+ } else if (service->uuid.uu.uuid16 == UUID_SERVCLASS_SCAN_PARAM) {
+ p_dev_cb->scan_refresh_char_handle = 0;
- for (list_node_t *cn = list_begin(service->characteristics);
- cn != list_end(service->characteristics); cn = list_next(cn)) {
- tBTA_GATTC_CHARACTERISTIC *p_char = (tBTA_GATTC_CHARACTERISTIC*) list_node(cn);
- if (p_char->uuid.len == LEN_UUID_16 &&
- p_char->uuid.uu.uuid16 == GATT_UUID_SCAN_REFRESH) {
+ for (list_node_t* cn = list_begin(service->characteristics);
+ cn != list_end(service->characteristics); cn = list_next(cn)) {
+ tBTA_GATTC_CHARACTERISTIC* p_char =
+ (tBTA_GATTC_CHARACTERISTIC*)list_node(cn);
+ if (p_char->uuid.len == LEN_UUID_16 &&
+ p_char->uuid.uu.uuid16 == GATT_UUID_SCAN_REFRESH) {
+ p_dev_cb->scan_refresh_char_handle = p_char->handle;
- p_dev_cb->scan_refresh_char_handle = p_char->handle;
+ if (p_char->properties & BTA_GATT_CHAR_PROP_BIT_NOTIFY)
+ p_dev_cb->scps_notify |= BTA_HH_LE_SCPS_NOTIFY_SPT;
+ else
+ p_dev_cb->scps_notify = BTA_HH_LE_SCPS_NOTIFY_NONE;
- if (p_char->properties & BTA_GATT_CHAR_PROP_BIT_NOTIFY)
- p_dev_cb->scps_notify |= BTA_HH_LE_SCPS_NOTIFY_SPT;
- else
- p_dev_cb->scps_notify = BTA_HH_LE_SCPS_NOTIFY_NONE;
-
- break;
- }
- }
- } else if (service->uuid.uu.uuid16 == UUID_SERVCLASS_GAP_SERVER) {
- //TODO(jpawlowski): this should be done by GAP profile, remove when GAP is fixed.
- for (list_node_t *cn = list_begin(service->characteristics);
- cn != list_end(service->characteristics); cn = list_next(cn)) {
- tBTA_GATTC_CHARACTERISTIC *p_char = (tBTA_GATTC_CHARACTERISTIC*) list_node(cn);
- if (p_char->uuid.len == LEN_UUID_16 &&
- p_char->uuid.uu.uuid16 == GATT_UUID_GAP_PREF_CONN_PARAM) {
-
- /* read the char value */
- gatt_queue_read_op(GATT_READ_CHAR, p_dev_cb->conn_id, p_char->handle,
- read_pref_conn_params_cb, p_dev_cb);
-
- break;
- }
- }
+ break;
}
- }
+ }
+ } else if (service->uuid.uu.uuid16 == UUID_SERVCLASS_GAP_SERVER) {
+ // TODO(jpawlowski): this should be done by GAP profile, remove when GAP
+ // is fixed.
+ for (list_node_t* cn = list_begin(service->characteristics);
+ cn != list_end(service->characteristics); cn = list_next(cn)) {
+ tBTA_GATTC_CHARACTERISTIC* p_char =
+ (tBTA_GATTC_CHARACTERISTIC*)list_node(cn);
+ if (p_char->uuid.len == LEN_UUID_16 &&
+ p_char->uuid.uu.uuid16 == GATT_UUID_GAP_PREF_CONN_PARAM) {
+ /* read the char value */
+ gatt_queue_read_op(GATT_READ_CHAR, p_dev_cb->conn_id, p_char->handle,
+ read_pref_conn_params_cb, p_dev_cb);
- bta_hh_le_gatt_disc_cmpl(p_dev_cb, p_dev_cb->status);
+ break;
+ }
+ }
+ }
+ }
+
+ bta_hh_le_gatt_disc_cmpl(p_dev_cb, p_dev_cb->status);
}
/*******************************************************************************
@@ -1782,72 +1691,64 @@
* Parameters:
*
******************************************************************************/
-void bta_hh_le_input_rpt_notify(tBTA_GATTC_NOTIFY *p_data)
-{
- tBTA_HH_DEV_CB *p_dev_cb = bta_hh_le_find_dev_cb_by_conn_id(p_data->conn_id);
- uint8_t app_id;
- uint8_t *p_buf;
- tBTA_HH_LE_RPT *p_rpt;
+void bta_hh_le_input_rpt_notify(tBTA_GATTC_NOTIFY* p_data) {
+ tBTA_HH_DEV_CB* p_dev_cb = bta_hh_le_find_dev_cb_by_conn_id(p_data->conn_id);
+ uint8_t app_id;
+ uint8_t* p_buf;
+ tBTA_HH_LE_RPT* p_rpt;
- if (p_dev_cb == NULL)
- {
- APPL_TRACE_ERROR("%s: notification received from Unknown device, conn_id: 0x%04x",
- __func__, p_data->conn_id);
- return;
- }
+ if (p_dev_cb == NULL) {
+ APPL_TRACE_ERROR(
+ "%s: notification received from Unknown device, conn_id: 0x%04x",
+ __func__, p_data->conn_id);
+ return;
+ }
- const tBTA_GATTC_CHARACTERISTIC *p_char = BTA_GATTC_GetCharacteristic(p_dev_cb->conn_id,
- p_data->handle);
- if (p_char == NULL)
- {
- APPL_TRACE_ERROR("%s: notification received for Unknown Characteristic, conn_id: 0x%04x, handle: 0x%04x",
- __func__, p_dev_cb->conn_id, p_data->handle);
- return;
- }
+ const tBTA_GATTC_CHARACTERISTIC* p_char =
+ BTA_GATTC_GetCharacteristic(p_dev_cb->conn_id, p_data->handle);
+ if (p_char == NULL) {
+ APPL_TRACE_ERROR(
+ "%s: notification received for Unknown Characteristic, conn_id: "
+ "0x%04x, handle: 0x%04x",
+ __func__, p_dev_cb->conn_id, p_data->handle);
+ return;
+ }
- app_id= p_dev_cb->app_id;
+ app_id = p_dev_cb->app_id;
- p_rpt = bta_hh_le_find_report_entry(p_dev_cb,
- p_dev_cb->hid_srvc.srvc_inst_id,
- p_char->uuid.uu.uuid16,
- p_char->handle);
- if (p_rpt == NULL)
- {
- APPL_TRACE_ERROR("%s: notification received for Unknown Report, uuid: 0x%04x, handle: 0x%04x",
- __func__, p_char->uuid.uu.uuid16, p_char->handle);
- return;
- }
+ p_rpt = bta_hh_le_find_report_entry(p_dev_cb, p_dev_cb->hid_srvc.srvc_inst_id,
+ p_char->uuid.uu.uuid16, p_char->handle);
+ if (p_rpt == NULL) {
+ APPL_TRACE_ERROR(
+ "%s: notification received for Unknown Report, uuid: 0x%04x, handle: "
+ "0x%04x",
+ __func__, p_char->uuid.uu.uuid16, p_char->handle);
+ return;
+ }
- if (p_char->uuid.uu.uuid16 == GATT_UUID_HID_BT_MOUSE_INPUT)
- app_id = BTA_HH_APP_ID_MI;
- else if (p_char->uuid.uu.uuid16 == GATT_UUID_HID_BT_KB_INPUT)
- app_id = BTA_HH_APP_ID_KB;
+ if (p_char->uuid.uu.uuid16 == GATT_UUID_HID_BT_MOUSE_INPUT)
+ app_id = BTA_HH_APP_ID_MI;
+ else if (p_char->uuid.uu.uuid16 == GATT_UUID_HID_BT_KB_INPUT)
+ app_id = BTA_HH_APP_ID_KB;
- APPL_TRACE_DEBUG("Notification received on report ID: %d", p_rpt->rpt_id);
+ APPL_TRACE_DEBUG("Notification received on report ID: %d", p_rpt->rpt_id);
- /* need to append report ID to the head of data */
- if (p_rpt->rpt_id != 0)
- {
- p_buf = (uint8_t *)osi_malloc(p_data->len + 1);
+ /* need to append report ID to the head of data */
+ if (p_rpt->rpt_id != 0) {
+ p_buf = (uint8_t*)osi_malloc(p_data->len + 1);
- p_buf[0] = p_rpt->rpt_id;
- memcpy(&p_buf[1], p_data->value, p_data->len);
- ++p_data->len;
- } else {
- p_buf = p_data->value;
- }
+ p_buf[0] = p_rpt->rpt_id;
+ memcpy(&p_buf[1], p_data->value, p_data->len);
+ ++p_data->len;
+ } else {
+ p_buf = p_data->value;
+ }
- bta_hh_co_data((uint8_t)p_dev_cb->hid_handle,
- p_buf,
- p_data->len,
- p_dev_cb->mode,
- 0 , /* no sub class*/
- p_dev_cb->dscp_info.ctry_code,
- p_dev_cb->addr,
- app_id);
+ bta_hh_co_data((uint8_t)p_dev_cb->hid_handle, p_buf, p_data->len,
+ p_dev_cb->mode, 0, /* no sub class*/
+ p_dev_cb->dscp_info.ctry_code, p_dev_cb->addr, app_id);
- if (p_buf != p_data->value)
- osi_free(p_buf);
+ if (p_buf != p_data->value) osi_free(p_buf);
}
/*******************************************************************************
@@ -1859,75 +1760,69 @@
* Returns void
*
******************************************************************************/
-void bta_hh_le_open_fail(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data)
-{
- tBTA_HH_CONN conn_dat ;
+void bta_hh_le_open_fail(tBTA_HH_DEV_CB* p_cb, tBTA_HH_DATA* p_data) {
+ tBTA_HH_CONN conn_dat;
- /* open failure in the middle of service discovery, clear all services */
- if (p_cb->disc_active & BTA_HH_LE_DISC_HIDS)
- {
- bta_hh_clear_service_cache(p_cb);
- }
+ /* open failure in the middle of service discovery, clear all services */
+ if (p_cb->disc_active & BTA_HH_LE_DISC_HIDS) {
+ bta_hh_clear_service_cache(p_cb);
+ }
- p_cb->disc_active = BTA_HH_LE_DISC_NONE;
- /* Failure in opening connection or GATT discovery failure */
- conn_dat.handle = p_cb->hid_handle;
- memcpy(conn_dat.bda, p_cb->addr, BD_ADDR_LEN);
- conn_dat.le_hid = true;
- conn_dat.scps_supported = p_cb->scps_supported;
+ p_cb->disc_active = BTA_HH_LE_DISC_NONE;
+ /* Failure in opening connection or GATT discovery failure */
+ conn_dat.handle = p_cb->hid_handle;
+ memcpy(conn_dat.bda, p_cb->addr, BD_ADDR_LEN);
+ conn_dat.le_hid = true;
+ conn_dat.scps_supported = p_cb->scps_supported;
- if (p_cb->status == BTA_HH_OK)
- conn_dat.status = (p_data->le_close.reason == BTA_GATT_CONN_UNKNOWN) ? p_cb->status : BTA_HH_ERR;
- else
- conn_dat.status = p_cb->status;
+ if (p_cb->status == BTA_HH_OK)
+ conn_dat.status = (p_data->le_close.reason == BTA_GATT_CONN_UNKNOWN)
+ ? p_cb->status
+ : BTA_HH_ERR;
+ else
+ conn_dat.status = p_cb->status;
- /* Report OPEN fail event */
- (*bta_hh_cb.p_cback)(BTA_HH_OPEN_EVT, (tBTA_HH *)&conn_dat);
-
+ /* Report OPEN fail event */
+ (*bta_hh_cb.p_cback)(BTA_HH_OPEN_EVT, (tBTA_HH*)&conn_dat);
}
/*******************************************************************************
*
* Function bta_hh_gatt_close
*
- * Description action function to process the GATT close int he state machine.
+ * Description action function to process the GATT close int he state
+ *machine.
*
* Returns void
*
******************************************************************************/
-void bta_hh_gatt_close(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data)
-{
- tBTA_HH_CBDATA disc_dat = {BTA_HH_OK, 0};
+void bta_hh_gatt_close(tBTA_HH_DEV_CB* p_cb, tBTA_HH_DATA* p_data) {
+ tBTA_HH_CBDATA disc_dat = {BTA_HH_OK, 0};
- /* deregister all notification */
- bta_hh_le_deregister_input_notif(p_cb);
- /* finaliza device driver */
- bta_hh_co_close(p_cb->hid_handle, p_cb->app_id);
- /* update total conn number */
- bta_hh_cb.cnt_num --;
+ /* deregister all notification */
+ bta_hh_le_deregister_input_notif(p_cb);
+ /* finaliza device driver */
+ bta_hh_co_close(p_cb->hid_handle, p_cb->app_id);
+ /* update total conn number */
+ bta_hh_cb.cnt_num--;
- disc_dat.handle = p_cb->hid_handle;
- disc_dat.status = p_cb->status;
+ disc_dat.handle = p_cb->hid_handle;
+ disc_dat.status = p_cb->status;
- (*bta_hh_cb.p_cback)(BTA_HH_CLOSE_EVT, (tBTA_HH *)&disc_dat);
+ (*bta_hh_cb.p_cback)(BTA_HH_CLOSE_EVT, (tBTA_HH*)&disc_dat);
- /* if no connection is active and HH disable is signaled, disable service */
- if (bta_hh_cb.cnt_num == 0 && bta_hh_cb.w4_disable)
- {
- bta_hh_disc_cmpl();
- }
- else
- {
+ /* if no connection is active and HH disable is signaled, disable service */
+ if (bta_hh_cb.cnt_num == 0 && bta_hh_cb.w4_disable) {
+ bta_hh_disc_cmpl();
+ } else {
#if (BTA_HH_LE_RECONN == TRUE)
- if (p_data->le_close.reason == BTA_GATT_CONN_TIMEOUT)
- {
- bta_hh_le_add_dev_bg_conn(p_cb, false);
+ if (p_data->le_close.reason == BTA_GATT_CONN_TIMEOUT) {
+ bta_hh_le_add_dev_bg_conn(p_cb, false);
}
#endif
- }
+ }
- return;
-
+ return;
}
/*******************************************************************************
@@ -1939,92 +1834,88 @@
* Returns void
*
******************************************************************************/
-void bta_hh_le_api_disc_act(tBTA_HH_DEV_CB *p_cb)
-{
- if (p_cb->conn_id != BTA_GATT_INVALID_CONN_ID)
- {
- gatt_op_queue_clean(p_cb->conn_id);
- BTA_GATTC_Close(p_cb->conn_id);
- /* remove device from background connection if intended to disconnect,
- do not allow reconnection */
- bta_hh_le_remove_dev_bg_conn(p_cb);
- }
+void bta_hh_le_api_disc_act(tBTA_HH_DEV_CB* p_cb) {
+ if (p_cb->conn_id != BTA_GATT_INVALID_CONN_ID) {
+ gatt_op_queue_clean(p_cb->conn_id);
+ BTA_GATTC_Close(p_cb->conn_id);
+ /* remove device from background connection if intended to disconnect,
+ do not allow reconnection */
+ bta_hh_le_remove_dev_bg_conn(p_cb);
+ }
}
-
/*******************************************************************************
*
* Function read_report_cb
*
- * Description Process the Read report complete, send GET_REPORT_EVT to application
+ * Description Process the Read report complete, send GET_REPORT_EVT to
+ *application
* with the report data.
*
* Parameters:
*
******************************************************************************/
-static void read_report_cb(uint16_t conn_id, tGATT_STATUS status, uint16_t handle,
- uint16_t len, uint8_t *value, void* data) {
- const tBTA_GATTC_CHARACTERISTIC *p_char = BTA_GATTC_GetCharacteristic(conn_id, handle);
+static void read_report_cb(uint16_t conn_id, tGATT_STATUS status,
+ uint16_t handle, uint16_t len, uint8_t* value,
+ void* data) {
+ const tBTA_GATTC_CHARACTERISTIC* p_char =
+ BTA_GATTC_GetCharacteristic(conn_id, handle);
- if (p_char == NULL)
- return;
+ if (p_char == NULL) return;
- uint16_t char_uuid = p_char->uuid.uu.uuid16;
+ uint16_t char_uuid = p_char->uuid.uu.uuid16;
- if (char_uuid != GATT_UUID_HID_REPORT &&
- char_uuid != GATT_UUID_HID_BT_KB_INPUT &&
- char_uuid != GATT_UUID_HID_BT_KB_OUTPUT &&
- char_uuid != GATT_UUID_HID_BT_MOUSE_INPUT &&
- char_uuid != GATT_UUID_BATTERY_LEVEL) {
- APPL_TRACE_ERROR("%s: Unexpected Read UUID: 0x%04x", __func__, char_uuid);
- return;
+ if (char_uuid != GATT_UUID_HID_REPORT &&
+ char_uuid != GATT_UUID_HID_BT_KB_INPUT &&
+ char_uuid != GATT_UUID_HID_BT_KB_OUTPUT &&
+ char_uuid != GATT_UUID_HID_BT_MOUSE_INPUT &&
+ char_uuid != GATT_UUID_BATTERY_LEVEL) {
+ APPL_TRACE_ERROR("%s: Unexpected Read UUID: 0x%04x", __func__, char_uuid);
+ return;
+ }
+
+ tBTA_HH_DEV_CB* p_dev_cb = (tBTA_HH_DEV_CB*)data;
+ if (p_dev_cb->w4_evt != BTA_HH_GET_RPT_EVT) {
+ APPL_TRACE_ERROR("Unexpected READ cmpl, w4_evt = %d", p_dev_cb->w4_evt);
+ return;
+ }
+
+ /* GET_REPORT */
+ BT_HDR* p_buf = NULL;
+ tBTA_HH_LE_RPT* p_rpt;
+ tBTA_HH_HSDATA hs_data;
+ uint8_t* pp;
+
+ memset(&hs_data, 0, sizeof(hs_data));
+ hs_data.status = BTA_HH_ERR;
+ hs_data.handle = p_dev_cb->hid_handle;
+
+ if (status == BTA_GATT_OK) {
+ p_rpt = bta_hh_le_find_report_entry(p_dev_cb, p_char->service->handle,
+ p_char->uuid.uu.uuid16, p_char->handle);
+
+ if (p_rpt != NULL && len) {
+ p_buf = (BT_HDR*)osi_malloc(sizeof(BT_HDR) + len + 1);
+ /* pack data send to app */
+ hs_data.status = BTA_HH_OK;
+ p_buf->len = len + 1;
+ p_buf->layer_specific = 0;
+ p_buf->offset = 0;
+
+ /* attach report ID as the first byte of the report before sending it to
+ * USB HID driver */
+ pp = (uint8_t*)(p_buf + 1);
+ UINT8_TO_STREAM(pp, p_rpt->rpt_id);
+ memcpy(pp, value, len);
+
+ hs_data.rsp_data.p_rpt_data = p_buf;
}
+ }
- tBTA_HH_DEV_CB *p_dev_cb = (tBTA_HH_DEV_CB*)data;
- if (p_dev_cb->w4_evt != BTA_HH_GET_RPT_EVT)
- {
- APPL_TRACE_ERROR("Unexpected READ cmpl, w4_evt = %d", p_dev_cb->w4_evt);
- return;
- }
+ p_dev_cb->w4_evt = 0;
+ (*bta_hh_cb.p_cback)(BTA_HH_GET_RPT_EVT, (tBTA_HH*)&hs_data);
- /* GET_REPORT */
- BT_HDR *p_buf = NULL;
- tBTA_HH_LE_RPT *p_rpt;
- tBTA_HH_HSDATA hs_data;
- uint8_t *pp ;
-
- memset(&hs_data, 0, sizeof(hs_data));
- hs_data.status = BTA_HH_ERR;
- hs_data.handle = p_dev_cb->hid_handle;
-
- if (status == BTA_GATT_OK)
- {
- p_rpt = bta_hh_le_find_report_entry(p_dev_cb,
- p_char->service->handle,
- p_char->uuid.uu.uuid16,
- p_char->handle);
-
- if (p_rpt != NULL && len) {
- p_buf = (BT_HDR *)osi_malloc(sizeof(BT_HDR) + len + 1);
- /* pack data send to app */
- hs_data.status = BTA_HH_OK;
- p_buf->len = len + 1;
- p_buf->layer_specific = 0;
- p_buf->offset = 0;
-
- /* attach report ID as the first byte of the report before sending it to USB HID driver */
- pp = (uint8_t*)(p_buf + 1);
- UINT8_TO_STREAM(pp, p_rpt->rpt_id);
- memcpy(pp, value, len);
-
- hs_data.rsp_data.p_rpt_data =p_buf;
- }
- }
-
- p_dev_cb->w4_evt = 0;
- (* bta_hh_cb.p_cback)(BTA_HH_GET_RPT_EVT, (tBTA_HH *)&hs_data);
-
- osi_free_and_reset((void **)&p_buf);
+ osi_free_and_reset((void**)&p_buf);
}
/*******************************************************************************
@@ -2036,47 +1927,47 @@
* Returns void
*
******************************************************************************/
-void bta_hh_le_get_rpt(tBTA_HH_DEV_CB *p_cb, tBTA_HH_RPT_TYPE r_type, uint8_t rpt_id)
-{
- tBTA_HH_LE_RPT *p_rpt = bta_hh_le_find_rpt_by_idtype(p_cb->hid_srvc.report,
- p_cb->mode, r_type, rpt_id);
+void bta_hh_le_get_rpt(tBTA_HH_DEV_CB* p_cb, tBTA_HH_RPT_TYPE r_type,
+ uint8_t rpt_id) {
+ tBTA_HH_LE_RPT* p_rpt = bta_hh_le_find_rpt_by_idtype(
+ p_cb->hid_srvc.report, p_cb->mode, r_type, rpt_id);
- if (p_rpt == NULL) {
- APPL_TRACE_ERROR("%s: no matching report", __func__);
- return;
- }
+ if (p_rpt == NULL) {
+ APPL_TRACE_ERROR("%s: no matching report", __func__);
+ return;
+ }
- p_cb->w4_evt = BTA_HH_GET_RPT_EVT;
- gatt_queue_read_op(GATT_READ_CHAR, p_cb->conn_id, p_rpt->char_inst_id, read_report_cb, p_cb);
+ p_cb->w4_evt = BTA_HH_GET_RPT_EVT;
+ gatt_queue_read_op(GATT_READ_CHAR, p_cb->conn_id, p_rpt->char_inst_id,
+ read_report_cb, p_cb);
}
-static void write_report_cb(uint16_t conn_id, tGATT_STATUS status, uint16_t handle, void* data)
-{
- tBTA_HH_CBDATA cback_data;
- tBTA_HH_DEV_CB *p_dev_cb = (tBTA_HH_DEV_CB*)data;
- uint16_t cb_evt = p_dev_cb->w4_evt;
+static void write_report_cb(uint16_t conn_id, tGATT_STATUS status,
+ uint16_t handle, void* data) {
+ tBTA_HH_CBDATA cback_data;
+ tBTA_HH_DEV_CB* p_dev_cb = (tBTA_HH_DEV_CB*)data;
+ uint16_t cb_evt = p_dev_cb->w4_evt;
- if (cb_evt == 0)
- return;
+ if (cb_evt == 0) return;
#if (BTA_HH_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hh_le_write_cmpl w4_evt: %d", p_dev_cb->w4_evt);
+ APPL_TRACE_DEBUG("bta_hh_le_write_cmpl w4_evt: %d", p_dev_cb->w4_evt);
#endif
- const tBTA_GATTC_CHARACTERISTIC *p_char = BTA_GATTC_GetCharacteristic(conn_id, handle);
- uint16_t uuid = p_char->uuid.uu.uuid16;
- if (uuid != GATT_UUID_HID_REPORT &&
- uuid != GATT_UUID_HID_BT_KB_INPUT &&
- uuid != GATT_UUID_HID_BT_MOUSE_INPUT &&
- uuid != GATT_UUID_HID_BT_KB_OUTPUT) {
- return;
- }
+ const tBTA_GATTC_CHARACTERISTIC* p_char =
+ BTA_GATTC_GetCharacteristic(conn_id, handle);
+ uint16_t uuid = p_char->uuid.uu.uuid16;
+ if (uuid != GATT_UUID_HID_REPORT && uuid != GATT_UUID_HID_BT_KB_INPUT &&
+ uuid != GATT_UUID_HID_BT_MOUSE_INPUT &&
+ uuid != GATT_UUID_HID_BT_KB_OUTPUT) {
+ return;
+ }
- /* Set Report finished */
- cback_data.handle = p_dev_cb->hid_handle;
- cback_data.status = (status == BTA_GATT_OK)? BTA_HH_OK : BTA_HH_ERR;
- p_dev_cb->w4_evt = 0;
- (* bta_hh_cb.p_cback)(cb_evt, (tBTA_HH *)&cback_data);
+ /* Set Report finished */
+ cback_data.handle = p_dev_cb->hid_handle;
+ cback_data.status = (status == BTA_GATT_OK) ? BTA_HH_OK : BTA_HH_ERR;
+ p_dev_cb->w4_evt = 0;
+ (*bta_hh_cb.p_cback)(cb_evt, (tBTA_HH*)&cback_data);
}
/*******************************************************************************
*
@@ -2087,42 +1978,40 @@
* Returns void
*
******************************************************************************/
-void bta_hh_le_write_rpt(tBTA_HH_DEV_CB *p_cb,
- tBTA_HH_RPT_TYPE r_type,
- BT_HDR *p_buf, uint16_t w4_evt )
-{
- tBTA_HH_LE_RPT *p_rpt;
- uint8_t rpt_id;
+void bta_hh_le_write_rpt(tBTA_HH_DEV_CB* p_cb, tBTA_HH_RPT_TYPE r_type,
+ BT_HDR* p_buf, uint16_t w4_evt) {
+ tBTA_HH_LE_RPT* p_rpt;
+ uint8_t rpt_id;
- if (p_buf == NULL || p_buf->len == 0)
- {
- APPL_TRACE_ERROR("%s: Illegal data", __func__);
- return;
- }
+ if (p_buf == NULL || p_buf->len == 0) {
+ APPL_TRACE_ERROR("%s: Illegal data", __func__);
+ return;
+ }
- /* strip report ID from the data */
- uint8_t *vec_start = (uint8_t *)(p_buf + 1) + p_buf->offset;
- STREAM_TO_UINT8(rpt_id, vec_start);
- vector<uint8_t> value(vec_start, vec_start + p_buf->len - 1);
+ /* strip report ID from the data */
+ uint8_t* vec_start = (uint8_t*)(p_buf + 1) + p_buf->offset;
+ STREAM_TO_UINT8(rpt_id, vec_start);
+ vector<uint8_t> value(vec_start, vec_start + p_buf->len - 1);
- p_rpt = bta_hh_le_find_rpt_by_idtype(p_cb->hid_srvc.report, p_cb->mode, r_type, rpt_id);
- if (p_rpt == NULL) {
- APPL_TRACE_ERROR("%s: no matching report", __func__);
- osi_free(p_buf);
- return;
- }
+ p_rpt = bta_hh_le_find_rpt_by_idtype(p_cb->hid_srvc.report, p_cb->mode,
+ r_type, rpt_id);
+ if (p_rpt == NULL) {
+ APPL_TRACE_ERROR("%s: no matching report", __func__);
+ osi_free(p_buf);
+ return;
+ }
- p_cb->w4_evt = w4_evt;
+ p_cb->w4_evt = w4_evt;
- const tBTA_GATTC_CHARACTERISTIC *p_char = BTA_GATTC_GetCharacteristic(p_cb->conn_id,
- p_rpt->char_inst_id);
+ const tBTA_GATTC_CHARACTERISTIC* p_char =
+ BTA_GATTC_GetCharacteristic(p_cb->conn_id, p_rpt->char_inst_id);
- tBTA_GATTC_WRITE_TYPE write_type = BTA_GATTC_TYPE_WRITE;
- if (p_char && (p_char->properties & BTA_GATT_CHAR_PROP_BIT_WRITE_NR))
- write_type = BTA_GATTC_TYPE_WRITE_NO_RSP;
+ tBTA_GATTC_WRITE_TYPE write_type = BTA_GATTC_TYPE_WRITE;
+ if (p_char && (p_char->properties & BTA_GATT_CHAR_PROP_BIT_WRITE_NR))
+ write_type = BTA_GATTC_TYPE_WRITE_NO_RSP;
- gatt_queue_write_op(GATT_WRITE_CHAR, p_cb->conn_id, p_rpt->char_inst_id,
- std::move(value), write_type, write_report_cb, p_cb);
+ gatt_queue_write_op(GATT_WRITE_CHAR, p_cb->conn_id, p_rpt->char_inst_id,
+ std::move(value), write_type, write_report_cb, p_cb);
}
/*******************************************************************************
@@ -2134,13 +2023,14 @@
* Returns void
*
******************************************************************************/
-void bta_hh_le_suspend(tBTA_HH_DEV_CB *p_cb, tBTA_HH_TRANS_CTRL_TYPE ctrl_type)
-{
- ctrl_type -= BTA_HH_CTRL_SUSPEND;
+void bta_hh_le_suspend(tBTA_HH_DEV_CB* p_cb,
+ tBTA_HH_TRANS_CTRL_TYPE ctrl_type) {
+ ctrl_type -= BTA_HH_CTRL_SUSPEND;
- //We don't care about response
- gatt_queue_write_op(GATT_WRITE_CHAR, p_cb->conn_id, p_cb->hid_srvc.control_point_handle,
- {(uint8_t) ctrl_type}, BTA_GATTC_TYPE_WRITE_NO_RSP, NULL, NULL);
+ // We don't care about response
+ gatt_queue_write_op(GATT_WRITE_CHAR, p_cb->conn_id,
+ p_cb->hid_srvc.control_point_handle, {(uint8_t)ctrl_type},
+ BTA_GATTC_TYPE_WRITE_NO_RSP, NULL, NULL);
}
/*******************************************************************************
@@ -2152,55 +2042,47 @@
* Returns void
*
******************************************************************************/
-void bta_hh_le_write_dev_act(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data)
-{
- switch(p_data->api_sndcmd.t_type)
- {
- case HID_TRANS_SET_PROTOCOL:
- p_cb->w4_evt = BTA_HH_SET_PROTO_EVT;
- bta_hh_le_set_protocol_mode(p_cb, p_data->api_sndcmd.param);
- break;
+void bta_hh_le_write_dev_act(tBTA_HH_DEV_CB* p_cb, tBTA_HH_DATA* p_data) {
+ switch (p_data->api_sndcmd.t_type) {
+ case HID_TRANS_SET_PROTOCOL:
+ p_cb->w4_evt = BTA_HH_SET_PROTO_EVT;
+ bta_hh_le_set_protocol_mode(p_cb, p_data->api_sndcmd.param);
+ break;
- case HID_TRANS_GET_PROTOCOL:
- bta_hh_le_get_protocol_mode(p_cb);
- break;
+ case HID_TRANS_GET_PROTOCOL:
+ bta_hh_le_get_protocol_mode(p_cb);
+ break;
- case HID_TRANS_GET_REPORT:
- bta_hh_le_get_rpt(p_cb,
- p_data->api_sndcmd.param,
- p_data->api_sndcmd.rpt_id);
- break;
+ case HID_TRANS_GET_REPORT:
+ bta_hh_le_get_rpt(p_cb, p_data->api_sndcmd.param,
+ p_data->api_sndcmd.rpt_id);
+ break;
- case HID_TRANS_SET_REPORT:
- bta_hh_le_write_rpt(p_cb,
- p_data->api_sndcmd.param,
- p_data->api_sndcmd.p_data,
- BTA_HH_SET_RPT_EVT);
- break;
+ case HID_TRANS_SET_REPORT:
+ bta_hh_le_write_rpt(p_cb, p_data->api_sndcmd.param,
+ p_data->api_sndcmd.p_data, BTA_HH_SET_RPT_EVT);
+ break;
- case HID_TRANS_DATA: /* output report */
+ case HID_TRANS_DATA: /* output report */
- bta_hh_le_write_rpt(p_cb,
- p_data->api_sndcmd.param,
- p_data->api_sndcmd.p_data,
- BTA_HH_DATA_EVT);
- break;
+ bta_hh_le_write_rpt(p_cb, p_data->api_sndcmd.param,
+ p_data->api_sndcmd.p_data, BTA_HH_DATA_EVT);
+ break;
- case HID_TRANS_CONTROL:
- /* no handshake event will be generated */
- /* if VC_UNPLUG is issued, set flag */
- if (p_data->api_sndcmd.param == BTA_HH_CTRL_SUSPEND ||
- p_data->api_sndcmd.param == BTA_HH_CTRL_EXIT_SUSPEND)
- {
- bta_hh_le_suspend(p_cb, p_data->api_sndcmd.param);
- }
- break;
+ case HID_TRANS_CONTROL:
+ /* no handshake event will be generated */
+ /* if VC_UNPLUG is issued, set flag */
+ if (p_data->api_sndcmd.param == BTA_HH_CTRL_SUSPEND ||
+ p_data->api_sndcmd.param == BTA_HH_CTRL_EXIT_SUSPEND) {
+ bta_hh_le_suspend(p_cb, p_data->api_sndcmd.param);
+ }
+ break;
- default:
- APPL_TRACE_ERROR("%s unsupported transaction for BLE HID device: %d",
- __func__, p_data->api_sndcmd.t_type);
- break;
- }
+ default:
+ APPL_TRACE_ERROR("%s unsupported transaction for BLE HID device: %d",
+ __func__, p_data->api_sndcmd.t_type);
+ break;
+ }
}
/*******************************************************************************
@@ -2212,109 +2094,100 @@
* Returns void
*
******************************************************************************/
-void bta_hh_le_get_dscp_act(tBTA_HH_DEV_CB *p_cb)
-{
- if (p_cb->hid_srvc.in_use)
- {
- p_cb->dscp_info.descriptor.dl_len = p_cb->hid_srvc.descriptor.dl_len;
- p_cb->dscp_info.descriptor.dsc_list = p_cb->hid_srvc.descriptor.dsc_list;
+void bta_hh_le_get_dscp_act(tBTA_HH_DEV_CB* p_cb) {
+ if (p_cb->hid_srvc.in_use) {
+ p_cb->dscp_info.descriptor.dl_len = p_cb->hid_srvc.descriptor.dl_len;
+ p_cb->dscp_info.descriptor.dsc_list = p_cb->hid_srvc.descriptor.dsc_list;
- (*bta_hh_cb.p_cback)(BTA_HH_GET_DSCP_EVT, (tBTA_HH *)&p_cb->dscp_info);
- }
+ (*bta_hh_cb.p_cback)(BTA_HH_GET_DSCP_EVT, (tBTA_HH*)&p_cb->dscp_info);
+ }
}
/*******************************************************************************
*
* Function bta_hh_le_add_dev_bg_conn
*
- * Description Remove a LE HID device from back ground connection procedure.
+ * Description Remove a LE HID device from back ground connection
+ *procedure.
*
* Returns void
*
******************************************************************************/
-static void bta_hh_le_add_dev_bg_conn(tBTA_HH_DEV_CB *p_cb, bool check_bond)
-{
- uint8_t sec_flag=0;
- bool to_add = true;
+static void bta_hh_le_add_dev_bg_conn(tBTA_HH_DEV_CB* p_cb, bool check_bond) {
+ uint8_t sec_flag = 0;
+ bool to_add = true;
- if (check_bond)
- {
- /* start reconnection if remote is a bonded device */
- /* verify bond */
- BTM_GetSecurityFlagsByTransport(p_cb->addr, &sec_flag, BT_TRANSPORT_LE);
+ if (check_bond) {
+ /* start reconnection if remote is a bonded device */
+ /* verify bond */
+ BTM_GetSecurityFlagsByTransport(p_cb->addr, &sec_flag, BT_TRANSPORT_LE);
- if ((sec_flag & BTM_SEC_FLAG_LKEY_KNOWN) == 0)
- to_add = false;
- }
+ if ((sec_flag & BTM_SEC_FLAG_LKEY_KNOWN) == 0) to_add = false;
+ }
- if (/*p_cb->dscp_info.flag & BTA_HH_LE_NORMAL_CONN &&*/
- !p_cb->in_bg_conn && to_add)
- {
- /* add device into BG connection to accept remote initiated connection */
- BTA_GATTC_Open(bta_hh_cb.gatt_if, p_cb->addr, false, BTA_GATT_TRANSPORT_LE);
- p_cb->in_bg_conn = true;
+ if (/*p_cb->dscp_info.flag & BTA_HH_LE_NORMAL_CONN &&*/
+ !p_cb->in_bg_conn && to_add) {
+ /* add device into BG connection to accept remote initiated connection */
+ BTA_GATTC_Open(bta_hh_cb.gatt_if, p_cb->addr, false, BTA_GATT_TRANSPORT_LE);
+ p_cb->in_bg_conn = true;
- BTA_DmBleSetBgConnType(BTA_DM_BLE_CONN_AUTO, NULL);
- }
- return;
+ BTA_DmBleSetBgConnType(BTA_DM_BLE_CONN_AUTO, NULL);
+ }
+ return;
}
/*******************************************************************************
*
* Function bta_hh_le_add_device
*
- * Description Add a LE HID device as a known device, and also add the address
+ * Description Add a LE HID device as a known device, and also add the
+ *address
* into back ground connection WL for incoming connection.
*
* Returns void
*
******************************************************************************/
-uint8_t bta_hh_le_add_device(tBTA_HH_DEV_CB *p_cb, tBTA_HH_MAINT_DEV *p_dev_info)
-{
- p_cb->hid_handle = BTA_HH_GET_LE_DEV_HDL(p_cb->index);
- bta_hh_cb.le_cb_index[BTA_HH_GET_LE_CB_IDX(p_cb->hid_handle)] = p_cb->index;
+uint8_t bta_hh_le_add_device(tBTA_HH_DEV_CB* p_cb,
+ tBTA_HH_MAINT_DEV* p_dev_info) {
+ p_cb->hid_handle = BTA_HH_GET_LE_DEV_HDL(p_cb->index);
+ bta_hh_cb.le_cb_index[BTA_HH_GET_LE_CB_IDX(p_cb->hid_handle)] = p_cb->index;
- /* update DI information */
- bta_hh_update_di_info(p_cb,
- p_dev_info->dscp_info.vendor_id,
- p_dev_info->dscp_info.product_id,
- p_dev_info->dscp_info.version,
- p_dev_info->dscp_info.flag);
+ /* update DI information */
+ bta_hh_update_di_info(
+ p_cb, p_dev_info->dscp_info.vendor_id, p_dev_info->dscp_info.product_id,
+ p_dev_info->dscp_info.version, p_dev_info->dscp_info.flag);
- /* add to BTA device list */
- bta_hh_add_device_to_list(p_cb, p_cb->hid_handle,
- p_dev_info->attr_mask,
- &p_dev_info->dscp_info.descriptor,
- p_dev_info->sub_class,
- p_dev_info->dscp_info.ssr_max_latency,
- p_dev_info->dscp_info.ssr_min_tout,
- p_dev_info->app_id);
+ /* add to BTA device list */
+ bta_hh_add_device_to_list(
+ p_cb, p_cb->hid_handle, p_dev_info->attr_mask,
+ &p_dev_info->dscp_info.descriptor, p_dev_info->sub_class,
+ p_dev_info->dscp_info.ssr_max_latency, p_dev_info->dscp_info.ssr_min_tout,
+ p_dev_info->app_id);
- bta_hh_le_add_dev_bg_conn(p_cb, false);
+ bta_hh_le_add_dev_bg_conn(p_cb, false);
- return p_cb->hid_handle;
+ return p_cb->hid_handle;
}
/*******************************************************************************
*
* Function bta_hh_le_remove_dev_bg_conn
*
- * Description Remove a LE HID device from back ground connection procedure.
+ * Description Remove a LE HID device from back ground connection
+ *procedure.
*
* Returns void
*
******************************************************************************/
-void bta_hh_le_remove_dev_bg_conn(tBTA_HH_DEV_CB *p_dev_cb)
-{
- if (p_dev_cb->in_bg_conn)
- {
- p_dev_cb->in_bg_conn = false;
+void bta_hh_le_remove_dev_bg_conn(tBTA_HH_DEV_CB* p_dev_cb) {
+ if (p_dev_cb->in_bg_conn) {
+ p_dev_cb->in_bg_conn = false;
- BTA_GATTC_CancelOpen(bta_hh_cb.gatt_if, p_dev_cb->addr, false);
- }
+ BTA_GATTC_CancelOpen(bta_hh_cb.gatt_if, p_dev_cb->addr, false);
+ }
- /* deregister all notifications */
- bta_hh_le_deregister_input_notif(p_dev_cb);
+ /* deregister all notifications */
+ bta_hh_le_deregister_input_notif(p_dev_cb);
}
/*******************************************************************************
@@ -2326,103 +2199,101 @@
* Parameters:
*
******************************************************************************/
-static void bta_hh_gattc_callback(tBTA_GATTC_EVT event, tBTA_GATTC *p_data)
-{
- tBTA_HH_DEV_CB *p_dev_cb;
+static void bta_hh_gattc_callback(tBTA_GATTC_EVT event, tBTA_GATTC* p_data) {
+ tBTA_HH_DEV_CB* p_dev_cb;
#if (BTA_HH_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hh_gattc_callback event = %d", event);
+ APPL_TRACE_DEBUG("bta_hh_gattc_callback event = %d", event);
#endif
- if (p_data == NULL)
- return;
+ if (p_data == NULL) return;
- switch (event)
- {
- case BTA_GATTC_REG_EVT: /* 0 */
- bta_hh_le_register_cmpl(&p_data->reg_oper);
- break;
+ switch (event) {
+ case BTA_GATTC_REG_EVT: /* 0 */
+ bta_hh_le_register_cmpl(&p_data->reg_oper);
+ break;
- case BTA_GATTC_DEREG_EVT: /* 1 */
- bta_hh_cleanup_disable(p_data->reg_oper.status);
- break;
+ case BTA_GATTC_DEREG_EVT: /* 1 */
+ bta_hh_cleanup_disable(p_data->reg_oper.status);
+ break;
- case BTA_GATTC_OPEN_EVT: /* 2 */
- p_dev_cb = bta_hh_le_find_dev_cb_by_bda(p_data->open.remote_bda);
- if (p_dev_cb) {
- bta_hh_sm_execute(p_dev_cb, BTA_HH_GATT_OPEN_EVT, (tBTA_HH_DATA *)&p_data->open);
- }
- break;
+ case BTA_GATTC_OPEN_EVT: /* 2 */
+ p_dev_cb = bta_hh_le_find_dev_cb_by_bda(p_data->open.remote_bda);
+ if (p_dev_cb) {
+ bta_hh_sm_execute(p_dev_cb, BTA_HH_GATT_OPEN_EVT,
+ (tBTA_HH_DATA*)&p_data->open);
+ }
+ break;
- case BTA_GATTC_CLOSE_EVT: /* 5 */
- bta_hh_le_close(&p_data->close);
- break;
+ case BTA_GATTC_CLOSE_EVT: /* 5 */
+ bta_hh_le_close(&p_data->close);
+ break;
- case BTA_GATTC_SEARCH_CMPL_EVT: /* 6 */
- bta_hh_le_srvc_search_cmpl(&p_data->search_cmpl);
- break;
+ case BTA_GATTC_SEARCH_CMPL_EVT: /* 6 */
+ bta_hh_le_srvc_search_cmpl(&p_data->search_cmpl);
+ break;
- case BTA_GATTC_NOTIF_EVT: /* 10 */
- bta_hh_le_input_rpt_notify(&p_data->notify);
- break;
+ case BTA_GATTC_NOTIF_EVT: /* 10 */
+ bta_hh_le_input_rpt_notify(&p_data->notify);
+ break;
- case BTA_GATTC_ENC_CMPL_CB_EVT: /* 17 */
- p_dev_cb = bta_hh_le_find_dev_cb_by_bda(p_data->enc_cmpl.remote_bda);
- if (p_dev_cb) {
- bta_hh_sm_execute(p_dev_cb, BTA_HH_GATT_ENC_CMPL_EVT,
- (tBTA_HH_DATA *)&p_data->enc_cmpl);
- }
- break;
+ case BTA_GATTC_ENC_CMPL_CB_EVT: /* 17 */
+ p_dev_cb = bta_hh_le_find_dev_cb_by_bda(p_data->enc_cmpl.remote_bda);
+ if (p_dev_cb) {
+ bta_hh_sm_execute(p_dev_cb, BTA_HH_GATT_ENC_CMPL_EVT,
+ (tBTA_HH_DATA*)&p_data->enc_cmpl);
+ }
+ break;
- default:
- break;
- }
+ default:
+ break;
+ }
}
-static void read_report_descriptor_ccc_cb(uint16_t conn_id, tGATT_STATUS status, uint16_t handle,
- uint16_t len, uint8_t *value, void* data)
-{
- tBTA_HH_LE_RPT *p_rpt = (tBTA_HH_LE_RPT*)data;
- uint8_t *pp = value;
- STREAM_TO_UINT16(p_rpt->client_cfg_value, pp);
+static void read_report_descriptor_ccc_cb(uint16_t conn_id, tGATT_STATUS status,
+ uint16_t handle, uint16_t len,
+ uint8_t* value, void* data) {
+ tBTA_HH_LE_RPT* p_rpt = (tBTA_HH_LE_RPT*)data;
+ uint8_t* pp = value;
+ STREAM_TO_UINT16(p_rpt->client_cfg_value, pp);
- APPL_TRACE_DEBUG("Read Client Configuration: 0x%04x", p_rpt->client_cfg_value);
+ APPL_TRACE_DEBUG("Read Client Configuration: 0x%04x",
+ p_rpt->client_cfg_value);
}
/*******************************************************************************
*
* Function bta_hh_le_hid_read_rpt_clt_cfg
*
- * Description a test command to read report descriptor client configuration
+ * Description a test command to read report descriptor client
+ *configuration
*
* Returns void
*
******************************************************************************/
-void bta_hh_le_hid_read_rpt_clt_cfg(BD_ADDR bd_addr, uint8_t rpt_id)
-{
- tBTA_HH_DEV_CB *p_cb = NULL;
- tBTA_HH_LE_RPT *p_rpt ;
- uint8_t index = BTA_HH_IDX_INVALID;
+void bta_hh_le_hid_read_rpt_clt_cfg(BD_ADDR bd_addr, uint8_t rpt_id) {
+ tBTA_HH_DEV_CB* p_cb = NULL;
+ tBTA_HH_LE_RPT* p_rpt;
+ uint8_t index = BTA_HH_IDX_INVALID;
- index = bta_hh_find_cb(bd_addr);
- if ((index = bta_hh_find_cb(bd_addr))== BTA_HH_IDX_INVALID)
- {
- APPL_TRACE_ERROR("%s: unknown device", __func__);
- return;
- }
-
- p_cb = &bta_hh_cb.kdev[index];
-
- p_rpt = bta_hh_le_find_rpt_by_idtype(p_cb->hid_srvc.report, p_cb->mode, BTA_HH_RPTT_INPUT,
- rpt_id);
-
- if (p_rpt == NULL)
- {
- APPL_TRACE_ERROR("%s: no matching report", __func__);
- return;
- }
-
- bta_hh_le_read_char_descriptor(p_cb, p_rpt->char_inst_id, GATT_UUID_CHAR_CLIENT_CONFIG,
- read_report_descriptor_ccc_cb, p_rpt);
+ index = bta_hh_find_cb(bd_addr);
+ if ((index = bta_hh_find_cb(bd_addr)) == BTA_HH_IDX_INVALID) {
+ APPL_TRACE_ERROR("%s: unknown device", __func__);
return;
+ }
+
+ p_cb = &bta_hh_cb.kdev[index];
+
+ p_rpt = bta_hh_le_find_rpt_by_idtype(p_cb->hid_srvc.report, p_cb->mode,
+ BTA_HH_RPTT_INPUT, rpt_id);
+
+ if (p_rpt == NULL) {
+ APPL_TRACE_ERROR("%s: no matching report", __func__);
+ return;
+ }
+
+ bta_hh_le_read_char_descriptor(p_cb, p_rpt->char_inst_id,
+ GATT_UUID_CHAR_CLIENT_CONFIG,
+ read_report_descriptor_ccc_cb, p_rpt);
+ return;
}
/*******************************************************************************
@@ -2434,7 +2305,7 @@
* Parameters:
*
******************************************************************************/
-//TODO(jpawlowski): uncomment when fixed
+// TODO(jpawlowski): uncomment when fixed
// static void bta_hh_process_cache_rpt (tBTA_HH_DEV_CB *p_cb,
// tBTA_HH_RPT_CACHE_ENTRY *p_rpt_cache,
// uint8_t num_rpt)
@@ -2460,7 +2331,8 @@
// p_rpt_cache->char_inst_id,
// p_rpt_cache->prop)) == NULL)
// {
-// APPL_TRACE_ERROR("bta_hh_process_cache_rpt: allocation report entry failure");
+// APPL_TRACE_ERROR("bta_hh_process_cache_rpt: allocation report
+// entry failure");
// break;
// }
// else
@@ -2470,9 +2342,11 @@
// if (p_rpt->uuid == GATT_UUID_HID_BT_KB_INPUT ||
// p_rpt->uuid == GATT_UUID_HID_BT_MOUSE_INPUT ||
-// (p_rpt->uuid == GATT_UUID_HID_REPORT && p_rpt->rpt_type == BTA_HH_RPTT_INPUT))
+// (p_rpt->uuid == GATT_UUID_HID_REPORT && p_rpt->rpt_type
+// == BTA_HH_RPTT_INPUT))
// {
-// p_rpt->client_cfg_value = BTA_GATT_CLT_CONFIG_NOTIFICATION;
+// p_rpt->client_cfg_value =
+// BTA_GATT_CLT_CONFIG_NOTIFICATION;
// }
// }
// }
@@ -2480,7 +2354,3 @@
// }
#endif
-
-
-
-
diff --git a/bta/hh/bta_hh_main.cc b/bta/hh/bta_hh_main.cc
index 0108548..ca7601a 100644
--- a/bta/hh/bta_hh_main.cc
+++ b/bta/hh/bta_hh_main.cc
@@ -28,201 +28,193 @@
#include <string.h>
+#include "bt_common.h"
#include "bta_hh_api.h"
#include "bta_hh_int.h"
-#include "bt_common.h"
/*****************************************************************************
* Constants and types
****************************************************************************/
/* state machine action enumeration list */
-enum
-{
- BTA_HH_API_DISC_ACT, /* HID host process API close action */
- BTA_HH_OPEN_ACT, /* HID host process BTA_HH_EVT_OPEN */
- BTA_HH_CLOSE_ACT, /* HID host process BTA_HH_EVT_CLOSE */
- BTA_HH_DATA_ACT, /* HID host receive data report */
- BTA_HH_CTRL_DAT_ACT,
- BTA_HH_HANDSK_ACT,
- BTA_HH_START_SDP, /* HID host inquery */
- BTA_HH_SDP_CMPL,
- BTA_HH_WRITE_DEV_ACT,
- BTA_HH_GET_DSCP_ACT,
- BTA_HH_MAINT_DEV_ACT,
- BTA_HH_OPEN_CMPL_ACT,
- BTA_HH_OPEN_FAILURE,
+enum {
+ BTA_HH_API_DISC_ACT, /* HID host process API close action */
+ BTA_HH_OPEN_ACT, /* HID host process BTA_HH_EVT_OPEN */
+ BTA_HH_CLOSE_ACT, /* HID host process BTA_HH_EVT_CLOSE */
+ BTA_HH_DATA_ACT, /* HID host receive data report */
+ BTA_HH_CTRL_DAT_ACT,
+ BTA_HH_HANDSK_ACT,
+ BTA_HH_START_SDP, /* HID host inquery */
+ BTA_HH_SDP_CMPL,
+ BTA_HH_WRITE_DEV_ACT,
+ BTA_HH_GET_DSCP_ACT,
+ BTA_HH_MAINT_DEV_ACT,
+ BTA_HH_OPEN_CMPL_ACT,
+ BTA_HH_OPEN_FAILURE,
#if (BTA_HH_LE_INCLUDED == TRUE)
- BTA_HH_GATT_CLOSE,
- BTA_HH_LE_OPEN_FAIL,
- BTA_HH_GATT_OPEN,
- BTA_HH_START_SEC,
- BTA_HH_SEC_CMPL,
- BTA_HH_GATT_ENC_CMPL,
+ BTA_HH_GATT_CLOSE,
+ BTA_HH_LE_OPEN_FAIL,
+ BTA_HH_GATT_OPEN,
+ BTA_HH_START_SEC,
+ BTA_HH_SEC_CMPL,
+ BTA_HH_GATT_ENC_CMPL,
#endif
- BTA_HH_NUM_ACTIONS
+ BTA_HH_NUM_ACTIONS
};
-#define BTA_HH_IGNORE BTA_HH_NUM_ACTIONS
+#define BTA_HH_IGNORE BTA_HH_NUM_ACTIONS
/* type for action functions */
-typedef void (*tBTA_HH_ACTION)(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data);
+typedef void (*tBTA_HH_ACTION)(tBTA_HH_DEV_CB* p_cb, tBTA_HH_DATA* p_data);
/* action functions */
-const tBTA_HH_ACTION bta_hh_action[] =
-{
- bta_hh_api_disc_act,
- bta_hh_open_act,
- bta_hh_close_act,
- bta_hh_data_act,
- bta_hh_ctrl_dat_act,
- bta_hh_handsk_act,
- bta_hh_start_sdp,
- bta_hh_sdp_cmpl,
- bta_hh_write_dev_act,
- bta_hh_get_dscp_act,
- bta_hh_maint_dev_act,
- bta_hh_open_cmpl_act,
- bta_hh_open_failure
+const tBTA_HH_ACTION bta_hh_action[] = {
+ bta_hh_api_disc_act, bta_hh_open_act, bta_hh_close_act, bta_hh_data_act,
+ bta_hh_ctrl_dat_act, bta_hh_handsk_act, bta_hh_start_sdp, bta_hh_sdp_cmpl,
+ bta_hh_write_dev_act, bta_hh_get_dscp_act, bta_hh_maint_dev_act,
+ bta_hh_open_cmpl_act, bta_hh_open_failure
#if (BTA_HH_LE_INCLUDED == TRUE)
- ,bta_hh_gatt_close
- ,bta_hh_le_open_fail
- ,bta_hh_gatt_open
- ,bta_hh_start_security
- ,bta_hh_security_cmpl
- ,bta_hh_le_notify_enc_cmpl
+ ,
+ bta_hh_gatt_close, bta_hh_le_open_fail, bta_hh_gatt_open,
+ bta_hh_start_security, bta_hh_security_cmpl, bta_hh_le_notify_enc_cmpl
#endif
};
/* state table information */
-#define BTA_HH_ACTION 0 /* position of action */
-#define BTA_HH_NEXT_STATE 1 /* position of next state */
-#define BTA_HH_NUM_COLS 2 /* number of columns */
+#define BTA_HH_ACTION 0 /* position of action */
+#define BTA_HH_NEXT_STATE 1 /* position of next state */
+#define BTA_HH_NUM_COLS 2 /* number of columns */
/* state table for idle state */
-const uint8_t bta_hh_st_idle[][BTA_HH_NUM_COLS] =
-{
-/* Event Action Next state */
-/* BTA_HH_API_OPEN_EVT */ {BTA_HH_START_SDP, BTA_HH_W4_CONN_ST },
-/* BTA_HH_API_CLOSE_EVT */ {BTA_HH_IGNORE, BTA_HH_IDLE_ST },
-/* BTA_HH_INT_OPEN_EVT */ {BTA_HH_OPEN_ACT, BTA_HH_W4_CONN_ST },
-/* BTA_HH_INT_CLOSE_EVT */ {BTA_HH_CLOSE_ACT, BTA_HH_IDLE_ST },
-/* BTA_HH_INT_DATA_EVT */ {BTA_HH_IGNORE, BTA_HH_IDLE_ST },
-/* BTA_HH_INT_CTRL_DATA */ {BTA_HH_IGNORE, BTA_HH_IDLE_ST },
-/* BTA_HH_INT_HANDSK_EVT */ {BTA_HH_IGNORE, BTA_HH_IDLE_ST },
-/* BTA_HH_SDP_CMPL_EVT */ {BTA_HH_IGNORE, BTA_HH_IDLE_ST },
-/* BTA_HH_API_WRITE_DEV_EVT */ {BTA_HH_IGNORE, BTA_HH_IDLE_ST },
-/* BTA_HH_API_GET_DSCP_EVT */ {BTA_HH_IGNORE, BTA_HH_IDLE_ST },
-/* BTA_HH_API_MAINT_DEV_EVT */ {BTA_HH_MAINT_DEV_ACT, BTA_HH_IDLE_ST },
-/* BTA_HH_OPEN_CMPL_EVT */ {BTA_HH_OPEN_CMPL_ACT, BTA_HH_CONN_ST }
+const uint8_t bta_hh_st_idle[][BTA_HH_NUM_COLS] = {
+ /* Event Action Next state */
+ /* BTA_HH_API_OPEN_EVT */ {BTA_HH_START_SDP, BTA_HH_W4_CONN_ST},
+ /* BTA_HH_API_CLOSE_EVT */ {BTA_HH_IGNORE, BTA_HH_IDLE_ST},
+ /* BTA_HH_INT_OPEN_EVT */ {BTA_HH_OPEN_ACT, BTA_HH_W4_CONN_ST},
+ /* BTA_HH_INT_CLOSE_EVT */ {BTA_HH_CLOSE_ACT, BTA_HH_IDLE_ST},
+ /* BTA_HH_INT_DATA_EVT */ {BTA_HH_IGNORE, BTA_HH_IDLE_ST},
+ /* BTA_HH_INT_CTRL_DATA */ {BTA_HH_IGNORE, BTA_HH_IDLE_ST},
+ /* BTA_HH_INT_HANDSK_EVT */ {BTA_HH_IGNORE, BTA_HH_IDLE_ST},
+ /* BTA_HH_SDP_CMPL_EVT */ {BTA_HH_IGNORE, BTA_HH_IDLE_ST},
+ /* BTA_HH_API_WRITE_DEV_EVT */ {BTA_HH_IGNORE, BTA_HH_IDLE_ST},
+ /* BTA_HH_API_GET_DSCP_EVT */ {BTA_HH_IGNORE, BTA_HH_IDLE_ST},
+ /* BTA_HH_API_MAINT_DEV_EVT */ {BTA_HH_MAINT_DEV_ACT, BTA_HH_IDLE_ST},
+ /* BTA_HH_OPEN_CMPL_EVT */ {BTA_HH_OPEN_CMPL_ACT, BTA_HH_CONN_ST}
#if (BTA_HH_LE_INCLUDED == TRUE)
-/* BTA_HH_GATT_CLOSE_EVT */ ,{BTA_HH_IGNORE, BTA_HH_IDLE_ST }
-/* BTA_HH_GATT_OPEN_EVT */ ,{BTA_HH_GATT_OPEN, BTA_HH_W4_CONN_ST }
-/* BTA_HH_START_ENC_EVT */ ,{BTA_HH_IGNORE, BTA_HH_IDLE_ST }
-/* BTA_HH_ENC_CMPL_EVT */ ,{BTA_HH_IGNORE, BTA_HH_IDLE_ST }
-/* BTA_HH_GATT_ENC_CMPL_EVT */ ,{BTA_HH_IGNORE, BTA_HH_IDLE_ST }
+ /* BTA_HH_GATT_CLOSE_EVT */,
+ {BTA_HH_IGNORE, BTA_HH_IDLE_ST}
+ /* BTA_HH_GATT_OPEN_EVT */,
+ {BTA_HH_GATT_OPEN, BTA_HH_W4_CONN_ST}
+ /* BTA_HH_START_ENC_EVT */,
+ {BTA_HH_IGNORE, BTA_HH_IDLE_ST}
+ /* BTA_HH_ENC_CMPL_EVT */,
+ {BTA_HH_IGNORE, BTA_HH_IDLE_ST}
+ /* BTA_HH_GATT_ENC_CMPL_EVT */,
+ {BTA_HH_IGNORE, BTA_HH_IDLE_ST}
#endif
};
-
-const uint8_t bta_hh_st_w4_conn[][BTA_HH_NUM_COLS] =
-{
-/* Event Action Next state */
-/* BTA_HH_API_OPEN_EVT */ {BTA_HH_IGNORE, BTA_HH_W4_CONN_ST },
-/* BTA_HH_API_CLOSE_EVT */ {BTA_HH_IGNORE, BTA_HH_IDLE_ST },
-/* BTA_HH_INT_OPEN_EVT */ {BTA_HH_OPEN_ACT, BTA_HH_W4_CONN_ST },
-/* BTA_HH_INT_CLOSE_EVT */ {BTA_HH_OPEN_FAILURE, BTA_HH_IDLE_ST },
-/* BTA_HH_INT_DATA_EVT */ {BTA_HH_IGNORE, BTA_HH_W4_CONN_ST },
-/* BTA_HH_INT_CTRL_DATA */ {BTA_HH_IGNORE, BTA_HH_W4_CONN_ST },
-/* BTA_HH_INT_HANDSK_EVT */ {BTA_HH_IGNORE, BTA_HH_W4_CONN_ST },
-/* BTA_HH_SDP_CMPL_EVT */ {BTA_HH_SDP_CMPL, BTA_HH_W4_CONN_ST },
-/* BTA_HH_API_WRITE_DEV_EVT */ {BTA_HH_WRITE_DEV_ACT, BTA_HH_W4_CONN_ST },
-/* BTA_HH_API_GET_DSCP_EVT */ {BTA_HH_IGNORE, BTA_HH_W4_CONN_ST },
-/* BTA_HH_API_MAINT_DEV_EVT */ {BTA_HH_MAINT_DEV_ACT, BTA_HH_IDLE_ST },
-/* BTA_HH_OPEN_CMPL_EVT */ {BTA_HH_OPEN_CMPL_ACT, BTA_HH_CONN_ST }
+const uint8_t bta_hh_st_w4_conn[][BTA_HH_NUM_COLS] = {
+ /* Event Action Next state */
+ /* BTA_HH_API_OPEN_EVT */ {BTA_HH_IGNORE, BTA_HH_W4_CONN_ST},
+ /* BTA_HH_API_CLOSE_EVT */ {BTA_HH_IGNORE, BTA_HH_IDLE_ST},
+ /* BTA_HH_INT_OPEN_EVT */ {BTA_HH_OPEN_ACT, BTA_HH_W4_CONN_ST},
+ /* BTA_HH_INT_CLOSE_EVT */ {BTA_HH_OPEN_FAILURE, BTA_HH_IDLE_ST},
+ /* BTA_HH_INT_DATA_EVT */ {BTA_HH_IGNORE, BTA_HH_W4_CONN_ST},
+ /* BTA_HH_INT_CTRL_DATA */ {BTA_HH_IGNORE, BTA_HH_W4_CONN_ST},
+ /* BTA_HH_INT_HANDSK_EVT */ {BTA_HH_IGNORE, BTA_HH_W4_CONN_ST},
+ /* BTA_HH_SDP_CMPL_EVT */ {BTA_HH_SDP_CMPL, BTA_HH_W4_CONN_ST},
+ /* BTA_HH_API_WRITE_DEV_EVT */ {BTA_HH_WRITE_DEV_ACT, BTA_HH_W4_CONN_ST},
+ /* BTA_HH_API_GET_DSCP_EVT */ {BTA_HH_IGNORE, BTA_HH_W4_CONN_ST},
+ /* BTA_HH_API_MAINT_DEV_EVT */ {BTA_HH_MAINT_DEV_ACT, BTA_HH_IDLE_ST},
+ /* BTA_HH_OPEN_CMPL_EVT */ {BTA_HH_OPEN_CMPL_ACT, BTA_HH_CONN_ST}
#if (BTA_HH_LE_INCLUDED == TRUE)
-/* BTA_HH_GATT_CLOSE_EVT */ ,{BTA_HH_LE_OPEN_FAIL, BTA_HH_IDLE_ST }
-/* BTA_HH_GATT_OPEN_EVT */ ,{BTA_HH_GATT_OPEN, BTA_HH_W4_CONN_ST }
-/* BTA_HH_START_ENC_EVT */ ,{BTA_HH_START_SEC, BTA_HH_W4_SEC }
-/* BTA_HH_ENC_CMPL_EVT */ ,{BTA_HH_IGNORE, BTA_HH_W4_CONN_ST }
-/* BTA_HH_GATT_ENC_CMPL_EVT */ ,{BTA_HH_IGNORE, BTA_HH_W4_CONN_ST }
+ /* BTA_HH_GATT_CLOSE_EVT */,
+ {BTA_HH_LE_OPEN_FAIL, BTA_HH_IDLE_ST}
+ /* BTA_HH_GATT_OPEN_EVT */,
+ {BTA_HH_GATT_OPEN, BTA_HH_W4_CONN_ST}
+ /* BTA_HH_START_ENC_EVT */,
+ {BTA_HH_START_SEC, BTA_HH_W4_SEC}
+ /* BTA_HH_ENC_CMPL_EVT */,
+ {BTA_HH_IGNORE, BTA_HH_W4_CONN_ST}
+ /* BTA_HH_GATT_ENC_CMPL_EVT */,
+ {BTA_HH_IGNORE, BTA_HH_W4_CONN_ST}
#endif
};
-
-const uint8_t bta_hh_st_connected[][BTA_HH_NUM_COLS] =
-{
-/* Event Action Next state */
-/* BTA_HH_API_OPEN_EVT */ {BTA_HH_IGNORE, BTA_HH_CONN_ST },
-/* BTA_HH_API_CLOSE_EVT */ {BTA_HH_API_DISC_ACT, BTA_HH_CONN_ST },
-/* BTA_HH_INT_OPEN_EVT */ {BTA_HH_OPEN_ACT, BTA_HH_CONN_ST },
-/* BTA_HH_INT_CLOSE_EVT */ {BTA_HH_CLOSE_ACT, BTA_HH_IDLE_ST },
-/* BTA_HH_INT_DATA_EVT */ {BTA_HH_DATA_ACT, BTA_HH_CONN_ST },
-/* BTA_HH_INT_CTRL_DATA */ {BTA_HH_CTRL_DAT_ACT, BTA_HH_CONN_ST },
-/* BTA_HH_INT_HANDSK_EVT */ {BTA_HH_HANDSK_ACT, BTA_HH_CONN_ST },
-/* BTA_HH_SDP_CMPL_EVT */ {BTA_HH_IGNORE, BTA_HH_CONN_ST },
-/* BTA_HH_API_WRITE_DEV_EVT */ {BTA_HH_WRITE_DEV_ACT, BTA_HH_CONN_ST },
-/* BTA_HH_API_GET_DSCP_EVT */ {BTA_HH_GET_DSCP_ACT, BTA_HH_CONN_ST },
-/* BTA_HH_API_MAINT_DEV_EVT */ {BTA_HH_MAINT_DEV_ACT, BTA_HH_CONN_ST },
-/* BTA_HH_OPEN_CMPL_EVT */ {BTA_HH_IGNORE, BTA_HH_CONN_ST }
+const uint8_t bta_hh_st_connected[][BTA_HH_NUM_COLS] = {
+ /* Event Action Next state */
+ /* BTA_HH_API_OPEN_EVT */ {BTA_HH_IGNORE, BTA_HH_CONN_ST},
+ /* BTA_HH_API_CLOSE_EVT */ {BTA_HH_API_DISC_ACT, BTA_HH_CONN_ST},
+ /* BTA_HH_INT_OPEN_EVT */ {BTA_HH_OPEN_ACT, BTA_HH_CONN_ST},
+ /* BTA_HH_INT_CLOSE_EVT */ {BTA_HH_CLOSE_ACT, BTA_HH_IDLE_ST},
+ /* BTA_HH_INT_DATA_EVT */ {BTA_HH_DATA_ACT, BTA_HH_CONN_ST},
+ /* BTA_HH_INT_CTRL_DATA */ {BTA_HH_CTRL_DAT_ACT, BTA_HH_CONN_ST},
+ /* BTA_HH_INT_HANDSK_EVT */ {BTA_HH_HANDSK_ACT, BTA_HH_CONN_ST},
+ /* BTA_HH_SDP_CMPL_EVT */ {BTA_HH_IGNORE, BTA_HH_CONN_ST},
+ /* BTA_HH_API_WRITE_DEV_EVT */ {BTA_HH_WRITE_DEV_ACT, BTA_HH_CONN_ST},
+ /* BTA_HH_API_GET_DSCP_EVT */ {BTA_HH_GET_DSCP_ACT, BTA_HH_CONN_ST},
+ /* BTA_HH_API_MAINT_DEV_EVT */ {BTA_HH_MAINT_DEV_ACT, BTA_HH_CONN_ST},
+ /* BTA_HH_OPEN_CMPL_EVT */ {BTA_HH_IGNORE, BTA_HH_CONN_ST}
#if (BTA_HH_LE_INCLUDED == TRUE)
-/* BTA_HH_GATT_CLOSE_EVT */ ,{BTA_HH_GATT_CLOSE, BTA_HH_IDLE_ST }
-/* BTA_HH_GATT_OPEN_EVT */ ,{BTA_HH_IGNORE, BTA_HH_CONN_ST }
-/* BTA_HH_START_ENC_EVT */ ,{BTA_HH_IGNORE, BTA_HH_CONN_ST }
-/* BTA_HH_ENC_CMPL_EVT */ ,{BTA_HH_IGNORE, BTA_HH_CONN_ST }
-/* BTA_HH_GATT_ENC_CMPL_EVT */ ,{BTA_HH_IGNORE, BTA_HH_CONN_ST }
+ /* BTA_HH_GATT_CLOSE_EVT */,
+ {BTA_HH_GATT_CLOSE, BTA_HH_IDLE_ST}
+ /* BTA_HH_GATT_OPEN_EVT */,
+ {BTA_HH_IGNORE, BTA_HH_CONN_ST}
+ /* BTA_HH_START_ENC_EVT */,
+ {BTA_HH_IGNORE, BTA_HH_CONN_ST}
+ /* BTA_HH_ENC_CMPL_EVT */,
+ {BTA_HH_IGNORE, BTA_HH_CONN_ST}
+ /* BTA_HH_GATT_ENC_CMPL_EVT */,
+ {BTA_HH_IGNORE, BTA_HH_CONN_ST}
#endif
};
#if (BTA_HH_LE_INCLUDED == TRUE)
-const uint8_t bta_hh_st_w4_sec[][BTA_HH_NUM_COLS] =
-{
-/* Event Action Next state */
-/* BTA_HH_API_OPEN_EVT */ {BTA_HH_IGNORE, BTA_HH_W4_SEC },
-/* BTA_HH_API_CLOSE_EVT */ {BTA_HH_API_DISC_ACT, BTA_HH_W4_SEC },
-/* BTA_HH_INT_OPEN_EVT */ {BTA_HH_IGNORE, BTA_HH_W4_SEC },
-/* BTA_HH_INT_CLOSE_EVT */ {BTA_HH_OPEN_FAILURE, BTA_HH_IDLE_ST },
-/* BTA_HH_INT_DATA_EVT */ {BTA_HH_IGNORE, BTA_HH_W4_SEC },
-/* BTA_HH_INT_CTRL_DATA */ {BTA_HH_IGNORE, BTA_HH_W4_SEC },
-/* BTA_HH_INT_HANDSK_EVT */ {BTA_HH_IGNORE, BTA_HH_W4_SEC },
-/* BTA_HH_SDP_CMPL_EVT */ {BTA_HH_IGNORE, BTA_HH_W4_SEC },
-/* BTA_HH_API_WRITE_DEV_EVT */ {BTA_HH_IGNORE , BTA_HH_W4_SEC },
-/* BTA_HH_API_GET_DSCP_EVT */ {BTA_HH_IGNORE, BTA_HH_W4_SEC },
-/* BTA_HH_API_MAINT_DEV_EVT */ {BTA_HH_MAINT_DEV_ACT, BTA_HH_W4_SEC },
-/* BTA_HH_OPEN_CMPL_EVT */ {BTA_HH_IGNORE, BTA_HH_W4_SEC },
-/* BTA_HH_GATT_CLOSE_EVT */ {BTA_HH_LE_OPEN_FAIL, BTA_HH_IDLE_ST },
-/* BTA_HH_GATT_OPEN_EVT */ {BTA_HH_IGNORE, BTA_HH_W4_SEC },
-/* BTA_HH_START_ENC_EVT */ {BTA_HH_IGNORE, BTA_HH_W4_SEC },
-/* BTA_HH_ENC_CMPL_EVT */ {BTA_HH_SEC_CMPL, BTA_HH_W4_CONN_ST },
-/* BTA_HH_GATT_ENC_CMPL_EVT */ {BTA_HH_GATT_ENC_CMPL, BTA_HH_W4_SEC }
-};
+const uint8_t bta_hh_st_w4_sec[][BTA_HH_NUM_COLS] = {
+ /* Event Action Next state */
+ /* BTA_HH_API_OPEN_EVT */ {BTA_HH_IGNORE, BTA_HH_W4_SEC},
+ /* BTA_HH_API_CLOSE_EVT */ {BTA_HH_API_DISC_ACT, BTA_HH_W4_SEC},
+ /* BTA_HH_INT_OPEN_EVT */ {BTA_HH_IGNORE, BTA_HH_W4_SEC},
+ /* BTA_HH_INT_CLOSE_EVT */ {BTA_HH_OPEN_FAILURE, BTA_HH_IDLE_ST},
+ /* BTA_HH_INT_DATA_EVT */ {BTA_HH_IGNORE, BTA_HH_W4_SEC},
+ /* BTA_HH_INT_CTRL_DATA */ {BTA_HH_IGNORE, BTA_HH_W4_SEC},
+ /* BTA_HH_INT_HANDSK_EVT */ {BTA_HH_IGNORE, BTA_HH_W4_SEC},
+ /* BTA_HH_SDP_CMPL_EVT */ {BTA_HH_IGNORE, BTA_HH_W4_SEC},
+ /* BTA_HH_API_WRITE_DEV_EVT */ {BTA_HH_IGNORE, BTA_HH_W4_SEC},
+ /* BTA_HH_API_GET_DSCP_EVT */ {BTA_HH_IGNORE, BTA_HH_W4_SEC},
+ /* BTA_HH_API_MAINT_DEV_EVT */ {BTA_HH_MAINT_DEV_ACT, BTA_HH_W4_SEC},
+ /* BTA_HH_OPEN_CMPL_EVT */ {BTA_HH_IGNORE, BTA_HH_W4_SEC},
+ /* BTA_HH_GATT_CLOSE_EVT */ {BTA_HH_LE_OPEN_FAIL, BTA_HH_IDLE_ST},
+ /* BTA_HH_GATT_OPEN_EVT */ {BTA_HH_IGNORE, BTA_HH_W4_SEC},
+ /* BTA_HH_START_ENC_EVT */ {BTA_HH_IGNORE, BTA_HH_W4_SEC},
+ /* BTA_HH_ENC_CMPL_EVT */ {BTA_HH_SEC_CMPL, BTA_HH_W4_CONN_ST},
+ /* BTA_HH_GATT_ENC_CMPL_EVT */ {BTA_HH_GATT_ENC_CMPL, BTA_HH_W4_SEC}};
#endif
/* type for state table */
typedef const uint8_t (*tBTA_HH_ST_TBL)[BTA_HH_NUM_COLS];
/* state table */
-const tBTA_HH_ST_TBL bta_hh_st_tbl[] =
-{
- bta_hh_st_idle,
- bta_hh_st_w4_conn,
- bta_hh_st_connected
+const tBTA_HH_ST_TBL bta_hh_st_tbl[] = {bta_hh_st_idle, bta_hh_st_w4_conn,
+ bta_hh_st_connected
#if (BTA_HH_LE_INCLUDED == TRUE)
- ,bta_hh_st_w4_sec
+ ,
+ bta_hh_st_w4_sec
#endif
};
/*****************************************************************************
* Global data
****************************************************************************/
-tBTA_HH_CB bta_hh_cb;
+tBTA_HH_CB bta_hh_cb;
/*****************************************************************************
* Static functions
****************************************************************************/
#if (BTA_HH_DEBUG == TRUE)
-static const char *bta_hh_evt_code(tBTA_HH_INT_EVT evt_code);
-static const char *bta_hh_state_code(tBTA_HH_STATE state_code);
+static const char* bta_hh_evt_code(tBTA_HH_INT_EVT evt_code);
+static const char* bta_hh_state_code(tBTA_HH_STATE state_code);
#endif
/*******************************************************************************
@@ -235,137 +227,127 @@
* Returns void
*
******************************************************************************/
-void bta_hh_sm_execute(tBTA_HH_DEV_CB *p_cb, uint16_t event, tBTA_HH_DATA * p_data)
-{
- tBTA_HH_ST_TBL state_table;
- uint8_t action;
- tBTA_HH cback_data;
- tBTA_HH_EVT cback_event = 0;
+void bta_hh_sm_execute(tBTA_HH_DEV_CB* p_cb, uint16_t event,
+ tBTA_HH_DATA* p_data) {
+ tBTA_HH_ST_TBL state_table;
+ uint8_t action;
+ tBTA_HH cback_data;
+ tBTA_HH_EVT cback_event = 0;
#if (BTA_HH_DEBUG == TRUE)
- tBTA_HH_STATE in_state ;
- uint16_t debug_event = event;
+ tBTA_HH_STATE in_state;
+ uint16_t debug_event = event;
#endif
- memset(&cback_data, 0, sizeof(tBTA_HH));
+ memset(&cback_data, 0, sizeof(tBTA_HH));
- /* handle exception, no valid control block was found */
- if (!p_cb)
- {
- /* BTA HH enabled already? otherwise ignore the event although it's bad*/
- if (bta_hh_cb.p_cback != NULL)
- {
- switch (event)
- {
- /* no control block available for new connection */
- case BTA_HH_API_OPEN_EVT:
- cback_event = BTA_HH_OPEN_EVT;
- /* build cback data */
- bdcpy(cback_data.conn.bda, ((tBTA_HH_API_CONN *)p_data)->bd_addr);
- cback_data.conn.status = BTA_HH_ERR_DB_FULL;
- cback_data.conn.handle = BTA_HH_INVALID_HANDLE;
- break;
- /* DB full, BTA_HhAddDev */
- case BTA_HH_API_MAINT_DEV_EVT:
- cback_event = p_data->api_maintdev.sub_event;
+ /* handle exception, no valid control block was found */
+ if (!p_cb) {
+ /* BTA HH enabled already? otherwise ignore the event although it's bad*/
+ if (bta_hh_cb.p_cback != NULL) {
+ switch (event) {
+ /* no control block available for new connection */
+ case BTA_HH_API_OPEN_EVT:
+ cback_event = BTA_HH_OPEN_EVT;
+ /* build cback data */
+ bdcpy(cback_data.conn.bda, ((tBTA_HH_API_CONN*)p_data)->bd_addr);
+ cback_data.conn.status = BTA_HH_ERR_DB_FULL;
+ cback_data.conn.handle = BTA_HH_INVALID_HANDLE;
+ break;
+ /* DB full, BTA_HhAddDev */
+ case BTA_HH_API_MAINT_DEV_EVT:
+ cback_event = p_data->api_maintdev.sub_event;
- if (p_data->api_maintdev.sub_event == BTA_HH_ADD_DEV_EVT)
- {
- bdcpy(cback_data.dev_info.bda, p_data->api_maintdev.bda);
- cback_data.dev_info.status = BTA_HH_ERR_DB_FULL;
- cback_data.dev_info.handle = BTA_HH_INVALID_HANDLE;
- }
- else
- {
- cback_data.dev_info.status = BTA_HH_ERR_HDL;
- cback_data.dev_info.handle = (uint8_t)p_data->api_maintdev.hdr.layer_specific;
- }
- break;
- case BTA_HH_API_WRITE_DEV_EVT:
- cback_event = (p_data->api_sndcmd.t_type - BTA_HH_FST_BTE_TRANS_EVT) +
+ if (p_data->api_maintdev.sub_event == BTA_HH_ADD_DEV_EVT) {
+ bdcpy(cback_data.dev_info.bda, p_data->api_maintdev.bda);
+ cback_data.dev_info.status = BTA_HH_ERR_DB_FULL;
+ cback_data.dev_info.handle = BTA_HH_INVALID_HANDLE;
+ } else {
+ cback_data.dev_info.status = BTA_HH_ERR_HDL;
+ cback_data.dev_info.handle =
+ (uint8_t)p_data->api_maintdev.hdr.layer_specific;
+ }
+ break;
+ case BTA_HH_API_WRITE_DEV_EVT:
+ cback_event = (p_data->api_sndcmd.t_type - BTA_HH_FST_BTE_TRANS_EVT) +
BTA_HH_FST_TRANS_CB_EVT;
- osi_free_and_reset((void **)&p_data->api_sndcmd.p_data);
- if (p_data->api_sndcmd.t_type == HID_TRANS_SET_PROTOCOL ||
- p_data->api_sndcmd.t_type == HID_TRANS_SET_REPORT ||
- p_data->api_sndcmd.t_type == HID_TRANS_SET_IDLE)
- {
- cback_data.dev_status.status = BTA_HH_ERR_HDL;
- cback_data.dev_status.handle = (uint8_t)p_data->api_sndcmd.hdr.layer_specific;
- }
- else if (p_data->api_sndcmd.t_type != HID_TRANS_DATA &&
- p_data->api_sndcmd.t_type != HID_TRANS_CONTROL)
- {
- cback_data.hs_data.handle = (uint8_t)p_data->api_sndcmd.hdr.layer_specific;
- cback_data.hs_data.status = BTA_HH_ERR_HDL;
- /* hs_data.rsp_data will be all zero, which is not valid value */
- }
- else if (p_data->api_sndcmd.t_type == HID_TRANS_CONTROL &&
- p_data->api_sndcmd.param == BTA_HH_CTRL_VIRTUAL_CABLE_UNPLUG)
- {
- cback_data.status = BTA_HH_ERR_HDL;
- cback_event = BTA_HH_VC_UNPLUG_EVT;
- }
- else
- cback_event = 0;
- break;
+ osi_free_and_reset((void**)&p_data->api_sndcmd.p_data);
+ if (p_data->api_sndcmd.t_type == HID_TRANS_SET_PROTOCOL ||
+ p_data->api_sndcmd.t_type == HID_TRANS_SET_REPORT ||
+ p_data->api_sndcmd.t_type == HID_TRANS_SET_IDLE) {
+ cback_data.dev_status.status = BTA_HH_ERR_HDL;
+ cback_data.dev_status.handle =
+ (uint8_t)p_data->api_sndcmd.hdr.layer_specific;
+ } else if (p_data->api_sndcmd.t_type != HID_TRANS_DATA &&
+ p_data->api_sndcmd.t_type != HID_TRANS_CONTROL) {
+ cback_data.hs_data.handle =
+ (uint8_t)p_data->api_sndcmd.hdr.layer_specific;
+ cback_data.hs_data.status = BTA_HH_ERR_HDL;
+ /* hs_data.rsp_data will be all zero, which is not valid value */
+ } else if (p_data->api_sndcmd.t_type == HID_TRANS_CONTROL &&
+ p_data->api_sndcmd.param ==
+ BTA_HH_CTRL_VIRTUAL_CABLE_UNPLUG) {
+ cback_data.status = BTA_HH_ERR_HDL;
+ cback_event = BTA_HH_VC_UNPLUG_EVT;
+ } else
+ cback_event = 0;
+ break;
- case BTA_HH_API_CLOSE_EVT:
- cback_event = BTA_HH_CLOSE_EVT;
+ case BTA_HH_API_CLOSE_EVT:
+ cback_event = BTA_HH_CLOSE_EVT;
- cback_data.dev_status.status = BTA_HH_ERR_HDL;
- cback_data.dev_status.handle = (uint8_t)p_data->api_sndcmd.hdr.layer_specific;
- break;
+ cback_data.dev_status.status = BTA_HH_ERR_HDL;
+ cback_data.dev_status.handle =
+ (uint8_t)p_data->api_sndcmd.hdr.layer_specific;
+ break;
- default:
- /* invalid handle, call bad API event */
- APPL_TRACE_ERROR("wrong device handle: [%d]", p_data->hdr.layer_specific);
- /* Free the callback buffer now */
- if (p_data != NULL)
- osi_free_and_reset((void **)&p_data->hid_cback.p_data);
- break;
- }
- if (cback_event)
- (* bta_hh_cb.p_cback)(cback_event, &cback_data);
- }
+ default:
+ /* invalid handle, call bad API event */
+ APPL_TRACE_ERROR("wrong device handle: [%d]",
+ p_data->hdr.layer_specific);
+ /* Free the callback buffer now */
+ if (p_data != NULL)
+ osi_free_and_reset((void**)&p_data->hid_cback.p_data);
+ break;
+ }
+ if (cback_event) (*bta_hh_cb.p_cback)(cback_event, &cback_data);
}
- /* corresponding CB is found, go to state machine */
- else
- {
+ }
+ /* corresponding CB is found, go to state machine */
+ else {
#if (BTA_HH_DEBUG == TRUE)
- in_state = p_cb->state;
- APPL_TRACE_EVENT("bta_hh_sm_execute: State 0x%02x [%s], Event [%s]",
- in_state, bta_hh_state_code(in_state),
- bta_hh_evt_code(debug_event));
+ in_state = p_cb->state;
+ APPL_TRACE_EVENT("bta_hh_sm_execute: State 0x%02x [%s], Event [%s]",
+ in_state, bta_hh_state_code(in_state),
+ bta_hh_evt_code(debug_event));
#endif
- if ((p_cb->state == BTA_HH_NULL_ST) || (p_cb->state >= BTA_HH_INVALID_ST))
- {
- APPL_TRACE_ERROR("bta_hh_sm_execute: Invalid state State = 0x%x, Event = %d",
- p_cb->state,event);
- return;
- }
- state_table = bta_hh_st_tbl[p_cb->state - 1];
+ if ((p_cb->state == BTA_HH_NULL_ST) || (p_cb->state >= BTA_HH_INVALID_ST)) {
+ APPL_TRACE_ERROR(
+ "bta_hh_sm_execute: Invalid state State = 0x%x, Event = %d",
+ p_cb->state, event);
+ return;
+ }
+ state_table = bta_hh_st_tbl[p_cb->state - 1];
- event &= 0xff;
+ event &= 0xff;
- p_cb->state = state_table[event][BTA_HH_NEXT_STATE] ;
+ p_cb->state = state_table[event][BTA_HH_NEXT_STATE];
- if ((action = state_table[event][BTA_HH_ACTION]) != BTA_HH_IGNORE)
- {
- (*bta_hh_action[action])(p_cb, p_data);
- }
-
-#if (BTA_HH_DEBUG == TRUE)
- if (in_state != p_cb->state)
- {
- APPL_TRACE_DEBUG("HH State Change: [%s] -> [%s] after Event [%s]",
- bta_hh_state_code(in_state),
- bta_hh_state_code(p_cb->state),
- bta_hh_evt_code(debug_event));
- }
-#endif
+ if ((action = state_table[event][BTA_HH_ACTION]) != BTA_HH_IGNORE) {
+ (*bta_hh_action[action])(p_cb, p_data);
}
- return;
+#if (BTA_HH_DEBUG == TRUE)
+ if (in_state != p_cb->state) {
+ APPL_TRACE_DEBUG("HH State Change: [%s] -> [%s] after Event [%s]",
+ bta_hh_state_code(in_state),
+ bta_hh_state_code(p_cb->state),
+ bta_hh_evt_code(debug_event));
+ }
+#endif
+ }
+
+ return;
}
/*******************************************************************************
*
@@ -377,70 +359,64 @@
* Returns void
*
******************************************************************************/
-bool bta_hh_hdl_event(BT_HDR *p_msg)
-{
- uint8_t index = BTA_HH_IDX_INVALID;
- tBTA_HH_DEV_CB *p_cb = NULL;
+bool bta_hh_hdl_event(BT_HDR* p_msg) {
+ uint8_t index = BTA_HH_IDX_INVALID;
+ tBTA_HH_DEV_CB* p_cb = NULL;
- switch (p_msg->event)
- {
- case BTA_HH_API_ENABLE_EVT:
- bta_hh_api_enable((tBTA_HH_DATA *) p_msg);
- break;
+ switch (p_msg->event) {
+ case BTA_HH_API_ENABLE_EVT:
+ bta_hh_api_enable((tBTA_HH_DATA*)p_msg);
+ break;
- case BTA_HH_API_DISABLE_EVT:
- bta_hh_api_disable();
- break;
+ case BTA_HH_API_DISABLE_EVT:
+ bta_hh_api_disable();
+ break;
- case BTA_HH_DISC_CMPL_EVT: /* disable complete */
- bta_hh_disc_cmpl();
- break;
+ case BTA_HH_DISC_CMPL_EVT: /* disable complete */
+ bta_hh_disc_cmpl();
+ break;
- default:
- /* all events processed in state machine need to find corresponding
- CB before proceed */
- if (p_msg->event == BTA_HH_API_OPEN_EVT)
- {
- index = bta_hh_find_cb(((tBTA_HH_API_CONN *)p_msg)->bd_addr);
- }
- else if (p_msg->event == BTA_HH_API_MAINT_DEV_EVT)
- {
- /* if add device */
- if (((tBTA_HH_MAINT_DEV *)p_msg)->sub_event == BTA_HH_ADD_DEV_EVT)
- {
- index = bta_hh_find_cb(((tBTA_HH_MAINT_DEV *)p_msg)->bda);
- }
- else /* else remove device by handle */
- {
- index = bta_hh_dev_handle_to_cb_idx((uint8_t)p_msg->layer_specific);
- /* If BT disable is done while the HID device is connected and Link_Key uses unauthenticated combination
- * then we can get into a situation where remove_bonding is called with the index set to 0 (without getting
- * cleaned up). Only when VIRTUAL_UNPLUG is called do we cleanup the index and make it MAX_KNOWN.
- * So if REMOVE_DEVICE is called and in_use is false then we should treat this as a NULL p_cb. Hence we
- * force the index to be IDX_INVALID
- */
- if ((index != BTA_HH_IDX_INVALID) &&
- (bta_hh_cb.kdev[index].in_use == false)) {
- index = BTA_HH_IDX_INVALID;
- }
- }
- }
- else if (p_msg->event == BTA_HH_INT_OPEN_EVT)
- {
- index = bta_hh_find_cb(((tBTA_HH_CBACK_DATA *)p_msg)->addr);
- }
- else
- index = bta_hh_dev_handle_to_cb_idx((uint8_t)p_msg->layer_specific);
+ default:
+ /* all events processed in state machine need to find corresponding
+ CB before proceed */
+ if (p_msg->event == BTA_HH_API_OPEN_EVT) {
+ index = bta_hh_find_cb(((tBTA_HH_API_CONN*)p_msg)->bd_addr);
+ } else if (p_msg->event == BTA_HH_API_MAINT_DEV_EVT) {
+ /* if add device */
+ if (((tBTA_HH_MAINT_DEV*)p_msg)->sub_event == BTA_HH_ADD_DEV_EVT) {
+ index = bta_hh_find_cb(((tBTA_HH_MAINT_DEV*)p_msg)->bda);
+ } else /* else remove device by handle */
+ {
+ index = bta_hh_dev_handle_to_cb_idx((uint8_t)p_msg->layer_specific);
+ /* If BT disable is done while the HID device is connected and
+ * Link_Key uses unauthenticated combination
+ * then we can get into a situation where remove_bonding is called
+ * with the index set to 0 (without getting
+ * cleaned up). Only when VIRTUAL_UNPLUG is called do we cleanup the
+ * index and make it MAX_KNOWN.
+ * So if REMOVE_DEVICE is called and in_use is false then we should
+ * treat this as a NULL p_cb. Hence we
+ * force the index to be IDX_INVALID
+ */
+ if ((index != BTA_HH_IDX_INVALID) &&
+ (bta_hh_cb.kdev[index].in_use == false)) {
+ index = BTA_HH_IDX_INVALID;
+ }
+ }
+ } else if (p_msg->event == BTA_HH_INT_OPEN_EVT) {
+ index = bta_hh_find_cb(((tBTA_HH_CBACK_DATA*)p_msg)->addr);
+ } else
+ index = bta_hh_dev_handle_to_cb_idx((uint8_t)p_msg->layer_specific);
- if (index != BTA_HH_IDX_INVALID)
- p_cb = &bta_hh_cb.kdev[index];
+ if (index != BTA_HH_IDX_INVALID) p_cb = &bta_hh_cb.kdev[index];
#if (BTA_HH_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hh_hdl_event:: handle = %d dev_cb[%d] ", p_msg->layer_specific, index);
+ APPL_TRACE_DEBUG("bta_hh_hdl_event:: handle = %d dev_cb[%d] ",
+ p_msg->layer_specific, index);
#endif
- bta_hh_sm_execute(p_cb, p_msg->event, (tBTA_HH_DATA *) p_msg);
- }
- return (true);
+ bta_hh_sm_execute(p_cb, p_msg->event, (tBTA_HH_DATA*)p_msg);
+ }
+ return (true);
}
/*****************************************************************************
@@ -456,53 +432,51 @@
* Returns void
*
******************************************************************************/
-static const char *bta_hh_evt_code(tBTA_HH_INT_EVT evt_code)
-{
- switch(evt_code)
- {
+static const char* bta_hh_evt_code(tBTA_HH_INT_EVT evt_code) {
+ switch (evt_code) {
case BTA_HH_API_DISABLE_EVT:
- return "BTA_HH_API_DISABLE_EVT";
+ return "BTA_HH_API_DISABLE_EVT";
case BTA_HH_API_ENABLE_EVT:
- return "BTA_HH_API_ENABLE_EVT";
+ return "BTA_HH_API_ENABLE_EVT";
case BTA_HH_API_OPEN_EVT:
- return "BTA_HH_API_OPEN_EVT";
+ return "BTA_HH_API_OPEN_EVT";
case BTA_HH_API_CLOSE_EVT:
- return "BTA_HH_API_CLOSE_EVT";
+ return "BTA_HH_API_CLOSE_EVT";
case BTA_HH_INT_OPEN_EVT:
- return "BTA_HH_INT_OPEN_EVT";
+ return "BTA_HH_INT_OPEN_EVT";
case BTA_HH_INT_CLOSE_EVT:
- return "BTA_HH_INT_CLOSE_EVT";
+ return "BTA_HH_INT_CLOSE_EVT";
case BTA_HH_INT_HANDSK_EVT:
- return "BTA_HH_INT_HANDSK_EVT";
+ return "BTA_HH_INT_HANDSK_EVT";
case BTA_HH_INT_DATA_EVT:
- return "BTA_HH_INT_DATA_EVT";
+ return "BTA_HH_INT_DATA_EVT";
case BTA_HH_INT_CTRL_DATA:
- return "BTA_HH_INT_CTRL_DATA";
+ return "BTA_HH_INT_CTRL_DATA";
case BTA_HH_API_WRITE_DEV_EVT:
- return "BTA_HH_API_WRITE_DEV_EVT";
+ return "BTA_HH_API_WRITE_DEV_EVT";
case BTA_HH_SDP_CMPL_EVT:
- return "BTA_HH_SDP_CMPL_EVT";
+ return "BTA_HH_SDP_CMPL_EVT";
case BTA_HH_DISC_CMPL_EVT:
- return "BTA_HH_DISC_CMPL_EVT";
+ return "BTA_HH_DISC_CMPL_EVT";
case BTA_HH_API_MAINT_DEV_EVT:
- return "BTA_HH_API_MAINT_DEV_EVT";
+ return "BTA_HH_API_MAINT_DEV_EVT";
case BTA_HH_API_GET_DSCP_EVT:
- return "BTA_HH_API_GET_DSCP_EVT";
+ return "BTA_HH_API_GET_DSCP_EVT";
case BTA_HH_OPEN_CMPL_EVT:
- return "BTA_HH_OPEN_CMPL_EVT";
+ return "BTA_HH_OPEN_CMPL_EVT";
#if (BTA_HH_LE_INCLUDED == TRUE)
case BTA_HH_GATT_CLOSE_EVT:
- return "BTA_HH_GATT_CLOSE_EVT";
+ return "BTA_HH_GATT_CLOSE_EVT";
case BTA_HH_GATT_OPEN_EVT:
- return "BTA_HH_GATT_OPEN_EVT";
+ return "BTA_HH_GATT_OPEN_EVT";
case BTA_HH_START_ENC_EVT:
- return "BTA_HH_START_ENC_EVT";
+ return "BTA_HH_START_ENC_EVT";
case BTA_HH_ENC_CMPL_EVT:
- return "BTA_HH_ENC_CMPL_EVT";
+ return "BTA_HH_ENC_CMPL_EVT";
#endif
default:
- return "unknown HID Host event code";
- }
+ return "unknown HID Host event code";
+ }
}
/*******************************************************************************
@@ -514,27 +488,25 @@
* Returns void
*
******************************************************************************/
-static const char *bta_hh_state_code(tBTA_HH_STATE state_code)
-{
- switch (state_code)
- {
+static const char* bta_hh_state_code(tBTA_HH_STATE state_code) {
+ switch (state_code) {
case BTA_HH_NULL_ST:
- return"BTA_HH_NULL_ST";
+ return "BTA_HH_NULL_ST";
case BTA_HH_IDLE_ST:
- return "BTA_HH_IDLE_ST";
+ return "BTA_HH_IDLE_ST";
case BTA_HH_W4_CONN_ST:
- return "BTA_HH_W4_CONN_ST";
+ return "BTA_HH_W4_CONN_ST";
case BTA_HH_CONN_ST:
- return "BTA_HH_CONN_ST";
+ return "BTA_HH_CONN_ST";
#if (BTA_HH_LE_INCLUDED == TRUE)
case BTA_HH_W4_SEC:
- return "BTA_HH_W4_SEC";
+ return "BTA_HH_W4_SEC";
#endif
default:
- return "unknown HID Host state";
- }
+ return "unknown HID Host state";
+ }
}
-#endif /* Debug Functions */
+#endif /* Debug Functions */
#endif /* BTA_HH_INCLUDED */
diff --git a/bta/hh/bta_hh_utils.cc b/bta/hh/bta_hh_utils.cc
index 7504db2..82600c3 100644
--- a/bta/hh/bta_hh_utils.cc
+++ b/bta/hh/bta_hh_utils.cc
@@ -20,36 +20,29 @@
#include "bt_target.h"
#if (BTA_HH_INCLUDED == TRUE)
-
#include "bta_hh_int.h"
#include "osi/include/osi.h"
/* if SSR max latency is not defined by remote device, set the default value
as half of the link supervision timeout */
-#define BTA_HH_GET_DEF_SSR_MAX_LAT(x) ((x)>> 1)
+#define BTA_HH_GET_DEF_SSR_MAX_LAT(x) ((x) >> 1)
/*****************************************************************************
* Constants
****************************************************************************/
-#define BTA_HH_KB_CTRL_MASK 0x11
-#define BTA_HH_KB_SHIFT_MASK 0x22
-#define BTA_HH_KB_ALT_MASK 0x44
-#define BTA_HH_KB_GUI_MASK 0x88
+#define BTA_HH_KB_CTRL_MASK 0x11
+#define BTA_HH_KB_SHIFT_MASK 0x22
+#define BTA_HH_KB_ALT_MASK 0x44
+#define BTA_HH_KB_GUI_MASK 0x88
-#define BTA_HH_KB_CAPS_LOCK 0x39 /* caps lock */
-#define BTA_HH_KB_NUM_LOCK 0x53 /* num lock */
+#define BTA_HH_KB_CAPS_LOCK 0x39 /* caps lock */
+#define BTA_HH_KB_NUM_LOCK 0x53 /* num lock */
+#define BTA_HH_MAX_RPT_CHARS 8
-#define BTA_HH_MAX_RPT_CHARS 8
-
-static const uint8_t bta_hh_mod_key_mask[BTA_HH_MOD_MAX_KEY] =
-{
- BTA_HH_KB_CTRL_MASK,
- BTA_HH_KB_SHIFT_MASK,
- BTA_HH_KB_ALT_MASK,
- BTA_HH_KB_GUI_MASK
-};
-
+static const uint8_t bta_hh_mod_key_mask[BTA_HH_MOD_MAX_KEY] = {
+ BTA_HH_KB_CTRL_MASK, BTA_HH_KB_SHIFT_MASK, BTA_HH_KB_ALT_MASK,
+ BTA_HH_KB_GUI_MASK};
/*******************************************************************************
*
@@ -61,51 +54,44 @@
* Returns void
*
******************************************************************************/
-uint8_t bta_hh_find_cb(BD_ADDR bda)
-{
- uint8_t xx;
+uint8_t bta_hh_find_cb(BD_ADDR bda) {
+ uint8_t xx;
- /* See how many active devices there are. */
- for (xx = 0; xx < BTA_HH_MAX_DEVICE; xx++)
- {
- /* check if any active/known devices is a match */
- if ((!bdcmp (bda, bta_hh_cb.kdev[xx].addr) &&
- bdcmp(bda, bd_addr_null) != 0) )
- {
+ /* See how many active devices there are. */
+ for (xx = 0; xx < BTA_HH_MAX_DEVICE; xx++) {
+ /* check if any active/known devices is a match */
+ if ((!bdcmp(bda, bta_hh_cb.kdev[xx].addr) &&
+ bdcmp(bda, bd_addr_null) != 0)) {
#if (BTA_HH_DEBUG == TRUE)
- APPL_TRACE_DEBUG("found kdev_cb[%d] hid_handle = %d ", xx,
- bta_hh_cb.kdev[xx].hid_handle)
+ APPL_TRACE_DEBUG("found kdev_cb[%d] hid_handle = %d ", xx,
+ bta_hh_cb.kdev[xx].hid_handle)
#endif
- return xx;
- }
-#if (BTA_HH_DEBUG == TRUE)
- else
- APPL_TRACE_DEBUG("in_use ? [%d] kdev[%d].hid_handle = %d state = [%d]",
- bta_hh_cb.kdev[xx].in_use, xx,
- bta_hh_cb.kdev[xx].hid_handle,
- bta_hh_cb.kdev[xx].state);
-#endif
+ return xx;
}
-
- /* if no active device match, find a spot for it */
- for (xx = 0; xx < BTA_HH_MAX_DEVICE; xx++)
- {
- if (!bta_hh_cb.kdev[xx].in_use)
- {
- bdcpy(bta_hh_cb.kdev[xx].addr, bda);
- break;
- }
- }
- /* If device list full, report BTA_HH_IDX_INVALID */
#if (BTA_HH_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hh_find_cb:: index = %d while max = %d",
- xx, BTA_HH_MAX_DEVICE);
+ else
+ APPL_TRACE_DEBUG("in_use ? [%d] kdev[%d].hid_handle = %d state = [%d]",
+ bta_hh_cb.kdev[xx].in_use, xx,
+ bta_hh_cb.kdev[xx].hid_handle, bta_hh_cb.kdev[xx].state);
+#endif
+ }
+
+ /* if no active device match, find a spot for it */
+ for (xx = 0; xx < BTA_HH_MAX_DEVICE; xx++) {
+ if (!bta_hh_cb.kdev[xx].in_use) {
+ bdcpy(bta_hh_cb.kdev[xx].addr, bda);
+ break;
+ }
+ }
+/* If device list full, report BTA_HH_IDX_INVALID */
+#if (BTA_HH_DEBUG == TRUE)
+ APPL_TRACE_DEBUG("bta_hh_find_cb:: index = %d while max = %d", xx,
+ BTA_HH_MAX_DEVICE);
#endif
- if (xx == BTA_HH_MAX_DEVICE)
- xx = BTA_HH_IDX_INVALID;
+ if (xx == BTA_HH_MAX_DEVICE) xx = BTA_HH_IDX_INVALID;
- return xx;
+ return xx;
}
/*******************************************************************************
@@ -118,32 +104,30 @@
* Returns void
*
******************************************************************************/
-void bta_hh_clean_up_kdev(tBTA_HH_DEV_CB *p_cb)
-{
- uint8_t index;
+void bta_hh_clean_up_kdev(tBTA_HH_DEV_CB* p_cb) {
+ uint8_t index;
- if (p_cb->hid_handle != BTA_HH_INVALID_HANDLE )
- {
+ if (p_cb->hid_handle != BTA_HH_INVALID_HANDLE) {
#if (BTA_HH_LE_INCLUDED == TRUE)
- if (p_cb->is_le_device)
- bta_hh_cb.le_cb_index[BTA_HH_GET_LE_CB_IDX(p_cb->hid_handle)] = BTA_HH_IDX_INVALID;
- else
+ if (p_cb->is_le_device)
+ bta_hh_cb.le_cb_index[BTA_HH_GET_LE_CB_IDX(p_cb->hid_handle)] =
+ BTA_HH_IDX_INVALID;
+ else
#endif
- bta_hh_cb.cb_index[p_cb->hid_handle] = BTA_HH_IDX_INVALID;
- }
+ bta_hh_cb.cb_index[p_cb->hid_handle] = BTA_HH_IDX_INVALID;
+ }
- /* reset device control block */
- index = p_cb->index; /* Preserve index for this control block */
+ /* reset device control block */
+ index = p_cb->index; /* Preserve index for this control block */
- /* Free buffer for report descriptor info */
- osi_free_and_reset((void **)&p_cb->dscp_info.descriptor.dsc_list);
+ /* Free buffer for report descriptor info */
+ osi_free_and_reset((void**)&p_cb->dscp_info.descriptor.dsc_list);
- memset(p_cb, 0, sizeof(tBTA_HH_DEV_CB)); /* Reset control block */
+ memset(p_cb, 0, sizeof(tBTA_HH_DEV_CB)); /* Reset control block */
- p_cb->index = index; /* Restore index for this control block */
- p_cb->state = BTA_HH_IDLE_ST;
- p_cb->hid_handle = BTA_HH_INVALID_HANDLE;
-
+ p_cb->index = index; /* Restore index for this control block */
+ p_cb->state = BTA_HH_IDLE_ST;
+ p_cb->hid_handle = BTA_HH_INVALID_HANDLE;
}
/*******************************************************************************
*
@@ -154,8 +138,8 @@
* Returns void
*
******************************************************************************/
-void bta_hh_update_di_info(tBTA_HH_DEV_CB *p_cb, uint16_t vendor_id, uint16_t product_id,
- uint16_t version,
+void bta_hh_update_di_info(tBTA_HH_DEV_CB* p_cb, uint16_t vendor_id,
+ uint16_t product_id, uint16_t version,
#if (BTA_HH_LE_INCLUDED == TRUE)
uint8_t flag)
#else
@@ -163,14 +147,14 @@
#endif
{
#if (BTA_HH_DEBUG == TRUE)
- APPL_TRACE_DEBUG("vendor_id = 0x%2x product_id = 0x%2x version = 0x%2x",
- vendor_id, product_id, version);
+ APPL_TRACE_DEBUG("vendor_id = 0x%2x product_id = 0x%2x version = 0x%2x",
+ vendor_id, product_id, version);
#endif
- p_cb->dscp_info.vendor_id = vendor_id;
- p_cb->dscp_info.product_id = product_id;
- p_cb->dscp_info.version = version;
+ p_cb->dscp_info.vendor_id = vendor_id;
+ p_cb->dscp_info.product_id = product_id;
+ p_cb->dscp_info.version = version;
#if (BTA_HH_LE_INCLUDED == TRUE)
- p_cb->dscp_info.flag = flag;
+ p_cb->dscp_info.flag = flag;
#endif
}
/*******************************************************************************
@@ -182,40 +166,37 @@
* Returns void
*
******************************************************************************/
-void bta_hh_add_device_to_list(tBTA_HH_DEV_CB *p_cb, uint8_t handle,
+void bta_hh_add_device_to_list(tBTA_HH_DEV_CB* p_cb, uint8_t handle,
uint16_t attr_mask,
- tHID_DEV_DSCP_INFO *p_dscp_info,
- uint8_t sub_class,
- uint16_t ssr_max_latency,
- uint16_t ssr_min_tout,
- uint8_t app_id)
-{
+ tHID_DEV_DSCP_INFO* p_dscp_info,
+ uint8_t sub_class, uint16_t ssr_max_latency,
+ uint16_t ssr_min_tout, uint8_t app_id) {
#if (BTA_HH_DEBUG == TRUE)
- APPL_TRACE_DEBUG("subclass = 0x%2x", sub_class);
+ APPL_TRACE_DEBUG("subclass = 0x%2x", sub_class);
#endif
- p_cb->hid_handle = handle;
- p_cb->in_use = true;
- p_cb->attr_mask = attr_mask;
+ p_cb->hid_handle = handle;
+ p_cb->in_use = true;
+ p_cb->attr_mask = attr_mask;
- p_cb->sub_class = sub_class;
- p_cb->app_id = app_id;
+ p_cb->sub_class = sub_class;
+ p_cb->app_id = app_id;
- p_cb->dscp_info.ssr_max_latency = ssr_max_latency;
- p_cb->dscp_info.ssr_min_tout = ssr_min_tout;
+ p_cb->dscp_info.ssr_max_latency = ssr_max_latency;
+ p_cb->dscp_info.ssr_min_tout = ssr_min_tout;
- /* store report descriptor info */
- if (p_dscp_info) {
- osi_free_and_reset((void **)&p_cb->dscp_info.descriptor.dsc_list);
+ /* store report descriptor info */
+ if (p_dscp_info) {
+ osi_free_and_reset((void**)&p_cb->dscp_info.descriptor.dsc_list);
- if (p_dscp_info->dl_len) {
- p_cb->dscp_info.descriptor.dsc_list =
- (uint8_t *)osi_malloc(p_dscp_info->dl_len);
- p_cb->dscp_info.descriptor.dl_len = p_dscp_info->dl_len;
- memcpy(p_cb->dscp_info.descriptor.dsc_list, p_dscp_info->dsc_list,
- p_dscp_info->dl_len);
- }
+ if (p_dscp_info->dl_len) {
+ p_cb->dscp_info.descriptor.dsc_list =
+ (uint8_t*)osi_malloc(p_dscp_info->dl_len);
+ p_cb->dscp_info.descriptor.dl_len = p_dscp_info->dl_len;
+ memcpy(p_cb->dscp_info.descriptor.dsc_list, p_dscp_info->dsc_list,
+ p_dscp_info->dl_len);
}
+ }
}
/*******************************************************************************
@@ -227,29 +208,25 @@
* Returns
*
******************************************************************************/
-bool bta_hh_tod_spt(tBTA_HH_DEV_CB *p_cb,uint8_t sub_class)
-{
- uint8_t xx;
- uint8_t cod = (sub_class >> 2); /* lower two bits are reserved */
+bool bta_hh_tod_spt(tBTA_HH_DEV_CB* p_cb, uint8_t sub_class) {
+ uint8_t xx;
+ uint8_t cod = (sub_class >> 2); /* lower two bits are reserved */
- for (xx = 0 ; xx < p_bta_hh_cfg->max_devt_spt; xx ++)
- {
- if (cod == (uint8_t) p_bta_hh_cfg->p_devt_list[xx].tod)
- {
- p_cb->app_id = p_bta_hh_cfg->p_devt_list[xx].app_id;
+ for (xx = 0; xx < p_bta_hh_cfg->max_devt_spt; xx++) {
+ if (cod == (uint8_t)p_bta_hh_cfg->p_devt_list[xx].tod) {
+ p_cb->app_id = p_bta_hh_cfg->p_devt_list[xx].app_id;
#if (BTA_HH_DEBUG == TRUE)
- APPL_TRACE_EVENT("bta_hh_tod_spt sub_class:0x%x supported", sub_class);
+ APPL_TRACE_EVENT("bta_hh_tod_spt sub_class:0x%x supported", sub_class);
#endif
- return true;
- }
+ return true;
}
+ }
#if (BTA_HH_DEBUG == TRUE)
- APPL_TRACE_EVENT("bta_hh_tod_spt sub_class:0x%x NOT supported", sub_class);
+ APPL_TRACE_EVENT("bta_hh_tod_spt sub_class:0x%x NOT supported", sub_class);
#endif
- return false;
+ return false;
}
-
/*******************************************************************************
*
* Function bta_hh_parse_keybd_rpt
@@ -259,92 +236,80 @@
* Returns void
*
******************************************************************************/
-void bta_hh_parse_keybd_rpt(tBTA_HH_BOOT_RPT *p_kb_data, uint8_t *p_report,
- uint16_t report_len)
-{
- tBTA_HH_KB_CB *p_kb = &bta_hh_cb.kb_cb;
- tBTA_HH_KEYBD_RPT *p_data = &p_kb_data->data_rpt.keybd_rpt;
+void bta_hh_parse_keybd_rpt(tBTA_HH_BOOT_RPT* p_kb_data, uint8_t* p_report,
+ uint16_t report_len) {
+ tBTA_HH_KB_CB* p_kb = &bta_hh_cb.kb_cb;
+ tBTA_HH_KEYBD_RPT* p_data = &p_kb_data->data_rpt.keybd_rpt;
- uint8_t this_char, ctl_shift;
- uint16_t xx, yy, key_idx = 0;
- uint8_t this_report[BTA_HH_MAX_RPT_CHARS];
+ uint8_t this_char, ctl_shift;
+ uint16_t xx, yy, key_idx = 0;
+ uint8_t this_report[BTA_HH_MAX_RPT_CHARS];
#if (BTA_HH_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hh_parse_keybd_rpt: (report=%p, report_len=%d) called",
- p_report, report_len);
+ APPL_TRACE_DEBUG("bta_hh_parse_keybd_rpt: (report=%p, report_len=%d) called",
+ p_report, report_len);
#endif
- if (report_len < 2)
- return;
+ if (report_len < 2) return;
- ctl_shift = *p_report++;
- report_len--;
+ ctl_shift = *p_report++;
+ report_len--;
- if (report_len > BTA_HH_MAX_RPT_CHARS)
- report_len = BTA_HH_MAX_RPT_CHARS;
+ if (report_len > BTA_HH_MAX_RPT_CHARS) report_len = BTA_HH_MAX_RPT_CHARS;
- memset (this_report, 0, BTA_HH_MAX_RPT_CHARS);
- memset (p_data, 0, sizeof(tBTA_HH_KEYBD_RPT));
- memcpy (this_report, p_report, report_len);
+ memset(this_report, 0, BTA_HH_MAX_RPT_CHARS);
+ memset(p_data, 0, sizeof(tBTA_HH_KEYBD_RPT));
+ memcpy(this_report, p_report, report_len);
- /* Take care of shift, control, GUI and alt, modifier keys */
- for (xx = 0; xx < BTA_HH_MOD_MAX_KEY; xx ++ )
- {
- if (ctl_shift & bta_hh_mod_key_mask[xx])
- {
- APPL_TRACE_DEBUG("Mod Key[%02x] pressed", bta_hh_mod_key_mask[xx] );
- p_kb->mod_key[xx] = true;
- }
- else if (p_kb->mod_key[xx])
- {
- p_kb->mod_key[xx] = false;
- }
- /* control key flag is set */
- p_data->mod_key[xx] = p_kb->mod_key[xx];
+ /* Take care of shift, control, GUI and alt, modifier keys */
+ for (xx = 0; xx < BTA_HH_MOD_MAX_KEY; xx++) {
+ if (ctl_shift & bta_hh_mod_key_mask[xx]) {
+ APPL_TRACE_DEBUG("Mod Key[%02x] pressed", bta_hh_mod_key_mask[xx]);
+ p_kb->mod_key[xx] = true;
+ } else if (p_kb->mod_key[xx]) {
+ p_kb->mod_key[xx] = false;
}
+ /* control key flag is set */
+ p_data->mod_key[xx] = p_kb->mod_key[xx];
+ }
- /***************************************************************************/
- /* First step is to remove all characters we saw in the last report */
- /***************************************************************************/
- for (xx = 0; xx < report_len; xx++)
- {
- for (yy = 0; yy < BTA_HH_MAX_RPT_CHARS; yy++)
- {
- if (this_report[xx] == p_kb->last_report[yy])
- {
- this_report[xx] = 0;
- }
- }
+ /***************************************************************************/
+ /* First step is to remove all characters we saw in the last report */
+ /***************************************************************************/
+ for (xx = 0; xx < report_len; xx++) {
+ for (yy = 0; yy < BTA_HH_MAX_RPT_CHARS; yy++) {
+ if (this_report[xx] == p_kb->last_report[yy]) {
+ this_report[xx] = 0;
+ }
}
- /***************************************************************************/
- /* Now, process all the characters in the report, up to 6 keycodes */
- /***************************************************************************/
- for (xx = 0; xx < report_len; xx++)
- {
+ }
+ /***************************************************************************/
+ /* Now, process all the characters in the report, up to 6 keycodes */
+ /***************************************************************************/
+ for (xx = 0; xx < report_len; xx++) {
#if (BTA_HH_DEBUG == TRUE)
- APPL_TRACE_DEBUG("this_char = %02x", this_report[xx]);
+ APPL_TRACE_DEBUG("this_char = %02x", this_report[xx]);
#endif
- if ((this_char = this_report[xx]) == 0)
- continue;
- /* take the key code as the report data */
- if (this_report[xx] == BTA_HH_KB_CAPS_LOCK)
- p_kb->caps_lock = p_kb->caps_lock ? false : true;
- else if (this_report[xx] == BTA_HH_KB_NUM_LOCK)
- p_kb->num_lock = p_kb->num_lock ? false : true;
- else
- p_data->this_char[key_idx ++] = this_char;
+ if ((this_char = this_report[xx]) == 0) continue;
+ /* take the key code as the report data */
+ if (this_report[xx] == BTA_HH_KB_CAPS_LOCK)
+ p_kb->caps_lock = p_kb->caps_lock ? false : true;
+ else if (this_report[xx] == BTA_HH_KB_NUM_LOCK)
+ p_kb->num_lock = p_kb->num_lock ? false : true;
+ else
+ p_data->this_char[key_idx++] = this_char;
#if (BTA_HH_DEBUG == TRUE)
- APPL_TRACE_DEBUG("found keycode %02x ", this_report[xx]);
+ APPL_TRACE_DEBUG("found keycode %02x ", this_report[xx]);
#endif
- p_data->caps_lock = p_kb->caps_lock;
- p_data->num_lock = p_kb->num_lock;
- }
+ p_data->caps_lock = p_kb->caps_lock;
+ p_data->num_lock = p_kb->num_lock;
+ }
- memset (p_kb->last_report, 0, BTA_HH_MAX_RPT_CHARS);
- memcpy (p_kb->last_report, p_report, report_len);
+ memset(p_kb->last_report, 0, BTA_HH_MAX_RPT_CHARS);
+ memcpy(p_kb->last_report, p_report, report_len);
- return;
+ return;
}
/*******************************************************************************
@@ -356,47 +321,44 @@
* Returns void
*
******************************************************************************/
-void bta_hh_parse_mice_rpt(tBTA_HH_BOOT_RPT *p_mice_data, uint8_t *p_report,
- uint16_t report_len)
-{
- tBTA_HH_MICE_RPT *p_data = &p_mice_data->data_rpt.mice_rpt;
+void bta_hh_parse_mice_rpt(tBTA_HH_BOOT_RPT* p_mice_data, uint8_t* p_report,
+ uint16_t report_len) {
+ tBTA_HH_MICE_RPT* p_data = &p_mice_data->data_rpt.mice_rpt;
#if (BTA_HH_DEBUG == TRUE)
- uint8_t xx;
+ uint8_t xx;
- APPL_TRACE_DEBUG("bta_hh_parse_mice_rpt: bta_keybd_rpt_rcvd(report=%p, \
- report_len=%d) called", p_report, report_len);
+ APPL_TRACE_DEBUG(
+ "bta_hh_parse_mice_rpt: bta_keybd_rpt_rcvd(report=%p, \
+ report_len=%d) called",
+ p_report, report_len);
#endif
- if (report_len < 3)
- return;
+ if (report_len < 3) return;
- if (report_len > BTA_HH_MAX_RPT_CHARS)
- report_len = BTA_HH_MAX_RPT_CHARS;
+ if (report_len > BTA_HH_MAX_RPT_CHARS) report_len = BTA_HH_MAX_RPT_CHARS;
#if (BTA_HH_DEBUG == TRUE)
- for (xx = 0; xx < report_len; xx++)
- {
- APPL_TRACE_DEBUG("this_char = %02x", p_report[xx]);
- }
+ for (xx = 0; xx < report_len; xx++) {
+ APPL_TRACE_DEBUG("this_char = %02x", p_report[xx]);
+ }
#endif
- /* only first bytes lower 3 bits valid */
- p_data->mouse_button = (p_report[0] & 0x07);
+ /* only first bytes lower 3 bits valid */
+ p_data->mouse_button = (p_report[0] & 0x07);
- /* x displacement */
- p_data->delta_x = p_report[1];
+ /* x displacement */
+ p_data->delta_x = p_report[1];
- /* y displacement */
- p_data->delta_y = p_report[2];
+ /* y displacement */
+ p_data->delta_y = p_report[2];
#if (BTA_HH_DEBUG == TRUE)
- APPL_TRACE_DEBUG("mice button: 0x%2x", p_data->mouse_button);
- APPL_TRACE_DEBUG("mice move: x = %d y = %d", p_data->delta_x,
- p_data->delta_y );
+ APPL_TRACE_DEBUG("mice button: 0x%2x", p_data->mouse_button);
+ APPL_TRACE_DEBUG("mice move: x = %d y = %d", p_data->delta_x,
+ p_data->delta_y);
#endif
- return;
-
+ return;
}
/*******************************************************************************
@@ -408,105 +370,100 @@
* Returns tBTA_HH_STATUS operation status
*
******************************************************************************/
-tBTA_HH_STATUS bta_hh_read_ssr_param(BD_ADDR bd_addr, uint16_t *p_max_ssr_lat, uint16_t *p_min_ssr_tout)
-{
- tBTA_HH_STATUS status = BTA_HH_ERR;
- tBTA_HH_CB *p_cb = &bta_hh_cb;
- uint8_t i;
- uint16_t ssr_max_latency;
- for (i = 0; i < BTA_HH_MAX_KNOWN; i ++)
- {
- if (memcmp(p_cb->kdev[i].addr, bd_addr, BD_ADDR_LEN) == 0)
- {
+tBTA_HH_STATUS bta_hh_read_ssr_param(BD_ADDR bd_addr, uint16_t* p_max_ssr_lat,
+ uint16_t* p_min_ssr_tout) {
+ tBTA_HH_STATUS status = BTA_HH_ERR;
+ tBTA_HH_CB* p_cb = &bta_hh_cb;
+ uint8_t i;
+ uint16_t ssr_max_latency;
+ for (i = 0; i < BTA_HH_MAX_KNOWN; i++) {
+ if (memcmp(p_cb->kdev[i].addr, bd_addr, BD_ADDR_LEN) == 0) {
+ /* if remote device does not have HIDSSRHostMaxLatency attribute in SDP,
+ set SSR max latency default value here. */
+ if (p_cb->kdev[i].dscp_info.ssr_max_latency == HID_SSR_PARAM_INVALID) {
+ /* The default is calculated as half of link supervision timeout.*/
- /* if remote device does not have HIDSSRHostMaxLatency attribute in SDP,
- set SSR max latency default value here. */
- if (p_cb->kdev[i].dscp_info.ssr_max_latency == HID_SSR_PARAM_INVALID)
- {
- /* The default is calculated as half of link supervision timeout.*/
+ BTM_GetLinkSuperTout(p_cb->kdev[i].addr, &ssr_max_latency);
+ ssr_max_latency = BTA_HH_GET_DEF_SSR_MAX_LAT(ssr_max_latency);
- BTM_GetLinkSuperTout(p_cb->kdev[i].addr, &ssr_max_latency) ;
- ssr_max_latency = BTA_HH_GET_DEF_SSR_MAX_LAT(ssr_max_latency);
+ /* per 1.1 spec, if the newly calculated max latency is greater than
+ BTA_HH_SSR_MAX_LATENCY_DEF which is 500ms, use
+ BTA_HH_SSR_MAX_LATENCY_DEF */
+ if (ssr_max_latency > BTA_HH_SSR_MAX_LATENCY_DEF)
+ ssr_max_latency = BTA_HH_SSR_MAX_LATENCY_DEF;
- /* per 1.1 spec, if the newly calculated max latency is greater than
- BTA_HH_SSR_MAX_LATENCY_DEF which is 500ms, use BTA_HH_SSR_MAX_LATENCY_DEF */
- if (ssr_max_latency > BTA_HH_SSR_MAX_LATENCY_DEF)
- ssr_max_latency = BTA_HH_SSR_MAX_LATENCY_DEF;
+ *p_max_ssr_lat = ssr_max_latency;
+ } else
+ *p_max_ssr_lat = p_cb->kdev[i].dscp_info.ssr_max_latency;
- * p_max_ssr_lat = ssr_max_latency;
- }
- else
- * p_max_ssr_lat = p_cb->kdev[i].dscp_info.ssr_max_latency;
+ if (p_cb->kdev[i].dscp_info.ssr_min_tout == HID_SSR_PARAM_INVALID)
+ *p_min_ssr_tout = BTA_HH_SSR_MIN_TOUT_DEF;
+ else
+ *p_min_ssr_tout = p_cb->kdev[i].dscp_info.ssr_min_tout;
- if (p_cb->kdev[i].dscp_info.ssr_min_tout == HID_SSR_PARAM_INVALID)
- * p_min_ssr_tout = BTA_HH_SSR_MIN_TOUT_DEF;
- else
- * p_min_ssr_tout = p_cb->kdev[i].dscp_info.ssr_min_tout;
+ status = BTA_HH_OK;
- status = BTA_HH_OK;
-
- break;
- }
+ break;
}
+ }
- return status;
+ return status;
}
/*******************************************************************************
*
* Function bta_hh_cleanup_disable
*
- * Description when disable finished, cleanup control block and send callback
+ * Description when disable finished, cleanup control block and send
+ *callback
*
*
* Returns void
*
******************************************************************************/
-void bta_hh_cleanup_disable(tBTA_HH_STATUS status)
-{
- uint8_t xx;
- /* free buffer in CB holding report descriptors */
- for (xx = 0; xx < BTA_HH_MAX_DEVICE; xx ++) {
- osi_free_and_reset((void **)&bta_hh_cb.kdev[xx].dscp_info.descriptor.dsc_list);
- }
- osi_free_and_reset((void **)&bta_hh_cb.p_disc_db);
+void bta_hh_cleanup_disable(tBTA_HH_STATUS status) {
+ uint8_t xx;
+ /* free buffer in CB holding report descriptors */
+ for (xx = 0; xx < BTA_HH_MAX_DEVICE; xx++) {
+ osi_free_and_reset(
+ (void**)&bta_hh_cb.kdev[xx].dscp_info.descriptor.dsc_list);
+ }
+ osi_free_and_reset((void**)&bta_hh_cb.p_disc_db);
- (* bta_hh_cb.p_cback)(BTA_HH_DISABLE_EVT, (tBTA_HH *)&status);
- /* all connections are down, no waiting for diconnect */
- memset(&bta_hh_cb, 0, sizeof(tBTA_HH_CB));
+ (*bta_hh_cb.p_cback)(BTA_HH_DISABLE_EVT, (tBTA_HH*)&status);
+ /* all connections are down, no waiting for diconnect */
+ memset(&bta_hh_cb, 0, sizeof(tBTA_HH_CB));
}
/*******************************************************************************
*
* Function bta_hh_dev_handle_to_cb_idx
*
- * Description convert a HID device handle to the device control block index.
+ * Description convert a HID device handle to the device control block
+ *index.
*
*
* Returns uint8_t: index of the device control block.
*
******************************************************************************/
-uint8_t bta_hh_dev_handle_to_cb_idx(uint8_t dev_handle)
-{
- uint8_t index = BTA_HH_IDX_INVALID;
+uint8_t bta_hh_dev_handle_to_cb_idx(uint8_t dev_handle) {
+ uint8_t index = BTA_HH_IDX_INVALID;
#if (BTA_HH_LE_INCLUDED == TRUE)
- if (BTA_HH_IS_LE_DEV_HDL(dev_handle))
- {
- if (BTA_HH_IS_LE_DEV_HDL_VALID(dev_handle))
- index = bta_hh_cb.le_cb_index[BTA_HH_GET_LE_CB_IDX(dev_handle)];
+ if (BTA_HH_IS_LE_DEV_HDL(dev_handle)) {
+ if (BTA_HH_IS_LE_DEV_HDL_VALID(dev_handle))
+ index = bta_hh_cb.le_cb_index[BTA_HH_GET_LE_CB_IDX(dev_handle)];
#if (BTA_HH_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hh_dev_handle_to_cb_idx dev_handle = %d index = %d", dev_handle, index);
+ APPL_TRACE_DEBUG("bta_hh_dev_handle_to_cb_idx dev_handle = %d index = %d",
+ dev_handle, index);
#endif
- }
- else
+ } else
#endif
- /* regular HID device checking */
- if (dev_handle < BTA_HH_MAX_KNOWN )
- index = bta_hh_cb.cb_index[dev_handle];
+ /* regular HID device checking */
+ if (dev_handle < BTA_HH_MAX_KNOWN)
+ index = bta_hh_cb.cb_index[dev_handle];
- return index;
-
+ return index;
}
#if (BTA_HH_DEBUG == TRUE)
/*******************************************************************************
@@ -518,22 +475,21 @@
* Returns
*
******************************************************************************/
-void bta_hh_trace_dev_db(void)
-{
- uint8_t xx;
+void bta_hh_trace_dev_db(void) {
+ uint8_t xx;
- APPL_TRACE_DEBUG("bta_hh_trace_dev_db:: Device DB list********************");
+ APPL_TRACE_DEBUG("bta_hh_trace_dev_db:: Device DB list********************");
- for (xx = 0; xx < BTA_HH_MAX_DEVICE; xx++)
- {
- APPL_TRACE_DEBUG("kdev[%d] in_use[%d] handle[%d] ",xx,
- bta_hh_cb.kdev[xx].in_use, bta_hh_cb.kdev[xx].hid_handle);
+ for (xx = 0; xx < BTA_HH_MAX_DEVICE; xx++) {
+ APPL_TRACE_DEBUG("kdev[%d] in_use[%d] handle[%d] ", xx,
+ bta_hh_cb.kdev[xx].in_use, bta_hh_cb.kdev[xx].hid_handle);
- APPL_TRACE_DEBUG("\t\t\t attr_mask[%04x] state [%d] sub_class[%02x] index = %d",
- bta_hh_cb.kdev[xx].attr_mask, bta_hh_cb.kdev[xx].state,
- bta_hh_cb.kdev[xx].sub_class, bta_hh_cb.kdev[xx].index);
- }
- APPL_TRACE_DEBUG("*********************************************************");
+ APPL_TRACE_DEBUG(
+ "\t\t\t attr_mask[%04x] state [%d] sub_class[%02x] index = %d",
+ bta_hh_cb.kdev[xx].attr_mask, bta_hh_cb.kdev[xx].state,
+ bta_hh_cb.kdev[xx].sub_class, bta_hh_cb.kdev[xx].index);
+ }
+ APPL_TRACE_DEBUG("*********************************************************");
}
#endif
#endif /* HL_INCLUDED */
diff --git a/bta/hl/bta_hl_act.cc b/bta/hl/bta_hl_act.cc
index 1d6fa6b..f96690b 100644
--- a/bta/hl/bta_hl_act.cc
+++ b/bta/hl/bta_hl_act.cc
@@ -29,24 +29,23 @@
#if (HL_INCLUDED == TRUE)
#include "bt_common.h"
-#include "sdp_api.h"
-#include "bta_sys.h"
-#include "port_api.h"
-#include "sdp_api.h"
#include "bta_hl_api.h"
#include "bta_hl_int.h"
-#include "utl.h"
-#include "mca_defs.h"
+#include "bta_sys.h"
#include "mca_api.h"
+#include "mca_defs.h"
#include "osi/include/osi.h"
+#include "port_api.h"
+#include "sdp_api.h"
+#include "utl.h"
/*****************************************************************************
* Local Function prototypes
****************************************************************************/
#if (BTA_HL_DEBUG == TRUE && BT_TRACE_VERBOSE == TRUE)
-static char *bta_hl_mcap_evt_code(uint8_t evt_code);
-static char *bta_hl_dch_oper_code(tBTA_HL_DCH_OPER oper_code);
-static char *bta_hl_cback_evt_code(uint8_t evt_code);
+static char* bta_hl_mcap_evt_code(uint8_t evt_code);
+static char* bta_hl_dch_oper_code(tBTA_HL_DCH_OPER oper_code);
+static char* bta_hl_cback_evt_code(uint8_t evt_code);
#endif
static void bta_hl_sdp_cback(uint8_t sdp_op, uint8_t app_idx, uint8_t mcl_idx,
uint8_t mdl_idx, uint16_t status);
@@ -58,19 +57,9 @@
static void bta_hl_sdp_cback5(uint16_t status);
static void bta_hl_sdp_cback6(uint16_t status);
-
-static tSDP_DISC_CMPL_CB * const bta_hl_sdp_cback_arr[] =
-{
- bta_hl_sdp_cback0,
- bta_hl_sdp_cback1,
- bta_hl_sdp_cback2,
- bta_hl_sdp_cback3,
- bta_hl_sdp_cback4,
- bta_hl_sdp_cback5,
- bta_hl_sdp_cback6
-};
-
-
+static tSDP_DISC_CMPL_CB* const bta_hl_sdp_cback_arr[] = {
+ bta_hl_sdp_cback0, bta_hl_sdp_cback1, bta_hl_sdp_cback2, bta_hl_sdp_cback3,
+ bta_hl_sdp_cback4, bta_hl_sdp_cback5, bta_hl_sdp_cback6};
/*******************************************************************************
*
@@ -81,31 +70,26 @@
* Returns void
*
******************************************************************************/
-void bta_hl_dch_mca_cong_change(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- tBTA_HL_DATA *p_data)
-{
- tBTA_HL_APP_CB *p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
- tBTA_HL_MCL_CB *p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
- tBTA_HL_MDL_CB *p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
- tMCA_CONG_CHG *p_cong_chg = &p_data->mca_evt.mca_data.cong_chg;
- tBTA_HL evt_data;
+void bta_hl_dch_mca_cong_change(uint8_t app_idx, uint8_t mcl_idx,
+ uint8_t mdl_idx, tBTA_HL_DATA* p_data) {
+ tBTA_HL_APP_CB* p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
+ tBTA_HL_MCL_CB* p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
+ tBTA_HL_MDL_CB* p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
+ tMCA_CONG_CHG* p_cong_chg = &p_data->mca_evt.mca_data.cong_chg;
+ tBTA_HL evt_data;
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hl_dch_mca_cong_change mdl_id=%d cong=%d",
- p_cong_chg->mdl_id,
- p_cong_chg->cong);
+ APPL_TRACE_DEBUG("bta_hl_dch_mca_cong_change mdl_id=%d cong=%d",
+ p_cong_chg->mdl_id, p_cong_chg->cong);
#endif
- evt_data.dch_cong_ind.cong =
- p_dcb->cong = p_cong_chg->cong;
- evt_data.dch_cong_ind.mdl_handle = p_dcb->mdl_handle;
- evt_data.dch_cong_ind.mcl_handle = p_mcb->mcl_handle;
- evt_data.dch_cong_ind.app_handle = p_acb->app_handle;
+ evt_data.dch_cong_ind.cong = p_dcb->cong = p_cong_chg->cong;
+ evt_data.dch_cong_ind.mdl_handle = p_dcb->mdl_handle;
+ evt_data.dch_cong_ind.mcl_handle = p_mcb->mcl_handle;
+ evt_data.dch_cong_ind.app_handle = p_acb->app_handle;
- p_acb->p_cback(BTA_HL_CONG_CHG_IND_EVT ,(tBTA_HL *) &evt_data );
+ p_acb->p_cback(BTA_HL_CONG_CHG_IND_EVT, (tBTA_HL*)&evt_data);
}
-
-
/*******************************************************************************
*
* Function bta_hl_dch_echo_test
@@ -116,24 +100,21 @@
*
******************************************************************************/
void bta_hl_dch_echo_test(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- UNUSED_ATTR tBTA_HL_DATA *p_data)
-{
- tBTA_HL_APP_CB *p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
- tBTA_HL_MCL_CB *p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
- tBTA_HL_MDL_CB *p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
+ UNUSED_ATTR tBTA_HL_DATA* p_data) {
+ tBTA_HL_APP_CB* p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
+ tBTA_HL_MCL_CB* p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
+ tBTA_HL_MDL_CB* p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hl_dch_echo_test");
+ APPL_TRACE_DEBUG("bta_hl_dch_echo_test");
#endif
- p_dcb->echo_oper = BTA_HL_ECHO_OP_CI_GET_ECHO_DATA;
- p_dcb->cout_oper |= BTA_HL_CO_GET_ECHO_DATA_MASK;
+ p_dcb->echo_oper = BTA_HL_ECHO_OP_CI_GET_ECHO_DATA;
+ p_dcb->cout_oper |= BTA_HL_CO_GET_ECHO_DATA_MASK;
- bta_hl_co_get_echo_data(p_acb->app_id, p_mcb->mcl_handle,
- p_dcb->p_echo_tx_pkt->len,
- BTA_HL_GET_BUF_PTR(p_dcb->p_echo_tx_pkt),
- BTA_HL_CI_GET_ECHO_DATA_EVT);
-
+ bta_hl_co_get_echo_data(
+ p_acb->app_id, p_mcb->mcl_handle, p_dcb->p_echo_tx_pkt->len,
+ BTA_HL_GET_BUF_PTR(p_dcb->p_echo_tx_pkt), BTA_HL_CI_GET_ECHO_DATA_EVT);
}
/*******************************************************************************
*
@@ -145,42 +126,36 @@
*
******************************************************************************/
void bta_hl_dch_sdp_init(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- tBTA_HL_DATA *p_data)
-{
- tBTA_HL_MCL_CB *p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
- tBTA_HL_MDL_CB *p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
+ tBTA_HL_DATA* p_data) {
+ tBTA_HL_MCL_CB* p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
+ tBTA_HL_MDL_CB* p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hl_dch_sdp_init");
+ APPL_TRACE_DEBUG("bta_hl_dch_sdp_init");
#endif
- if ( p_mcb->sdp_oper == BTA_HL_SDP_OP_NONE)
- {
- p_mcb->sdp_mdl_idx = mdl_idx;
- if (p_dcb->dch_oper == BTA_HL_DCH_OP_LOCAL_OPEN )
- {
- p_mcb->sdp_oper = BTA_HL_SDP_OP_DCH_OPEN_INIT;
+ if (p_mcb->sdp_oper == BTA_HL_SDP_OP_NONE) {
+ p_mcb->sdp_mdl_idx = mdl_idx;
+ if (p_dcb->dch_oper == BTA_HL_DCH_OP_LOCAL_OPEN) {
+ p_mcb->sdp_oper = BTA_HL_SDP_OP_DCH_OPEN_INIT;
- }
- else
- {
- p_mcb->sdp_oper = BTA_HL_SDP_OP_DCH_RECONNECT_INIT;
- }
+ } else {
+ p_mcb->sdp_oper = BTA_HL_SDP_OP_DCH_RECONNECT_INIT;
+ }
- if (bta_hl_init_sdp(p_mcb->sdp_oper, app_idx, mcl_idx, mdl_idx) != BTA_HL_STATUS_OK)
- {
- APPL_TRACE_ERROR("SDP INIT failed");
- p_mcb->sdp_oper = BTA_HL_SDP_OP_NONE;
- bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_SDP_FAIL_EVT, p_data);
- }
+ if (bta_hl_init_sdp(p_mcb->sdp_oper, app_idx, mcl_idx, mdl_idx) !=
+ BTA_HL_STATUS_OK) {
+ APPL_TRACE_ERROR("SDP INIT failed");
+ p_mcb->sdp_oper = BTA_HL_SDP_OP_NONE;
+ bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_SDP_FAIL_EVT,
+ p_data);
}
- else
- {
- APPL_TRACE_ERROR("SDP in use");
- bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_SDP_FAIL_EVT, p_data);
- }
+ } else {
+ APPL_TRACE_ERROR("SDP in use");
+ bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_SDP_FAIL_EVT,
+ p_data);
+ }
}
-
/*******************************************************************************
*
* Function bta_hl_dch_close_echo_test
@@ -190,36 +165,33 @@
* Returns void
*
******************************************************************************/
-void bta_hl_dch_close_echo_test(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- tBTA_HL_DATA *p_data)
-{
- tBTA_HL_MDL_CB *p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
+void bta_hl_dch_close_echo_test(uint8_t app_idx, uint8_t mcl_idx,
+ uint8_t mdl_idx, tBTA_HL_DATA* p_data) {
+ tBTA_HL_MDL_CB* p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hl_dch_close_echo_test");
+ APPL_TRACE_DEBUG("bta_hl_dch_close_echo_test");
#endif
- switch (p_dcb->echo_oper)
- {
- case BTA_HL_ECHO_OP_DCH_CLOSE_CFM:
- case BTA_HL_ECHO_OP_OPEN_IND:
- case BTA_HL_ECHO_OP_ECHO_PKT:
- p_dcb->dch_oper = BTA_HL_DCH_OP_LOCAL_CLOSE_ECHO_TEST;
- break;
- case BTA_HL_ECHO_OP_MDL_CREATE_CFM:
- case BTA_HL_ECHO_OP_DCH_OPEN_CFM:
- case BTA_HL_ECHO_OP_LOOP_BACK:
- default:
- break;
- }
+ switch (p_dcb->echo_oper) {
+ case BTA_HL_ECHO_OP_DCH_CLOSE_CFM:
+ case BTA_HL_ECHO_OP_OPEN_IND:
+ case BTA_HL_ECHO_OP_ECHO_PKT:
+ p_dcb->dch_oper = BTA_HL_DCH_OP_LOCAL_CLOSE_ECHO_TEST;
+ break;
+ case BTA_HL_ECHO_OP_MDL_CREATE_CFM:
+ case BTA_HL_ECHO_OP_DCH_OPEN_CFM:
+ case BTA_HL_ECHO_OP_LOOP_BACK:
+ default:
+ break;
+ }
- if (MCA_CloseReq((tMCA_DL) p_dcb->mdl_handle)!= MCA_SUCCESS)
- {
- bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_CLOSE_CMPL_EVT, p_data);
- }
+ if (MCA_CloseReq((tMCA_DL)p_dcb->mdl_handle) != MCA_SUCCESS) {
+ bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_CLOSE_CMPL_EVT,
+ p_data);
+ }
}
-
/*******************************************************************************
*
* Function bta_hl_dch_mca_rcv_data
@@ -230,61 +202,53 @@
*
******************************************************************************/
void bta_hl_dch_mca_rcv_data(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- tBTA_HL_DATA *p_data)
-{
- tBTA_HL_APP_CB *p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
- tBTA_HL_MCL_CB *p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
- tBTA_HL_MDL_CB *p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
+ tBTA_HL_DATA* p_data) {
+ tBTA_HL_APP_CB* p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
+ tBTA_HL_MCL_CB* p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
+ tBTA_HL_MDL_CB* p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hl_dch_mca_rcv_data");
+ APPL_TRACE_DEBUG("bta_hl_dch_mca_rcv_data");
#endif
- if (p_dcb->local_mdep_id == BTA_HL_ECHO_TEST_MDEP_ID)
- {
- switch ( p_dcb->echo_oper)
- {
- case BTA_HL_ECHO_OP_ECHO_PKT:
+ if (p_dcb->local_mdep_id == BTA_HL_ECHO_TEST_MDEP_ID) {
+ switch (p_dcb->echo_oper) {
+ case BTA_HL_ECHO_OP_ECHO_PKT:
- if (MCA_WriteReq((tMCA_DL) p_dcb->mdl_handle, p_data->mca_rcv_data_evt.p_pkt) != MCA_SUCCESS)
- {
- osi_free_and_reset((void **)&p_data->mca_rcv_data_evt.p_pkt);
- bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_CLOSE_ECHO_TEST_EVT, p_data);
- }
- break;
- case BTA_HL_ECHO_OP_LOOP_BACK:
-
- p_dcb->p_echo_rx_pkt = p_data->mca_rcv_data_evt.p_pkt;
- p_dcb->echo_oper = BTA_HL_ECHO_OP_CI_PUT_ECHO_DATA;
- p_dcb->cout_oper |= BTA_HL_CO_PUT_ECHO_DATA_MASK;
- p_dcb->ci_put_echo_data_status = BTA_HL_STATUS_FAIL;
-
- bta_hl_co_put_echo_data(p_acb->app_id, p_mcb->mcl_handle,
- p_dcb->p_echo_rx_pkt->len,
- BTA_HL_GET_BUF_PTR(p_dcb->p_echo_rx_pkt),
- BTA_HL_CI_PUT_ECHO_DATA_EVT);
- break;
- default:
- APPL_TRACE_ERROR("Unknonw echo_oper=%d",p_dcb->echo_oper);
- break;
+ if (MCA_WriteReq((tMCA_DL)p_dcb->mdl_handle,
+ p_data->mca_rcv_data_evt.p_pkt) != MCA_SUCCESS) {
+ osi_free_and_reset((void**)&p_data->mca_rcv_data_evt.p_pkt);
+ bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx,
+ BTA_HL_DCH_CLOSE_ECHO_TEST_EVT, p_data);
}
+ break;
+ case BTA_HL_ECHO_OP_LOOP_BACK:
+ p_dcb->p_echo_rx_pkt = p_data->mca_rcv_data_evt.p_pkt;
+ p_dcb->echo_oper = BTA_HL_ECHO_OP_CI_PUT_ECHO_DATA;
+ p_dcb->cout_oper |= BTA_HL_CO_PUT_ECHO_DATA_MASK;
+ p_dcb->ci_put_echo_data_status = BTA_HL_STATUS_FAIL;
+
+ bta_hl_co_put_echo_data(p_acb->app_id, p_mcb->mcl_handle,
+ p_dcb->p_echo_rx_pkt->len,
+ BTA_HL_GET_BUF_PTR(p_dcb->p_echo_rx_pkt),
+ BTA_HL_CI_PUT_ECHO_DATA_EVT);
+ break;
+ default:
+ APPL_TRACE_ERROR("Unknonw echo_oper=%d", p_dcb->echo_oper);
+ break;
}
- else
- {
- p_dcb->cout_oper |= BTA_HL_CO_PUT_RX_DATA_MASK;
- p_dcb->p_rx_pkt = p_data->mca_rcv_data_evt.p_pkt;
- bta_hl_co_put_rx_data(p_acb->app_id, p_dcb->mdl_handle,
- p_dcb->p_rx_pkt->len,
- BTA_HL_GET_BUF_PTR(p_dcb->p_rx_pkt),
- BTA_HL_CI_PUT_RX_DATA_EVT);
+ } else {
+ p_dcb->cout_oper |= BTA_HL_CO_PUT_RX_DATA_MASK;
+ p_dcb->p_rx_pkt = p_data->mca_rcv_data_evt.p_pkt;
-
- }
+ bta_hl_co_put_rx_data(
+ p_acb->app_id, p_dcb->mdl_handle, p_dcb->p_rx_pkt->len,
+ BTA_HL_GET_BUF_PTR(p_dcb->p_rx_pkt), BTA_HL_CI_PUT_RX_DATA_EVT);
+ }
}
-
/*******************************************************************************
*
* Function bta_hl_dch_ci_put_echo_data
@@ -295,25 +259,23 @@
* Returns void
*
******************************************************************************/
-void bta_hl_dch_ci_put_echo_data(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- tBTA_HL_DATA *p_data)
-{
- tBTA_HL_MDL_CB *p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
+void bta_hl_dch_ci_put_echo_data(uint8_t app_idx, uint8_t mcl_idx,
+ uint8_t mdl_idx, tBTA_HL_DATA* p_data) {
+ tBTA_HL_MDL_CB* p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hl_dch_ci_put_echo_data");
+ APPL_TRACE_DEBUG("bta_hl_dch_ci_put_echo_data");
#endif
- p_dcb->cout_oper &= ~BTA_HL_CO_PUT_ECHO_DATA_MASK;
- osi_free_and_reset((void **)&p_dcb->p_echo_rx_pkt);
- p_dcb->ci_put_echo_data_status = p_data->ci_get_put_echo_data.status;
+ p_dcb->cout_oper &= ~BTA_HL_CO_PUT_ECHO_DATA_MASK;
+ osi_free_and_reset((void**)&p_dcb->p_echo_rx_pkt);
+ p_dcb->ci_put_echo_data_status = p_data->ci_get_put_echo_data.status;
- p_dcb->echo_oper = BTA_HL_ECHO_OP_DCH_CLOSE_CFM;
- bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_CLOSE_ECHO_TEST_EVT, p_data);
+ p_dcb->echo_oper = BTA_HL_ECHO_OP_DCH_CLOSE_CFM;
+ bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx,
+ BTA_HL_DCH_CLOSE_ECHO_TEST_EVT, p_data);
}
-
-
/*******************************************************************************
*
* Function bta_hl_dch_ci_get_echo_data
@@ -324,36 +286,31 @@
* Returns void
*
******************************************************************************/
-void bta_hl_dch_ci_get_echo_data(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- tBTA_HL_DATA *p_data)
-{
- tBTA_HL_MDL_CB *p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
- tBTA_HL_STATUS status;
+void bta_hl_dch_ci_get_echo_data(uint8_t app_idx, uint8_t mcl_idx,
+ uint8_t mdl_idx, tBTA_HL_DATA* p_data) {
+ tBTA_HL_MDL_CB* p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
+ tBTA_HL_STATUS status;
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hl_dch_ci_get_echo_data");
+ APPL_TRACE_DEBUG("bta_hl_dch_ci_get_echo_data");
#endif
- p_dcb->cout_oper &= ~BTA_HL_CO_GET_ECHO_DATA_MASK;
+ p_dcb->cout_oper &= ~BTA_HL_CO_GET_ECHO_DATA_MASK;
- if (!p_dcb->abort_oper)
- {
- status = p_data->ci_get_put_echo_data.status;
- if (status == BTA_HL_STATUS_OK)
- {
- p_dcb->echo_oper = BTA_HL_ECHO_OP_MDL_CREATE_CFM;
- bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_OPEN_EVT, p_data);
- }
- else
- {
- bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_CLOSE_CMPL_EVT, p_data);
- }
+ if (!p_dcb->abort_oper) {
+ status = p_data->ci_get_put_echo_data.status;
+ if (status == BTA_HL_STATUS_OK) {
+ p_dcb->echo_oper = BTA_HL_ECHO_OP_MDL_CREATE_CFM;
+ bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_OPEN_EVT,
+ p_data);
+ } else {
+ bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx,
+ BTA_HL_DCH_CLOSE_CMPL_EVT, p_data);
}
- else
- {
- bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_CLOSE_CMPL_EVT, p_data);
- }
-
+ } else {
+ bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_CLOSE_CMPL_EVT,
+ p_data);
+ }
}
/*******************************************************************************
@@ -366,37 +323,30 @@
* Returns void
*
******************************************************************************/
-void bta_hl_dch_ci_put_rx_data(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- tBTA_HL_DATA *p_data)
-{
- tBTA_HL_APP_CB *p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
- tBTA_HL_MCL_CB *p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
- tBTA_HL_MDL_CB *p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
- tBTA_HL evt_data;
+void bta_hl_dch_ci_put_rx_data(uint8_t app_idx, uint8_t mcl_idx,
+ uint8_t mdl_idx, tBTA_HL_DATA* p_data) {
+ tBTA_HL_APP_CB* p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
+ tBTA_HL_MCL_CB* p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
+ tBTA_HL_MDL_CB* p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
+ tBTA_HL evt_data;
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hl_dch_ci_put_rx_data");
+ APPL_TRACE_DEBUG("bta_hl_dch_ci_put_rx_data");
#endif
- p_dcb->cout_oper &= ~BTA_HL_CO_PUT_RX_DATA_MASK;
- osi_free_and_reset((void **)&p_dcb->p_rx_pkt);
- bta_hl_build_rcv_data_ind(&evt_data,
- p_acb->app_handle,
- p_mcb->mcl_handle,
- p_dcb->mdl_handle);
- p_acb->p_cback(BTA_HL_DCH_RCV_DATA_IND_EVT,(tBTA_HL *) &evt_data );
- if (p_dcb->close_pending)
- {
- if (!p_dcb->cout_oper)
- {
- bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_CLOSE_EVT, p_data);
- }
-
+ p_dcb->cout_oper &= ~BTA_HL_CO_PUT_RX_DATA_MASK;
+ osi_free_and_reset((void**)&p_dcb->p_rx_pkt);
+ bta_hl_build_rcv_data_ind(&evt_data, p_acb->app_handle, p_mcb->mcl_handle,
+ p_dcb->mdl_handle);
+ p_acb->p_cback(BTA_HL_DCH_RCV_DATA_IND_EVT, (tBTA_HL*)&evt_data);
+ if (p_dcb->close_pending) {
+ if (!p_dcb->cout_oper) {
+ bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_CLOSE_EVT,
+ p_data);
}
+ }
}
-
-
/*******************************************************************************
*
* Function bta_hl_dch_ci_get_tx_data
@@ -407,72 +357,56 @@
* Returns void
*
******************************************************************************/
-void bta_hl_dch_ci_get_tx_data(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- tBTA_HL_DATA *p_data)
-{
- tBTA_HL_APP_CB *p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
- tBTA_HL_MCL_CB *p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
- tBTA_HL_MDL_CB *p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
- tMCA_RESULT result;
- tBTA_HL_STATUS status = BTA_HL_STATUS_OK;
- bool free_buf = false;
- bool close_dch = false;
- tBTA_HL evt_data;
-
+void bta_hl_dch_ci_get_tx_data(uint8_t app_idx, uint8_t mcl_idx,
+ uint8_t mdl_idx, tBTA_HL_DATA* p_data) {
+ tBTA_HL_APP_CB* p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
+ tBTA_HL_MCL_CB* p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
+ tBTA_HL_MDL_CB* p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
+ tMCA_RESULT result;
+ tBTA_HL_STATUS status = BTA_HL_STATUS_OK;
+ bool free_buf = false;
+ bool close_dch = false;
+ tBTA_HL evt_data;
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hl_dch_ci_get_tx_data");
+ APPL_TRACE_DEBUG("bta_hl_dch_ci_get_tx_data");
#endif
- p_dcb->cout_oper &= ~BTA_HL_CO_GET_TX_DATA_MASK;
+ p_dcb->cout_oper &= ~BTA_HL_CO_GET_TX_DATA_MASK;
- if (p_dcb->close_pending)
- {
+ if (p_dcb->close_pending) {
+ status = BTA_HL_STATUS_FAIL;
+ free_buf = true;
+
+ if (!p_dcb->cout_oper) {
+ close_dch = true;
+ }
+ } else {
+ if ((result = MCA_WriteReq((tMCA_DL)p_dcb->mdl_handle, p_dcb->p_tx_pkt)) !=
+ MCA_SUCCESS) {
+ if (result == MCA_BUSY) {
+ status = BTA_HL_STATUS_DCH_BUSY;
+ } else {
status = BTA_HL_STATUS_FAIL;
- free_buf = true;
-
- if (!p_dcb->cout_oper)
- {
- close_dch = true;
- }
+ }
+ free_buf = true;
+ } else {
+ p_dcb->p_tx_pkt = NULL;
}
- else
- {
- if ((result = MCA_WriteReq((tMCA_DL) p_dcb->mdl_handle, p_dcb->p_tx_pkt)) != MCA_SUCCESS)
- {
- if (result == MCA_BUSY)
- {
- status = BTA_HL_STATUS_DCH_BUSY;
- }
- else
- {
- status = BTA_HL_STATUS_FAIL;
- }
- free_buf = true;
- }
- else
- {
- p_dcb->p_tx_pkt = NULL;
- }
- }
+ }
- if (free_buf)
- osi_free_and_reset((void **)&p_dcb->p_tx_pkt);
+ if (free_buf) osi_free_and_reset((void**)&p_dcb->p_tx_pkt);
- bta_hl_build_send_data_cfm(&evt_data,
- p_acb->app_handle,
- p_mcb->mcl_handle,
- p_dcb->mdl_handle,
- status);
- p_acb->p_cback(BTA_HL_DCH_SEND_DATA_CFM_EVT,(tBTA_HL *) &evt_data );
+ bta_hl_build_send_data_cfm(&evt_data, p_acb->app_handle, p_mcb->mcl_handle,
+ p_dcb->mdl_handle, status);
+ p_acb->p_cback(BTA_HL_DCH_SEND_DATA_CFM_EVT, (tBTA_HL*)&evt_data);
- if (close_dch)
- {
- bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_CLOSE_EVT, p_data);
- }
+ if (close_dch) {
+ bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_CLOSE_EVT,
+ p_data);
+ }
}
-
/*******************************************************************************
*
* Function bta_hl_dch_send_data
@@ -483,50 +417,39 @@
*
******************************************************************************/
void bta_hl_dch_send_data(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- tBTA_HL_DATA *p_data)
-{
- tBTA_HL_APP_CB *p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
- tBTA_HL_MCL_CB *p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
- tBTA_HL_MDL_CB *p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
- tBTA_HL evt_data;
- bool success = true;
+ tBTA_HL_DATA* p_data) {
+ tBTA_HL_APP_CB* p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
+ tBTA_HL_MCL_CB* p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
+ tBTA_HL_MDL_CB* p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
+ tBTA_HL evt_data;
+ bool success = true;
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hl_dch_send_data");
+ APPL_TRACE_DEBUG("bta_hl_dch_send_data");
#endif
- if (!(p_dcb->cout_oper & BTA_HL_CO_GET_TX_DATA_MASK))
- {
- // p_dcb->chnl_cfg.fcs may be BTA_HL_MCA_USE_FCS (0x11) or BTA_HL_MCA_NO_FCS (0x10) or BTA_HL_DEFAULT_SOURCE_FCS (1)
- bool fcs_use = (bool) (p_dcb->chnl_cfg.fcs & BTA_HL_MCA_FCS_USE_MASK);
- if ((p_dcb->p_tx_pkt = bta_hl_get_buf(p_data->api_send_data.pkt_size, fcs_use)) != NULL)
- {
- bta_hl_co_get_tx_data( p_acb->app_id,
- p_dcb->mdl_handle,
- p_data->api_send_data.pkt_size,
- BTA_HL_GET_BUF_PTR(p_dcb->p_tx_pkt),
- BTA_HL_CI_GET_TX_DATA_EVT);
- p_dcb->cout_oper |= BTA_HL_CO_GET_TX_DATA_MASK;
- }
- else
- {
- success = false;
- }
+ if (!(p_dcb->cout_oper & BTA_HL_CO_GET_TX_DATA_MASK)) {
+ // p_dcb->chnl_cfg.fcs may be BTA_HL_MCA_USE_FCS (0x11) or BTA_HL_MCA_NO_FCS
+ // (0x10) or BTA_HL_DEFAULT_SOURCE_FCS (1)
+ bool fcs_use = (bool)(p_dcb->chnl_cfg.fcs & BTA_HL_MCA_FCS_USE_MASK);
+ if ((p_dcb->p_tx_pkt =
+ bta_hl_get_buf(p_data->api_send_data.pkt_size, fcs_use)) != NULL) {
+ bta_hl_co_get_tx_data(
+ p_acb->app_id, p_dcb->mdl_handle, p_data->api_send_data.pkt_size,
+ BTA_HL_GET_BUF_PTR(p_dcb->p_tx_pkt), BTA_HL_CI_GET_TX_DATA_EVT);
+ p_dcb->cout_oper |= BTA_HL_CO_GET_TX_DATA_MASK;
+ } else {
+ success = false;
}
- else
- {
- success = false;
- }
+ } else {
+ success = false;
+ }
- if (!success)
- {
- bta_hl_build_send_data_cfm(&evt_data,
- p_acb->app_handle,
- p_mcb->mcl_handle,
- p_dcb->mdl_handle,
- BTA_HL_STATUS_FAIL);
- p_acb->p_cback(BTA_HL_DCH_SEND_DATA_CFM_EVT,(tBTA_HL *) &evt_data );
- }
+ if (!success) {
+ bta_hl_build_send_data_cfm(&evt_data, p_acb->app_handle, p_mcb->mcl_handle,
+ p_dcb->mdl_handle, BTA_HL_STATUS_FAIL);
+ p_acb->p_cback(BTA_HL_DCH_SEND_DATA_CFM_EVT, (tBTA_HL*)&evt_data);
+ }
}
/*******************************************************************************
@@ -539,188 +462,151 @@
*
******************************************************************************/
void bta_hl_dch_close_cmpl(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- tBTA_HL_DATA *p_data)
-{
- tBTA_HL_APP_CB *p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
- tBTA_HL_MCL_CB *p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
- tBTA_HL_MDL_CB *p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
- tBTA_HL evt_data;
- tBTA_HL_EVT event = 0;
- bool send_evt=true;
- tBTA_HL_STATUS status;
+ tBTA_HL_DATA* p_data) {
+ tBTA_HL_APP_CB* p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
+ tBTA_HL_MCL_CB* p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
+ tBTA_HL_MDL_CB* p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
+ tBTA_HL evt_data;
+ tBTA_HL_EVT event = 0;
+ bool send_evt = true;
+ tBTA_HL_STATUS status;
#if (BTA_HL_DEBUG == TRUE)
#if (BT_TRACE_VERBOSE == TRUE)
- APPL_TRACE_DEBUG("bta_hl_dch_close_cmpl dch oper=%s", bta_hl_dch_oper_code(p_dcb->dch_oper));
+ APPL_TRACE_DEBUG("bta_hl_dch_close_cmpl dch oper=%s",
+ bta_hl_dch_oper_code(p_dcb->dch_oper));
#else
- APPL_TRACE_DEBUG("bta_hl_dch_close_cmpl dch oper=%d", p_dcb->dch_oper);
+ APPL_TRACE_DEBUG("bta_hl_dch_close_cmpl dch oper=%d", p_dcb->dch_oper);
#endif
#endif
- switch (p_dcb->dch_oper)
- {
- case BTA_HL_DCH_OP_LOCAL_OPEN:
- case BTA_HL_DCH_OP_LOCAL_RECONNECT:
+ switch (p_dcb->dch_oper) {
+ case BTA_HL_DCH_OP_LOCAL_OPEN:
+ case BTA_HL_DCH_OP_LOCAL_RECONNECT:
- if (p_dcb->abort_oper & BTA_HL_ABORT_LOCAL_MASK)
- {
- bta_hl_build_abort_cfm(&evt_data,
- p_acb->app_handle,
- p_mcb->mcl_handle,
- BTA_HL_STATUS_OK);
- event = BTA_HL_DCH_ABORT_CFM_EVT;
- }
- else if (p_dcb->abort_oper & BTA_HL_ABORT_REMOTE_MASK )
- {
- bta_hl_build_abort_ind(&evt_data,
- p_acb->app_handle,
- p_mcb->mcl_handle);
- event = BTA_HL_DCH_ABORT_IND_EVT;
- }
- else
- {
- bta_hl_build_dch_open_cfm(&evt_data,
- p_acb->app_handle,
- p_mcb->mcl_handle,
- BTA_HL_INVALID_MDL_HANDLE,
- 0,0,0,0,0, BTA_HL_STATUS_FAIL);
- event = BTA_HL_DCH_OPEN_CFM_EVT;
- if (p_dcb->dch_oper == BTA_HL_DCH_OP_LOCAL_RECONNECT)
- {
- event = BTA_HL_DCH_RECONNECT_CFM_EVT;
- }
- }
- break;
+ if (p_dcb->abort_oper & BTA_HL_ABORT_LOCAL_MASK) {
+ bta_hl_build_abort_cfm(&evt_data, p_acb->app_handle, p_mcb->mcl_handle,
+ BTA_HL_STATUS_OK);
+ event = BTA_HL_DCH_ABORT_CFM_EVT;
+ } else if (p_dcb->abort_oper & BTA_HL_ABORT_REMOTE_MASK) {
+ bta_hl_build_abort_ind(&evt_data, p_acb->app_handle, p_mcb->mcl_handle);
+ event = BTA_HL_DCH_ABORT_IND_EVT;
+ } else {
+ bta_hl_build_dch_open_cfm(&evt_data, p_acb->app_handle,
+ p_mcb->mcl_handle, BTA_HL_INVALID_MDL_HANDLE,
+ 0, 0, 0, 0, 0, BTA_HL_STATUS_FAIL);
+ event = BTA_HL_DCH_OPEN_CFM_EVT;
+ if (p_dcb->dch_oper == BTA_HL_DCH_OP_LOCAL_RECONNECT) {
+ event = BTA_HL_DCH_RECONNECT_CFM_EVT;
+ }
+ }
+ break;
- case BTA_HL_DCH_OP_LOCAL_CLOSE:
- case BTA_HL_DCH_OP_REMOTE_DELETE:
- case BTA_HL_DCH_OP_LOCAL_CLOSE_RECONNECT:
- case BTA_HL_DCH_OP_NONE:
+ case BTA_HL_DCH_OP_LOCAL_CLOSE:
+ case BTA_HL_DCH_OP_REMOTE_DELETE:
+ case BTA_HL_DCH_OP_LOCAL_CLOSE_RECONNECT:
+ case BTA_HL_DCH_OP_NONE:
- bta_hl_build_dch_close_cfm(&evt_data,
- p_acb->app_handle,
- p_mcb->mcl_handle,
- p_dcb->mdl_handle,
- BTA_HL_STATUS_OK);
- event = BTA_HL_DCH_CLOSE_CFM_EVT;
- break;
+ bta_hl_build_dch_close_cfm(&evt_data, p_acb->app_handle,
+ p_mcb->mcl_handle, p_dcb->mdl_handle,
+ BTA_HL_STATUS_OK);
+ event = BTA_HL_DCH_CLOSE_CFM_EVT;
+ break;
- case BTA_HL_DCH_OP_REMOTE_CLOSE:
- bta_hl_build_dch_close_ind(&evt_data,
- p_acb->app_handle,
- p_mcb->mcl_handle,
- p_dcb->mdl_handle,
- p_dcb->intentional_close);
- event = BTA_HL_DCH_CLOSE_IND_EVT;
- break;
+ case BTA_HL_DCH_OP_REMOTE_CLOSE:
+ bta_hl_build_dch_close_ind(&evt_data, p_acb->app_handle,
+ p_mcb->mcl_handle, p_dcb->mdl_handle,
+ p_dcb->intentional_close);
+ event = BTA_HL_DCH_CLOSE_IND_EVT;
+ break;
- case BTA_HL_DCH_OP_REMOTE_OPEN:
+ case BTA_HL_DCH_OP_REMOTE_OPEN:
- if (p_dcb->abort_oper & BTA_HL_ABORT_LOCAL_MASK)
- {
- bta_hl_build_abort_cfm(&evt_data,
- p_acb->app_handle,
- p_mcb->mcl_handle,
- BTA_HL_STATUS_OK);
- event = BTA_HL_DCH_ABORT_CFM_EVT;
- }
- else if (p_dcb->abort_oper & BTA_HL_ABORT_REMOTE_MASK )
- {
- bta_hl_build_abort_ind(&evt_data,
- p_acb->app_handle,
- p_mcb->mcl_handle);
- event = BTA_HL_DCH_ABORT_IND_EVT;
- }
- else
- {
- bta_hl_build_dch_close_ind(&evt_data,
- p_acb->app_handle,
- p_mcb->mcl_handle,
- p_dcb->mdl_handle,
- p_dcb->intentional_close);
- event = BTA_HL_DCH_CLOSE_IND_EVT;
- }
- break;
+ if (p_dcb->abort_oper & BTA_HL_ABORT_LOCAL_MASK) {
+ bta_hl_build_abort_cfm(&evt_data, p_acb->app_handle, p_mcb->mcl_handle,
+ BTA_HL_STATUS_OK);
+ event = BTA_HL_DCH_ABORT_CFM_EVT;
+ } else if (p_dcb->abort_oper & BTA_HL_ABORT_REMOTE_MASK) {
+ bta_hl_build_abort_ind(&evt_data, p_acb->app_handle, p_mcb->mcl_handle);
+ event = BTA_HL_DCH_ABORT_IND_EVT;
+ } else {
+ bta_hl_build_dch_close_ind(&evt_data, p_acb->app_handle,
+ p_mcb->mcl_handle, p_dcb->mdl_handle,
+ p_dcb->intentional_close);
+ event = BTA_HL_DCH_CLOSE_IND_EVT;
+ }
+ break;
- case BTA_HL_DCH_OP_LOCAL_CLOSE_ECHO_TEST:
- /* this is normal echo test close */
- case BTA_HL_DCH_OP_REMOTE_CREATE:
- case BTA_HL_DCH_OP_REMOTE_RECONNECT:
- send_evt=false;
- break;
+ case BTA_HL_DCH_OP_LOCAL_CLOSE_ECHO_TEST:
+ /* this is normal echo test close */
+ case BTA_HL_DCH_OP_REMOTE_CREATE:
+ case BTA_HL_DCH_OP_REMOTE_RECONNECT:
+ send_evt = false;
+ break;
+ default:
+#if (BTA_HL_DEBUG == TRUE)
+#if (BT_TRACE_VERBOSE == TRUE)
+ APPL_TRACE_ERROR("DCH operation not found oper=%s",
+ bta_hl_dch_oper_code(p_dcb->dch_oper));
+#else
+ APPL_TRACE_ERROR("DCH operation not found oper=%d", p_dcb->dch_oper);
+#endif
+#endif
+ send_evt = false;
+ break;
+ }
+
+ if (p_dcb->local_mdep_id == BTA_HL_ECHO_TEST_MDEP_ID) {
+ p_mcb->echo_test = false;
+ send_evt = false;
+
+ if (p_dcb->dch_oper != BTA_HL_DCH_OP_LOCAL_CLOSE_ECHO_TEST) {
+ switch (p_dcb->echo_oper) {
+ case BTA_HL_ECHO_OP_CI_GET_ECHO_DATA:
+ case BTA_HL_ECHO_OP_SDP_INIT:
+ case BTA_HL_ECHO_OP_MDL_CREATE_CFM:
+ case BTA_HL_ECHO_OP_DCH_OPEN_CFM:
+ case BTA_HL_ECHO_OP_LOOP_BACK:
+
+ status = BTA_HL_STATUS_FAIL;
+ send_evt = true;
+ break;
+ case BTA_HL_ECHO_OP_OPEN_IND:
+ case BTA_HL_ECHO_OP_ECHO_PKT:
+ break;
default:
+ APPL_TRACE_ERROR("Invalid echo_oper=%d", p_dcb->echo_oper);
+ break;
+ }
+ } else {
+ status = p_dcb->ci_put_echo_data_status;
+ send_evt = true;
+ }
+
+ if (send_evt) {
+ bta_hl_build_echo_test_cfm(&evt_data, p_acb->app_handle,
+ p_mcb->mcl_handle, status);
+ event = BTA_HL_DCH_ECHO_TEST_CFM_EVT;
+ }
+ }
+
+ bta_hl_clean_mdl_cb(app_idx, mcl_idx, mdl_idx);
+
+ if (send_evt) {
+ if (p_acb->p_cback) {
#if (BTA_HL_DEBUG == TRUE)
#if (BT_TRACE_VERBOSE == TRUE)
- APPL_TRACE_ERROR("DCH operation not found oper=%s", bta_hl_dch_oper_code(p_dcb->dch_oper));
+ APPL_TRACE_DEBUG("Send Event: %s", bta_hl_cback_evt_code(event));
#else
- APPL_TRACE_ERROR("DCH operation not found oper=%d", p_dcb->dch_oper);
+ APPL_TRACE_DEBUG("Send Event: 0x%02x", event);
#endif
#endif
- send_evt=false;
- break;
+ p_acb->p_cback(event, (tBTA_HL*)&evt_data);
}
-
- if ( p_dcb->local_mdep_id == BTA_HL_ECHO_TEST_MDEP_ID )
- {
- p_mcb->echo_test = false;
- send_evt=false;
-
- if ( p_dcb->dch_oper != BTA_HL_DCH_OP_LOCAL_CLOSE_ECHO_TEST)
- {
- switch (p_dcb->echo_oper)
- {
- case BTA_HL_ECHO_OP_CI_GET_ECHO_DATA:
- case BTA_HL_ECHO_OP_SDP_INIT:
- case BTA_HL_ECHO_OP_MDL_CREATE_CFM:
- case BTA_HL_ECHO_OP_DCH_OPEN_CFM:
- case BTA_HL_ECHO_OP_LOOP_BACK:
-
- status = BTA_HL_STATUS_FAIL;
- send_evt = true;
- break;
- case BTA_HL_ECHO_OP_OPEN_IND:
- case BTA_HL_ECHO_OP_ECHO_PKT:
- break;
- default:
- APPL_TRACE_ERROR("Invalid echo_oper=%d", p_dcb->echo_oper);
- break;
- }
- }
- else
- {
- status = p_dcb->ci_put_echo_data_status;
- send_evt = true;
- }
-
- if (send_evt)
- {
- bta_hl_build_echo_test_cfm(&evt_data,
- p_acb->app_handle,
- p_mcb->mcl_handle,
- status);
- event = BTA_HL_DCH_ECHO_TEST_CFM_EVT;
- }
- }
-
- bta_hl_clean_mdl_cb(app_idx, mcl_idx, mdl_idx);
-
- if (send_evt)
- {
- if (p_acb->p_cback)
- {
-#if (BTA_HL_DEBUG == TRUE)
-#if (BT_TRACE_VERBOSE == TRUE)
- APPL_TRACE_DEBUG("Send Event: %s", bta_hl_cback_evt_code(event));
-#else
- APPL_TRACE_DEBUG("Send Event: 0x%02x", event);
-#endif
-#endif
- p_acb->p_cback(event,(tBTA_HL *) &evt_data );
- }
- }
- /* check cch close is in progress or not */
- bta_hl_check_cch_close(app_idx, mcl_idx, p_data, false);
+ }
+ /* check cch close is in progress or not */
+ bta_hl_check_cch_close(app_idx, mcl_idx, p_data, false);
}
/*******************************************************************************
*
@@ -732,37 +618,33 @@
*
******************************************************************************/
void bta_hl_dch_mca_close_ind(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- tBTA_HL_DATA *p_data)
-{
- tBTA_HL_MDL_CB *p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
+ tBTA_HL_DATA* p_data) {
+ tBTA_HL_MDL_CB* p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
#if (BTA_HL_DEBUG == TRUE)
#if (BT_TRACE_VERBOSE == TRUE)
- APPL_TRACE_DEBUG("bta_hl_dch_mca_close_ind dch oper=%s", bta_hl_dch_oper_code(p_dcb->dch_oper));
+ APPL_TRACE_DEBUG("bta_hl_dch_mca_close_ind dch oper=%s",
+ bta_hl_dch_oper_code(p_dcb->dch_oper));
#else
- APPL_TRACE_DEBUG("bta_hl_dch_mca_close_ind dch oper=%d", p_dcb->dch_oper);
+ APPL_TRACE_DEBUG("bta_hl_dch_mca_close_ind dch oper=%d", p_dcb->dch_oper);
#endif
#endif
- p_dcb->intentional_close = false;
- if (p_data->mca_evt.mca_data.close_ind.reason == L2CAP_DISC_OK)
- {
- p_dcb->intentional_close = true;
- }
+ p_dcb->intentional_close = false;
+ if (p_data->mca_evt.mca_data.close_ind.reason == L2CAP_DISC_OK) {
+ p_dcb->intentional_close = true;
+ }
- if (!p_dcb->cout_oper)
- {
- if ((p_dcb->dch_oper != BTA_HL_DCH_OP_REMOTE_OPEN) &&
- (p_dcb->dch_oper != BTA_HL_DCH_OP_REMOTE_RECONNECT))
- {
- p_dcb->dch_oper = BTA_HL_DCH_OP_REMOTE_CLOSE;
- }
- bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_CLOSE_CMPL_EVT, p_data);
+ if (!p_dcb->cout_oper) {
+ if ((p_dcb->dch_oper != BTA_HL_DCH_OP_REMOTE_OPEN) &&
+ (p_dcb->dch_oper != BTA_HL_DCH_OP_REMOTE_RECONNECT)) {
+ p_dcb->dch_oper = BTA_HL_DCH_OP_REMOTE_CLOSE;
}
- else
- {
- p_dcb->close_pending = true;
- }
+ bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_CLOSE_CMPL_EVT,
+ p_data);
+ } else {
+ p_dcb->close_pending = true;
+ }
}
/*******************************************************************************
@@ -775,41 +657,40 @@
*
******************************************************************************/
void bta_hl_dch_mca_close_cfm(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- tBTA_HL_DATA *p_data)
-{
- tBTA_HL_MDL_CB *p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
-
+ tBTA_HL_DATA* p_data) {
+ tBTA_HL_MDL_CB* p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
#if (BTA_HL_DEBUG == TRUE)
#if (BT_TRACE_VERBOSE == TRUE)
- APPL_TRACE_DEBUG("bta_hl_dch_mca_close_cfm dch_oper=%s", bta_hl_dch_oper_code(p_dcb->dch_oper) );
+ APPL_TRACE_DEBUG("bta_hl_dch_mca_close_cfm dch_oper=%s",
+ bta_hl_dch_oper_code(p_dcb->dch_oper));
#else
- APPL_TRACE_DEBUG("bta_hl_dch_mca_close_cfm dch_oper=%d", p_dcb->dch_oper);
+ APPL_TRACE_DEBUG("bta_hl_dch_mca_close_cfm dch_oper=%d", p_dcb->dch_oper);
#endif
#endif
- switch (p_dcb->dch_oper)
- {
- case BTA_HL_DCH_OP_LOCAL_CLOSE:
- case BTA_HL_DCH_OP_LOCAL_OPEN:
- case BTA_HL_DCH_OP_LOCAL_RECONNECT:
- case BTA_HL_DCH_OP_LOCAL_CLOSE_ECHO_TEST:
- case BTA_HL_DCH_OP_REMOTE_DELETE:
- case BTA_HL_DCH_OP_LOCAL_CLOSE_RECONNECT:
- case BTA_HL_DCH_OP_NONE:
- bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_CLOSE_CMPL_EVT, p_data);
- break;
- default:
+ switch (p_dcb->dch_oper) {
+ case BTA_HL_DCH_OP_LOCAL_CLOSE:
+ case BTA_HL_DCH_OP_LOCAL_OPEN:
+ case BTA_HL_DCH_OP_LOCAL_RECONNECT:
+ case BTA_HL_DCH_OP_LOCAL_CLOSE_ECHO_TEST:
+ case BTA_HL_DCH_OP_REMOTE_DELETE:
+ case BTA_HL_DCH_OP_LOCAL_CLOSE_RECONNECT:
+ case BTA_HL_DCH_OP_NONE:
+ bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx,
+ BTA_HL_DCH_CLOSE_CMPL_EVT, p_data);
+ break;
+ default:
#if (BTA_HL_DEBUG == TRUE)
#if (BT_TRACE_VERBOSE == TRUE)
- APPL_TRACE_ERROR("Invalid dch_oper=%s for close cfm", bta_hl_dch_oper_code(p_dcb->dch_oper) );
+ APPL_TRACE_ERROR("Invalid dch_oper=%s for close cfm",
+ bta_hl_dch_oper_code(p_dcb->dch_oper));
#else
- APPL_TRACE_ERROR("Invalid dch_oper=%d for close cfm", p_dcb->dch_oper);
+ APPL_TRACE_ERROR("Invalid dch_oper=%d for close cfm", p_dcb->dch_oper);
#endif
#endif
- break;
- }
-
+ break;
+ }
}
/*******************************************************************************
@@ -822,47 +703,36 @@
*
******************************************************************************/
void bta_hl_dch_mca_close(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- tBTA_HL_DATA *p_data)
-{
- tBTA_HL_APP_CB *p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
- tBTA_HL_MCL_CB *p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
- tBTA_HL_MDL_CB *p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
- tBTA_HL_STATUS status = BTA_HL_STATUS_OK;
- tBTA_HL evt_data;
+ tBTA_HL_DATA* p_data) {
+ tBTA_HL_APP_CB* p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
+ tBTA_HL_MCL_CB* p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
+ tBTA_HL_MDL_CB* p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
+ tBTA_HL_STATUS status = BTA_HL_STATUS_OK;
+ tBTA_HL evt_data;
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hl_dch_mca_close");
+ APPL_TRACE_DEBUG("bta_hl_dch_mca_close");
#endif
- if (!p_dcb->cout_oper)
- {
- p_dcb->close_pending = false;
- if (MCA_CloseReq((tMCA_DL)p_dcb->mdl_handle)== MCA_SUCCESS)
- {
- p_dcb->dch_oper = BTA_HL_DCH_OP_LOCAL_CLOSE;
- }
- else
- {
- status = BTA_HL_STATUS_FAIL;
- }
+ if (!p_dcb->cout_oper) {
+ p_dcb->close_pending = false;
+ if (MCA_CloseReq((tMCA_DL)p_dcb->mdl_handle) == MCA_SUCCESS) {
+ p_dcb->dch_oper = BTA_HL_DCH_OP_LOCAL_CLOSE;
+ } else {
+ status = BTA_HL_STATUS_FAIL;
+ }
- if ((status != BTA_HL_STATUS_OK) &&
- (p_mcb->cch_close_dch_oper != BTA_HL_CCH_CLOSE_OP_DCH_CLOSE))
- {
- bta_hl_build_dch_close_cfm(&evt_data,
- p_acb->app_handle,
- p_mcb->mcl_handle,
- p_data->api_dch_close.mdl_handle,
- status);
- p_acb->p_cback(BTA_HL_DCH_CLOSE_CFM_EVT,(tBTA_HL *) &evt_data );
- }
+ if ((status != BTA_HL_STATUS_OK) &&
+ (p_mcb->cch_close_dch_oper != BTA_HL_CCH_CLOSE_OP_DCH_CLOSE)) {
+ bta_hl_build_dch_close_cfm(&evt_data, p_acb->app_handle,
+ p_mcb->mcl_handle,
+ p_data->api_dch_close.mdl_handle, status);
+ p_acb->p_cback(BTA_HL_DCH_CLOSE_CFM_EVT, (tBTA_HL*)&evt_data);
}
- else
- {
- p_dcb->close_pending = true;
- }
+ } else {
+ p_dcb->close_pending = true;
+ }
}
-
/*******************************************************************************
*
* Function bta_hl_dch_mca_open_ind
@@ -873,101 +743,81 @@
*
******************************************************************************/
void bta_hl_dch_mca_open_ind(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- tBTA_HL_DATA *p_data)
-{
- tBTA_HL_APP_CB *p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
- tBTA_HL_MCL_CB *p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
- tBTA_HL_MDL_CB *p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
- tMCA_DL_OPEN *p_open_ind = &p_data->mca_evt.mca_data.open_ind;
- tBTA_HL evt_data;
- tBTA_HL_EVT event;
- uint8_t old_dch_oper = BTA_HL_DCH_OP_NONE;
- bool send_event = false;
-
+ tBTA_HL_DATA* p_data) {
+ tBTA_HL_APP_CB* p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
+ tBTA_HL_MCL_CB* p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
+ tBTA_HL_MDL_CB* p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
+ tMCA_DL_OPEN* p_open_ind = &p_data->mca_evt.mca_data.open_ind;
+ tBTA_HL evt_data;
+ tBTA_HL_EVT event;
+ uint8_t old_dch_oper = BTA_HL_DCH_OP_NONE;
+ bool send_event = false;
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hl_dch_mca_open_ind");
+ APPL_TRACE_DEBUG("bta_hl_dch_mca_open_ind");
#endif
- if ((p_dcb->dch_oper == BTA_HL_DCH_OP_REMOTE_OPEN) ||
- (p_dcb->dch_oper == BTA_HL_DCH_OP_REMOTE_RECONNECT) )
- {
- p_dcb->mdl_handle = (tBTA_HL_MDL_HANDLE) p_open_ind->mdl;
- p_dcb->mtu = p_open_ind->mtu;
+ if ((p_dcb->dch_oper == BTA_HL_DCH_OP_REMOTE_OPEN) ||
+ (p_dcb->dch_oper == BTA_HL_DCH_OP_REMOTE_RECONNECT)) {
+ p_dcb->mdl_handle = (tBTA_HL_MDL_HANDLE)p_open_ind->mdl;
+ p_dcb->mtu = p_open_ind->mtu;
- evt_data.dch_open_ind.mdl_handle = p_dcb->mdl_handle;
- evt_data.dch_open_ind.mcl_handle = p_mcb->mcl_handle;
- evt_data.dch_open_ind.app_handle = p_acb->app_handle;
+ evt_data.dch_open_ind.mdl_handle = p_dcb->mdl_handle;
+ evt_data.dch_open_ind.mcl_handle = p_mcb->mcl_handle;
+ evt_data.dch_open_ind.app_handle = p_acb->app_handle;
- evt_data.dch_open_ind.local_mdep_id = p_dcb->local_mdep_id;
- evt_data.dch_open_ind.mdl_id = p_dcb->mdl_id;
- evt_data.dch_open_ind.mtu = p_dcb->mtu;
+ evt_data.dch_open_ind.local_mdep_id = p_dcb->local_mdep_id;
+ evt_data.dch_open_ind.mdl_id = p_dcb->mdl_id;
+ evt_data.dch_open_ind.mtu = p_dcb->mtu;
- if ( p_dcb->chnl_cfg.fcr_opt.mode == L2CAP_FCR_ERTM_MODE )
- {
- evt_data.dch_open_ind.dch_mode = BTA_HL_DCH_MODE_RELIABLE;
- if (!bta_hl_is_the_first_reliable_existed(app_idx, mcl_idx))
- {
- p_dcb->is_the_first_reliable = true;
- }
+ if (p_dcb->chnl_cfg.fcr_opt.mode == L2CAP_FCR_ERTM_MODE) {
+ evt_data.dch_open_ind.dch_mode = BTA_HL_DCH_MODE_RELIABLE;
+ if (!bta_hl_is_the_first_reliable_existed(app_idx, mcl_idx)) {
+ p_dcb->is_the_first_reliable = true;
+ }
+ } else {
+ evt_data.dch_open_ind.dch_mode = BTA_HL_DCH_MODE_STREAMING;
+ }
+ evt_data.dch_open_ind.first_reliable = p_dcb->is_the_first_reliable;
+
+ old_dch_oper = p_dcb->dch_oper;
+ p_dcb->dch_oper = BTA_HL_DCH_OP_NONE;
+ }
+
+ switch (old_dch_oper) {
+ case BTA_HL_DCH_OP_REMOTE_OPEN:
+
+ p_dcb->dch_mode = evt_data.dch_open_ind.dch_mode;
+ if (p_dcb->local_mdep_id != BTA_HL_ECHO_TEST_MDEP_ID) {
+ bta_hl_save_mdl_cfg(app_idx, mcl_idx, mdl_idx);
+ event = BTA_HL_DCH_OPEN_IND_EVT;
+ send_event = true;
+ } else {
+ p_dcb->echo_oper = BTA_HL_ECHO_OP_ECHO_PKT;
+ }
+
+ break;
+
+ case BTA_HL_DCH_OP_REMOTE_RECONNECT:
+
+ if (bta_hl_validate_chan_cfg(app_idx, mcl_idx, mdl_idx)) {
+ bta_hl_save_mdl_cfg(app_idx, mcl_idx, mdl_idx);
+ event = BTA_HL_DCH_RECONNECT_IND_EVT;
+ send_event = true;
+ } else {
+ if (MCA_CloseReq((tMCA_DL)p_dcb->mdl_handle) == MCA_SUCCESS) {
+ p_dcb->dch_oper = BTA_HL_DCH_OP_LOCAL_CLOSE_RECONNECT;
+ } else {
+ APPL_TRACE_ERROR("Unabel to close DCH for reconnect cfg mismatch");
}
- else
- {
- evt_data.dch_open_ind.dch_mode = BTA_HL_DCH_MODE_STREAMING;
- }
- evt_data.dch_open_ind.first_reliable = p_dcb->is_the_first_reliable ;
+ }
+ break;
+ default:
+ break;
+ }
- old_dch_oper = p_dcb->dch_oper;
- p_dcb->dch_oper = BTA_HL_DCH_OP_NONE;
-
-
- }
-
- switch (old_dch_oper)
- {
- case BTA_HL_DCH_OP_REMOTE_OPEN:
-
- p_dcb->dch_mode = evt_data.dch_open_ind.dch_mode;
- if (p_dcb->local_mdep_id != BTA_HL_ECHO_TEST_MDEP_ID)
- {
- bta_hl_save_mdl_cfg(app_idx, mcl_idx,mdl_idx);
- event= BTA_HL_DCH_OPEN_IND_EVT;
- send_event= true;
- }
- else
- {
- p_dcb->echo_oper = BTA_HL_ECHO_OP_ECHO_PKT;
- }
-
- break;
-
- case BTA_HL_DCH_OP_REMOTE_RECONNECT:
-
- if (bta_hl_validate_chan_cfg(app_idx, mcl_idx, mdl_idx))
- {
- bta_hl_save_mdl_cfg(app_idx, mcl_idx,mdl_idx);
- event= BTA_HL_DCH_RECONNECT_IND_EVT;
- send_event= true;
- }
- else
- {
- if (MCA_CloseReq((tMCA_DL) p_dcb->mdl_handle) == MCA_SUCCESS)
- {
- p_dcb->dch_oper = BTA_HL_DCH_OP_LOCAL_CLOSE_RECONNECT;
- }
- else
- {
- APPL_TRACE_ERROR("Unabel to close DCH for reconnect cfg mismatch");
- }
- }
- break;
- default:
- break;
- }
-
- if (send_event)
- {
- p_acb->p_cback(event ,(tBTA_HL *) &evt_data );
- }
+ if (send_event) {
+ p_acb->p_cback(event, (tBTA_HL*)&evt_data);
+ }
}
/*******************************************************************************
@@ -980,117 +830,91 @@
*
******************************************************************************/
void bta_hl_dch_mca_open_cfm(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- tBTA_HL_DATA *p_data)
-{
- tBTA_HL_APP_CB *p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
- tBTA_HL_MCL_CB *p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
- tBTA_HL_MDL_CB *p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
- tMCA_DL_OPEN *p_open_cfm = &p_data->mca_evt.mca_data.open_cfm;
- tBTA_HL evt_data;
- tBTA_HL_EVT event;
- uint8_t old_dch_oper = BTA_HL_DCH_OP_NONE;
- tBTA_HL_DCH_MODE dch_mode = BTA_HL_DCH_MODE_STREAMING;
- bool send_event = false;
-
+ tBTA_HL_DATA* p_data) {
+ tBTA_HL_APP_CB* p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
+ tBTA_HL_MCL_CB* p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
+ tBTA_HL_MDL_CB* p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
+ tMCA_DL_OPEN* p_open_cfm = &p_data->mca_evt.mca_data.open_cfm;
+ tBTA_HL evt_data;
+ tBTA_HL_EVT event;
+ uint8_t old_dch_oper = BTA_HL_DCH_OP_NONE;
+ tBTA_HL_DCH_MODE dch_mode = BTA_HL_DCH_MODE_STREAMING;
+ bool send_event = false;
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hl_dch_mca_open_cfm");
+ APPL_TRACE_DEBUG("bta_hl_dch_mca_open_cfm");
#endif
- if ((p_dcb->dch_oper == BTA_HL_DCH_OP_LOCAL_OPEN) ||
- (p_dcb->dch_oper == BTA_HL_DCH_OP_LOCAL_RECONNECT))
- {
- p_dcb->mdl_handle = (tBTA_HL_MDL_HANDLE) p_open_cfm->mdl;
- p_dcb->mtu = p_open_cfm->mtu;
+ if ((p_dcb->dch_oper == BTA_HL_DCH_OP_LOCAL_OPEN) ||
+ (p_dcb->dch_oper == BTA_HL_DCH_OP_LOCAL_RECONNECT)) {
+ p_dcb->mdl_handle = (tBTA_HL_MDL_HANDLE)p_open_cfm->mdl;
+ p_dcb->mtu = p_open_cfm->mtu;
- /*todo verify dch_mode, mtu and fcs for reconnect */
- if ( p_dcb->chnl_cfg.fcr_opt.mode == L2CAP_FCR_ERTM_MODE )
- {
- dch_mode = BTA_HL_DCH_MODE_RELIABLE;
+ /*todo verify dch_mode, mtu and fcs for reconnect */
+ if (p_dcb->chnl_cfg.fcr_opt.mode == L2CAP_FCR_ERTM_MODE) {
+ dch_mode = BTA_HL_DCH_MODE_RELIABLE;
+ }
+
+ if (p_dcb->local_mdep_id != BTA_HL_ECHO_TEST_MDEP_ID) {
+ if (dch_mode == BTA_HL_DCH_MODE_RELIABLE) {
+ if (!bta_hl_is_the_first_reliable_existed(app_idx, mcl_idx)) {
+ p_dcb->is_the_first_reliable = true;
}
+ }
+ }
- if (p_dcb->local_mdep_id != BTA_HL_ECHO_TEST_MDEP_ID)
- {
- if (dch_mode == BTA_HL_DCH_MODE_RELIABLE )
- {
- if (!bta_hl_is_the_first_reliable_existed(app_idx, mcl_idx))
- {
- p_dcb->is_the_first_reliable = true;
- }
- }
+ bta_hl_build_dch_open_cfm(
+ &evt_data, p_acb->app_handle, p_mcb->mcl_handle, p_dcb->mdl_handle,
+ p_dcb->local_mdep_id, p_dcb->mdl_id, dch_mode,
+ p_dcb->is_the_first_reliable, p_dcb->mtu, BTA_HL_STATUS_OK);
+
+ old_dch_oper = p_dcb->dch_oper;
+ p_dcb->dch_oper = BTA_HL_DCH_OP_NONE;
+ } else {
+ APPL_TRACE_ERROR("Error dch oper =%d", p_dcb->dch_oper);
+ return;
+ }
+
+ switch (old_dch_oper) {
+ case BTA_HL_DCH_OP_LOCAL_OPEN:
+
+ p_dcb->dch_mode = dch_mode;
+ if (p_dcb->local_mdep_id != BTA_HL_ECHO_TEST_MDEP_ID) {
+ bta_hl_save_mdl_cfg(app_idx, mcl_idx, mdl_idx);
+ event = BTA_HL_DCH_OPEN_CFM_EVT;
+ send_event = true;
+ } else {
+ p_dcb->echo_oper = BTA_HL_ECHO_OP_LOOP_BACK;
+ if (MCA_WriteReq((tMCA_DL)p_dcb->mdl_handle, p_dcb->p_echo_tx_pkt) !=
+ MCA_SUCCESS) {
+ bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx,
+ BTA_HL_DCH_CLOSE_ECHO_TEST_EVT, p_data);
+ } else {
+ p_dcb->p_echo_tx_pkt = NULL;
}
+ }
+ break;
- bta_hl_build_dch_open_cfm(&evt_data, p_acb->app_handle,
- p_mcb->mcl_handle,
- p_dcb->mdl_handle,
- p_dcb->local_mdep_id,
- p_dcb->mdl_id, dch_mode,
- p_dcb->is_the_first_reliable,
- p_dcb->mtu,
- BTA_HL_STATUS_OK);
+ case BTA_HL_DCH_OP_LOCAL_RECONNECT:
- old_dch_oper = p_dcb->dch_oper;
- p_dcb->dch_oper = BTA_HL_DCH_OP_NONE;
- }
- else
- {
- APPL_TRACE_ERROR("Error dch oper =%d", p_dcb->dch_oper);
- return;
- }
+ if (bta_hl_validate_chan_cfg(app_idx, mcl_idx, mdl_idx)) {
+ bta_hl_save_mdl_cfg(app_idx, mcl_idx, mdl_idx);
+ event = BTA_HL_DCH_RECONNECT_CFM_EVT;
+ send_event = true;
+ } else {
+ if (MCA_CloseReq((tMCA_DL)p_dcb->mdl_handle) == MCA_SUCCESS) {
+ p_dcb->dch_oper = BTA_HL_DCH_OP_LOCAL_CLOSE_RECONNECT;
+ } else {
+ APPL_TRACE_ERROR("Unabel to close DCH for reconnect cfg mismatch");
+ }
+ }
+ break;
+ default:
+ break;
+ }
- switch (old_dch_oper)
- {
- case BTA_HL_DCH_OP_LOCAL_OPEN:
-
- p_dcb->dch_mode = dch_mode;
- if (p_dcb->local_mdep_id != BTA_HL_ECHO_TEST_MDEP_ID)
- {
- bta_hl_save_mdl_cfg(app_idx, mcl_idx, mdl_idx);
- event= BTA_HL_DCH_OPEN_CFM_EVT;
- send_event= true;
- }
- else
- {
- p_dcb->echo_oper = BTA_HL_ECHO_OP_LOOP_BACK;
- if (MCA_WriteReq((tMCA_DL) p_dcb->mdl_handle, p_dcb->p_echo_tx_pkt)!= MCA_SUCCESS)
- {
- bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_CLOSE_ECHO_TEST_EVT, p_data);
- }
- else
- {
- p_dcb->p_echo_tx_pkt = NULL;
- }
- }
- break;
-
- case BTA_HL_DCH_OP_LOCAL_RECONNECT:
-
- if (bta_hl_validate_chan_cfg(app_idx, mcl_idx, mdl_idx))
- {
- bta_hl_save_mdl_cfg(app_idx, mcl_idx,mdl_idx);
- event= BTA_HL_DCH_RECONNECT_CFM_EVT;
- send_event= true;
- }
- else
- {
- if (MCA_CloseReq((tMCA_DL) p_dcb->mdl_handle) == MCA_SUCCESS)
- {
- p_dcb->dch_oper = BTA_HL_DCH_OP_LOCAL_CLOSE_RECONNECT;
- }
- else
- {
- APPL_TRACE_ERROR("Unabel to close DCH for reconnect cfg mismatch");
- }
- }
- break;
- default:
- break;
- }
-
- if (send_event)
- p_acb->p_cback(event ,(tBTA_HL *) &evt_data );
+ if (send_event) p_acb->p_cback(event, (tBTA_HL*)&evt_data);
}
-
/*******************************************************************************
*
* Function bta_hl_dch_mca_abort_ind
@@ -1101,17 +925,16 @@
*
******************************************************************************/
void bta_hl_dch_mca_abort_ind(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- tBTA_HL_DATA *p_data)
-{
- tBTA_HL_MDL_CB *p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
-
+ tBTA_HL_DATA* p_data) {
+ tBTA_HL_MDL_CB* p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hl_dch_mca_abort_ind");
+ APPL_TRACE_DEBUG("bta_hl_dch_mca_abort_ind");
#endif
- p_dcb->abort_oper |= BTA_HL_ABORT_REMOTE_MASK;
- bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_CLOSE_CMPL_EVT, p_data);
+ p_dcb->abort_oper |= BTA_HL_ABORT_REMOTE_MASK;
+ bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_CLOSE_CMPL_EVT,
+ p_data);
}
/*******************************************************************************
@@ -1124,39 +947,30 @@
*
******************************************************************************/
void bta_hl_dch_mca_abort_cfm(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- tBTA_HL_DATA *p_data)
-{
- tBTA_HL_APP_CB *p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
- tBTA_HL_MCL_CB *p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
- tBTA_HL_MDL_CB *p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
- tBTA_HL evt_data;
+ tBTA_HL_DATA* p_data) {
+ tBTA_HL_APP_CB* p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
+ tBTA_HL_MCL_CB* p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
+ tBTA_HL_MDL_CB* p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
+ tBTA_HL evt_data;
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hl_dch_mca_abort_cfm");
+ APPL_TRACE_DEBUG("bta_hl_dch_mca_abort_cfm");
#endif
- if (p_dcb->abort_oper)
- {
- if (p_data->mca_evt.mca_data.abort_cfm.rsp_code != MCA_RSP_SUCCESS )
- {
- if (p_dcb->abort_oper & BTA_HL_ABORT_LOCAL_MASK)
- {
- bta_hl_build_abort_cfm(&evt_data,
- p_acb->app_handle,
- p_mcb->mcl_handle,
- BTA_HL_STATUS_FAIL);
- p_acb->p_cback(BTA_HL_DCH_ABORT_CFM_EVT ,(tBTA_HL *) &evt_data );
- }
- }
- else
- {
- bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_CLOSE_CMPL_EVT, p_data);
- }
+ if (p_dcb->abort_oper) {
+ if (p_data->mca_evt.mca_data.abort_cfm.rsp_code != MCA_RSP_SUCCESS) {
+ if (p_dcb->abort_oper & BTA_HL_ABORT_LOCAL_MASK) {
+ bta_hl_build_abort_cfm(&evt_data, p_acb->app_handle, p_mcb->mcl_handle,
+ BTA_HL_STATUS_FAIL);
+ p_acb->p_cback(BTA_HL_DCH_ABORT_CFM_EVT, (tBTA_HL*)&evt_data);
+ }
+ } else {
+ bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx,
+ BTA_HL_DCH_CLOSE_CMPL_EVT, p_data);
}
- else
- {
- APPL_TRACE_ERROR("Not expecting Abort CFM ");
- }
+ } else {
+ APPL_TRACE_ERROR("Not expecting Abort CFM ");
+ }
}
/*******************************************************************************
@@ -1169,55 +983,41 @@
*
******************************************************************************/
void bta_hl_dch_mca_abort(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- tBTA_HL_DATA *p_data)
-{
- tBTA_HL_APP_CB *p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
- tBTA_HL_MCL_CB *p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
- tBTA_HL_MDL_CB *p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
- tMCA_RESULT mca_result;
- tBTA_HL evt_data;
+ tBTA_HL_DATA* p_data) {
+ tBTA_HL_APP_CB* p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
+ tBTA_HL_MCL_CB* p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
+ tBTA_HL_MDL_CB* p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
+ tMCA_RESULT mca_result;
+ tBTA_HL evt_data;
- if (((p_mcb->sdp_oper == BTA_HL_SDP_OP_DCH_OPEN_INIT) ||
- (p_mcb->sdp_oper == BTA_HL_SDP_OP_DCH_RECONNECT_INIT)) &&
- (p_mcb->sdp_mdl_idx == mdl_idx) )
- {
- p_dcb->abort_oper |= BTA_HL_ABORT_PENDING_MASK;
- return;
+ if (((p_mcb->sdp_oper == BTA_HL_SDP_OP_DCH_OPEN_INIT) ||
+ (p_mcb->sdp_oper == BTA_HL_SDP_OP_DCH_RECONNECT_INIT)) &&
+ (p_mcb->sdp_mdl_idx == mdl_idx)) {
+ p_dcb->abort_oper |= BTA_HL_ABORT_PENDING_MASK;
+ return;
+ } else if (p_dcb->echo_oper == BTA_HL_ECHO_OP_CI_GET_ECHO_DATA) {
+ p_dcb->abort_oper |= BTA_HL_ABORT_PENDING_MASK;
+ return;
+ }
+
+ p_dcb->abort_oper &= ~BTA_HL_ABORT_PENDING_MASK;
+
+ if ((mca_result = MCA_Abort((tMCA_CL)p_mcb->mcl_handle)) != MCA_SUCCESS) {
+ if (mca_result == MCA_NO_RESOURCES) {
+ p_dcb->abort_oper |= BTA_HL_ABORT_PENDING_MASK;
+ } else {
+ if (p_dcb->abort_oper & BTA_HL_ABORT_LOCAL_MASK) {
+ bta_hl_build_abort_cfm(&evt_data, p_acb->app_handle, p_mcb->mcl_handle,
+ BTA_HL_STATUS_FAIL);
+ p_acb->p_cback(BTA_HL_DCH_ABORT_CFM_EVT, (tBTA_HL*)&evt_data);
+ }
+ bta_hl_check_cch_close(app_idx, mcl_idx, p_data, false);
}
- else if (p_dcb->echo_oper == BTA_HL_ECHO_OP_CI_GET_ECHO_DATA)
- {
- p_dcb->abort_oper |= BTA_HL_ABORT_PENDING_MASK;
- return;
- }
-
- p_dcb->abort_oper &= ~BTA_HL_ABORT_PENDING_MASK;
-
- if ((mca_result = MCA_Abort((tMCA_CL) p_mcb->mcl_handle))!= MCA_SUCCESS)
- {
- if (mca_result == MCA_NO_RESOURCES)
- {
- p_dcb->abort_oper |= BTA_HL_ABORT_PENDING_MASK;
- }
- else
- {
- if (p_dcb->abort_oper & BTA_HL_ABORT_LOCAL_MASK)
- {
- bta_hl_build_abort_cfm(&evt_data,
- p_acb->app_handle,
- p_mcb->mcl_handle,
- BTA_HL_STATUS_FAIL);
- p_acb->p_cback(BTA_HL_DCH_ABORT_CFM_EVT ,(tBTA_HL *) &evt_data );
- }
- bta_hl_check_cch_close(app_idx, mcl_idx, p_data, false);
- }
-
-
- }
+ }
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hl_dch_mca_abort abort_oper=0x%x", p_dcb->abort_oper);
+ APPL_TRACE_DEBUG("bta_hl_dch_mca_abort abort_oper=0x%x", p_dcb->abort_oper);
#endif
-
}
/*******************************************************************************
@@ -1229,69 +1029,60 @@
* Returns void
*
******************************************************************************/
-void bta_hl_dch_mca_reconnect_ind(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- tBTA_HL_DATA *p_data)
-{
- tBTA_HL_MCL_CB *p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
- tBTA_HL_MDL_CB *p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
- tBTA_HL_MDL_CFG *p_mdl_cfg;
- tMCA_EVT_HDR *p_reconnect_ind = &p_data->mca_evt.mca_data.reconnect_ind;
- uint8_t mdl_cfg_idx, in_use_mdl_idx, mdep_cfg_idx;
- uint8_t rsp_code = MCA_RSP_SUCCESS;
-
+void bta_hl_dch_mca_reconnect_ind(uint8_t app_idx, uint8_t mcl_idx,
+ uint8_t mdl_idx, tBTA_HL_DATA* p_data) {
+ tBTA_HL_MCL_CB* p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
+ tBTA_HL_MDL_CB* p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
+ tBTA_HL_MDL_CFG* p_mdl_cfg;
+ tMCA_EVT_HDR* p_reconnect_ind = &p_data->mca_evt.mca_data.reconnect_ind;
+ uint8_t mdl_cfg_idx, in_use_mdl_idx, mdep_cfg_idx;
+ uint8_t rsp_code = MCA_RSP_SUCCESS;
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hl_dch_mca_reconnect_ind mdl_id=%d", p_reconnect_ind->mdl_id);
+ APPL_TRACE_DEBUG("bta_hl_dch_mca_reconnect_ind mdl_id=%d",
+ p_reconnect_ind->mdl_id);
#endif
- if (bta_hl_find_mdl_cfg_idx(app_idx, mcl_idx, p_reconnect_ind->mdl_id, &mdl_cfg_idx))
- {
- if (!bta_hl_find_mdl_idx(app_idx,mcl_idx,p_reconnect_ind->mdl_id, &in_use_mdl_idx) )
- {
- p_mdl_cfg = BTA_HL_GET_MDL_CFG_PTR(app_idx, mdl_cfg_idx);
+ if (bta_hl_find_mdl_cfg_idx(app_idx, mcl_idx, p_reconnect_ind->mdl_id,
+ &mdl_cfg_idx)) {
+ if (!bta_hl_find_mdl_idx(app_idx, mcl_idx, p_reconnect_ind->mdl_id,
+ &in_use_mdl_idx)) {
+ p_mdl_cfg = BTA_HL_GET_MDL_CFG_PTR(app_idx, mdl_cfg_idx);
- if (bta_hl_find_mdep_cfg_idx(app_idx, p_mdl_cfg->local_mdep_id, &mdep_cfg_idx))
- {
- p_dcb->in_use = true;
- p_dcb->dch_oper = BTA_HL_DCH_OP_REMOTE_RECONNECT;
- p_dcb->sec_mask = (BTA_SEC_AUTHENTICATE | BTA_SEC_ENCRYPT);
- p_dcb->peer_mdep_id = 0xFF;
- p_dcb->local_mdep_id = p_mdl_cfg->local_mdep_id ;
- p_dcb->local_mdep_cfg_idx = mdep_cfg_idx;
- p_dcb->local_cfg = BTA_HL_DCH_CFG_UNKNOWN;
- p_dcb->mdl_id = p_reconnect_ind->mdl_id;
- p_dcb->mdl_cfg_idx_included = true;
- p_dcb->mdl_cfg_idx = mdl_cfg_idx;
- p_dcb->dch_mode = p_mdl_cfg->dch_mode;
- bta_hl_find_rxtx_apdu_size(app_idx, mdep_cfg_idx,
- &p_dcb->max_rx_apdu_size,
- &p_dcb->max_tx_apdu_size);
- bta_hl_set_dch_chan_cfg(app_idx, mcl_idx, mdl_idx, p_data);
- }
- else
- {
- rsp_code = MCA_RSP_BAD_MDL;
- }
- }
- else
- {
- rsp_code = MCA_RSP_BAD_MDL;
- }
- }
- else
- {
+ if (bta_hl_find_mdep_cfg_idx(app_idx, p_mdl_cfg->local_mdep_id,
+ &mdep_cfg_idx)) {
+ p_dcb->in_use = true;
+ p_dcb->dch_oper = BTA_HL_DCH_OP_REMOTE_RECONNECT;
+ p_dcb->sec_mask = (BTA_SEC_AUTHENTICATE | BTA_SEC_ENCRYPT);
+ p_dcb->peer_mdep_id = 0xFF;
+ p_dcb->local_mdep_id = p_mdl_cfg->local_mdep_id;
+ p_dcb->local_mdep_cfg_idx = mdep_cfg_idx;
+ p_dcb->local_cfg = BTA_HL_DCH_CFG_UNKNOWN;
+ p_dcb->mdl_id = p_reconnect_ind->mdl_id;
+ p_dcb->mdl_cfg_idx_included = true;
+ p_dcb->mdl_cfg_idx = mdl_cfg_idx;
+ p_dcb->dch_mode = p_mdl_cfg->dch_mode;
+ bta_hl_find_rxtx_apdu_size(app_idx, mdep_cfg_idx,
+ &p_dcb->max_rx_apdu_size,
+ &p_dcb->max_tx_apdu_size);
+ bta_hl_set_dch_chan_cfg(app_idx, mcl_idx, mdl_idx, p_data);
+ } else {
rsp_code = MCA_RSP_BAD_MDL;
+ }
+ } else {
+ rsp_code = MCA_RSP_BAD_MDL;
}
+ } else {
+ rsp_code = MCA_RSP_BAD_MDL;
+ }
- if (MCA_ReconnectMdlRsp((tMCA_CL) p_mcb->mcl_handle,
- p_dcb->local_mdep_id,
- p_dcb->mdl_id,
- rsp_code,
- &p_dcb->chnl_cfg)!= MCA_SUCCESS)
- {
- MCA_Abort((tMCA_CL) p_mcb->mcl_handle);
- bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_CLOSE_CMPL_EVT, p_data);
- }
+ if (MCA_ReconnectMdlRsp((tMCA_CL)p_mcb->mcl_handle, p_dcb->local_mdep_id,
+ p_dcb->mdl_id, rsp_code,
+ &p_dcb->chnl_cfg) != MCA_SUCCESS) {
+ MCA_Abort((tMCA_CL)p_mcb->mcl_handle);
+ bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_CLOSE_CMPL_EVT,
+ p_data);
+ }
}
/*******************************************************************************
@@ -1303,44 +1094,38 @@
* Returns void
*
******************************************************************************/
-void bta_hl_dch_mca_reconnect_cfm(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- tBTA_HL_DATA *p_data)
-{
- tBTA_HL_MCL_CB *p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
- tBTA_HL_MDL_CB *p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
- tMCA_RSP_EVT *p_reconnect_cfm = &p_data->mca_evt.mca_data.reconnect_cfm;
-
+void bta_hl_dch_mca_reconnect_cfm(uint8_t app_idx, uint8_t mcl_idx,
+ uint8_t mdl_idx, tBTA_HL_DATA* p_data) {
+ tBTA_HL_MCL_CB* p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
+ tBTA_HL_MDL_CB* p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
+ tMCA_RSP_EVT* p_reconnect_cfm = &p_data->mca_evt.mca_data.reconnect_cfm;
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hl_dch_mca_reconnect_cfm");
+ APPL_TRACE_DEBUG("bta_hl_dch_mca_reconnect_cfm");
#endif
- if (p_dcb->abort_oper & BTA_HL_ABORT_PENDING_MASK)
- {
- p_dcb->abort_oper &= ~BTA_HL_ABORT_PENDING_MASK;
- bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_ABORT_EVT, p_data);
- return;
+ if (p_dcb->abort_oper & BTA_HL_ABORT_PENDING_MASK) {
+ p_dcb->abort_oper &= ~BTA_HL_ABORT_PENDING_MASK;
+ bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_ABORT_EVT,
+ p_data);
+ return;
+ }
+
+ if (p_dcb->dch_oper == BTA_HL_DCH_OP_LOCAL_RECONNECT) {
+ if (p_reconnect_cfm->rsp_code == MCA_RSP_SUCCESS) {
+ bta_hl_set_dch_chan_cfg(app_idx, mcl_idx, mdl_idx, p_data);
+
+ if (MCA_DataChnlCfg((tMCA_CL)p_mcb->mcl_handle, &p_dcb->chnl_cfg) !=
+ MCA_SUCCESS) {
+ /* should be able to abort so no checking of the return code */
+ MCA_Abort((tMCA_CL)p_mcb->mcl_handle);
+ bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx,
+ BTA_HL_DCH_CLOSE_CMPL_EVT, p_data);
+ }
+ } else {
+ bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx,
+ BTA_HL_DCH_CLOSE_CMPL_EVT, p_data);
}
-
-
- if (p_dcb->dch_oper == BTA_HL_DCH_OP_LOCAL_RECONNECT)
- {
- if (p_reconnect_cfm->rsp_code == MCA_RSP_SUCCESS)
- {
-
- bta_hl_set_dch_chan_cfg(app_idx, mcl_idx, mdl_idx, p_data);
-
- if (MCA_DataChnlCfg((tMCA_CL) p_mcb->mcl_handle, &p_dcb->chnl_cfg)!= MCA_SUCCESS)
- {
- /* should be able to abort so no checking of the return code */
- MCA_Abort((tMCA_CL) p_mcb->mcl_handle);
- bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_CLOSE_CMPL_EVT, p_data);
- }
- }
- else
- {
- bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_CLOSE_CMPL_EVT, p_data);
- }
- }
+ }
}
/*******************************************************************************
@@ -1353,35 +1138,30 @@
*
******************************************************************************/
void bta_hl_dch_mca_reconnect(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- tBTA_HL_DATA *p_data)
-{
- tBTA_HL_MCL_CB *p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
- tBTA_HL_MDL_CB *p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
- tMCA_CHNL_CFG *p_chnl_cfg=NULL;
- uint8_t sdp_idx;
+ tBTA_HL_DATA* p_data) {
+ tBTA_HL_MCL_CB* p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
+ tBTA_HL_MDL_CB* p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
+ tMCA_CHNL_CFG* p_chnl_cfg = NULL;
+ uint8_t sdp_idx;
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hl_dch_mca_reconnect");
+ APPL_TRACE_DEBUG("bta_hl_dch_mca_reconnect");
#endif
- if (bta_hl_find_sdp_idx_using_ctrl_psm(&p_mcb->sdp, p_mcb->ctrl_psm, &sdp_idx))
- {
- p_mcb->data_psm = p_mcb->sdp.sdp_rec[sdp_idx].data_psm;
- if ( MCA_ReconnectMdl((tMCA_CL) p_mcb->mcl_handle,
- p_dcb->local_mdep_id,
- p_mcb->data_psm,
- p_dcb->mdl_id,
- p_chnl_cfg ) != MCA_SUCCESS)
- {
- bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_CLOSE_CMPL_EVT, p_data);
- }
+ if (bta_hl_find_sdp_idx_using_ctrl_psm(&p_mcb->sdp, p_mcb->ctrl_psm,
+ &sdp_idx)) {
+ p_mcb->data_psm = p_mcb->sdp.sdp_rec[sdp_idx].data_psm;
+ if (MCA_ReconnectMdl((tMCA_CL)p_mcb->mcl_handle, p_dcb->local_mdep_id,
+ p_mcb->data_psm, p_dcb->mdl_id,
+ p_chnl_cfg) != MCA_SUCCESS) {
+ bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx,
+ BTA_HL_DCH_CLOSE_CMPL_EVT, p_data);
}
- else
- {
- bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_CLOSE_CMPL_EVT, p_data);
- }
+ } else {
+ bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_CLOSE_CMPL_EVT,
+ p_data);
+ }
}
-
/*******************************************************************************
*
* Function bta_hl_dch_create_rsp
@@ -1392,39 +1172,30 @@
*
******************************************************************************/
void bta_hl_dch_create_rsp(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- tBTA_HL_DATA *p_data)
-{
- tBTA_HL_MCL_CB *p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
- tBTA_HL_MDL_CB *p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
- tBTA_HL_API_DCH_CREATE_RSP *p_create_rsp = &p_data->api_dch_create_rsp;
- uint8_t mca_rsp_code = MCA_RSP_SUCCESS;
+ tBTA_HL_DATA* p_data) {
+ tBTA_HL_MCL_CB* p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
+ tBTA_HL_MDL_CB* p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
+ tBTA_HL_API_DCH_CREATE_RSP* p_create_rsp = &p_data->api_dch_create_rsp;
+ uint8_t mca_rsp_code = MCA_RSP_SUCCESS;
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hl_dch_create_rsp");
+ APPL_TRACE_DEBUG("bta_hl_dch_create_rsp");
#endif
- if (p_create_rsp->rsp_code == BTA_HL_DCH_CREATE_RSP_SUCCESS)
- {
- p_dcb->dch_oper = BTA_HL_DCH_OP_REMOTE_OPEN;
- p_dcb->local_cfg = p_create_rsp->cfg_rsp;
+ if (p_create_rsp->rsp_code == BTA_HL_DCH_CREATE_RSP_SUCCESS) {
+ p_dcb->dch_oper = BTA_HL_DCH_OP_REMOTE_OPEN;
+ p_dcb->local_cfg = p_create_rsp->cfg_rsp;
+ bta_hl_set_dch_chan_cfg(app_idx, mcl_idx, mdl_idx, p_data);
+ } else {
+ mca_rsp_code = MCA_RSP_CFG_REJ;
+ }
-
- bta_hl_set_dch_chan_cfg(app_idx, mcl_idx, mdl_idx, p_data);
- }
- else
- {
- mca_rsp_code = MCA_RSP_CFG_REJ;
- }
-
- if (MCA_CreateMdlRsp((tMCA_CL) p_mcb->mcl_handle,
- p_dcb->local_mdep_id,
- p_dcb->mdl_id,
- p_dcb->local_cfg,
- mca_rsp_code,
- &p_dcb->chnl_cfg)!= MCA_SUCCESS)
- {
- bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_CLOSE_CMPL_EVT, p_data);
- }
+ if (MCA_CreateMdlRsp((tMCA_CL)p_mcb->mcl_handle, p_dcb->local_mdep_id,
+ p_dcb->mdl_id, p_dcb->local_cfg, mca_rsp_code,
+ &p_dcb->chnl_cfg) != MCA_SUCCESS) {
+ bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_CLOSE_CMPL_EVT,
+ p_data);
+ }
}
/*******************************************************************************
@@ -1436,101 +1207,84 @@
* Returns void
*
******************************************************************************/
-void bta_hl_dch_mca_create_ind(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- tBTA_HL_DATA *p_data)
-{
- tBTA_HL_APP_CB *p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
- tBTA_HL_MCL_CB *p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
- tBTA_HL_MDL_CB *p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
- tMCA_CREATE_IND *p_create_ind = &p_data->mca_evt.mca_data.create_ind;
- uint8_t mdep_cfg_idx;
- uint8_t cfg_rsp;
- uint8_t rsp_code = MCA_RSP_SUCCESS;
- bool send_create_ind_evt = false;
- tBTA_HL evt_data;
- tBTA_HL_ECHO_CFG *p_echo_cfg;
+void bta_hl_dch_mca_create_ind(uint8_t app_idx, uint8_t mcl_idx,
+ uint8_t mdl_idx, tBTA_HL_DATA* p_data) {
+ tBTA_HL_APP_CB* p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
+ tBTA_HL_MCL_CB* p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
+ tBTA_HL_MDL_CB* p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
+ tMCA_CREATE_IND* p_create_ind = &p_data->mca_evt.mca_data.create_ind;
+ uint8_t mdep_cfg_idx;
+ uint8_t cfg_rsp;
+ uint8_t rsp_code = MCA_RSP_SUCCESS;
+ bool send_create_ind_evt = false;
+ tBTA_HL evt_data;
+ tBTA_HL_ECHO_CFG* p_echo_cfg;
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hl_dch_mca_create_ind");
+ APPL_TRACE_DEBUG("bta_hl_dch_mca_create_ind");
#endif
- if (bta_hl_find_mdep_cfg_idx(app_idx, p_create_ind->dep_id, &mdep_cfg_idx))
- {
- if (p_create_ind->dep_id == BTA_HL_ECHO_TEST_MDEP_ID )
- {
- if (bta_hl_find_echo_cfg_rsp(app_idx, mcl_idx, mdep_cfg_idx,p_create_ind->cfg, &cfg_rsp ))
- {
- p_dcb->in_use = true;
- p_dcb->dch_oper = BTA_HL_DCH_OP_REMOTE_OPEN;
- p_dcb->local_mdep_id = p_create_ind->dep_id ;
- p_dcb->local_mdep_cfg_idx = mdep_cfg_idx;
- p_dcb->local_cfg = cfg_rsp;
- p_dcb->remote_cfg = p_create_ind->cfg ;
- p_dcb->mdl_id = p_create_ind->mdl_id;
- p_dcb->mdl_cfg_idx_included = false;
- p_echo_cfg = BTA_HL_GET_ECHO_CFG_PTR(app_idx);
- p_dcb->max_rx_apdu_size = p_echo_cfg->max_rx_apdu_size;
- p_dcb->max_tx_apdu_size = p_echo_cfg->max_tx_apdu_size;
+ if (bta_hl_find_mdep_cfg_idx(app_idx, p_create_ind->dep_id, &mdep_cfg_idx)) {
+ if (p_create_ind->dep_id == BTA_HL_ECHO_TEST_MDEP_ID) {
+ if (bta_hl_find_echo_cfg_rsp(app_idx, mcl_idx, mdep_cfg_idx,
+ p_create_ind->cfg, &cfg_rsp)) {
+ p_dcb->in_use = true;
+ p_dcb->dch_oper = BTA_HL_DCH_OP_REMOTE_OPEN;
+ p_dcb->local_mdep_id = p_create_ind->dep_id;
+ p_dcb->local_mdep_cfg_idx = mdep_cfg_idx;
+ p_dcb->local_cfg = cfg_rsp;
+ p_dcb->remote_cfg = p_create_ind->cfg;
+ p_dcb->mdl_id = p_create_ind->mdl_id;
+ p_dcb->mdl_cfg_idx_included = false;
+ p_echo_cfg = BTA_HL_GET_ECHO_CFG_PTR(app_idx);
+ p_dcb->max_rx_apdu_size = p_echo_cfg->max_rx_apdu_size;
+ p_dcb->max_tx_apdu_size = p_echo_cfg->max_tx_apdu_size;
- bta_hl_set_dch_chan_cfg(app_idx, mcl_idx, mdl_idx, p_data);
- }
- else
- {
- rsp_code = MCA_RSP_CFG_REJ;
- }
- }
- else
+ bta_hl_set_dch_chan_cfg(app_idx, mcl_idx, mdl_idx, p_data);
+ } else {
+ rsp_code = MCA_RSP_CFG_REJ;
+ }
+ } else
- {
- p_dcb->in_use = true;
- p_dcb->dch_oper = BTA_HL_DCH_OP_REMOTE_CREATE;
- p_dcb->local_mdep_id = p_create_ind->dep_id ;
- p_dcb->local_mdep_cfg_idx = mdep_cfg_idx;
- p_dcb->local_cfg = BTA_HL_DCH_CFG_UNKNOWN;
- p_dcb->remote_cfg = p_create_ind->cfg;
- p_dcb->mdl_id = p_create_ind->mdl_id;
- p_dcb->mdl_cfg_idx_included = false;
- bta_hl_find_rxtx_apdu_size(app_idx, mdep_cfg_idx,
- &p_dcb->max_rx_apdu_size,
- &p_dcb->max_tx_apdu_size);
- send_create_ind_evt = true;
- }
- }
- else
{
- rsp_code = MCA_RSP_BAD_MDEP;
+ p_dcb->in_use = true;
+ p_dcb->dch_oper = BTA_HL_DCH_OP_REMOTE_CREATE;
+ p_dcb->local_mdep_id = p_create_ind->dep_id;
+ p_dcb->local_mdep_cfg_idx = mdep_cfg_idx;
+ p_dcb->local_cfg = BTA_HL_DCH_CFG_UNKNOWN;
+ p_dcb->remote_cfg = p_create_ind->cfg;
+ p_dcb->mdl_id = p_create_ind->mdl_id;
+ p_dcb->mdl_cfg_idx_included = false;
+ bta_hl_find_rxtx_apdu_size(app_idx, mdep_cfg_idx,
+ &p_dcb->max_rx_apdu_size,
+ &p_dcb->max_tx_apdu_size);
+ send_create_ind_evt = true;
}
+ } else {
+ rsp_code = MCA_RSP_BAD_MDEP;
+ }
- if (send_create_ind_evt)
- {
- evt_data.dch_create_ind.mcl_handle = p_mcb->mcl_handle;
- evt_data.dch_create_ind.app_handle = p_acb->app_handle;
- evt_data.dch_create_ind.local_mdep_id = p_dcb->local_mdep_id;
- evt_data.dch_create_ind.mdl_id = p_dcb->mdl_id;
- evt_data.dch_create_ind.cfg = p_dcb->remote_cfg;
- bdcpy(evt_data.dch_create_ind.bd_addr, p_mcb->bd_addr);
- p_acb->p_cback(BTA_HL_DCH_CREATE_IND_EVT,(tBTA_HL *) &evt_data );
+ if (send_create_ind_evt) {
+ evt_data.dch_create_ind.mcl_handle = p_mcb->mcl_handle;
+ evt_data.dch_create_ind.app_handle = p_acb->app_handle;
+ evt_data.dch_create_ind.local_mdep_id = p_dcb->local_mdep_id;
+ evt_data.dch_create_ind.mdl_id = p_dcb->mdl_id;
+ evt_data.dch_create_ind.cfg = p_dcb->remote_cfg;
+ bdcpy(evt_data.dch_create_ind.bd_addr, p_mcb->bd_addr);
+ p_acb->p_cback(BTA_HL_DCH_CREATE_IND_EVT, (tBTA_HL*)&evt_data);
+ } else {
+ if (MCA_CreateMdlRsp((tMCA_CL)p_mcb->mcl_handle, p_dcb->local_mdep_id,
+ p_dcb->mdl_id, p_dcb->local_cfg, rsp_code,
+ &p_dcb->chnl_cfg) != MCA_SUCCESS) {
+ bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx,
+ BTA_HL_DCH_CLOSE_CMPL_EVT, p_data);
+ } else {
+ if (p_dcb->local_mdep_id == BTA_HL_ECHO_TEST_MDEP_ID) {
+ p_mcb->echo_test = true;
+ p_dcb->echo_oper = BTA_HL_ECHO_OP_OPEN_IND;
+ }
}
- else
- {
- if (MCA_CreateMdlRsp((tMCA_CL) p_mcb->mcl_handle,
- p_dcb->local_mdep_id,
- p_dcb->mdl_id,
- p_dcb->local_cfg,
- rsp_code,
- &p_dcb->chnl_cfg)!= MCA_SUCCESS)
- {
- bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_CLOSE_CMPL_EVT, p_data);
- }
- else
- {
- if (p_dcb->local_mdep_id == BTA_HL_ECHO_TEST_MDEP_ID)
- {
- p_mcb->echo_test = true;
- p_dcb->echo_oper = BTA_HL_ECHO_OP_OPEN_IND;
- }
- }
- }
+ }
}
/*******************************************************************************
@@ -1542,59 +1296,51 @@
* Returns void
*
******************************************************************************/
-void bta_hl_dch_mca_create_cfm(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- tBTA_HL_DATA *p_data)
-{
- tBTA_HL_MCL_CB *p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
- tBTA_HL_MDL_CB *p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
- tMCA_CREATE_CFM *p_create_cfm = &p_data->mca_evt.mca_data.create_cfm;
+void bta_hl_dch_mca_create_cfm(uint8_t app_idx, uint8_t mcl_idx,
+ uint8_t mdl_idx, tBTA_HL_DATA* p_data) {
+ tBTA_HL_MCL_CB* p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
+ tBTA_HL_MDL_CB* p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
+ tMCA_CREATE_CFM* p_create_cfm = &p_data->mca_evt.mca_data.create_cfm;
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hl_dch_mca_create_cfm");
+ APPL_TRACE_DEBUG("bta_hl_dch_mca_create_cfm");
#endif
- if (p_dcb->abort_oper & BTA_HL_ABORT_PENDING_MASK)
- {
- p_dcb->abort_oper &= ~BTA_HL_ABORT_PENDING_MASK;
- bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_ABORT_EVT, p_data);
- return;
- }
+ if (p_dcb->abort_oper & BTA_HL_ABORT_PENDING_MASK) {
+ p_dcb->abort_oper &= ~BTA_HL_ABORT_PENDING_MASK;
+ bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_ABORT_EVT,
+ p_data);
+ return;
+ }
- if (p_dcb->dch_oper == BTA_HL_DCH_OP_LOCAL_OPEN)
- {
- if (p_create_cfm->rsp_code == MCA_RSP_SUCCESS)
- {
- if (bta_hl_validate_cfg(app_idx, mcl_idx, mdl_idx, p_create_cfm->cfg ))
- {
- bta_hl_set_dch_chan_cfg(app_idx, mcl_idx, mdl_idx, p_data);
+ if (p_dcb->dch_oper == BTA_HL_DCH_OP_LOCAL_OPEN) {
+ if (p_create_cfm->rsp_code == MCA_RSP_SUCCESS) {
+ if (bta_hl_validate_cfg(app_idx, mcl_idx, mdl_idx, p_create_cfm->cfg)) {
+ bta_hl_set_dch_chan_cfg(app_idx, mcl_idx, mdl_idx, p_data);
- if (MCA_DataChnlCfg((tMCA_CL) p_mcb->mcl_handle, &p_dcb->chnl_cfg)!= MCA_SUCCESS)
- {
- /* this should not happen */
- APPL_TRACE_ERROR("Unable to create data channel");
- MCA_Abort((tMCA_CL) p_mcb->mcl_handle);
- bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_CLOSE_CMPL_EVT, p_data);
- }
- else
- {
- if (p_dcb->local_mdep_id == BTA_HL_ECHO_TEST_MDEP_ID)
- {
- p_dcb->echo_oper = BTA_HL_ECHO_OP_DCH_OPEN_CFM;
- }
- }
- }
- else
- {
- MCA_Abort((tMCA_CL) p_mcb->mcl_handle);
- bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_CLOSE_CMPL_EVT, p_data);
- }
+ if (MCA_DataChnlCfg((tMCA_CL)p_mcb->mcl_handle, &p_dcb->chnl_cfg) !=
+ MCA_SUCCESS) {
+ /* this should not happen */
+ APPL_TRACE_ERROR("Unable to create data channel");
+ MCA_Abort((tMCA_CL)p_mcb->mcl_handle);
+ bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx,
+ BTA_HL_DCH_CLOSE_CMPL_EVT, p_data);
+ } else {
+ if (p_dcb->local_mdep_id == BTA_HL_ECHO_TEST_MDEP_ID) {
+ p_dcb->echo_oper = BTA_HL_ECHO_OP_DCH_OPEN_CFM;
+ }
}
- else
- {
- APPL_TRACE_ERROR("MCA Create- failed");
- bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_CLOSE_CMPL_EVT, p_data);
- }
+ } else {
+ MCA_Abort((tMCA_CL)p_mcb->mcl_handle);
+ bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx,
+ BTA_HL_DCH_CLOSE_CMPL_EVT, p_data);
+ }
+ } else {
+ APPL_TRACE_ERROR("MCA Create- failed");
+ bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx,
+ BTA_HL_DCH_CLOSE_CMPL_EVT, p_data);
}
+ }
}
/*******************************************************************************
@@ -1607,42 +1353,34 @@
*
******************************************************************************/
void bta_hl_dch_mca_create(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- tBTA_HL_DATA *p_data)
-{
- tBTA_HL_MCL_CB *p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
- tBTA_HL_MDL_CB *p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
- tMCA_RESULT result;
- uint8_t sdp_idx;
+ tBTA_HL_DATA* p_data) {
+ tBTA_HL_MCL_CB* p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
+ tBTA_HL_MDL_CB* p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
+ tMCA_RESULT result;
+ uint8_t sdp_idx;
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hl_dch_mca_create");
+ APPL_TRACE_DEBUG("bta_hl_dch_mca_create");
#endif
- if (bta_hl_find_sdp_idx_using_ctrl_psm(&p_mcb->sdp, p_mcb->ctrl_psm, &sdp_idx) &&
- bta_hl_validate_peer_cfg(app_idx, mcl_idx, mdl_idx,
- p_dcb->peer_mdep_id,
- p_dcb->peer_mdep_role,
- sdp_idx))
- {
-
- p_mcb->data_psm = p_mcb->sdp.sdp_rec[sdp_idx].data_psm;
- if ( (result = MCA_CreateMdl((tMCA_CL) p_mcb->mcl_handle,
- p_dcb->local_mdep_id,
- p_mcb->data_psm,
- p_dcb->mdl_id,
- p_dcb->peer_mdep_id,
- p_dcb->local_cfg,
- NULL )) != MCA_SUCCESS)
- {
- APPL_TRACE_ERROR("MCA_CreateMdl FAIL mca_result=%d", result);
- bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_CLOSE_CMPL_EVT, p_data);
- }
+ if (bta_hl_find_sdp_idx_using_ctrl_psm(&p_mcb->sdp, p_mcb->ctrl_psm,
+ &sdp_idx) &&
+ bta_hl_validate_peer_cfg(app_idx, mcl_idx, mdl_idx, p_dcb->peer_mdep_id,
+ p_dcb->peer_mdep_role, sdp_idx)) {
+ p_mcb->data_psm = p_mcb->sdp.sdp_rec[sdp_idx].data_psm;
+ if ((result =
+ MCA_CreateMdl((tMCA_CL)p_mcb->mcl_handle, p_dcb->local_mdep_id,
+ p_mcb->data_psm, p_dcb->mdl_id, p_dcb->peer_mdep_id,
+ p_dcb->local_cfg, NULL)) != MCA_SUCCESS) {
+ APPL_TRACE_ERROR("MCA_CreateMdl FAIL mca_result=%d", result);
+ bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx,
+ BTA_HL_DCH_CLOSE_CMPL_EVT, p_data);
}
- else
- {
- APPL_TRACE_ERROR("MCA Create- SDP idx or peer MDEP cfg not found");
- bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_CLOSE_CMPL_EVT, p_data);
- }
+ } else {
+ APPL_TRACE_ERROR("MCA Create- SDP idx or peer MDEP cfg not found");
+ bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_CLOSE_CMPL_EVT,
+ p_data);
+ }
}
/*******************************************************************************
@@ -1655,13 +1393,12 @@
*
******************************************************************************/
void bta_hl_dch_sdp_fail(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- tBTA_HL_DATA *p_data)
-{
-
+ tBTA_HL_DATA* p_data) {
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hl_dch_sdp_fail");
+ APPL_TRACE_DEBUG("bta_hl_dch_sdp_fail");
#endif
- bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_CLOSE_CMPL_EVT, p_data);
+ bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_CLOSE_CMPL_EVT,
+ p_data);
}
/******************************************************************************
@@ -1679,254 +1416,236 @@
*
*****************************************************************************/
static void bta_hl_sdp_cback(uint8_t sdp_oper, uint8_t app_idx, uint8_t mcl_idx,
- uint8_t mdl_idx, uint16_t status)
-{
- tBTA_HL_MCL_CB *p_cb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
- tBTA_HL_SDP_REC *p_hdp_rec;
- tBTA_HL_CCH_SDP *p_cch_buf;
- tBTA_HL_DCH_SDP *p_dch_buf;
- tSDP_DISC_REC *p_rec = NULL;
- tSDP_PROTOCOL_ELEM pe;
- tSDP_DISC_ATTR *p_attr;
- uint8_t i, rec_cnt;
- tBTA_HL_SUP_FEATURE_LIST_ELEM sup_feature;
- bool sdp_parsing_ok =false, result=false;
- uint16_t event;
- tBTA_HL_MDL_CB *p_dcb;
- uint16_t service_uuid;
- uint16_t name_len;
+ uint8_t mdl_idx, uint16_t status) {
+ tBTA_HL_MCL_CB* p_cb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
+ tBTA_HL_SDP_REC* p_hdp_rec;
+ tBTA_HL_CCH_SDP* p_cch_buf;
+ tBTA_HL_DCH_SDP* p_dch_buf;
+ tSDP_DISC_REC* p_rec = NULL;
+ tSDP_PROTOCOL_ELEM pe;
+ tSDP_DISC_ATTR* p_attr;
+ uint8_t i, rec_cnt;
+ tBTA_HL_SUP_FEATURE_LIST_ELEM sup_feature;
+ bool sdp_parsing_ok = false, result = false;
+ uint16_t event;
+ tBTA_HL_MDL_CB* p_dcb;
+ uint16_t service_uuid;
+ uint16_t name_len;
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hl_sdp_cback status:%d sdp_oper=%d app_idx=%d, mcl_idx=%d, mdl_idx=%d",
- status, sdp_oper, app_idx, mcl_idx, mdl_idx);
+ APPL_TRACE_DEBUG(
+ "bta_hl_sdp_cback status:%d sdp_oper=%d app_idx=%d, mcl_idx=%d, "
+ "mdl_idx=%d",
+ status, sdp_oper, app_idx, mcl_idx, mdl_idx);
#endif
- rec_cnt = 0;
- service_uuid = bta_hl_get_service_uuids(sdp_oper, app_idx, mcl_idx, mdl_idx);
+ rec_cnt = 0;
+ service_uuid = bta_hl_get_service_uuids(sdp_oper, app_idx, mcl_idx, mdl_idx);
- if (status == SDP_SUCCESS || status == SDP_DB_FULL)
- {
- memset(&p_cb->sdp,0, sizeof(tBTA_HL_SDP));
- do
- {
- if (bta_hl_find_service_in_db(app_idx, mcl_idx, service_uuid, &p_rec))
- {
- p_hdp_rec = &p_cb->sdp.sdp_rec[rec_cnt];
- p_cb->sdp.num_recs = rec_cnt+1;
- }
- else
- {
- break;
- }
+ if (status == SDP_SUCCESS || status == SDP_DB_FULL) {
+ memset(&p_cb->sdp, 0, sizeof(tBTA_HL_SDP));
+ do {
+ if (bta_hl_find_service_in_db(app_idx, mcl_idx, service_uuid, &p_rec)) {
+ p_hdp_rec = &p_cb->sdp.sdp_rec[rec_cnt];
+ p_cb->sdp.num_recs = rec_cnt + 1;
+ } else {
+ break;
+ }
- if (SDP_FindProtocolListElemInRec(p_rec, UUID_PROTOCOL_L2CAP, &pe))
- {
- p_hdp_rec->ctrl_psm = (uint16_t) pe.params[0];
- }
- else
- {
- APPL_TRACE_WARNING("Control PSM not found");
- break;
- }
- if (SDP_FindAddProtoListsElemInRec(p_rec, UUID_PROTOCOL_L2CAP, &pe))
- {
- p_hdp_rec->data_psm = (uint16_t) pe.params[0];
- }
- else
- {
- APPL_TRACE_WARNING("Data PSM not found");
- break;
- }
+ if (SDP_FindProtocolListElemInRec(p_rec, UUID_PROTOCOL_L2CAP, &pe)) {
+ p_hdp_rec->ctrl_psm = (uint16_t)pe.params[0];
+ } else {
+ APPL_TRACE_WARNING("Control PSM not found");
+ break;
+ }
+ if (SDP_FindAddProtoListsElemInRec(p_rec, UUID_PROTOCOL_L2CAP, &pe)) {
+ p_hdp_rec->data_psm = (uint16_t)pe.params[0];
+ } else {
+ APPL_TRACE_WARNING("Data PSM not found");
+ break;
+ }
- p_hdp_rec->srv_name[0]= '\0';
- if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_SERVICE_NAME)) != NULL)
- {
- if (SDP_DISC_ATTR_LEN(p_attr->attr_len_type) < BT_MAX_SERVICE_NAME_LEN)
- name_len = (uint16_t)SDP_DISC_ATTR_LEN(p_attr->attr_len_type);
- else
- name_len = BT_MAX_SERVICE_NAME_LEN;
- memcpy(p_hdp_rec->srv_name, p_attr->attr_value.v.array, name_len);
- }
+ p_hdp_rec->srv_name[0] = '\0';
+ if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_SERVICE_NAME)) !=
+ NULL) {
+ if (SDP_DISC_ATTR_LEN(p_attr->attr_len_type) < BT_MAX_SERVICE_NAME_LEN)
+ name_len = (uint16_t)SDP_DISC_ATTR_LEN(p_attr->attr_len_type);
+ else
+ name_len = BT_MAX_SERVICE_NAME_LEN;
+ memcpy(p_hdp_rec->srv_name, p_attr->attr_value.v.array, name_len);
+ }
- p_hdp_rec->srv_desp[0]= '\0';
- if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_SERVICE_DESCRIPTION)) != NULL)
- {
- if (SDP_DISC_ATTR_LEN(p_attr->attr_len_type) < BT_MAX_SERVICE_NAME_LEN)
- name_len = (uint16_t)SDP_DISC_ATTR_LEN(p_attr->attr_len_type);
- else
- name_len = BT_MAX_SERVICE_NAME_LEN;
- memcpy(p_hdp_rec->srv_desp, p_attr->attr_value.v.array, name_len);
- }
+ p_hdp_rec->srv_desp[0] = '\0';
+ if ((p_attr = SDP_FindAttributeInRec(
+ p_rec, ATTR_ID_SERVICE_DESCRIPTION)) != NULL) {
+ if (SDP_DISC_ATTR_LEN(p_attr->attr_len_type) < BT_MAX_SERVICE_NAME_LEN)
+ name_len = (uint16_t)SDP_DISC_ATTR_LEN(p_attr->attr_len_type);
+ else
+ name_len = BT_MAX_SERVICE_NAME_LEN;
+ memcpy(p_hdp_rec->srv_desp, p_attr->attr_value.v.array, name_len);
+ }
+ p_hdp_rec->provider_name[0] = '\0';
+ if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_PROVIDER_NAME)) !=
+ NULL) {
+ if (SDP_DISC_ATTR_LEN(p_attr->attr_len_type) < BT_MAX_SERVICE_NAME_LEN)
+ name_len = (uint16_t)SDP_DISC_ATTR_LEN(p_attr->attr_len_type);
+ else
+ name_len = BT_MAX_SERVICE_NAME_LEN;
+ memcpy(p_hdp_rec->provider_name, p_attr->attr_value.v.array, name_len);
+ }
- p_hdp_rec->provider_name[0]= '\0';
- if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_PROVIDER_NAME)) != NULL)
- {
- if (SDP_DISC_ATTR_LEN(p_attr->attr_len_type) < BT_MAX_SERVICE_NAME_LEN)
- name_len = (uint16_t)SDP_DISC_ATTR_LEN(p_attr->attr_len_type);
- else
- name_len = BT_MAX_SERVICE_NAME_LEN;
- memcpy(p_hdp_rec->provider_name, p_attr->attr_value.v.array, name_len);
- }
+ if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_HDP_MCAP_SUP_PROC)) !=
+ NULL) {
+ p_hdp_rec->mcap_sup_proc = p_attr->attr_value.v.u8;
+ } else {
+ APPL_TRACE_WARNING("MCAP SUP PROC not found");
+ break;
+ }
- if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_HDP_MCAP_SUP_PROC))!=NULL)
- {
- p_hdp_rec->mcap_sup_proc = p_attr->attr_value.v.u8;
- }
- else
- {
- APPL_TRACE_WARNING("MCAP SUP PROC not found");
- break;
- }
-
- if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_HDP_SUP_FEAT_LIST ))!=NULL)
- {
- if (bta_hl_fill_sup_feature_list (p_attr, &sup_feature))
- {
- p_hdp_rec->num_mdeps = (uint8_t) sup_feature.num_elems;
- APPL_TRACE_WARNING("bta_hl_sdp_cback num_mdeps %d",sup_feature.num_elems);
- for (i=0; i<sup_feature.num_elems; i++)
- {
- p_hdp_rec->mdep_cfg[i].data_type = sup_feature.list_elem[i].data_type;
- p_hdp_rec->mdep_cfg[i].mdep_id = sup_feature.list_elem[i].mdep_id;
- p_hdp_rec->mdep_cfg[i].mdep_role = sup_feature.list_elem[i].mdep_role;
- /* Check MDEP Description pointer to prevent crash due to null pointer */
- if (sup_feature.list_elem[i].p_mdep_desp != NULL)
- {
- strlcpy(p_hdp_rec->mdep_cfg[i].mdep_desp,
- sup_feature.list_elem[i].p_mdep_desp,
- BTA_HL_MDEP_DESP_LEN);
- }
- else
- {
- APPL_TRACE_ERROR("bta_hl_sdp_cback Incorrect Mdep[%d] Description (Null ptr)", i);
- }
- }
-
- sdp_parsing_ok = true;
- }
- else
- {
- APPL_TRACE_WARNING("HDP supported feature list fill failed");
- break;
- }
- }
- else
- {
- APPL_TRACE_WARNING("HDP supported feature list not found");
- break;
- }
-#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("record=%d ctrl_psm=%0x data_psm=%x",
- rec_cnt+1,
- p_hdp_rec->ctrl_psm,
- p_hdp_rec->data_psm );
- APPL_TRACE_DEBUG("srv_name=[%s]",(p_hdp_rec->srv_name[0] != '\0')? p_hdp_rec->srv_name:"NULL");
- APPL_TRACE_DEBUG("srv_desp=[%s]",(p_hdp_rec->srv_desp[0] != '\0')? p_hdp_rec->srv_desp:"NULL");
- for (i=0; i<sup_feature.num_elems; i++)
- {
- APPL_TRACE_DEBUG("index=0x%02x mdep_id=0x%04x data type=0x%04x mdep role=%s(0x%02x)",
- (i+1),
- p_hdp_rec->mdep_cfg[i].mdep_id,
- p_hdp_rec->mdep_cfg[i].data_type,
- (p_hdp_rec->mdep_cfg[i].mdep_role == BTA_HL_MDEP_ROLE_SOURCE)?"Src":"Snk",
- p_hdp_rec->mdep_cfg[i].mdep_role);
- }
- APPL_TRACE_DEBUG("provider_name=[%s]",(p_hdp_rec->provider_name[0] != '\0')? p_hdp_rec->provider_name:"NULL");
- APPL_TRACE_DEBUG("found MCAP sup procedure=%d",
- p_cb->sdp.sdp_rec[rec_cnt].mcap_sup_proc );
-#endif
- rec_cnt++;
- if (rec_cnt >= BTA_HL_NUM_SDP_RECS)
- {
- APPL_TRACE_WARNING("No more spaces for SDP recs max_rec_cnt=%d", BTA_HL_NUM_SDP_RECS);
- break;
- }
-
-
- } while (true);
- }
-
- osi_free_and_reset((void **)&p_cb->p_db);
-
- if ( (status == SDP_SUCCESS || status == SDP_DB_FULL) &&
- p_cb->sdp.num_recs &&
- sdp_parsing_ok)
- {
- result = true;
- }
- else
- {
- APPL_TRACE_WARNING("SDP Failed sdp_status=%d num_recs=%d sdp_parsing_ok=%d ",
- status, p_cb->sdp.num_recs,sdp_parsing_ok );
- }
-
-
- p_cb->sdp_oper = BTA_HL_SDP_OP_NONE;
-
- switch (sdp_oper )
- {
- case BTA_HL_SDP_OP_CCH_INIT:
- case BTA_HL_SDP_OP_SDP_QUERY_NEW:
- case BTA_HL_SDP_OP_SDP_QUERY_CURRENT:
-
- /* send result in event back to BTA */
- p_cch_buf = (tBTA_HL_CCH_SDP *)osi_malloc(sizeof(tBTA_HL_CCH_SDP));
- if (result) {
- if (sdp_oper == BTA_HL_SDP_OP_CCH_INIT) {
- event = BTA_HL_CCH_SDP_OK_EVT;
- if (p_cb->close_pending)
- event = BTA_HL_CCH_SDP_FAIL_EVT;
- } else {
- event = BTA_HL_SDP_QUERY_OK_EVT;
- }
+ if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_HDP_SUP_FEAT_LIST)) !=
+ NULL) {
+ if (bta_hl_fill_sup_feature_list(p_attr, &sup_feature)) {
+ p_hdp_rec->num_mdeps = (uint8_t)sup_feature.num_elems;
+ APPL_TRACE_WARNING("bta_hl_sdp_cback num_mdeps %d",
+ sup_feature.num_elems);
+ for (i = 0; i < sup_feature.num_elems; i++) {
+ p_hdp_rec->mdep_cfg[i].data_type =
+ sup_feature.list_elem[i].data_type;
+ p_hdp_rec->mdep_cfg[i].mdep_id = sup_feature.list_elem[i].mdep_id;
+ p_hdp_rec->mdep_cfg[i].mdep_role =
+ sup_feature.list_elem[i].mdep_role;
+ /* Check MDEP Description pointer to prevent crash due to null
+ * pointer */
+ if (sup_feature.list_elem[i].p_mdep_desp != NULL) {
+ strlcpy(p_hdp_rec->mdep_cfg[i].mdep_desp,
+ sup_feature.list_elem[i].p_mdep_desp,
+ BTA_HL_MDEP_DESP_LEN);
} else {
- if (sdp_oper == BTA_HL_SDP_OP_CCH_INIT)
- event = BTA_HL_CCH_SDP_FAIL_EVT;
- else
- event = BTA_HL_SDP_QUERY_FAIL_EVT;
+ APPL_TRACE_ERROR(
+ "bta_hl_sdp_cback Incorrect Mdep[%d] Description (Null ptr)",
+ i);
}
- p_cch_buf->hdr.event = event;
+ }
- p_cch_buf->app_idx = app_idx;
- p_cch_buf->mcl_idx = mcl_idx;
- p_cch_buf->release_mcl_cb = false;
- if (sdp_oper == BTA_HL_SDP_OP_SDP_QUERY_NEW)
- p_cch_buf->release_mcl_cb = true;
+ sdp_parsing_ok = true;
+ } else {
+ APPL_TRACE_WARNING("HDP supported feature list fill failed");
+ break;
+ }
+ } else {
+ APPL_TRACE_WARNING("HDP supported feature list not found");
+ break;
+ }
+#if (BTA_HL_DEBUG == TRUE)
+ APPL_TRACE_DEBUG("record=%d ctrl_psm=%0x data_psm=%x", rec_cnt + 1,
+ p_hdp_rec->ctrl_psm, p_hdp_rec->data_psm);
+ APPL_TRACE_DEBUG("srv_name=[%s]", (p_hdp_rec->srv_name[0] != '\0')
+ ? p_hdp_rec->srv_name
+ : "NULL");
+ APPL_TRACE_DEBUG("srv_desp=[%s]", (p_hdp_rec->srv_desp[0] != '\0')
+ ? p_hdp_rec->srv_desp
+ : "NULL");
+ for (i = 0; i < sup_feature.num_elems; i++) {
+ APPL_TRACE_DEBUG(
+ "index=0x%02x mdep_id=0x%04x data type=0x%04x mdep role=%s(0x%02x)",
+ (i + 1), p_hdp_rec->mdep_cfg[i].mdep_id,
+ p_hdp_rec->mdep_cfg[i].data_type,
+ (p_hdp_rec->mdep_cfg[i].mdep_role == BTA_HL_MDEP_ROLE_SOURCE)
+ ? "Src"
+ : "Snk",
+ p_hdp_rec->mdep_cfg[i].mdep_role);
+ }
+ APPL_TRACE_DEBUG("provider_name=[%s]",
+ (p_hdp_rec->provider_name[0] != '\0')
+ ? p_hdp_rec->provider_name
+ : "NULL");
+ APPL_TRACE_DEBUG("found MCAP sup procedure=%d",
+ p_cb->sdp.sdp_rec[rec_cnt].mcap_sup_proc);
+#endif
+ rec_cnt++;
+ if (rec_cnt >= BTA_HL_NUM_SDP_RECS) {
+ APPL_TRACE_WARNING("No more spaces for SDP recs max_rec_cnt=%d",
+ BTA_HL_NUM_SDP_RECS);
+ break;
+ }
- bta_sys_sendmsg(p_cch_buf);
- break;
- case BTA_HL_SDP_OP_DCH_OPEN_INIT:
- case BTA_HL_SDP_OP_DCH_RECONNECT_INIT:
- p_dch_buf = (tBTA_HL_DCH_SDP *)osi_malloc(sizeof(tBTA_HL_DCH_SDP));
- p_dch_buf->hdr.event = BTA_HL_DCH_SDP_FAIL_EVT;
- p_dch_buf->app_idx = app_idx;
- p_dch_buf->mcl_idx = mcl_idx;
- p_dch_buf->mdl_idx = mdl_idx;
- p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
- if (p_dcb->abort_oper & BTA_HL_ABORT_PENDING_MASK) {
- p_dcb->abort_oper &= ~BTA_HL_ABORT_PENDING_MASK;
- result = false;
- }
- if (result) {
- if (sdp_oper == BTA_HL_SDP_OP_DCH_OPEN_INIT) {
- if (p_dcb->local_mdep_id == BTA_HL_ECHO_TEST_MDEP_ID) {
- p_dch_buf->hdr.event = BTA_HL_DCH_ECHO_TEST_EVT;
- } else {
- p_dch_buf->hdr.event = BTA_HL_DCH_OPEN_EVT;
- }
- } else {
- p_dch_buf->hdr.event = BTA_HL_DCH_RECONNECT_EVT;
- }
- }
- bta_sys_sendmsg(p_dch_buf);
- break;
- default:
- break;
- }
+ } while (true);
+ }
+
+ osi_free_and_reset((void**)&p_cb->p_db);
+
+ if ((status == SDP_SUCCESS || status == SDP_DB_FULL) && p_cb->sdp.num_recs &&
+ sdp_parsing_ok) {
+ result = true;
+ } else {
+ APPL_TRACE_WARNING(
+ "SDP Failed sdp_status=%d num_recs=%d sdp_parsing_ok=%d ", status,
+ p_cb->sdp.num_recs, sdp_parsing_ok);
+ }
+
+ p_cb->sdp_oper = BTA_HL_SDP_OP_NONE;
+
+ switch (sdp_oper) {
+ case BTA_HL_SDP_OP_CCH_INIT:
+ case BTA_HL_SDP_OP_SDP_QUERY_NEW:
+ case BTA_HL_SDP_OP_SDP_QUERY_CURRENT:
+
+ /* send result in event back to BTA */
+ p_cch_buf = (tBTA_HL_CCH_SDP*)osi_malloc(sizeof(tBTA_HL_CCH_SDP));
+ if (result) {
+ if (sdp_oper == BTA_HL_SDP_OP_CCH_INIT) {
+ event = BTA_HL_CCH_SDP_OK_EVT;
+ if (p_cb->close_pending) event = BTA_HL_CCH_SDP_FAIL_EVT;
+ } else {
+ event = BTA_HL_SDP_QUERY_OK_EVT;
+ }
+ } else {
+ if (sdp_oper == BTA_HL_SDP_OP_CCH_INIT)
+ event = BTA_HL_CCH_SDP_FAIL_EVT;
+ else
+ event = BTA_HL_SDP_QUERY_FAIL_EVT;
+ }
+ p_cch_buf->hdr.event = event;
+
+ p_cch_buf->app_idx = app_idx;
+ p_cch_buf->mcl_idx = mcl_idx;
+ p_cch_buf->release_mcl_cb = false;
+ if (sdp_oper == BTA_HL_SDP_OP_SDP_QUERY_NEW)
+ p_cch_buf->release_mcl_cb = true;
+
+ bta_sys_sendmsg(p_cch_buf);
+ break;
+ case BTA_HL_SDP_OP_DCH_OPEN_INIT:
+ case BTA_HL_SDP_OP_DCH_RECONNECT_INIT:
+ p_dch_buf = (tBTA_HL_DCH_SDP*)osi_malloc(sizeof(tBTA_HL_DCH_SDP));
+ p_dch_buf->hdr.event = BTA_HL_DCH_SDP_FAIL_EVT;
+ p_dch_buf->app_idx = app_idx;
+ p_dch_buf->mcl_idx = mcl_idx;
+ p_dch_buf->mdl_idx = mdl_idx;
+ p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
+ if (p_dcb->abort_oper & BTA_HL_ABORT_PENDING_MASK) {
+ p_dcb->abort_oper &= ~BTA_HL_ABORT_PENDING_MASK;
+ result = false;
+ }
+ if (result) {
+ if (sdp_oper == BTA_HL_SDP_OP_DCH_OPEN_INIT) {
+ if (p_dcb->local_mdep_id == BTA_HL_ECHO_TEST_MDEP_ID) {
+ p_dch_buf->hdr.event = BTA_HL_DCH_ECHO_TEST_EVT;
+ } else {
+ p_dch_buf->hdr.event = BTA_HL_DCH_OPEN_EVT;
+ }
+ } else {
+ p_dch_buf->hdr.event = BTA_HL_DCH_RECONNECT_EVT;
+ }
+ }
+ bta_sys_sendmsg(p_dch_buf);
+ break;
+ default:
+ break;
+ }
}
-
/******************************************************************************
*
* Function bta_hl_sdp_cback0
@@ -1936,14 +1655,10 @@
* Returns void.
*
*****************************************************************************/
-static void bta_hl_sdp_cback0(uint16_t status)
-{
- bta_hl_sdp_cback(bta_hl_cb.scb[0].sdp_oper,
- bta_hl_cb.scb[0].app_idx,
- bta_hl_cb.scb[0].mcl_idx,
- bta_hl_cb.scb[0].mdl_idx,
- status);
- bta_hl_deallocate_spd_cback(0);
+static void bta_hl_sdp_cback0(uint16_t status) {
+ bta_hl_sdp_cback(bta_hl_cb.scb[0].sdp_oper, bta_hl_cb.scb[0].app_idx,
+ bta_hl_cb.scb[0].mcl_idx, bta_hl_cb.scb[0].mdl_idx, status);
+ bta_hl_deallocate_spd_cback(0);
}
/******************************************************************************
@@ -1957,14 +1672,10 @@
* Returns void.
*
*****************************************************************************/
-static void bta_hl_sdp_cback1(uint16_t status)
-{
- bta_hl_sdp_cback(bta_hl_cb.scb[1].sdp_oper,
- bta_hl_cb.scb[1].app_idx,
- bta_hl_cb.scb[1].mcl_idx,
- bta_hl_cb.scb[1].mdl_idx,
- status);
- bta_hl_deallocate_spd_cback(1);
+static void bta_hl_sdp_cback1(uint16_t status) {
+ bta_hl_sdp_cback(bta_hl_cb.scb[1].sdp_oper, bta_hl_cb.scb[1].app_idx,
+ bta_hl_cb.scb[1].mcl_idx, bta_hl_cb.scb[1].mdl_idx, status);
+ bta_hl_deallocate_spd_cback(1);
}
/******************************************************************************
@@ -1976,14 +1687,10 @@
* Returns void.
*
*****************************************************************************/
-static void bta_hl_sdp_cback2(uint16_t status)
-{
- bta_hl_sdp_cback(bta_hl_cb.scb[2].sdp_oper,
- bta_hl_cb.scb[2].app_idx,
- bta_hl_cb.scb[2].mcl_idx,
- bta_hl_cb.scb[2].mdl_idx,
- status);
- bta_hl_deallocate_spd_cback(2);
+static void bta_hl_sdp_cback2(uint16_t status) {
+ bta_hl_sdp_cback(bta_hl_cb.scb[2].sdp_oper, bta_hl_cb.scb[2].app_idx,
+ bta_hl_cb.scb[2].mcl_idx, bta_hl_cb.scb[2].mdl_idx, status);
+ bta_hl_deallocate_spd_cback(2);
}
/******************************************************************************
@@ -1995,14 +1702,10 @@
* Returns void.
*
*****************************************************************************/
-static void bta_hl_sdp_cback3(uint16_t status)
-{
- bta_hl_sdp_cback(bta_hl_cb.scb[3].sdp_oper,
- bta_hl_cb.scb[3].app_idx,
- bta_hl_cb.scb[3].mcl_idx,
- bta_hl_cb.scb[3].mdl_idx,
- status);
- bta_hl_deallocate_spd_cback(3);
+static void bta_hl_sdp_cback3(uint16_t status) {
+ bta_hl_sdp_cback(bta_hl_cb.scb[3].sdp_oper, bta_hl_cb.scb[3].app_idx,
+ bta_hl_cb.scb[3].mcl_idx, bta_hl_cb.scb[3].mdl_idx, status);
+ bta_hl_deallocate_spd_cback(3);
}
/******************************************************************************
@@ -2016,14 +1719,10 @@
* Returns void.
*
*****************************************************************************/
-static void bta_hl_sdp_cback4(uint16_t status)
-{
- bta_hl_sdp_cback(bta_hl_cb.scb[4].sdp_oper,
- bta_hl_cb.scb[4].app_idx,
- bta_hl_cb.scb[4].mcl_idx,
- bta_hl_cb.scb[4].mdl_idx,
- status);
- bta_hl_deallocate_spd_cback(4);
+static void bta_hl_sdp_cback4(uint16_t status) {
+ bta_hl_sdp_cback(bta_hl_cb.scb[4].sdp_oper, bta_hl_cb.scb[4].app_idx,
+ bta_hl_cb.scb[4].mcl_idx, bta_hl_cb.scb[4].mdl_idx, status);
+ bta_hl_deallocate_spd_cback(4);
}
/******************************************************************************
@@ -2037,14 +1736,10 @@
* Returns void.
*
*****************************************************************************/
-static void bta_hl_sdp_cback5(uint16_t status)
-{
- bta_hl_sdp_cback(bta_hl_cb.scb[5].sdp_oper,
- bta_hl_cb.scb[5].app_idx,
- bta_hl_cb.scb[5].mcl_idx,
- bta_hl_cb.scb[5].mdl_idx,
- status);
- bta_hl_deallocate_spd_cback(5);
+static void bta_hl_sdp_cback5(uint16_t status) {
+ bta_hl_sdp_cback(bta_hl_cb.scb[5].sdp_oper, bta_hl_cb.scb[5].app_idx,
+ bta_hl_cb.scb[5].mcl_idx, bta_hl_cb.scb[5].mdl_idx, status);
+ bta_hl_deallocate_spd_cback(5);
}
/******************************************************************************
@@ -2056,17 +1751,12 @@
* Returns void.
*
*****************************************************************************/
-static void bta_hl_sdp_cback6(uint16_t status)
-{
- bta_hl_sdp_cback(bta_hl_cb.scb[6].sdp_oper,
- bta_hl_cb.scb[6].app_idx,
- bta_hl_cb.scb[6].mcl_idx,
- bta_hl_cb.scb[6].mdl_idx,
- status);
- bta_hl_deallocate_spd_cback(6);
+static void bta_hl_sdp_cback6(uint16_t status) {
+ bta_hl_sdp_cback(bta_hl_cb.scb[6].sdp_oper, bta_hl_cb.scb[6].app_idx,
+ bta_hl_cb.scb[6].mcl_idx, bta_hl_cb.scb[6].mdl_idx, status);
+ bta_hl_deallocate_spd_cback(6);
}
-
/*******************************************************************************
*
* Function bta_hl_deallocate_spd_cback
@@ -2077,17 +1767,14 @@
* false not found
*
******************************************************************************/
-void bta_hl_deallocate_spd_cback(uint8_t sdp_cback_idx)
-{
- tBTA_HL_SDP_CB *p_spd_cb = &bta_hl_cb.scb[sdp_cback_idx];
+void bta_hl_deallocate_spd_cback(uint8_t sdp_cback_idx) {
+ tBTA_HL_SDP_CB* p_spd_cb = &bta_hl_cb.scb[sdp_cback_idx];
- memset(p_spd_cb, 0, sizeof(tBTA_HL_SDP_CB));
+ memset(p_spd_cb, 0, sizeof(tBTA_HL_SDP_CB));
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hl_deallocate_spd_cback index=%d", sdp_cback_idx);
+ APPL_TRACE_DEBUG("bta_hl_deallocate_spd_cback index=%d", sdp_cback_idx);
#endif
-
-
}
/*******************************************************************************
@@ -2101,48 +1788,39 @@
* false not found
*
******************************************************************************/
-tSDP_DISC_CMPL_CB *bta_hl_allocate_spd_cback(tBTA_HL_SDP_OPER sdp_oper, uint8_t app_idx, uint8_t mcl_idx,
+tSDP_DISC_CMPL_CB* bta_hl_allocate_spd_cback(tBTA_HL_SDP_OPER sdp_oper,
+ uint8_t app_idx, uint8_t mcl_idx,
uint8_t mdl_idx,
- uint8_t *p_sdp_cback_idx)
-{
- uint8_t i;
- tSDP_DISC_CMPL_CB *p_cbcak=NULL;
+ uint8_t* p_sdp_cback_idx) {
+ uint8_t i;
+ tSDP_DISC_CMPL_CB* p_cbcak = NULL;
-
- for (i=0; i < BTA_HL_NUM_SDP_CBACKS ; i ++)
- {
- if (!bta_hl_cb.scb[i].in_use)
- {
- p_cbcak = bta_hl_sdp_cback_arr[i];
- bta_hl_cb.scb[i].in_use = true;
- bta_hl_cb.scb[i].sdp_oper = sdp_oper;
- bta_hl_cb.scb[i].app_idx = app_idx;
- bta_hl_cb.scb[i].mcl_idx = mcl_idx;
- bta_hl_cb.scb[i].mdl_idx = mdl_idx;
- *p_sdp_cback_idx = i;
- break;
- }
+ for (i = 0; i < BTA_HL_NUM_SDP_CBACKS; i++) {
+ if (!bta_hl_cb.scb[i].in_use) {
+ p_cbcak = bta_hl_sdp_cback_arr[i];
+ bta_hl_cb.scb[i].in_use = true;
+ bta_hl_cb.scb[i].sdp_oper = sdp_oper;
+ bta_hl_cb.scb[i].app_idx = app_idx;
+ bta_hl_cb.scb[i].mcl_idx = mcl_idx;
+ bta_hl_cb.scb[i].mdl_idx = mdl_idx;
+ *p_sdp_cback_idx = i;
+ break;
}
+ }
- if (i == BTA_HL_NUM_SDP_CBACKS)
- {
- APPL_TRACE_WARNING("No scb is available to allocate")
- }
- else
- {
+ if (i == BTA_HL_NUM_SDP_CBACKS) {
+ APPL_TRACE_WARNING("No scb is available to allocate")
+ } else {
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hl_allocate_spd_cback cback_idx=%d ",i );
+ APPL_TRACE_DEBUG("bta_hl_allocate_spd_cback cback_idx=%d ", i);
APPL_TRACE_DEBUG("sdp_oper=%d, app_idx=%d, mcl_idx=%d, mdl_idx=%d",
- bta_hl_cb.scb[i].sdp_oper,
- bta_hl_cb.scb[i].app_idx,
- bta_hl_cb.scb[i].mcl_idx,
- bta_hl_cb.scb[i].mdl_idx );
+ bta_hl_cb.scb[i].sdp_oper, bta_hl_cb.scb[i].app_idx,
+ bta_hl_cb.scb[i].mcl_idx, bta_hl_cb.scb[i].mdl_idx);
#endif
- }
- return p_cbcak;
+ }
+ return p_cbcak;
}
-
/*******************************************************************************
*
* Function bta_hl_init_sdp
@@ -2152,55 +1830,56 @@
* Returns void
*
******************************************************************************/
-tBTA_HL_STATUS bta_hl_init_sdp(tBTA_HL_SDP_OPER sdp_oper, uint8_t app_idx, uint8_t mcl_idx,
- uint8_t mdl_idx)
-{
- tBTA_HL_MCL_CB *p_cb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
- tSDP_UUID uuid_list;
- uint16_t attr_list[BTA_HL_NUM_SRCH_ATTR];
- uint16_t num_attrs = BTA_HL_NUM_SRCH_ATTR;
- tBTA_HL_STATUS status;
- uint8_t sdp_cback_idx;
+tBTA_HL_STATUS bta_hl_init_sdp(tBTA_HL_SDP_OPER sdp_oper, uint8_t app_idx,
+ uint8_t mcl_idx, uint8_t mdl_idx) {
+ tBTA_HL_MCL_CB* p_cb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
+ tSDP_UUID uuid_list;
+ uint16_t attr_list[BTA_HL_NUM_SRCH_ATTR];
+ uint16_t num_attrs = BTA_HL_NUM_SRCH_ATTR;
+ tBTA_HL_STATUS status;
+ uint8_t sdp_cback_idx;
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hl_init_sdp sdp_oper=%d app_idx=%d mcl_idx=%d, mdl_idx=%d",
- sdp_oper, app_idx, mcl_idx, mdl_idx);
+ APPL_TRACE_DEBUG(
+ "bta_hl_init_sdp sdp_oper=%d app_idx=%d mcl_idx=%d, mdl_idx=%d", sdp_oper,
+ app_idx, mcl_idx, mdl_idx);
#endif
- if ((p_cb->sdp_cback = bta_hl_allocate_spd_cback(sdp_oper, app_idx, mcl_idx, mdl_idx, &sdp_cback_idx)) != NULL)
- {
- if (p_cb->p_db == NULL)
- (p_cb->p_db = (tSDP_DISCOVERY_DB *)osi_malloc(BTA_HL_DISC_SIZE));
- attr_list[0] = ATTR_ID_SERVICE_CLASS_ID_LIST;
- attr_list[1] = ATTR_ID_PROTOCOL_DESC_LIST;
- attr_list[2] = ATTR_ID_BT_PROFILE_DESC_LIST;
- attr_list[3] = ATTR_ID_ADDITION_PROTO_DESC_LISTS;
- attr_list[4] = ATTR_ID_SERVICE_NAME;
- attr_list[5] = ATTR_ID_SERVICE_DESCRIPTION;
- attr_list[6] = ATTR_ID_PROVIDER_NAME;
- attr_list[7] = ATTR_ID_HDP_SUP_FEAT_LIST;
- attr_list[8] = ATTR_ID_HDP_DATA_EXCH_SPEC;
- attr_list[9] = ATTR_ID_HDP_MCAP_SUP_PROC;
+ if ((p_cb->sdp_cback = bta_hl_allocate_spd_cback(
+ sdp_oper, app_idx, mcl_idx, mdl_idx, &sdp_cback_idx)) != NULL) {
+ if (p_cb->p_db == NULL)
+ (p_cb->p_db = (tSDP_DISCOVERY_DB*)osi_malloc(BTA_HL_DISC_SIZE));
+ attr_list[0] = ATTR_ID_SERVICE_CLASS_ID_LIST;
+ attr_list[1] = ATTR_ID_PROTOCOL_DESC_LIST;
+ attr_list[2] = ATTR_ID_BT_PROFILE_DESC_LIST;
+ attr_list[3] = ATTR_ID_ADDITION_PROTO_DESC_LISTS;
+ attr_list[4] = ATTR_ID_SERVICE_NAME;
+ attr_list[5] = ATTR_ID_SERVICE_DESCRIPTION;
+ attr_list[6] = ATTR_ID_PROVIDER_NAME;
+ attr_list[7] = ATTR_ID_HDP_SUP_FEAT_LIST;
+ attr_list[8] = ATTR_ID_HDP_DATA_EXCH_SPEC;
+ attr_list[9] = ATTR_ID_HDP_MCAP_SUP_PROC;
- uuid_list.len = LEN_UUID_16;
- uuid_list.uu.uuid16 = UUID_SERVCLASS_HDP_PROFILE;
- SDP_InitDiscoveryDb(p_cb->p_db, BTA_HL_DISC_SIZE, 1, &uuid_list, num_attrs, attr_list);
+ uuid_list.len = LEN_UUID_16;
+ uuid_list.uu.uuid16 = UUID_SERVCLASS_HDP_PROFILE;
+ SDP_InitDiscoveryDb(p_cb->p_db, BTA_HL_DISC_SIZE, 1, &uuid_list, num_attrs,
+ attr_list);
- if (!SDP_ServiceSearchAttributeRequest(p_cb->bd_addr, p_cb->p_db, p_cb->sdp_cback))
- {
- status = BTA_HL_STATUS_FAIL;
- } else {
- status = BTA_HL_STATUS_OK;
- }
+ if (!SDP_ServiceSearchAttributeRequest(p_cb->bd_addr, p_cb->p_db,
+ p_cb->sdp_cback)) {
+ status = BTA_HL_STATUS_FAIL;
} else {
- status = BTA_HL_STATUS_SDP_NO_RESOURCE;
+ status = BTA_HL_STATUS_OK;
}
+ } else {
+ status = BTA_HL_STATUS_SDP_NO_RESOURCE;
+ }
- if (status != BTA_HL_STATUS_OK) {
- osi_free_and_reset((void **)&p_cb->p_db);
- if (status != BTA_HL_STATUS_SDP_NO_RESOURCE)
- bta_hl_deallocate_spd_cback(sdp_cback_idx);
- }
+ if (status != BTA_HL_STATUS_OK) {
+ osi_free_and_reset((void**)&p_cb->p_db);
+ if (status != BTA_HL_STATUS_SDP_NO_RESOURCE)
+ bta_hl_deallocate_spd_cback(sdp_cback_idx);
+ }
- return status;
+ return status;
}
/*******************************************************************************
@@ -2212,28 +1891,25 @@
* Returns void
*
******************************************************************************/
-void bta_hl_cch_sdp_init(uint8_t app_idx, uint8_t mcl_idx, tBTA_HL_DATA *p_data)
-{
- tBTA_HL_MCL_CB *p_cb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
+void bta_hl_cch_sdp_init(uint8_t app_idx, uint8_t mcl_idx,
+ tBTA_HL_DATA* p_data) {
+ tBTA_HL_MCL_CB* p_cb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hl_cch_init_sdp");
+ APPL_TRACE_DEBUG("bta_hl_cch_init_sdp");
#endif
- if ( p_cb->sdp_oper == BTA_HL_SDP_OP_NONE)
- {
- p_cb->app_id = p_data->api_cch_open.app_id;
- p_cb->sdp_oper = BTA_HL_SDP_OP_CCH_INIT;
+ if (p_cb->sdp_oper == BTA_HL_SDP_OP_NONE) {
+ p_cb->app_id = p_data->api_cch_open.app_id;
+ p_cb->sdp_oper = BTA_HL_SDP_OP_CCH_INIT;
- if (bta_hl_init_sdp( p_cb->sdp_oper, app_idx, mcl_idx, 0xFF) != BTA_HL_STATUS_OK)
- {
- p_cb->sdp_oper = BTA_HL_SDP_OP_NONE;
- bta_hl_cch_sm_execute(app_idx, mcl_idx, BTA_HL_CCH_SDP_FAIL_EVT, p_data);
- }
+ if (bta_hl_init_sdp(p_cb->sdp_oper, app_idx, mcl_idx, 0xFF) !=
+ BTA_HL_STATUS_OK) {
+ p_cb->sdp_oper = BTA_HL_SDP_OP_NONE;
+ bta_hl_cch_sm_execute(app_idx, mcl_idx, BTA_HL_CCH_SDP_FAIL_EVT, p_data);
}
- else
- {
- APPL_TRACE_ERROR("SDP in use");
- bta_hl_cch_sm_execute(app_idx, mcl_idx, BTA_HL_CCH_SDP_FAIL_EVT, p_data);
- }
+ } else {
+ APPL_TRACE_ERROR("SDP in use");
+ bta_hl_cch_sm_execute(app_idx, mcl_idx, BTA_HL_CCH_SDP_FAIL_EVT, p_data);
+ }
}
/*******************************************************************************
@@ -2245,33 +1921,28 @@
* Returns void
*
******************************************************************************/
-void bta_hl_cch_mca_open(uint8_t app_idx, uint8_t mcl_idx, tBTA_HL_DATA *p_data)
-{
- tBTA_HL_APP_CB *p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
- tBTA_HL_MCL_CB *p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
- uint8_t sdp_idx;
+void bta_hl_cch_mca_open(uint8_t app_idx, uint8_t mcl_idx,
+ tBTA_HL_DATA* p_data) {
+ tBTA_HL_APP_CB* p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
+ tBTA_HL_MCL_CB* p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
+ uint8_t sdp_idx;
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hl_cch_mca_open");
+ APPL_TRACE_DEBUG("bta_hl_cch_mca_open");
#endif
- if (bta_hl_find_sdp_idx_using_ctrl_psm(&p_mcb->sdp, p_mcb->req_ctrl_psm, &sdp_idx))
- {
- p_mcb->ctrl_psm = p_mcb->sdp.sdp_rec[sdp_idx].ctrl_psm;
- p_mcb->data_psm = p_mcb->sdp.sdp_rec[sdp_idx].data_psm;
- if ( MCA_ConnectReq((tMCA_HANDLE) p_acb->app_handle,
- p_mcb->bd_addr,
- p_mcb->ctrl_psm ,
- p_mcb->sec_mask) != MCA_SUCCESS)
- {
-
- bta_hl_cch_sm_execute(app_idx, mcl_idx, BTA_HL_CCH_CLOSE_CMPL_EVT, p_data);
- }
+ if (bta_hl_find_sdp_idx_using_ctrl_psm(&p_mcb->sdp, p_mcb->req_ctrl_psm,
+ &sdp_idx)) {
+ p_mcb->ctrl_psm = p_mcb->sdp.sdp_rec[sdp_idx].ctrl_psm;
+ p_mcb->data_psm = p_mcb->sdp.sdp_rec[sdp_idx].data_psm;
+ if (MCA_ConnectReq((tMCA_HANDLE)p_acb->app_handle, p_mcb->bd_addr,
+ p_mcb->ctrl_psm, p_mcb->sec_mask) != MCA_SUCCESS) {
+ bta_hl_cch_sm_execute(app_idx, mcl_idx, BTA_HL_CCH_CLOSE_CMPL_EVT,
+ p_data);
}
- else
- {
- bta_hl_cch_sm_execute(app_idx, mcl_idx, BTA_HL_CCH_CLOSE_CMPL_EVT, p_data);
- }
+ } else {
+ bta_hl_cch_sm_execute(app_idx, mcl_idx, BTA_HL_CCH_CLOSE_CMPL_EVT, p_data);
+ }
}
/*******************************************************************************
@@ -2283,33 +1954,31 @@
* Returns void
*
******************************************************************************/
-void bta_hl_cch_mca_close(uint8_t app_idx, uint8_t mcl_idx, tBTA_HL_DATA *p_data)
-{
- tBTA_HL_MCL_CB *p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
+void bta_hl_cch_mca_close(uint8_t app_idx, uint8_t mcl_idx,
+ tBTA_HL_DATA* p_data) {
+ tBTA_HL_MCL_CB* p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hl_cch_mca_close mcl_handle=%d", p_mcb->mcl_handle);
+ APPL_TRACE_DEBUG("bta_hl_cch_mca_close mcl_handle=%d", p_mcb->mcl_handle);
#endif
- if (p_mcb->sdp_oper != BTA_HL_SDP_OP_CCH_INIT)
- {
- if(p_mcb->mcl_handle)
- {
- if ( MCA_DisconnectReq((tMCA_HANDLE) p_mcb->mcl_handle) != MCA_SUCCESS)
- {
- bta_hl_cch_sm_execute(app_idx, mcl_idx, BTA_HL_CCH_CLOSE_CMPL_EVT, p_data);
- }
- }
- else
- {
- p_mcb->close_pending = true;
- APPL_TRACE_DEBUG("No valid mcl_handle to stop the CCH setup now so wait until CCH is up then close it" );
- }
+ if (p_mcb->sdp_oper != BTA_HL_SDP_OP_CCH_INIT) {
+ if (p_mcb->mcl_handle) {
+ if (MCA_DisconnectReq((tMCA_HANDLE)p_mcb->mcl_handle) != MCA_SUCCESS) {
+ bta_hl_cch_sm_execute(app_idx, mcl_idx, BTA_HL_CCH_CLOSE_CMPL_EVT,
+ p_data);
+ }
+ } else {
+ p_mcb->close_pending = true;
+ APPL_TRACE_DEBUG(
+ "No valid mcl_handle to stop the CCH setup now so wait until CCH is "
+ "up then close it");
}
- else
- {
- p_mcb->close_pending = true;
- APPL_TRACE_DEBUG("can not stop the CCH setup becasue SDP is in progress so wait until it is done" );
- }
+ } else {
+ p_mcb->close_pending = true;
+ APPL_TRACE_DEBUG(
+ "can not stop the CCH setup becasue SDP is in progress so wait until "
+ "it is done");
+ }
}
/*******************************************************************************
@@ -2321,58 +1990,54 @@
* Returns void
*
******************************************************************************/
-void bta_hl_cch_close_cmpl(uint8_t app_idx, uint8_t mcl_idx, tBTA_HL_DATA *p_data)
-{
- tBTA_HL_APP_CB *p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
- tBTA_HL_MCL_CB *p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
+void bta_hl_cch_close_cmpl(uint8_t app_idx, uint8_t mcl_idx,
+ tBTA_HL_DATA* p_data) {
+ tBTA_HL_APP_CB* p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
+ tBTA_HL_MCL_CB* p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
- tBTA_HL evt_data;
- tBTA_HL_EVT event;
- bool send_evt=true;
+ tBTA_HL evt_data;
+ tBTA_HL_EVT event;
+ bool send_evt = true;
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hl_cch_close_cmpl");
+ APPL_TRACE_DEBUG("bta_hl_cch_close_cmpl");
#endif
- bta_sys_conn_close(BTA_ID_HL, p_acb->app_id, p_mcb->bd_addr);
+ bta_sys_conn_close(BTA_ID_HL, p_acb->app_id, p_mcb->bd_addr);
- if (p_mcb->cch_oper == BTA_HL_CCH_OP_LOCAL_CLOSE && p_mcb->force_close_local_cch_opening)
- {
- p_mcb->cch_oper = BTA_HL_CCH_OP_LOCAL_OPEN;
- APPL_TRACE_DEBUG("change cch_oper from BTA_HL_CCH_OP_LOCAL_CLOSE to BTA_HL_CCH_OP_LOCAL_OPEN");
- }
+ if (p_mcb->cch_oper == BTA_HL_CCH_OP_LOCAL_CLOSE &&
+ p_mcb->force_close_local_cch_opening) {
+ p_mcb->cch_oper = BTA_HL_CCH_OP_LOCAL_OPEN;
+ APPL_TRACE_DEBUG(
+ "change cch_oper from BTA_HL_CCH_OP_LOCAL_CLOSE to "
+ "BTA_HL_CCH_OP_LOCAL_OPEN");
+ }
- switch (p_mcb->cch_oper)
- {
- case BTA_HL_CCH_OP_LOCAL_OPEN:
- bta_hl_build_cch_open_cfm(&evt_data,p_mcb->app_id,p_acb->app_handle,
- p_mcb->mcl_handle,
- p_mcb->bd_addr,
- BTA_HL_STATUS_FAIL);
- event = BTA_HL_CCH_OPEN_CFM_EVT;
- break;
- case BTA_HL_CCH_OP_LOCAL_CLOSE:
- bta_hl_build_cch_close_cfm(&evt_data, p_acb->app_handle,
- p_mcb->mcl_handle,
- BTA_HL_STATUS_OK);
- event = BTA_HL_CCH_CLOSE_CFM_EVT;
- break;
- case BTA_HL_CCH_OP_REMOTE_CLOSE:
- bta_hl_build_cch_close_ind(&evt_data,
- p_acb->app_handle,
- p_mcb->mcl_handle,
- p_mcb->intentional_close);
- event = BTA_HL_CCH_CLOSE_IND_EVT;
- break;
- default:
- send_evt=false;
- break;
- }
+ switch (p_mcb->cch_oper) {
+ case BTA_HL_CCH_OP_LOCAL_OPEN:
+ bta_hl_build_cch_open_cfm(&evt_data, p_mcb->app_id, p_acb->app_handle,
+ p_mcb->mcl_handle, p_mcb->bd_addr,
+ BTA_HL_STATUS_FAIL);
+ event = BTA_HL_CCH_OPEN_CFM_EVT;
+ break;
+ case BTA_HL_CCH_OP_LOCAL_CLOSE:
+ bta_hl_build_cch_close_cfm(&evt_data, p_acb->app_handle,
+ p_mcb->mcl_handle, BTA_HL_STATUS_OK);
+ event = BTA_HL_CCH_CLOSE_CFM_EVT;
+ break;
+ case BTA_HL_CCH_OP_REMOTE_CLOSE:
+ bta_hl_build_cch_close_ind(&evt_data, p_acb->app_handle,
+ p_mcb->mcl_handle, p_mcb->intentional_close);
+ event = BTA_HL_CCH_CLOSE_IND_EVT;
+ break;
+ default:
+ send_evt = false;
+ break;
+ }
+ memset(p_mcb, 0, sizeof(tBTA_HL_MCL_CB));
- memset(p_mcb, 0 ,sizeof(tBTA_HL_MCL_CB));
+ if (send_evt) p_acb->p_cback(event, (tBTA_HL*)&evt_data);
- if (send_evt)p_acb->p_cback(event,(tBTA_HL *) &evt_data );
-
- bta_hl_check_deregistration(app_idx, p_data);
+ bta_hl_check_deregistration(app_idx, p_data);
}
/*******************************************************************************
@@ -2384,60 +2049,57 @@
* Returns void
*
******************************************************************************/
-void bta_hl_cch_mca_disconnect(uint8_t app_idx, uint8_t mcl_idx, tBTA_HL_DATA *p_data)
-{
-
- tBTA_HL_MCL_CB *p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
- tBTA_HL_MDL_CB *p_dcb;
- uint8_t i;
+void bta_hl_cch_mca_disconnect(uint8_t app_idx, uint8_t mcl_idx,
+ tBTA_HL_DATA* p_data) {
+ tBTA_HL_MCL_CB* p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
+ tBTA_HL_MDL_CB* p_dcb;
+ uint8_t i;
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hl_cch_mca_disconnect");
+ APPL_TRACE_DEBUG("bta_hl_cch_mca_disconnect");
#endif
- p_mcb->intentional_close = false;
- if (p_data->mca_evt.mca_data.disconnect_ind.reason == L2CAP_DISC_OK)
- {
- p_mcb->intentional_close = true;
- }
+ p_mcb->intentional_close = false;
+ if (p_data->mca_evt.mca_data.disconnect_ind.reason == L2CAP_DISC_OK) {
+ p_mcb->intentional_close = true;
+ }
- for (i=0; i< BTA_HL_NUM_MDLS_PER_MCL; i++)
- {
- p_dcb= BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, i);
- if (p_dcb->in_use && (p_dcb->dch_state != BTA_HL_DCH_IDLE_ST))
- {
- if (p_mcb->cch_oper == BTA_HL_CCH_OP_LOCAL_CLOSE )
- {
- bta_hl_dch_sm_execute(app_idx, mcl_idx, i, BTA_HL_DCH_CLOSE_CMPL_EVT, p_data);
- }
- else
- {
- bta_hl_dch_sm_execute(app_idx, mcl_idx, i, BTA_HL_MCA_CLOSE_IND_EVT, p_data);
- }
- }
+ for (i = 0; i < BTA_HL_NUM_MDLS_PER_MCL; i++) {
+ p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, i);
+ if (p_dcb->in_use && (p_dcb->dch_state != BTA_HL_DCH_IDLE_ST)) {
+ if (p_mcb->cch_oper == BTA_HL_CCH_OP_LOCAL_CLOSE) {
+ bta_hl_dch_sm_execute(app_idx, mcl_idx, i, BTA_HL_DCH_CLOSE_CMPL_EVT,
+ p_data);
+ } else {
+ bta_hl_dch_sm_execute(app_idx, mcl_idx, i, BTA_HL_MCA_CLOSE_IND_EVT,
+ p_data);
+ }
}
- bta_hl_cch_sm_execute(app_idx, mcl_idx, BTA_HL_CCH_CLOSE_CMPL_EVT, p_data);
+ }
+ bta_hl_cch_sm_execute(app_idx, mcl_idx, BTA_HL_CCH_CLOSE_CMPL_EVT, p_data);
}
/*******************************************************************************
*
* Function bta_hl_cch_mca_disc_open
*
- * Description Action routine for disconnect the just opened Control channel
+ * Description Action routine for disconnect the just opened Control
+ *channel
*
* Returns void
*
******************************************************************************/
-void bta_hl_cch_mca_disc_open(uint8_t app_idx, uint8_t mcl_idx, tBTA_HL_DATA *p_data)
-{
- tBTA_HL_MCL_CB *p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
+void bta_hl_cch_mca_disc_open(uint8_t app_idx, uint8_t mcl_idx,
+ tBTA_HL_DATA* p_data) {
+ tBTA_HL_MCL_CB* p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hl_cch_mca_disc_open mcl_handle=0x%x close_pending=%d", p_data->mca_evt.mcl_handle, p_mcb->close_pending );
+ APPL_TRACE_DEBUG("bta_hl_cch_mca_disc_open mcl_handle=0x%x close_pending=%d",
+ p_data->mca_evt.mcl_handle, p_mcb->close_pending);
#endif
- p_mcb->close_pending = false;
- p_mcb->mcl_handle = p_data->mca_evt.mcl_handle;
- bta_hl_cch_mca_close(app_idx, mcl_idx, p_data);
+ p_mcb->close_pending = false;
+ p_mcb->mcl_handle = p_data->mca_evt.mcl_handle;
+ bta_hl_cch_mca_close(app_idx, mcl_idx, p_data);
}
/*******************************************************************************
@@ -2449,17 +2111,16 @@
* Returns void
*
******************************************************************************/
-void bta_hl_cch_mca_rsp_tout(uint8_t app_idx, uint8_t mcl_idx, tBTA_HL_DATA *p_data)
-{
-
- tBTA_HL_MCL_CB *p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
+void bta_hl_cch_mca_rsp_tout(uint8_t app_idx, uint8_t mcl_idx,
+ tBTA_HL_DATA* p_data) {
+ tBTA_HL_MCL_CB* p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hl_cch_mca_rsp_tout");
+ APPL_TRACE_DEBUG("bta_hl_cch_mca_rsp_tout");
#endif
- p_mcb->rsp_tout = true;
+ p_mcb->rsp_tout = true;
- bta_hl_check_cch_close(app_idx,mcl_idx,p_data,true);
+ bta_hl_check_cch_close(app_idx, mcl_idx, p_data, true);
}
/*******************************************************************************
@@ -2471,45 +2132,43 @@
* Returns void
*
******************************************************************************/
-void bta_hl_cch_mca_connect(uint8_t app_idx, uint8_t mcl_idx, tBTA_HL_DATA *p_data)
-{
- tBTA_HL_APP_CB *p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
- tBTA_HL_MCL_CB *p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
- tBTA_HL evt_data;
- tBTA_HL_EVT event;
- bool send_event=true;
+void bta_hl_cch_mca_connect(uint8_t app_idx, uint8_t mcl_idx,
+ tBTA_HL_DATA* p_data) {
+ tBTA_HL_APP_CB* p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
+ tBTA_HL_MCL_CB* p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
+ tBTA_HL evt_data;
+ tBTA_HL_EVT event;
+ bool send_event = true;
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hl_cch_mca_connect mcl_handle=%d ", p_data->mca_evt.mcl_handle);
+ APPL_TRACE_DEBUG("bta_hl_cch_mca_connect mcl_handle=%d ",
+ p_data->mca_evt.mcl_handle);
#endif
- p_mcb->mcl_handle = p_data->mca_evt.mcl_handle;
- bdcpy(p_mcb->bd_addr, p_data->mca_evt.mca_data.connect_ind.bd_addr);
- p_mcb->cch_mtu = p_data->mca_evt.mca_data.connect_ind.mtu;
+ p_mcb->mcl_handle = p_data->mca_evt.mcl_handle;
+ bdcpy(p_mcb->bd_addr, p_data->mca_evt.mca_data.connect_ind.bd_addr);
+ p_mcb->cch_mtu = p_data->mca_evt.mca_data.connect_ind.mtu;
- bta_sys_conn_open(BTA_ID_HL, p_acb->app_id, p_mcb->bd_addr);
- switch (p_mcb->cch_oper)
- {
- case BTA_HL_CCH_OP_LOCAL_OPEN:
- bta_hl_build_cch_open_cfm(&evt_data, p_mcb->app_id,p_acb->app_handle,
- p_mcb->mcl_handle,
- p_mcb->bd_addr,
- BTA_HL_STATUS_OK);
- event = BTA_HL_CCH_OPEN_CFM_EVT;
- break;
- case BTA_HL_CCH_OP_REMOTE_OPEN:
- bta_hl_build_cch_open_ind(&evt_data, p_acb->app_handle,
- p_mcb->mcl_handle,
- p_mcb->bd_addr);
- event = BTA_HL_CCH_OPEN_IND_EVT;
- break;
- default:
- send_event = false;
- break;
- }
+ bta_sys_conn_open(BTA_ID_HL, p_acb->app_id, p_mcb->bd_addr);
+ switch (p_mcb->cch_oper) {
+ case BTA_HL_CCH_OP_LOCAL_OPEN:
+ bta_hl_build_cch_open_cfm(&evt_data, p_mcb->app_id, p_acb->app_handle,
+ p_mcb->mcl_handle, p_mcb->bd_addr,
+ BTA_HL_STATUS_OK);
+ event = BTA_HL_CCH_OPEN_CFM_EVT;
+ break;
+ case BTA_HL_CCH_OP_REMOTE_OPEN:
+ bta_hl_build_cch_open_ind(&evt_data, p_acb->app_handle, p_mcb->mcl_handle,
+ p_mcb->bd_addr);
+ event = BTA_HL_CCH_OPEN_IND_EVT;
+ break;
+ default:
+ send_event = false;
+ break;
+ }
- p_mcb->cch_oper = BTA_HL_CCH_OP_NONE;
- if (send_event) p_acb->p_cback(event,(tBTA_HL *) &evt_data );
+ p_mcb->cch_oper = BTA_HL_CCH_OP_NONE;
+ if (send_event) p_acb->p_cback(event, (tBTA_HL*)&evt_data);
}
/*******************************************************************************
@@ -2521,87 +2180,85 @@
* Returns void
*
******************************************************************************/
-void bta_hl_mcap_ctrl_cback (tMCA_HANDLE handle, tMCA_CL mcl, uint8_t event,
- tMCA_CTRL *p_data)
-{
- bool send_event=true;
- uint16_t mca_event;
+void bta_hl_mcap_ctrl_cback(tMCA_HANDLE handle, tMCA_CL mcl, uint8_t event,
+ tMCA_CTRL* p_data) {
+ bool send_event = true;
+ uint16_t mca_event;
#if (BTA_HL_DEBUG == TRUE)
#if (BT_TRACE_VERBOSE == TRUE)
- APPL_TRACE_EVENT("bta_hl_mcap_ctrl_cback event[%s]",bta_hl_mcap_evt_code(event));
+ APPL_TRACE_EVENT("bta_hl_mcap_ctrl_cback event[%s]",
+ bta_hl_mcap_evt_code(event));
#else
- APPL_TRACE_EVENT("bta_hl_mcap_ctrl_cback event[0x%02x]", event);
+ APPL_TRACE_EVENT("bta_hl_mcap_ctrl_cback event[0x%02x]", event);
#endif
#endif
- switch (event)
- {
+ switch (event) {
+ case MCA_CREATE_IND_EVT:
+ mca_event = (uint16_t)BTA_HL_MCA_CREATE_IND_EVT;
+ break;
+ case MCA_CREATE_CFM_EVT:
+ mca_event = (uint16_t)BTA_HL_MCA_CREATE_CFM_EVT;
+ break;
+ case MCA_RECONNECT_IND_EVT:
+ mca_event = (uint16_t)BTA_HL_MCA_RECONNECT_IND_EVT;
+ break;
+ case MCA_RECONNECT_CFM_EVT:
+ mca_event = (uint16_t)BTA_HL_MCA_RECONNECT_CFM_EVT;
+ break;
+ case MCA_ABORT_IND_EVT:
+ mca_event = (uint16_t)BTA_HL_MCA_ABORT_IND_EVT;
+ break;
+ case MCA_ABORT_CFM_EVT:
+ mca_event = (uint16_t)BTA_HL_MCA_ABORT_CFM_EVT;
+ break;
+ case MCA_DELETE_IND_EVT:
+ mca_event = (uint16_t)BTA_HL_MCA_DELETE_IND_EVT;
+ break;
+ case MCA_DELETE_CFM_EVT:
+ mca_event = (uint16_t)BTA_HL_MCA_DELETE_CFM_EVT;
+ break;
+ case MCA_CONNECT_IND_EVT:
+ mca_event = (uint16_t)BTA_HL_MCA_CONNECT_IND_EVT;
+ break;
+ case MCA_DISCONNECT_IND_EVT:
+ mca_event = (uint16_t)BTA_HL_MCA_DISCONNECT_IND_EVT;
+ break;
+ case MCA_OPEN_IND_EVT:
+ mca_event = (uint16_t)BTA_HL_MCA_OPEN_IND_EVT;
+ break;
+ case MCA_OPEN_CFM_EVT:
+ mca_event = (uint16_t)BTA_HL_MCA_OPEN_CFM_EVT;
+ break;
+ case MCA_CLOSE_IND_EVT:
+ mca_event = (uint16_t)BTA_HL_MCA_CLOSE_IND_EVT;
+ break;
+ case MCA_CLOSE_CFM_EVT:
+ mca_event = (uint16_t)BTA_HL_MCA_CLOSE_CFM_EVT;
+ break;
+ case MCA_CONG_CHG_EVT:
+ mca_event = (uint16_t)BTA_HL_MCA_CONG_CHG_EVT;
+ break;
+ case MCA_RSP_TOUT_IND_EVT:
+ mca_event = (uint16_t)BTA_HL_MCA_RSP_TOUT_IND_EVT;
+ break;
+ case MCA_ERROR_RSP_EVT:
- case MCA_CREATE_IND_EVT:
- mca_event = (uint16_t) BTA_HL_MCA_CREATE_IND_EVT;
- break;
- case MCA_CREATE_CFM_EVT:
- mca_event = (uint16_t) BTA_HL_MCA_CREATE_CFM_EVT;
- break;
- case MCA_RECONNECT_IND_EVT:
- mca_event = (uint16_t) BTA_HL_MCA_RECONNECT_IND_EVT;
- break;
- case MCA_RECONNECT_CFM_EVT:
- mca_event = (uint16_t) BTA_HL_MCA_RECONNECT_CFM_EVT;
- break;
- case MCA_ABORT_IND_EVT:
- mca_event = (uint16_t) BTA_HL_MCA_ABORT_IND_EVT;
- break;
- case MCA_ABORT_CFM_EVT:
- mca_event = (uint16_t) BTA_HL_MCA_ABORT_CFM_EVT;
- break;
- case MCA_DELETE_IND_EVT:
- mca_event = (uint16_t) BTA_HL_MCA_DELETE_IND_EVT;
- break;
- case MCA_DELETE_CFM_EVT:
- mca_event = (uint16_t) BTA_HL_MCA_DELETE_CFM_EVT;
- break;
- case MCA_CONNECT_IND_EVT:
- mca_event = (uint16_t) BTA_HL_MCA_CONNECT_IND_EVT;
- break;
- case MCA_DISCONNECT_IND_EVT:
- mca_event = (uint16_t) BTA_HL_MCA_DISCONNECT_IND_EVT;
- break;
- case MCA_OPEN_IND_EVT:
- mca_event = (uint16_t) BTA_HL_MCA_OPEN_IND_EVT;
- break;
- case MCA_OPEN_CFM_EVT:
- mca_event = (uint16_t) BTA_HL_MCA_OPEN_CFM_EVT;
- break;
- case MCA_CLOSE_IND_EVT:
- mca_event = (uint16_t) BTA_HL_MCA_CLOSE_IND_EVT;
- break;
- case MCA_CLOSE_CFM_EVT:
- mca_event = (uint16_t) BTA_HL_MCA_CLOSE_CFM_EVT;
- break;
- case MCA_CONG_CHG_EVT:
- mca_event = (uint16_t) BTA_HL_MCA_CONG_CHG_EVT;
- break;
- case MCA_RSP_TOUT_IND_EVT:
- mca_event = (uint16_t) BTA_HL_MCA_RSP_TOUT_IND_EVT;
- break;
- case MCA_ERROR_RSP_EVT:
+ default:
+ send_event = false;
+ break;
+ }
- default:
- send_event=false;
- break;
- }
-
- if (send_event) {
- tBTA_HL_MCA_EVT * p_msg =
- (tBTA_HL_MCA_EVT *)osi_malloc(sizeof(tBTA_HL_MCA_EVT));
- p_msg->hdr.event = mca_event;
- p_msg->app_handle = (tBTA_HL_APP_HANDLE) handle;
- p_msg->mcl_handle = (tBTA_HL_MCL_HANDLE) mcl;
- memcpy(&p_msg->mca_data, p_data, sizeof(tMCA_CTRL));
- bta_sys_sendmsg(p_msg);
- }
+ if (send_event) {
+ tBTA_HL_MCA_EVT* p_msg =
+ (tBTA_HL_MCA_EVT*)osi_malloc(sizeof(tBTA_HL_MCA_EVT));
+ p_msg->hdr.event = mca_event;
+ p_msg->app_handle = (tBTA_HL_APP_HANDLE)handle;
+ p_msg->mcl_handle = (tBTA_HL_MCL_HANDLE)mcl;
+ memcpy(&p_msg->mca_data, p_data, sizeof(tMCA_CTRL));
+ bta_sys_sendmsg(p_msg);
+ }
}
/*******************************************************************************
@@ -2613,20 +2270,19 @@
* Returns void
*
******************************************************************************/
-void bta_hl_mcap_data_cback (tMCA_DL mdl, BT_HDR *p_pkt)
-{
- uint8_t app_idx, mcl_idx, mdl_idx;
- if (bta_hl_find_mdl_idx_using_handle ((tBTA_HL_MDL_HANDLE)mdl, &app_idx, &mcl_idx, &mdl_idx))
- {
- tBTA_HL_MCA_RCV_DATA_EVT *p_msg =
- (tBTA_HL_MCA_RCV_DATA_EVT *)osi_malloc(sizeof(tBTA_HL_MCA_RCV_DATA_EVT));
- p_msg->hdr.event = BTA_HL_MCA_RCV_DATA_EVT;
- p_msg->app_idx = app_idx;
- p_msg->mcl_idx = mcl_idx;
- p_msg->mdl_idx = mdl_idx;
- p_msg->p_pkt = p_pkt;
- bta_sys_sendmsg(p_msg);
- }
+void bta_hl_mcap_data_cback(tMCA_DL mdl, BT_HDR* p_pkt) {
+ uint8_t app_idx, mcl_idx, mdl_idx;
+ if (bta_hl_find_mdl_idx_using_handle((tBTA_HL_MDL_HANDLE)mdl, &app_idx,
+ &mcl_idx, &mdl_idx)) {
+ tBTA_HL_MCA_RCV_DATA_EVT* p_msg =
+ (tBTA_HL_MCA_RCV_DATA_EVT*)osi_malloc(sizeof(tBTA_HL_MCA_RCV_DATA_EVT));
+ p_msg->hdr.event = BTA_HL_MCA_RCV_DATA_EVT;
+ p_msg->app_idx = app_idx;
+ p_msg->mcl_idx = mcl_idx;
+ p_msg->mdl_idx = mdl_idx;
+ p_msg->p_pkt = p_pkt;
+ bta_sys_sendmsg(p_msg);
+ }
}
/*****************************************************************************
@@ -2643,53 +2299,48 @@
* Returns char * - event string pointer
*
******************************************************************************/
-static char *bta_hl_mcap_evt_code(uint8_t evt_code)
-{
+static char* bta_hl_mcap_evt_code(uint8_t evt_code) {
+ switch (evt_code) {
+ case MCA_ERROR_RSP_EVT:
+ return "MCA_ERROR_RSP_EVT";
+ case MCA_CREATE_IND_EVT:
+ return "MCA_CREATE_IND_EVT";
+ case MCA_CREATE_CFM_EVT:
+ return "MCA_CREATE_CFM_EVT";
+ case MCA_RECONNECT_IND_EVT:
+ return "MCA_RECONNECT_IND_EVT";
+ case MCA_RECONNECT_CFM_EVT:
+ return "MCA_RECONNECT_CFM_EVT";
+ case MCA_ABORT_IND_EVT:
+ return "MCA_ABORT_IND_EVT";
+ case MCA_ABORT_CFM_EVT:
+ return "MCA_ABORT_CFM_EVT";
+ case MCA_DELETE_IND_EVT:
+ return "MCA_DELETE_IND_EVT";
+ case MCA_DELETE_CFM_EVT:
+ return "MCA_DELETE_CFM_EVT";
- switch (evt_code)
- {
-
- case MCA_ERROR_RSP_EVT:
- return "MCA_ERROR_RSP_EVT";
- case MCA_CREATE_IND_EVT:
- return "MCA_CREATE_IND_EVT";
- case MCA_CREATE_CFM_EVT:
- return "MCA_CREATE_CFM_EVT";
- case MCA_RECONNECT_IND_EVT:
- return "MCA_RECONNECT_IND_EVT";
- case MCA_RECONNECT_CFM_EVT:
- return "MCA_RECONNECT_CFM_EVT";
- case MCA_ABORT_IND_EVT:
- return "MCA_ABORT_IND_EVT";
- case MCA_ABORT_CFM_EVT:
- return "MCA_ABORT_CFM_EVT";
- case MCA_DELETE_IND_EVT:
- return "MCA_DELETE_IND_EVT";
- case MCA_DELETE_CFM_EVT:
- return "MCA_DELETE_CFM_EVT";
-
- case MCA_CONNECT_IND_EVT:
- return "MCA_CONNECT_IND_EVT";
- case MCA_DISCONNECT_IND_EVT:
- return "MCA_DISCONNECT_IND_EVT";
- case MCA_OPEN_IND_EVT:
- return "MCA_OPEN_IND_EVT";
- case MCA_OPEN_CFM_EVT:
- return "MCA_OPEN_CFM_EVT";
- case MCA_CLOSE_IND_EVT:
- return "MCA_CLOSE_IND_EVT";
- case MCA_CLOSE_CFM_EVT:
- return "MCA_CLOSE_CFM_EVT";
- case MCA_CONG_CHG_EVT:
- return "MCA_CONG_CHG_EVT";
- case MCA_RSP_TOUT_IND_EVT:
- return "MCA_RSP_TOUT_IND_EVT";
- default:
- return "Unknown MCAP event code";
- }
+ case MCA_CONNECT_IND_EVT:
+ return "MCA_CONNECT_IND_EVT";
+ case MCA_DISCONNECT_IND_EVT:
+ return "MCA_DISCONNECT_IND_EVT";
+ case MCA_OPEN_IND_EVT:
+ return "MCA_OPEN_IND_EVT";
+ case MCA_OPEN_CFM_EVT:
+ return "MCA_OPEN_CFM_EVT";
+ case MCA_CLOSE_IND_EVT:
+ return "MCA_CLOSE_IND_EVT";
+ case MCA_CLOSE_CFM_EVT:
+ return "MCA_CLOSE_CFM_EVT";
+ case MCA_CONG_CHG_EVT:
+ return "MCA_CONG_CHG_EVT";
+ case MCA_RSP_TOUT_IND_EVT:
+ return "MCA_RSP_TOUT_IND_EVT";
+ default:
+ return "Unknown MCAP event code";
+ }
}
-
/*******************************************************************************
*
* Function bta_hl_cback_evt_code
@@ -2699,61 +2350,55 @@
* Returns char * - event string pointer
*
******************************************************************************/
-static char *bta_hl_cback_evt_code(uint8_t evt_code)
-{
-
- switch (evt_code)
- {
-
- case BTA_HL_CCH_OPEN_IND_EVT:
- return "BTA_HL_CCH_OPEN_IND_EVT";
- case BTA_HL_CCH_OPEN_CFM_EVT:
- return "BTA_HL_CCH_OPEN_CFM_EVT";
- case BTA_HL_CCH_CLOSE_IND_EVT:
- return "BTA_HL_CCH_CLOSE_IND_EVT";
- case BTA_HL_CCH_CLOSE_CFM_EVT:
- return "BTA_HL_CCH_CLOSE_CFM_EVT";
- case BTA_HL_DCH_OPEN_IND_EVT:
- return "BTA_HL_DCH_OPEN_IND_EVT";
- case BTA_HL_DCH_OPEN_CFM_EVT:
- return "BTA_HL_DCH_OPEN_CFM_EVT";
- case BTA_HL_DCH_CLOSE_IND_EVT:
- return "BTA_HL_DCH_CLOSE_IND_EVT";
- case BTA_HL_DCH_CLOSE_CFM_EVT:
- return "BTA_HL_DCH_CLOSE_CFM_EVT";
- case BTA_HL_DCH_RCV_DATA_IND_EVT:
- return "BTA_HL_DCH_RCV_DATA_IND_EVT";
- case BTA_HL_REGISTER_CFM_EVT:
- return "BTA_HL_REGISTER_CFM_EVT";
- case BTA_HL_DEREGISTER_CFM_EVT:
- return "BTA_HL_DEREGISTER_CFM_EVT";
- case BTA_HL_DCH_RECONNECT_CFM_EVT:
- return "BTA_HL_DCH_RECONNECT_CFM_EVT";
- case BTA_HL_DCH_RECONNECT_IND_EVT:
- return "BTA_HL_DCH_RECONNECT_IND_EVT";
- case BTA_HL_DCH_ECHO_TEST_CFM_EVT:
- return "BTA_HL_DCH_ECHO_TEST_CFM_EVT";
- case BTA_HL_SDP_QUERY_CFM_EVT:
- return "BTA_HL_SDP_QUERY_CFM_EVT";
- case BTA_HL_CONG_CHG_IND_EVT:
- return "BTA_HL_CONG_CHG_IND_EVT";
- case BTA_HL_DCH_CREATE_IND_EVT:
- return "BTA_HL_DCH_CREATE_IND_EVT";
- case BTA_HL_DELETE_MDL_IND_EVT:
- return "BTA_HL_DELETE_MDL_IND_EVT";
- case BTA_HL_DELETE_MDL_CFM_EVT:
- return "BTA_HL_DELETE_MDL_CFM_EVT";
- case BTA_HL_DCH_ABORT_IND_EVT:
- return "BTA_HL_DCH_ABORT_IND_EVT";
- case BTA_HL_DCH_ABORT_CFM_EVT:
- return "BTA_HL_DCH_ABORT_CFM_EVT";
- default:
- return "Unknown HDP event code";
- }
+static char* bta_hl_cback_evt_code(uint8_t evt_code) {
+ switch (evt_code) {
+ case BTA_HL_CCH_OPEN_IND_EVT:
+ return "BTA_HL_CCH_OPEN_IND_EVT";
+ case BTA_HL_CCH_OPEN_CFM_EVT:
+ return "BTA_HL_CCH_OPEN_CFM_EVT";
+ case BTA_HL_CCH_CLOSE_IND_EVT:
+ return "BTA_HL_CCH_CLOSE_IND_EVT";
+ case BTA_HL_CCH_CLOSE_CFM_EVT:
+ return "BTA_HL_CCH_CLOSE_CFM_EVT";
+ case BTA_HL_DCH_OPEN_IND_EVT:
+ return "BTA_HL_DCH_OPEN_IND_EVT";
+ case BTA_HL_DCH_OPEN_CFM_EVT:
+ return "BTA_HL_DCH_OPEN_CFM_EVT";
+ case BTA_HL_DCH_CLOSE_IND_EVT:
+ return "BTA_HL_DCH_CLOSE_IND_EVT";
+ case BTA_HL_DCH_CLOSE_CFM_EVT:
+ return "BTA_HL_DCH_CLOSE_CFM_EVT";
+ case BTA_HL_DCH_RCV_DATA_IND_EVT:
+ return "BTA_HL_DCH_RCV_DATA_IND_EVT";
+ case BTA_HL_REGISTER_CFM_EVT:
+ return "BTA_HL_REGISTER_CFM_EVT";
+ case BTA_HL_DEREGISTER_CFM_EVT:
+ return "BTA_HL_DEREGISTER_CFM_EVT";
+ case BTA_HL_DCH_RECONNECT_CFM_EVT:
+ return "BTA_HL_DCH_RECONNECT_CFM_EVT";
+ case BTA_HL_DCH_RECONNECT_IND_EVT:
+ return "BTA_HL_DCH_RECONNECT_IND_EVT";
+ case BTA_HL_DCH_ECHO_TEST_CFM_EVT:
+ return "BTA_HL_DCH_ECHO_TEST_CFM_EVT";
+ case BTA_HL_SDP_QUERY_CFM_EVT:
+ return "BTA_HL_SDP_QUERY_CFM_EVT";
+ case BTA_HL_CONG_CHG_IND_EVT:
+ return "BTA_HL_CONG_CHG_IND_EVT";
+ case BTA_HL_DCH_CREATE_IND_EVT:
+ return "BTA_HL_DCH_CREATE_IND_EVT";
+ case BTA_HL_DELETE_MDL_IND_EVT:
+ return "BTA_HL_DELETE_MDL_IND_EVT";
+ case BTA_HL_DELETE_MDL_CFM_EVT:
+ return "BTA_HL_DELETE_MDL_CFM_EVT";
+ case BTA_HL_DCH_ABORT_IND_EVT:
+ return "BTA_HL_DCH_ABORT_IND_EVT";
+ case BTA_HL_DCH_ABORT_CFM_EVT:
+ return "BTA_HL_DCH_ABORT_CFM_EVT";
+ default:
+ return "Unknown HDP event code";
+ }
}
-
-
/*******************************************************************************
*
* Function bta_hl_dch_oper_code
@@ -2763,40 +2408,36 @@
* Returns char * - DCH operation string pointer
*
******************************************************************************/
-static char *bta_hl_dch_oper_code(tBTA_HL_DCH_OPER oper_code)
-{
-
- switch (oper_code)
- {
- case BTA_HL_DCH_OP_NONE:
- return "BTA_HL_DCH_OP_NONE";
- case BTA_HL_DCH_OP_REMOTE_CREATE:
- return "BTA_HL_DCH_OP_REMOTE_CREATE";
- case BTA_HL_DCH_OP_LOCAL_OPEN:
- return "BTA_HL_DCH_OP_LOCAL_OPEN";
- case BTA_HL_DCH_OP_REMOTE_OPEN:
- return "BTA_HL_DCH_OP_REMOTE_OPEN";
- case BTA_HL_DCH_OP_LOCAL_CLOSE:
- return "BTA_HL_DCH_OP_LOCAL_CLOSE";
- case BTA_HL_DCH_OP_REMOTE_CLOSE:
- return "BTA_HL_DCH_OP_REMOTE_CLOSE";
- case BTA_HL_DCH_OP_LOCAL_DELETE:
- return "BTA_HL_DCH_OP_LOCAL_DELETE";
- case BTA_HL_DCH_OP_REMOTE_DELETE:
- return "BTA_HL_DCH_OP_REMOTE_DELETE";
- case BTA_HL_DCH_OP_LOCAL_RECONNECT:
- return "BTA_HL_DCH_OP_LOCAL_RECONNECT";
- case BTA_HL_DCH_OP_REMOTE_RECONNECT:
- return "BTA_HL_DCH_OP_REMOTE_RECONNECT";
- case BTA_HL_DCH_OP_LOCAL_CLOSE_ECHO_TEST:
- return "BTA_HL_DCH_OP_LOCAL_CLOSE_ECHO_TEST";
- case BTA_HL_DCH_OP_LOCAL_CLOSE_RECONNECT:
- return "BTA_HL_DCH_OP_LOCAL_CLOSE_RECONNECT";
- default:
- return "Unknown DCH oper code";
- }
+static char* bta_hl_dch_oper_code(tBTA_HL_DCH_OPER oper_code) {
+ switch (oper_code) {
+ case BTA_HL_DCH_OP_NONE:
+ return "BTA_HL_DCH_OP_NONE";
+ case BTA_HL_DCH_OP_REMOTE_CREATE:
+ return "BTA_HL_DCH_OP_REMOTE_CREATE";
+ case BTA_HL_DCH_OP_LOCAL_OPEN:
+ return "BTA_HL_DCH_OP_LOCAL_OPEN";
+ case BTA_HL_DCH_OP_REMOTE_OPEN:
+ return "BTA_HL_DCH_OP_REMOTE_OPEN";
+ case BTA_HL_DCH_OP_LOCAL_CLOSE:
+ return "BTA_HL_DCH_OP_LOCAL_CLOSE";
+ case BTA_HL_DCH_OP_REMOTE_CLOSE:
+ return "BTA_HL_DCH_OP_REMOTE_CLOSE";
+ case BTA_HL_DCH_OP_LOCAL_DELETE:
+ return "BTA_HL_DCH_OP_LOCAL_DELETE";
+ case BTA_HL_DCH_OP_REMOTE_DELETE:
+ return "BTA_HL_DCH_OP_REMOTE_DELETE";
+ case BTA_HL_DCH_OP_LOCAL_RECONNECT:
+ return "BTA_HL_DCH_OP_LOCAL_RECONNECT";
+ case BTA_HL_DCH_OP_REMOTE_RECONNECT:
+ return "BTA_HL_DCH_OP_REMOTE_RECONNECT";
+ case BTA_HL_DCH_OP_LOCAL_CLOSE_ECHO_TEST:
+ return "BTA_HL_DCH_OP_LOCAL_CLOSE_ECHO_TEST";
+ case BTA_HL_DCH_OP_LOCAL_CLOSE_RECONNECT:
+ return "BTA_HL_DCH_OP_LOCAL_CLOSE_RECONNECT";
+ default:
+ return "Unknown DCH oper code";
+ }
}
-
-#endif /* Debug Functions */
+#endif /* Debug Functions */
#endif /* HL_INCLUDED */
diff --git a/bta/hl/bta_hl_api.cc b/bta/hl/bta_hl_api.cc
index a8ba036..93e853c 100644
--- a/bta/hl/bta_hl_api.cc
+++ b/bta/hl/bta_hl_api.cc
@@ -37,11 +37,7 @@
* Constants
****************************************************************************/
-static const tBTA_SYS_REG bta_hl_reg =
-{
- bta_hl_hdl_event,
- BTA_HlDisable
-};
+static const tBTA_SYS_REG bta_hl_reg = {bta_hl_hdl_event, BTA_HlDisable};
/*******************************************************************************
*
@@ -57,18 +53,17 @@
* Returns void
*
******************************************************************************/
-void BTA_HlEnable(tBTA_HL_CTRL_CBACK *p_ctrl_cback)
-{
- tBTA_HL_API_ENABLE *p_buf =
- (tBTA_HL_API_ENABLE *)osi_malloc(sizeof(tBTA_HL_API_ENABLE));
+void BTA_HlEnable(tBTA_HL_CTRL_CBACK* p_ctrl_cback) {
+ tBTA_HL_API_ENABLE* p_buf =
+ (tBTA_HL_API_ENABLE*)osi_malloc(sizeof(tBTA_HL_API_ENABLE));
- /* register with BTA system manager */
- bta_sys_register(BTA_ID_HL, &bta_hl_reg);
+ /* register with BTA system manager */
+ bta_sys_register(BTA_ID_HL, &bta_hl_reg);
- p_buf->hdr.event = BTA_HL_API_ENABLE_EVT;
- p_buf->p_cback = p_ctrl_cback;
+ p_buf->hdr.event = BTA_HL_API_ENABLE_EVT;
+ p_buf->p_cback = p_ctrl_cback;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -80,14 +75,13 @@
* Returns void
*
******************************************************************************/
-void BTA_HlDisable(void)
-{
- BT_HDR *p_buf = (BT_HDR *)osi_malloc(sizeof(BT_HDR));
+void BTA_HlDisable(void) {
+ BT_HDR* p_buf = (BT_HDR*)osi_malloc(sizeof(BT_HDR));
- bta_sys_deregister(BTA_ID_HL);
- p_buf->event = BTA_HL_API_DISABLE_EVT;
+ bta_sys_deregister(BTA_ID_HL);
+ p_buf->event = BTA_HL_API_DISABLE_EVT;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -104,38 +98,39 @@
* Returns void
*
******************************************************************************/
-void BTA_HlUpdate(uint8_t app_id, tBTA_HL_REG_PARAM *p_reg_param,
- bool is_register, tBTA_HL_CBACK *p_cback)
-{
- tBTA_HL_API_UPDATE *p_buf =
- (tBTA_HL_API_UPDATE *)osi_malloc(sizeof(tBTA_HL_API_UPDATE));
+void BTA_HlUpdate(uint8_t app_id, tBTA_HL_REG_PARAM* p_reg_param,
+ bool is_register, tBTA_HL_CBACK* p_cback) {
+ tBTA_HL_API_UPDATE* p_buf =
+ (tBTA_HL_API_UPDATE*)osi_malloc(sizeof(tBTA_HL_API_UPDATE));
- APPL_TRACE_DEBUG("%s", __func__);
+ APPL_TRACE_DEBUG("%s", __func__);
- p_buf->hdr.event = BTA_HL_API_UPDATE_EVT;
- p_buf->app_id = app_id;
- p_buf->is_register = is_register;
+ p_buf->hdr.event = BTA_HL_API_UPDATE_EVT;
+ p_buf->app_id = app_id;
+ p_buf->is_register = is_register;
- if (is_register) {
- p_buf->sec_mask = (p_reg_param->sec_mask | BTA_SEC_AUTHENTICATE | BTA_SEC_ENCRYPT);
- p_buf->p_cback = p_cback;
- if (p_reg_param->p_srv_name)
- strlcpy(p_buf->srv_name, p_reg_param->p_srv_name, BTA_SERVICE_NAME_LEN);
- else
- p_buf->srv_name[0] = 0;
+ if (is_register) {
+ p_buf->sec_mask =
+ (p_reg_param->sec_mask | BTA_SEC_AUTHENTICATE | BTA_SEC_ENCRYPT);
+ p_buf->p_cback = p_cback;
+ if (p_reg_param->p_srv_name)
+ strlcpy(p_buf->srv_name, p_reg_param->p_srv_name, BTA_SERVICE_NAME_LEN);
+ else
+ p_buf->srv_name[0] = 0;
- if (p_reg_param->p_srv_desp)
- strlcpy(p_buf->srv_desp, p_reg_param->p_srv_desp, BTA_SERVICE_DESP_LEN);
- else
- p_buf->srv_desp[0] = 0;
+ if (p_reg_param->p_srv_desp)
+ strlcpy(p_buf->srv_desp, p_reg_param->p_srv_desp, BTA_SERVICE_DESP_LEN);
+ else
+ p_buf->srv_desp[0] = 0;
- if (p_reg_param->p_provider_name)
- strlcpy(p_buf->provider_name, p_reg_param->p_provider_name, BTA_PROVIDER_NAME_LEN);
- else
- p_buf->provider_name[0] = 0;
- }
+ if (p_reg_param->p_provider_name)
+ strlcpy(p_buf->provider_name, p_reg_param->p_provider_name,
+ BTA_PROVIDER_NAME_LEN);
+ else
+ p_buf->provider_name[0] = 0;
+ }
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -152,34 +147,34 @@
* Returns void
*
******************************************************************************/
-void BTA_HlRegister(uint8_t app_id,
- tBTA_HL_REG_PARAM *p_reg_param,
- tBTA_HL_CBACK *p_cback)
-{
- tBTA_HL_API_REGISTER *p_buf =
- (tBTA_HL_API_REGISTER *)osi_malloc(sizeof(tBTA_HL_API_REGISTER));
+void BTA_HlRegister(uint8_t app_id, tBTA_HL_REG_PARAM* p_reg_param,
+ tBTA_HL_CBACK* p_cback) {
+ tBTA_HL_API_REGISTER* p_buf =
+ (tBTA_HL_API_REGISTER*)osi_malloc(sizeof(tBTA_HL_API_REGISTER));
- p_buf->hdr.event = BTA_HL_API_REGISTER_EVT;
- p_buf->app_id = app_id;
- p_buf->sec_mask = (p_reg_param->sec_mask | BTA_SEC_AUTHENTICATE | BTA_SEC_ENCRYPT);
- p_buf->p_cback = p_cback;
+ p_buf->hdr.event = BTA_HL_API_REGISTER_EVT;
+ p_buf->app_id = app_id;
+ p_buf->sec_mask =
+ (p_reg_param->sec_mask | BTA_SEC_AUTHENTICATE | BTA_SEC_ENCRYPT);
+ p_buf->p_cback = p_cback;
- if (p_reg_param->p_srv_name)
- strlcpy(p_buf->srv_name, p_reg_param->p_srv_name, BTA_SERVICE_NAME_LEN);
- else
- p_buf->srv_name[0] = 0;
+ if (p_reg_param->p_srv_name)
+ strlcpy(p_buf->srv_name, p_reg_param->p_srv_name, BTA_SERVICE_NAME_LEN);
+ else
+ p_buf->srv_name[0] = 0;
- if (p_reg_param->p_srv_desp)
- strlcpy(p_buf->srv_desp, p_reg_param->p_srv_desp, BTA_SERVICE_DESP_LEN);
- else
- p_buf->srv_desp[0] = 0;
+ if (p_reg_param->p_srv_desp)
+ strlcpy(p_buf->srv_desp, p_reg_param->p_srv_desp, BTA_SERVICE_DESP_LEN);
+ else
+ p_buf->srv_desp[0] = 0;
- if (p_reg_param->p_provider_name)
- strlcpy(p_buf->provider_name, p_reg_param->p_provider_name, BTA_PROVIDER_NAME_LEN);
- else
- p_buf->provider_name[0] = 0;
+ if (p_reg_param->p_provider_name)
+ strlcpy(p_buf->provider_name, p_reg_param->p_provider_name,
+ BTA_PROVIDER_NAME_LEN);
+ else
+ p_buf->provider_name[0] = 0;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -193,23 +188,23 @@
* Returns void
*
******************************************************************************/
-void BTA_HlDeregister(uint8_t app_id,tBTA_HL_APP_HANDLE app_handle)
-{
- tBTA_HL_API_DEREGISTER *p_buf =
- (tBTA_HL_API_DEREGISTER *)osi_malloc(sizeof(tBTA_HL_API_DEREGISTER));
+void BTA_HlDeregister(uint8_t app_id, tBTA_HL_APP_HANDLE app_handle) {
+ tBTA_HL_API_DEREGISTER* p_buf =
+ (tBTA_HL_API_DEREGISTER*)osi_malloc(sizeof(tBTA_HL_API_DEREGISTER));
- p_buf->hdr.event = BTA_HL_API_DEREGISTER_EVT;
- p_buf->app_id = app_id;
- p_buf->app_handle = app_handle;
+ p_buf->hdr.event = BTA_HL_API_DEREGISTER_EVT;
+ p_buf->app_id = app_id;
+ p_buf->app_handle = app_handle;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
*
* Function BTA_HlCchOpen
*
- * Description Open a Control channel connection with the specified BD address
+ * Description Open a Control channel connection with the specified BD
+ *address
*
* Parameters app_handle - Application Handle
* p_open_param - parameters for opening a control channel
@@ -218,23 +213,25 @@
*
* Note: The control PSM value is used to select which
* HDP insatnce should be used in case the peer device support
- * multiple HDP instances. Also, if the control PSM value is zero
- * then the first HDP instance is used for the control channel setup
+ * multiple HDP instances. Also, if the control PSM value is
+ *zero
+ * then the first HDP instance is used for the control channel
+ *setup
******************************************************************************/
void BTA_HlCchOpen(uint8_t app_id, tBTA_HL_APP_HANDLE app_handle,
- tBTA_HL_CCH_OPEN_PARAM *p_open_param)
-{
- tBTA_HL_API_CCH_OPEN *p_buf =
- (tBTA_HL_API_CCH_OPEN *)osi_malloc(sizeof(tBTA_HL_API_CCH_OPEN));
+ tBTA_HL_CCH_OPEN_PARAM* p_open_param) {
+ tBTA_HL_API_CCH_OPEN* p_buf =
+ (tBTA_HL_API_CCH_OPEN*)osi_malloc(sizeof(tBTA_HL_API_CCH_OPEN));
- p_buf->hdr.event = BTA_HL_API_CCH_OPEN_EVT;
- p_buf->app_id = app_id;
- p_buf->app_handle = app_handle;
- p_buf->sec_mask = (p_open_param->sec_mask | BTA_SEC_AUTHENTICATE | BTA_SEC_ENCRYPT);
- bdcpy(p_buf->bd_addr, p_open_param->bd_addr);
- p_buf->ctrl_psm = p_open_param->ctrl_psm;
+ p_buf->hdr.event = BTA_HL_API_CCH_OPEN_EVT;
+ p_buf->app_id = app_id;
+ p_buf->app_handle = app_handle;
+ p_buf->sec_mask =
+ (p_open_param->sec_mask | BTA_SEC_AUTHENTICATE | BTA_SEC_ENCRYPT);
+ bdcpy(p_buf->bd_addr, p_open_param->bd_addr);
+ p_buf->ctrl_psm = p_open_param->ctrl_psm;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -249,22 +246,22 @@
* Returns void
*
******************************************************************************/
-void BTA_HlCchClose(tBTA_HL_MCL_HANDLE mcl_handle)
-{
- tBTA_HL_API_CCH_CLOSE *p_buf =
- (tBTA_HL_API_CCH_CLOSE *)osi_malloc(sizeof(tBTA_HL_API_CCH_CLOSE));
+void BTA_HlCchClose(tBTA_HL_MCL_HANDLE mcl_handle) {
+ tBTA_HL_API_CCH_CLOSE* p_buf =
+ (tBTA_HL_API_CCH_CLOSE*)osi_malloc(sizeof(tBTA_HL_API_CCH_CLOSE));
- p_buf->hdr.event = BTA_HL_API_CCH_CLOSE_EVT;
- p_buf->mcl_handle = mcl_handle;
+ p_buf->hdr.event = BTA_HL_API_CCH_CLOSE_EVT;
+ p_buf->mcl_handle = mcl_handle;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
*
* Function BTA_HlDchOpen
*
- * Description Open a data channel connection with the specified DCH parameters
+ * Description Open a data channel connection with the specified DCH
+ *parameters
*
* Parameters mcl_handle - MCL handle
* p_open_param - parameters for opening a data channel
@@ -273,20 +270,20 @@
*
******************************************************************************/
void BTA_HlDchOpen(tBTA_HL_MCL_HANDLE mcl_handle,
- tBTA_HL_DCH_OPEN_PARAM *p_open_param)
-{
- tBTA_HL_API_DCH_OPEN *p_buf =
- (tBTA_HL_API_DCH_OPEN *)osi_malloc(sizeof(tBTA_HL_API_DCH_OPEN));
+ tBTA_HL_DCH_OPEN_PARAM* p_open_param) {
+ tBTA_HL_API_DCH_OPEN* p_buf =
+ (tBTA_HL_API_DCH_OPEN*)osi_malloc(sizeof(tBTA_HL_API_DCH_OPEN));
- p_buf->hdr.event = BTA_HL_API_DCH_OPEN_EVT;
- p_buf->mcl_handle = mcl_handle;
- p_buf->ctrl_psm = p_open_param->ctrl_psm;
- p_buf->local_mdep_id = p_open_param->local_mdep_id;
- p_buf->peer_mdep_id = p_open_param->peer_mdep_id;
- p_buf->local_cfg = p_open_param->local_cfg;
- p_buf->sec_mask = (p_open_param->sec_mask | BTA_SEC_AUTHENTICATE | BTA_SEC_ENCRYPT);
+ p_buf->hdr.event = BTA_HL_API_DCH_OPEN_EVT;
+ p_buf->mcl_handle = mcl_handle;
+ p_buf->ctrl_psm = p_open_param->ctrl_psm;
+ p_buf->local_mdep_id = p_open_param->local_mdep_id;
+ p_buf->peer_mdep_id = p_open_param->peer_mdep_id;
+ p_buf->local_cfg = p_open_param->local_cfg;
+ p_buf->sec_mask =
+ (p_open_param->sec_mask | BTA_SEC_AUTHENTICATE | BTA_SEC_ENCRYPT);
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -302,17 +299,16 @@
*
******************************************************************************/
void BTA_HlDchReconnect(tBTA_HL_MCL_HANDLE mcl_handle,
- tBTA_HL_DCH_RECONNECT_PARAM *p_recon_param)
-{
- tBTA_HL_API_DCH_RECONNECT *p_buf =
- (tBTA_HL_API_DCH_RECONNECT *)osi_malloc(sizeof(tBTA_HL_API_DCH_RECONNECT));
+ tBTA_HL_DCH_RECONNECT_PARAM* p_recon_param) {
+ tBTA_HL_API_DCH_RECONNECT* p_buf =
+ (tBTA_HL_API_DCH_RECONNECT*)osi_malloc(sizeof(tBTA_HL_API_DCH_RECONNECT));
- p_buf->hdr.event = BTA_HL_API_DCH_RECONNECT_EVT;
- p_buf->mcl_handle = mcl_handle;
- p_buf->ctrl_psm = p_recon_param->ctrl_psm;
- p_buf->mdl_id = p_recon_param->mdl_id;
+ p_buf->hdr.event = BTA_HL_API_DCH_RECONNECT_EVT;
+ p_buf->mcl_handle = mcl_handle;
+ p_buf->ctrl_psm = p_recon_param->ctrl_psm;
+ p_buf->mdl_id = p_recon_param->mdl_id;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -326,15 +322,14 @@
* Returns void
*
******************************************************************************/
-void BTA_HlDchClose(tBTA_HL_MDL_HANDLE mdl_handle)
-{
- tBTA_HL_API_DCH_CLOSE *p_buf =
- (tBTA_HL_API_DCH_CLOSE *)osi_malloc(sizeof(tBTA_HL_API_DCH_CLOSE));
+void BTA_HlDchClose(tBTA_HL_MDL_HANDLE mdl_handle) {
+ tBTA_HL_API_DCH_CLOSE* p_buf =
+ (tBTA_HL_API_DCH_CLOSE*)osi_malloc(sizeof(tBTA_HL_API_DCH_CLOSE));
- p_buf->hdr.event = BTA_HL_API_DCH_CLOSE_EVT;
- p_buf->mdl_handle = mdl_handle;
+ p_buf->hdr.event = BTA_HL_API_DCH_CLOSE_EVT;
+ p_buf->mdl_handle = mdl_handle;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -350,15 +345,14 @@
* Returns void
*
******************************************************************************/
-void BTA_HlDchAbort(tBTA_HL_MCL_HANDLE mcl_handle)
-{
- tBTA_HL_API_DCH_ABORT *p_buf =
- (tBTA_HL_API_DCH_ABORT *)osi_malloc(sizeof(tBTA_HL_API_DCH_ABORT));
+void BTA_HlDchAbort(tBTA_HL_MCL_HANDLE mcl_handle) {
+ tBTA_HL_API_DCH_ABORT* p_buf =
+ (tBTA_HL_API_DCH_ABORT*)osi_malloc(sizeof(tBTA_HL_API_DCH_ABORT));
- p_buf->hdr.event = BTA_HL_API_DCH_ABORT_EVT;
- p_buf->mcl_handle = mcl_handle;
+ p_buf->hdr.event = BTA_HL_API_DCH_ABORT_EVT;
+ p_buf->mcl_handle = mcl_handle;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -373,17 +367,15 @@
* Returns void
*
******************************************************************************/
-void BTA_HlSendData(tBTA_HL_MDL_HANDLE mdl_handle,
- uint16_t pkt_size)
-{
- tBTA_HL_API_SEND_DATA *p_buf =
- (tBTA_HL_API_SEND_DATA *)osi_malloc(sizeof(tBTA_HL_API_SEND_DATA));
+void BTA_HlSendData(tBTA_HL_MDL_HANDLE mdl_handle, uint16_t pkt_size) {
+ tBTA_HL_API_SEND_DATA* p_buf =
+ (tBTA_HL_API_SEND_DATA*)osi_malloc(sizeof(tBTA_HL_API_SEND_DATA));
- p_buf->hdr.event = BTA_HL_API_SEND_DATA_EVT;
- p_buf->mdl_handle = mdl_handle;
- p_buf->pkt_size = pkt_size;
+ p_buf->hdr.event = BTA_HL_API_SEND_DATA_EVT;
+ p_buf->mdl_handle = mdl_handle;
+ p_buf->pkt_size = pkt_size;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -398,21 +390,20 @@
* Returns void
*
* note: If mdl_id = 0xFFFF then this means to delete all MDLs
- * and this value can only be used with DeleteMdl request only
+ * and this value can only be used with DeleteMdl request
+ *only
* not other requests
*
******************************************************************************/
-void BTA_HlDeleteMdl(tBTA_HL_MCL_HANDLE mcl_handle,
- tBTA_HL_MDL_ID mdl_id )
-{
- tBTA_HL_API_DELETE_MDL *p_buf =
- (tBTA_HL_API_DELETE_MDL *)osi_malloc(sizeof(tBTA_HL_API_DELETE_MDL));
+void BTA_HlDeleteMdl(tBTA_HL_MCL_HANDLE mcl_handle, tBTA_HL_MDL_ID mdl_id) {
+ tBTA_HL_API_DELETE_MDL* p_buf =
+ (tBTA_HL_API_DELETE_MDL*)osi_malloc(sizeof(tBTA_HL_API_DELETE_MDL));
- p_buf->hdr.event = BTA_HL_API_DELETE_MDL_EVT;
- p_buf->mcl_handle = mcl_handle;
- p_buf->mdl_id = mdl_id;
+ p_buf->hdr.event = BTA_HL_API_DELETE_MDL_EVT;
+ p_buf->mcl_handle = mcl_handle;
+ p_buf->mdl_id = mdl_id;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -427,19 +418,18 @@
* Returns void
*
******************************************************************************/
-void BTA_HlDchEchoTest( tBTA_HL_MCL_HANDLE mcl_handle,
- tBTA_HL_DCH_ECHO_TEST_PARAM *p_echo_test_param)
-{
- tBTA_HL_API_DCH_ECHO_TEST *p_buf =
- (tBTA_HL_API_DCH_ECHO_TEST *)osi_malloc(sizeof(tBTA_HL_API_DCH_ECHO_TEST));
+void BTA_HlDchEchoTest(tBTA_HL_MCL_HANDLE mcl_handle,
+ tBTA_HL_DCH_ECHO_TEST_PARAM* p_echo_test_param) {
+ tBTA_HL_API_DCH_ECHO_TEST* p_buf =
+ (tBTA_HL_API_DCH_ECHO_TEST*)osi_malloc(sizeof(tBTA_HL_API_DCH_ECHO_TEST));
- p_buf->hdr.event = BTA_HL_API_DCH_ECHO_TEST_EVT;
- p_buf->mcl_handle = mcl_handle;
- p_buf->ctrl_psm = p_echo_test_param->ctrl_psm;
- p_buf->local_cfg = p_echo_test_param->local_cfg;
- p_buf->pkt_size = p_echo_test_param->pkt_size;
+ p_buf->hdr.event = BTA_HL_API_DCH_ECHO_TEST_EVT;
+ p_buf->mcl_handle = mcl_handle;
+ p_buf->ctrl_psm = p_echo_test_param->ctrl_psm;
+ p_buf->local_cfg = p_echo_test_param->local_cfg;
+ p_buf->pkt_size = p_echo_test_param->pkt_size;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -454,18 +444,17 @@
* Returns void
*
******************************************************************************/
-void BTA_HlSdpQuery(uint8_t app_id,tBTA_HL_APP_HANDLE app_handle,
- BD_ADDR bd_addr)
-{
- tBTA_HL_API_SDP_QUERY *p_buf =
- (tBTA_HL_API_SDP_QUERY *)osi_malloc(sizeof(tBTA_HL_API_SDP_QUERY));
+void BTA_HlSdpQuery(uint8_t app_id, tBTA_HL_APP_HANDLE app_handle,
+ BD_ADDR bd_addr) {
+ tBTA_HL_API_SDP_QUERY* p_buf =
+ (tBTA_HL_API_SDP_QUERY*)osi_malloc(sizeof(tBTA_HL_API_SDP_QUERY));
- p_buf->hdr.event = BTA_HL_API_SDP_QUERY_EVT;
- p_buf->app_id = app_id;
- p_buf->app_handle = app_handle;
- bdcpy(p_buf->bd_addr, bd_addr);
+ p_buf->hdr.event = BTA_HL_API_SDP_QUERY_EVT;
+ p_buf->app_id = app_id;
+ p_buf->app_handle = app_handle;
+ bdcpy(p_buf->bd_addr, bd_addr);
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -476,28 +465,30 @@
* request
*
* Parameters mcl_handle - MCL handle
- * p_rsp_param - parameters specified whether the request should
- * be accepted or not and if it should be accepted
- * then it also specified the configuration response
+ * p_rsp_param - parameters specified whether the request
+ *should
+ * be accepted or not and if it should be
+ *accepted
+ * then it also specified the configuration
+ *response
* value
*
* Returns void
*
******************************************************************************/
void BTA_HlDchCreateRsp(tBTA_HL_MCL_HANDLE mcl_handle,
- tBTA_HL_DCH_CREATE_RSP_PARAM *p_rsp_param)
-{
- tBTA_HL_API_DCH_CREATE_RSP *p_buf =
- (tBTA_HL_API_DCH_CREATE_RSP *)osi_malloc(sizeof(tBTA_HL_API_DCH_CREATE_RSP));
+ tBTA_HL_DCH_CREATE_RSP_PARAM* p_rsp_param) {
+ tBTA_HL_API_DCH_CREATE_RSP* p_buf = (tBTA_HL_API_DCH_CREATE_RSP*)osi_malloc(
+ sizeof(tBTA_HL_API_DCH_CREATE_RSP));
- p_buf->hdr.event = BTA_HL_API_DCH_CREATE_RSP_EVT;
- p_buf->mcl_handle = mcl_handle;
- p_buf->mdl_id = p_rsp_param->mdl_id;
- p_buf->local_mdep_id = p_rsp_param->local_mdep_id;
- p_buf->rsp_code = p_rsp_param->rsp_code;
- p_buf->cfg_rsp = p_rsp_param->cfg_rsp;
+ p_buf->hdr.event = BTA_HL_API_DCH_CREATE_RSP_EVT;
+ p_buf->mcl_handle = mcl_handle;
+ p_buf->mdl_id = p_rsp_param->mdl_id;
+ p_buf->local_mdep_id = p_rsp_param->local_mdep_id;
+ p_buf->rsp_code = p_rsp_param->rsp_code;
+ p_buf->cfg_rsp = p_rsp_param->cfg_rsp;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
#endif /* HL_INCLUDED */
diff --git a/bta/hl/bta_hl_ci.cc b/bta/hl/bta_hl_ci.cc
index 2289474..b7bc2fd 100644
--- a/bta/hl/bta_hl_ci.cc
+++ b/bta/hl/bta_hl_ci.cc
@@ -26,12 +26,12 @@
#include <stddef.h>
#include "bta_api.h"
-#include "btm_api.h"
-#include "bta_sys.h"
#include "bta_hl_api.h"
#include "bta_hl_ci.h"
#include "bta_hl_co.h"
#include "bta_hl_int.h"
+#include "bta_sys.h"
+#include "btm_api.h"
/*******************************************************************************
*
@@ -48,22 +48,21 @@
* Returns void
*
******************************************************************************/
-void bta_hl_ci_get_tx_data(tBTA_HL_MDL_HANDLE mdl_handle,
- tBTA_HL_STATUS status, uint16_t evt)
-{
- tBTA_HL_CI_GET_PUT_DATA *p_evt =
- (tBTA_HL_CI_GET_PUT_DATA *)osi_malloc(sizeof(tBTA_HL_CI_GET_PUT_DATA));
+void bta_hl_ci_get_tx_data(tBTA_HL_MDL_HANDLE mdl_handle, tBTA_HL_STATUS status,
+ uint16_t evt) {
+ tBTA_HL_CI_GET_PUT_DATA* p_evt =
+ (tBTA_HL_CI_GET_PUT_DATA*)osi_malloc(sizeof(tBTA_HL_CI_GET_PUT_DATA));
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("%s mdl_handle=%d status=%d evt=%d\n", __func__,
- mdl_handle, status, evt);
+ APPL_TRACE_DEBUG("%s mdl_handle=%d status=%d evt=%d\n", __func__, mdl_handle,
+ status, evt);
#endif
- p_evt->hdr.event = evt;
- p_evt->mdl_handle = mdl_handle;
- p_evt->status = status;
+ p_evt->hdr.event = evt;
+ p_evt->mdl_handle = mdl_handle;
+ p_evt->status = status;
- bta_sys_sendmsg(p_evt);
+ bta_sys_sendmsg(p_evt);
}
/*******************************************************************************
@@ -81,23 +80,21 @@
* Returns void
*
******************************************************************************/
-extern void bta_hl_ci_put_rx_data( tBTA_HL_MDL_HANDLE mdl_handle,
- tBTA_HL_STATUS status,
- uint16_t evt )
-{
- tBTA_HL_CI_GET_PUT_DATA *p_evt =
- (tBTA_HL_CI_GET_PUT_DATA *)osi_malloc(sizeof(tBTA_HL_CI_GET_PUT_DATA));
+extern void bta_hl_ci_put_rx_data(tBTA_HL_MDL_HANDLE mdl_handle,
+ tBTA_HL_STATUS status, uint16_t evt) {
+ tBTA_HL_CI_GET_PUT_DATA* p_evt =
+ (tBTA_HL_CI_GET_PUT_DATA*)osi_malloc(sizeof(tBTA_HL_CI_GET_PUT_DATA));
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("%s mdl_handle=%d status=%d evt=%d\n", __func__,
- mdl_handle, status, evt);
+ APPL_TRACE_DEBUG("%s mdl_handle=%d status=%d evt=%d\n", __func__, mdl_handle,
+ status, evt);
#endif
- p_evt->hdr.event = evt;
- p_evt->mdl_handle = mdl_handle;
- p_evt->status = status;
+ p_evt->hdr.event = evt;
+ p_evt->mdl_handle = mdl_handle;
+ p_evt->status = status;
- bta_sys_sendmsg(p_evt);
+ bta_sys_sendmsg(p_evt);
}
/*******************************************************************************
@@ -115,23 +112,21 @@
* Returns void
*
******************************************************************************/
-extern void bta_hl_ci_get_echo_data( tBTA_HL_MCL_HANDLE mcl_handle,
- tBTA_HL_STATUS status,
- uint16_t evt )
-{
- tBTA_HL_CI_ECHO_DATA *p_evt =
- (tBTA_HL_CI_ECHO_DATA *)osi_malloc(sizeof(tBTA_HL_CI_ECHO_DATA));
+extern void bta_hl_ci_get_echo_data(tBTA_HL_MCL_HANDLE mcl_handle,
+ tBTA_HL_STATUS status, uint16_t evt) {
+ tBTA_HL_CI_ECHO_DATA* p_evt =
+ (tBTA_HL_CI_ECHO_DATA*)osi_malloc(sizeof(tBTA_HL_CI_ECHO_DATA));
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("%s mcl_handle=%d status=%d evt=%d\n", __func__,
- mcl_handle, status, evt);
+ APPL_TRACE_DEBUG("%s mcl_handle=%d status=%d evt=%d\n", __func__, mcl_handle,
+ status, evt);
#endif
- p_evt->hdr.event = evt;
- p_evt->mcl_handle = mcl_handle;
- p_evt->status = status;
+ p_evt->hdr.event = evt;
+ p_evt->mcl_handle = mcl_handle;
+ p_evt->status = status;
- bta_sys_sendmsg(p_evt);
+ bta_sys_sendmsg(p_evt);
}
/*******************************************************************************
@@ -149,21 +144,19 @@
* Returns void
*
******************************************************************************/
-extern void bta_hl_ci_put_echo_data( tBTA_HL_MCL_HANDLE mcl_handle,
- tBTA_HL_STATUS status,
- uint16_t evt )
-{
- tBTA_HL_CI_ECHO_DATA *p_evt =
- (tBTA_HL_CI_ECHO_DATA *)osi_malloc(sizeof(tBTA_HL_CI_ECHO_DATA));
+extern void bta_hl_ci_put_echo_data(tBTA_HL_MCL_HANDLE mcl_handle,
+ tBTA_HL_STATUS status, uint16_t evt) {
+ tBTA_HL_CI_ECHO_DATA* p_evt =
+ (tBTA_HL_CI_ECHO_DATA*)osi_malloc(sizeof(tBTA_HL_CI_ECHO_DATA));
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("%s mcl_handle=%d status=%d evt=%d\n", __func__,
- mcl_handle, status, evt);
+ APPL_TRACE_DEBUG("%s mcl_handle=%d status=%d evt=%d\n", __func__, mcl_handle,
+ status, evt);
#endif
- p_evt->hdr.event = evt;
- p_evt->mcl_handle = mcl_handle;
- p_evt->status = status;
+ p_evt->hdr.event = evt;
+ p_evt->mcl_handle = mcl_handle;
+ p_evt->status = status;
- bta_sys_sendmsg(p_evt);
+ bta_sys_sendmsg(p_evt);
}
diff --git a/bta/hl/bta_hl_int.h b/bta/hl/bta_hl_int.h
index cc6139d..e5acb52 100644
--- a/bta/hl/bta_hl_int.h
+++ b/bta/hl/bta_hl_int.h
@@ -26,547 +26,511 @@
#define BTA_HL_INT_H
#include "bt_target.h"
-#include "bta_sys.h"
#include "bta_hl_api.h"
#include "bta_hl_co.h"
+#include "bta_sys.h"
#include "l2cdefs.h"
#ifdef __cplusplus
extern "C" {
#endif
-typedef uint16_t (tBTA_HL_ALLOCATE_PSM) (void);
+typedef uint16_t(tBTA_HL_ALLOCATE_PSM)(void);
/*****************************************************************************
* Constants and data types
****************************************************************************/
#ifndef BTA_HL_DISC_SIZE
-#define BTA_HL_DISC_SIZE 1600
+#define BTA_HL_DISC_SIZE 1600
#endif
-#define BTA_HL_NUM_SRCH_ATTR 10
-#define BTA_HL_MIN_SDP_MDEP_LEN 7
+#define BTA_HL_NUM_SRCH_ATTR 10
+#define BTA_HL_MIN_SDP_MDEP_LEN 7
/* L2CAP defualt parameters */
-#define BTA_HL_L2C_TX_WIN_SIZE 10
-#define BTA_HL_L2C_MAX_TRANSMIT 32
-#define BTA_HL_L2C_RTRANS_TOUT 2000
-#define BTA_HL_L2C_MON_TOUT 12000
-#define BTA_HL_L2C_MPS 1017
+#define BTA_HL_L2C_TX_WIN_SIZE 10
+#define BTA_HL_L2C_MAX_TRANSMIT 32
+#define BTA_HL_L2C_RTRANS_TOUT 2000
+#define BTA_HL_L2C_MON_TOUT 12000
+#define BTA_HL_L2C_MPS 1017
/* L2CAP FCS setting*/
-#define BTA_HL_MCA_USE_FCS MCA_FCS_USE
-#define BTA_HL_MCA_NO_FCS MCA_FCS_BYPASS
-#define BTA_HL_L2C_USE_FCS 1
-#define BTA_HL_L2C_NO_FCS 0
-#define BTA_HL_DEFAULT_SOURCE_FCS BTA_HL_L2C_USE_FCS
-#define BTA_HL_MCA_FCS_USE_MASK MCA_FCS_USE_MASK
+#define BTA_HL_MCA_USE_FCS MCA_FCS_USE
+#define BTA_HL_MCA_NO_FCS MCA_FCS_BYPASS
+#define BTA_HL_L2C_USE_FCS 1
+#define BTA_HL_L2C_NO_FCS 0
+#define BTA_HL_DEFAULT_SOURCE_FCS BTA_HL_L2C_USE_FCS
+#define BTA_HL_MCA_FCS_USE_MASK MCA_FCS_USE_MASK
/* SDP Operations */
-#define BTA_HL_SDP_OP_NONE 0
-#define BTA_HL_SDP_OP_CCH_INIT 1
-#define BTA_HL_SDP_OP_DCH_OPEN_INIT 2
-#define BTA_HL_SDP_OP_DCH_RECONNECT_INIT 3
-#define BTA_HL_SDP_OP_SDP_QUERY_NEW 4
-#define BTA_HL_SDP_OP_SDP_QUERY_CURRENT 5
+#define BTA_HL_SDP_OP_NONE 0
+#define BTA_HL_SDP_OP_CCH_INIT 1
+#define BTA_HL_SDP_OP_DCH_OPEN_INIT 2
+#define BTA_HL_SDP_OP_DCH_RECONNECT_INIT 3
+#define BTA_HL_SDP_OP_SDP_QUERY_NEW 4
+#define BTA_HL_SDP_OP_SDP_QUERY_CURRENT 5
typedef uint8_t tBTA_HL_SDP_OPER;
/* CCH Operations */
-#define BTA_HL_CCH_OP_NONE 0
-#define BTA_HL_CCH_OP_LOCAL_OPEN 1
-#define BTA_HL_CCH_OP_REMOTE_OPEN 2
-#define BTA_HL_CCH_OP_LOCAL_CLOSE 3
-#define BTA_HL_CCH_OP_REMOTE_CLOSE 4
+#define BTA_HL_CCH_OP_NONE 0
+#define BTA_HL_CCH_OP_LOCAL_OPEN 1
+#define BTA_HL_CCH_OP_REMOTE_OPEN 2
+#define BTA_HL_CCH_OP_LOCAL_CLOSE 3
+#define BTA_HL_CCH_OP_REMOTE_CLOSE 4
typedef uint8_t tBTA_HL_CCH_OPER;
/* Pending DCH close operations when closing a CCH */
-#define BTA_HL_CCH_CLOSE_OP_DCH_NONE 0
-#define BTA_HL_CCH_CLOSE_OP_DCH_ABORT 1
-#define BTA_HL_CCH_CLOSE_OP_DCH_CLOSE 2
+#define BTA_HL_CCH_CLOSE_OP_DCH_NONE 0
+#define BTA_HL_CCH_CLOSE_OP_DCH_ABORT 1
+#define BTA_HL_CCH_CLOSE_OP_DCH_CLOSE 2
typedef uint8_t tBTA_HL_CCH_CLOSE_DCH_OPER;
/* DCH Operations */
-#define BTA_HL_DCH_OP_NONE 0
-#define BTA_HL_DCH_OP_REMOTE_CREATE 1
-#define BTA_HL_DCH_OP_LOCAL_OPEN 2
-#define BTA_HL_DCH_OP_REMOTE_OPEN 3
-#define BTA_HL_DCH_OP_LOCAL_CLOSE 4
-#define BTA_HL_DCH_OP_REMOTE_CLOSE 5
-#define BTA_HL_DCH_OP_LOCAL_DELETE 6
-#define BTA_HL_DCH_OP_REMOTE_DELETE 7
-#define BTA_HL_DCH_OP_LOCAL_RECONNECT 8
-#define BTA_HL_DCH_OP_REMOTE_RECONNECT 9
-#define BTA_HL_DCH_OP_LOCAL_CLOSE_ECHO_TEST 10
-#define BTA_HL_DCH_OP_LOCAL_CLOSE_RECONNECT 11
+#define BTA_HL_DCH_OP_NONE 0
+#define BTA_HL_DCH_OP_REMOTE_CREATE 1
+#define BTA_HL_DCH_OP_LOCAL_OPEN 2
+#define BTA_HL_DCH_OP_REMOTE_OPEN 3
+#define BTA_HL_DCH_OP_LOCAL_CLOSE 4
+#define BTA_HL_DCH_OP_REMOTE_CLOSE 5
+#define BTA_HL_DCH_OP_LOCAL_DELETE 6
+#define BTA_HL_DCH_OP_REMOTE_DELETE 7
+#define BTA_HL_DCH_OP_LOCAL_RECONNECT 8
+#define BTA_HL_DCH_OP_REMOTE_RECONNECT 9
+#define BTA_HL_DCH_OP_LOCAL_CLOSE_ECHO_TEST 10
+#define BTA_HL_DCH_OP_LOCAL_CLOSE_RECONNECT 11
typedef uint8_t tBTA_HL_DCH_OPER;
/* Echo test Operations */
-#define BTA_HL_ECHO_OP_NONE 0
-#define BTA_HL_ECHO_OP_CI_GET_ECHO_DATA 1
-#define BTA_HL_ECHO_OP_SDP_INIT 2
-#define BTA_HL_ECHO_OP_MDL_CREATE_CFM 3
-#define BTA_HL_ECHO_OP_DCH_OPEN_CFM 4
-#define BTA_HL_ECHO_OP_LOOP_BACK 5
-#define BTA_HL_ECHO_OP_CI_PUT_ECHO_DATA 6
-#define BTA_HL_ECHO_OP_DCH_CLOSE_CFM 7
-#define BTA_HL_ECHO_OP_OPEN_IND 8
-#define BTA_HL_ECHO_OP_ECHO_PKT 9
+#define BTA_HL_ECHO_OP_NONE 0
+#define BTA_HL_ECHO_OP_CI_GET_ECHO_DATA 1
+#define BTA_HL_ECHO_OP_SDP_INIT 2
+#define BTA_HL_ECHO_OP_MDL_CREATE_CFM 3
+#define BTA_HL_ECHO_OP_DCH_OPEN_CFM 4
+#define BTA_HL_ECHO_OP_LOOP_BACK 5
+#define BTA_HL_ECHO_OP_CI_PUT_ECHO_DATA 6
+#define BTA_HL_ECHO_OP_DCH_CLOSE_CFM 7
+#define BTA_HL_ECHO_OP_OPEN_IND 8
+#define BTA_HL_ECHO_OP_ECHO_PKT 9
typedef uint8_t tBTA_HL_ECHO_OPER;
/* abort status mask for abort_oper */
-#define BTA_HL_ABORT_NONE_MASK 0x00
-#define BTA_HL_ABORT_PENDING_MASK 0x01
-#define BTA_HL_ABORT_LOCAL_MASK 0x10
-#define BTA_HL_ABORT_REMOTE_MASK 0x20
+#define BTA_HL_ABORT_NONE_MASK 0x00
+#define BTA_HL_ABORT_PENDING_MASK 0x01
+#define BTA_HL_ABORT_LOCAL_MASK 0x10
+#define BTA_HL_ABORT_REMOTE_MASK 0x20
#define BTA_HL_ABORT_CCH_CLOSE_MASK 0x40
/* call out mask for cout_oper */
-#define BTA_HL_CO_NONE_MASK 0x00
-#define BTA_HL_CO_GET_TX_DATA_MASK 0x01
-#define BTA_HL_CO_PUT_RX_DATA_MASK 0x02
+#define BTA_HL_CO_NONE_MASK 0x00
+#define BTA_HL_CO_GET_TX_DATA_MASK 0x01
+#define BTA_HL_CO_PUT_RX_DATA_MASK 0x02
#define BTA_HL_CO_GET_ECHO_DATA_MASK 0x04
#define BTA_HL_CO_PUT_ECHO_DATA_MASK 0x08
-typedef struct
-{
- uint16_t mtu;
- uint8_t fcs; /* '0' No FCS, otherwise '1' */
+typedef struct {
+ uint16_t mtu;
+ uint8_t fcs; /* '0' No FCS, otherwise '1' */
} tBTA_HL_L2CAP_CFG_INFO;
-
/* State Machine Events */
-enum
-{
- /* these events are handled by the state machine */
- BTA_HL_CCH_OPEN_EVT = BTA_SYS_EVT_START(BTA_ID_HL),
- BTA_HL_CCH_SDP_OK_EVT,
- BTA_HL_CCH_SDP_FAIL_EVT,
- BTA_HL_MCA_CONNECT_IND_EVT,
- BTA_HL_MCA_DISCONNECT_IND_EVT,
- BTA_HL_CCH_CLOSE_EVT,
- BTA_HL_CCH_CLOSE_CMPL_EVT,
- BTA_HL_MCA_RSP_TOUT_IND_EVT,
- /* DCH EVENT */
- BTA_HL_DCH_SDP_INIT_EVT,
- BTA_HL_DCH_OPEN_EVT,
- BTA_HL_MCA_CREATE_IND_EVT,
- BTA_HL_MCA_CREATE_CFM_EVT,
- BTA_HL_MCA_OPEN_IND_EVT,
+enum {
+ /* these events are handled by the state machine */
+ BTA_HL_CCH_OPEN_EVT = BTA_SYS_EVT_START(BTA_ID_HL),
+ BTA_HL_CCH_SDP_OK_EVT,
+ BTA_HL_CCH_SDP_FAIL_EVT,
+ BTA_HL_MCA_CONNECT_IND_EVT,
+ BTA_HL_MCA_DISCONNECT_IND_EVT,
+ BTA_HL_CCH_CLOSE_EVT,
+ BTA_HL_CCH_CLOSE_CMPL_EVT,
+ BTA_HL_MCA_RSP_TOUT_IND_EVT,
+ /* DCH EVENT */
+ BTA_HL_DCH_SDP_INIT_EVT,
+ BTA_HL_DCH_OPEN_EVT,
+ BTA_HL_MCA_CREATE_IND_EVT,
+ BTA_HL_MCA_CREATE_CFM_EVT,
+ BTA_HL_MCA_OPEN_IND_EVT,
- BTA_HL_MCA_OPEN_CFM_EVT,
- BTA_HL_DCH_CLOSE_EVT,
- BTA_HL_MCA_CLOSE_IND_EVT,
- BTA_HL_MCA_CLOSE_CFM_EVT,
- BTA_HL_API_SEND_DATA_EVT,
+ BTA_HL_MCA_OPEN_CFM_EVT,
+ BTA_HL_DCH_CLOSE_EVT,
+ BTA_HL_MCA_CLOSE_IND_EVT,
+ BTA_HL_MCA_CLOSE_CFM_EVT,
+ BTA_HL_API_SEND_DATA_EVT,
- BTA_HL_MCA_RCV_DATA_EVT,
- BTA_HL_DCH_CLOSE_CMPL_EVT,
- BTA_HL_DCH_RECONNECT_EVT,
- BTA_HL_DCH_SDP_FAIL_EVT,
- BTA_HL_MCA_RECONNECT_IND_EVT,
+ BTA_HL_MCA_RCV_DATA_EVT,
+ BTA_HL_DCH_CLOSE_CMPL_EVT,
+ BTA_HL_DCH_RECONNECT_EVT,
+ BTA_HL_DCH_SDP_FAIL_EVT,
+ BTA_HL_MCA_RECONNECT_IND_EVT,
- BTA_HL_MCA_RECONNECT_CFM_EVT,
- BTA_HL_DCH_CLOSE_ECHO_TEST_EVT,
- BTA_HL_API_DCH_CREATE_RSP_EVT,
- BTA_HL_DCH_ABORT_EVT,
- BTA_HL_MCA_ABORT_IND_EVT,
+ BTA_HL_MCA_RECONNECT_CFM_EVT,
+ BTA_HL_DCH_CLOSE_ECHO_TEST_EVT,
+ BTA_HL_API_DCH_CREATE_RSP_EVT,
+ BTA_HL_DCH_ABORT_EVT,
+ BTA_HL_MCA_ABORT_IND_EVT,
- BTA_HL_MCA_ABORT_CFM_EVT,
- BTA_HL_MCA_CONG_CHG_EVT,
- BTA_HL_CI_GET_TX_DATA_EVT,
- BTA_HL_CI_PUT_RX_DATA_EVT,
- BTA_HL_CI_GET_ECHO_DATA_EVT,
- BTA_HL_DCH_ECHO_TEST_EVT,
- BTA_HL_CI_PUT_ECHO_DATA_EVT,
+ BTA_HL_MCA_ABORT_CFM_EVT,
+ BTA_HL_MCA_CONG_CHG_EVT,
+ BTA_HL_CI_GET_TX_DATA_EVT,
+ BTA_HL_CI_PUT_RX_DATA_EVT,
+ BTA_HL_CI_GET_ECHO_DATA_EVT,
+ BTA_HL_DCH_ECHO_TEST_EVT,
+ BTA_HL_CI_PUT_ECHO_DATA_EVT,
- /* these events are handled outside the state machine */
- BTA_HL_API_ENABLE_EVT,
- BTA_HL_API_DISABLE_EVT,
- BTA_HL_API_UPDATE_EVT,
- BTA_HL_API_REGISTER_EVT,
- BTA_HL_API_DEREGISTER_EVT,
- BTA_HL_API_CCH_OPEN_EVT,
- BTA_HL_API_CCH_CLOSE_EVT,
- BTA_HL_API_DCH_OPEN_EVT,
- BTA_HL_API_DCH_RECONNECT_EVT,
- BTA_HL_API_DCH_CLOSE_EVT,
- BTA_HL_API_DELETE_MDL_EVT,
- BTA_HL_API_DCH_ABORT_EVT,
+ /* these events are handled outside the state machine */
+ BTA_HL_API_ENABLE_EVT,
+ BTA_HL_API_DISABLE_EVT,
+ BTA_HL_API_UPDATE_EVT,
+ BTA_HL_API_REGISTER_EVT,
+ BTA_HL_API_DEREGISTER_EVT,
+ BTA_HL_API_CCH_OPEN_EVT,
+ BTA_HL_API_CCH_CLOSE_EVT,
+ BTA_HL_API_DCH_OPEN_EVT,
+ BTA_HL_API_DCH_RECONNECT_EVT,
+ BTA_HL_API_DCH_CLOSE_EVT,
+ BTA_HL_API_DELETE_MDL_EVT,
+ BTA_HL_API_DCH_ABORT_EVT,
- BTA_HL_API_DCH_ECHO_TEST_EVT,
- BTA_HL_API_SDP_QUERY_EVT,
- BTA_HL_SDP_QUERY_OK_EVT,
- BTA_HL_SDP_QUERY_FAIL_EVT,
- BTA_HL_MCA_DELETE_IND_EVT,
- BTA_HL_MCA_DELETE_CFM_EVT
+ BTA_HL_API_DCH_ECHO_TEST_EVT,
+ BTA_HL_API_SDP_QUERY_EVT,
+ BTA_HL_SDP_QUERY_OK_EVT,
+ BTA_HL_SDP_QUERY_FAIL_EVT,
+ BTA_HL_MCA_DELETE_IND_EVT,
+ BTA_HL_MCA_DELETE_CFM_EVT
};
typedef uint16_t tBTA_HL_INT_EVT;
#define BTA_HL_DCH_EVT_MIN BTA_HL_DCH_SDP_INIT_EVT
#define BTA_HL_DCH_EVT_MAX 0xFFFF
-
/* state machine states */
-enum
-{
- BTA_HL_CCH_IDLE_ST = 0, /* Idle */
- BTA_HL_CCH_OPENING_ST, /* Opening a connection*/
- BTA_HL_CCH_OPEN_ST, /* Connection is open */
- BTA_HL_CCH_CLOSING_ST /* Closing is in progress */
+enum {
+ BTA_HL_CCH_IDLE_ST = 0, /* Idle */
+ BTA_HL_CCH_OPENING_ST, /* Opening a connection*/
+ BTA_HL_CCH_OPEN_ST, /* Connection is open */
+ BTA_HL_CCH_CLOSING_ST /* Closing is in progress */
};
typedef uint8_t tBTA_HL_CCH_STATE;
-enum
-{
- BTA_HL_DCH_IDLE_ST = 0, /* Idle */
- BTA_HL_DCH_OPENING_ST, /* Opening a connection*/
- BTA_HL_DCH_OPEN_ST, /* Connection is open */
- BTA_HL_DCH_CLOSING_ST /* Closing is in progress */
+enum {
+ BTA_HL_DCH_IDLE_ST = 0, /* Idle */
+ BTA_HL_DCH_OPENING_ST, /* Opening a connection*/
+ BTA_HL_DCH_OPEN_ST, /* Connection is open */
+ BTA_HL_DCH_CLOSING_ST /* Closing is in progress */
};
typedef uint8_t tBTA_HL_DCH_STATE;
-
-typedef struct
-{
- BT_HDR hdr;
- tBTA_HL_CTRL_CBACK *p_cback; /* pointer to control callback function */
+typedef struct {
+ BT_HDR hdr;
+ tBTA_HL_CTRL_CBACK* p_cback; /* pointer to control callback function */
} tBTA_HL_API_ENABLE;
-typedef struct
-{
- BT_HDR hdr;
- uint8_t app_id;
- bool is_register; /* Update HL application due to register or deregister */
- tBTA_HL_CBACK *p_cback; /* pointer to application callback function */
- tBTA_HL_DEVICE_TYPE dev_type; /* sink, source or dual roles */
- tBTA_SEC sec_mask; /* security mask for accepting conenction*/
- char srv_name[BTA_SERVICE_NAME_LEN +1]; /* service name to be used in the SDP; null terminated*/
- char srv_desp[BTA_SERVICE_DESP_LEN +1]; /* service description to be used in the SDP; null terminated */
- char provider_name[BTA_PROVIDER_NAME_LEN +1]; /* provide name to be used in the SDP; null terminated */
+typedef struct {
+ BT_HDR hdr;
+ uint8_t app_id;
+ bool is_register; /* Update HL application due to register or deregister */
+ tBTA_HL_CBACK* p_cback; /* pointer to application callback function */
+ tBTA_HL_DEVICE_TYPE dev_type; /* sink, source or dual roles */
+ tBTA_SEC sec_mask; /* security mask for accepting conenction*/
+ char srv_name[BTA_SERVICE_NAME_LEN +
+ 1]; /* service name to be used in the SDP; null terminated*/
+ char srv_desp[BTA_SERVICE_DESP_LEN + 1]; /* service description to be used in
+ the SDP; null terminated */
+ char provider_name[BTA_PROVIDER_NAME_LEN + 1]; /* provide name to be used in
+ the SDP; null terminated */
} tBTA_HL_API_UPDATE;
-typedef struct
-{
- BT_HDR hdr;
- uint8_t app_id;
- tBTA_HL_CBACK *p_cback; /* pointer to application callback function */
- tBTA_HL_DEVICE_TYPE dev_type; /* sink, source or dual roles */
- tBTA_SEC sec_mask; /* security mask for accepting conenction*/
- char srv_name[BTA_SERVICE_NAME_LEN +1]; /* service name to be used in the SDP; null terminated*/
- char srv_desp[BTA_SERVICE_DESP_LEN +1]; /* service description to be used in the SDP; null terminated */
- char provider_name[BTA_PROVIDER_NAME_LEN +1]; /* provide name to be used in the SDP; null terminated */
+typedef struct {
+ BT_HDR hdr;
+ uint8_t app_id;
+ tBTA_HL_CBACK* p_cback; /* pointer to application callback function */
+ tBTA_HL_DEVICE_TYPE dev_type; /* sink, source or dual roles */
+ tBTA_SEC sec_mask; /* security mask for accepting conenction*/
+ char srv_name[BTA_SERVICE_NAME_LEN +
+ 1]; /* service name to be used in the SDP; null terminated*/
+ char srv_desp[BTA_SERVICE_DESP_LEN + 1]; /* service description to be used in
+ the SDP; null terminated */
+ char provider_name[BTA_PROVIDER_NAME_LEN + 1]; /* provide name to be used in
+ the SDP; null terminated */
} tBTA_HL_API_REGISTER;
-typedef struct
-{
- BT_HDR hdr;
- uint8_t app_id;
- tBTA_HL_CBACK *p_cback; /* pointer to application callback function */
- tBTA_HL_APP_HANDLE app_handle;
+typedef struct {
+ BT_HDR hdr;
+ uint8_t app_id;
+ tBTA_HL_CBACK* p_cback; /* pointer to application callback function */
+ tBTA_HL_APP_HANDLE app_handle;
} tBTA_HL_API_DEREGISTER;
-typedef struct
-{
- BT_HDR hdr;
- uint8_t app_id;
- tBTA_HL_APP_HANDLE app_handle;
- uint16_t ctrl_psm;
- BD_ADDR bd_addr; /* Address of peer device */
- tBTA_SEC sec_mask; /* security mask for initiating connection*/
+typedef struct {
+ BT_HDR hdr;
+ uint8_t app_id;
+ tBTA_HL_APP_HANDLE app_handle;
+ uint16_t ctrl_psm;
+ BD_ADDR bd_addr; /* Address of peer device */
+ tBTA_SEC sec_mask; /* security mask for initiating connection*/
} tBTA_HL_API_CCH_OPEN;
-
-typedef struct
-{
- BT_HDR hdr;
- tBTA_HL_MCL_HANDLE mcl_handle;
+typedef struct {
+ BT_HDR hdr;
+ tBTA_HL_MCL_HANDLE mcl_handle;
} tBTA_HL_API_CCH_CLOSE;
-
-
-typedef struct
-{
- BT_HDR hdr;
- tBTA_HL_MCL_HANDLE mcl_handle;
- uint16_t ctrl_psm;
- tBTA_HL_MDEP_ID local_mdep_id; /* local MDEP ID */
- tBTA_HL_MDEP_ID peer_mdep_id; /* peer mdep id */
- tBTA_HL_DCH_CFG local_cfg;
- tBTA_SEC sec_mask; /* security mask for initiating connection*/
+typedef struct {
+ BT_HDR hdr;
+ tBTA_HL_MCL_HANDLE mcl_handle;
+ uint16_t ctrl_psm;
+ tBTA_HL_MDEP_ID local_mdep_id; /* local MDEP ID */
+ tBTA_HL_MDEP_ID peer_mdep_id; /* peer mdep id */
+ tBTA_HL_DCH_CFG local_cfg;
+ tBTA_SEC sec_mask; /* security mask for initiating connection*/
} tBTA_HL_API_DCH_OPEN;
+typedef struct {
+ BT_HDR hdr;
-typedef struct
-{
- BT_HDR hdr;
-
- tBTA_HL_MCL_HANDLE mcl_handle;
- uint16_t ctrl_psm;
- tBTA_HL_MDL_ID mdl_id;
+ tBTA_HL_MCL_HANDLE mcl_handle;
+ uint16_t ctrl_psm;
+ tBTA_HL_MDL_ID mdl_id;
} tBTA_HL_API_DCH_RECONNECT;
-typedef struct
-{
- BT_HDR hdr;
- tBTA_HL_MDL_HANDLE mdl_handle;
+typedef struct {
+ BT_HDR hdr;
+ tBTA_HL_MDL_HANDLE mdl_handle;
} tBTA_HL_API_DCH_CLOSE;
-typedef struct
-{
- BT_HDR hdr;
- tBTA_HL_MCL_HANDLE mcl_handle;
- tBTA_HL_MDL_ID mdl_id;
+typedef struct {
+ BT_HDR hdr;
+ tBTA_HL_MCL_HANDLE mcl_handle;
+ tBTA_HL_MDL_ID mdl_id;
} tBTA_HL_API_DELETE_MDL;
-typedef struct
-{
- BT_HDR hdr;
- tBTA_HL_MCL_HANDLE mcl_handle;
+typedef struct {
+ BT_HDR hdr;
+ tBTA_HL_MCL_HANDLE mcl_handle;
} tBTA_HL_API_DCH_ABORT;
-
-typedef struct
-{
- BT_HDR hdr;
- tBTA_HL_MDL_HANDLE mdl_handle;
- uint16_t pkt_size;
+typedef struct {
+ BT_HDR hdr;
+ tBTA_HL_MDL_HANDLE mdl_handle;
+ uint16_t pkt_size;
} tBTA_HL_API_SEND_DATA;
-typedef struct
-{
- BT_HDR hdr;
- tBTA_HL_MCL_HANDLE mcl_handle;
- uint16_t ctrl_psm;
- uint16_t pkt_size;
- tBTA_HL_DCH_CFG local_cfg;
+typedef struct {
+ BT_HDR hdr;
+ tBTA_HL_MCL_HANDLE mcl_handle;
+ uint16_t ctrl_psm;
+ uint16_t pkt_size;
+ tBTA_HL_DCH_CFG local_cfg;
} tBTA_HL_API_DCH_ECHO_TEST;
-typedef struct
-{
- BT_HDR hdr;
- uint8_t app_idx;
- uint8_t mcl_idx;
- bool release_mcl_cb;
-}tBTA_HL_CCH_SDP;
-
+typedef struct {
+ BT_HDR hdr;
+ uint8_t app_idx;
+ uint8_t mcl_idx;
+ bool release_mcl_cb;
+} tBTA_HL_CCH_SDP;
/* MCA callback event parameters. */
-typedef struct
-{
- BT_HDR hdr;
- tBTA_HL_APP_HANDLE app_handle;
- tBTA_HL_MCL_HANDLE mcl_handle;
- tMCA_CTRL mca_data;
+typedef struct {
+ BT_HDR hdr;
+ tBTA_HL_APP_HANDLE app_handle;
+ tBTA_HL_MCL_HANDLE mcl_handle;
+ tMCA_CTRL mca_data;
} tBTA_HL_MCA_EVT;
-
/* MCA callback event parameters. */
-typedef struct
-{
- BT_HDR hdr;
- uint8_t app_idx;
- uint8_t mcl_idx;
- uint8_t mdl_idx;
- BT_HDR *p_pkt;
+typedef struct {
+ BT_HDR hdr;
+ uint8_t app_idx;
+ uint8_t mcl_idx;
+ uint8_t mdl_idx;
+ BT_HDR* p_pkt;
} tBTA_HL_MCA_RCV_DATA_EVT;
+typedef struct {
+ BT_HDR hdr;
+ uint8_t app_idx;
+ uint8_t mcl_idx;
+ uint8_t mdl_idx;
+} tBTA_HL_DCH_SDP;
-typedef struct
-{
- BT_HDR hdr;
- uint8_t app_idx;
- uint8_t mcl_idx;
- uint8_t mdl_idx;
-}tBTA_HL_DCH_SDP;
-
-typedef struct
-{
- BT_HDR hdr;
- tBTA_HL_APP_HANDLE app_handle;
- uint8_t app_id;
- BD_ADDR bd_addr; /* Address of peer device */
+typedef struct {
+ BT_HDR hdr;
+ tBTA_HL_APP_HANDLE app_handle;
+ uint8_t app_id;
+ BD_ADDR bd_addr; /* Address of peer device */
} tBTA_HL_API_SDP_QUERY;
-typedef struct
-{
- BT_HDR hdr;
- tBTA_HL_MCL_HANDLE mcl_handle;
- tBTA_HL_MDL_ID mdl_id;
- tBTA_HL_MDEP_ID local_mdep_id;
- tBTA_HL_DCH_CREATE_RSP rsp_code;
- tBTA_HL_DCH_CFG cfg_rsp;
+typedef struct {
+ BT_HDR hdr;
+ tBTA_HL_MCL_HANDLE mcl_handle;
+ tBTA_HL_MDL_ID mdl_id;
+ tBTA_HL_MDEP_ID local_mdep_id;
+ tBTA_HL_DCH_CREATE_RSP rsp_code;
+ tBTA_HL_DCH_CFG cfg_rsp;
} tBTA_HL_API_DCH_CREATE_RSP;
-typedef struct
-{
- BT_HDR hdr;
- tBTA_HL_MDL_HANDLE mdl_handle;
- tBTA_HL_STATUS status;
+typedef struct {
+ BT_HDR hdr;
+ tBTA_HL_MDL_HANDLE mdl_handle;
+ tBTA_HL_STATUS status;
} tBTA_HL_CI_GET_PUT_DATA;
-typedef struct
-{
- BT_HDR hdr;
- tBTA_HL_MCL_HANDLE mcl_handle;
- tBTA_HL_STATUS status;
+typedef struct {
+ BT_HDR hdr;
+ tBTA_HL_MCL_HANDLE mcl_handle;
+ tBTA_HL_STATUS status;
} tBTA_HL_CI_ECHO_DATA;
/* union of all state machine event data types */
-typedef union
-{
- BT_HDR hdr;
- tBTA_HL_API_ENABLE api_enable; /* data for BTA_MSE_API_ENABLE_EVT */
- tBTA_HL_API_UPDATE api_update;
- tBTA_HL_API_REGISTER api_reg;
- tBTA_HL_API_DEREGISTER api_dereg;
- tBTA_HL_API_CCH_OPEN api_cch_open;
- tBTA_HL_API_CCH_CLOSE api_cch_close;
- tBTA_HL_API_DCH_CREATE_RSP api_dch_create_rsp;
- tBTA_HL_API_DCH_OPEN api_dch_open;
- tBTA_HL_API_DCH_RECONNECT api_dch_reconnect;
- tBTA_HL_API_DCH_CLOSE api_dch_close;
- tBTA_HL_API_DELETE_MDL api_delete_mdl;
- tBTA_HL_API_DCH_ABORT api_dch_abort;
- tBTA_HL_API_SEND_DATA api_send_data;
- tBTA_HL_API_DCH_ECHO_TEST api_dch_echo_test;
- tBTA_HL_API_SDP_QUERY api_sdp_query;
+typedef union {
+ BT_HDR hdr;
+ tBTA_HL_API_ENABLE api_enable; /* data for BTA_MSE_API_ENABLE_EVT */
+ tBTA_HL_API_UPDATE api_update;
+ tBTA_HL_API_REGISTER api_reg;
+ tBTA_HL_API_DEREGISTER api_dereg;
+ tBTA_HL_API_CCH_OPEN api_cch_open;
+ tBTA_HL_API_CCH_CLOSE api_cch_close;
+ tBTA_HL_API_DCH_CREATE_RSP api_dch_create_rsp;
+ tBTA_HL_API_DCH_OPEN api_dch_open;
+ tBTA_HL_API_DCH_RECONNECT api_dch_reconnect;
+ tBTA_HL_API_DCH_CLOSE api_dch_close;
+ tBTA_HL_API_DELETE_MDL api_delete_mdl;
+ tBTA_HL_API_DCH_ABORT api_dch_abort;
+ tBTA_HL_API_SEND_DATA api_send_data;
+ tBTA_HL_API_DCH_ECHO_TEST api_dch_echo_test;
+ tBTA_HL_API_SDP_QUERY api_sdp_query;
- tBTA_HL_CCH_SDP cch_sdp;
- tBTA_HL_MCA_EVT mca_evt;
- tBTA_HL_MCA_RCV_DATA_EVT mca_rcv_data_evt;
- tBTA_HL_DCH_SDP dch_sdp; /* for DCH_OPEN_EVT and DCH_RECONNECT_EVT */
- tBTA_HL_CI_GET_PUT_DATA ci_get_put_data;
- tBTA_HL_CI_ECHO_DATA ci_get_put_echo_data;
+ tBTA_HL_CCH_SDP cch_sdp;
+ tBTA_HL_MCA_EVT mca_evt;
+ tBTA_HL_MCA_RCV_DATA_EVT mca_rcv_data_evt;
+ tBTA_HL_DCH_SDP dch_sdp; /* for DCH_OPEN_EVT and DCH_RECONNECT_EVT */
+ tBTA_HL_CI_GET_PUT_DATA ci_get_put_data;
+ tBTA_HL_CI_ECHO_DATA ci_get_put_echo_data;
} tBTA_HL_DATA;
+typedef struct {
+ bool in_use;
+ uint16_t mdl_id;
+ tBTA_HL_MDL_HANDLE mdl_handle;
+ tBTA_HL_DCH_OPER dch_oper;
+ bool intentional_close;
+ tBTA_HL_DCH_STATE dch_state;
+ uint8_t abort_oper;
+ uint16_t req_data_psm;
+ uint16_t max_rx_apdu_size;
+ uint16_t max_tx_apdu_size;
+ BT_HDR* p_tx_pkt;
+ BT_HDR* p_rx_pkt;
+ tBTA_HL_MDEP_ID local_mdep_id;
+ uint8_t local_mdep_cfg_idx;
+ tBTA_HL_DCH_CFG local_cfg;
+ tBTA_HL_DCH_CFG remote_cfg;
+ tBTA_HL_MDEP_ID peer_mdep_id;
+ uint16_t peer_data_type;
+ tBTA_HL_MDEP_ROLE peer_mdep_role;
+ tBTA_HL_DCH_MODE dch_mode;
+ tBTA_SEC sec_mask;
+ bool is_the_first_reliable;
+ bool delete_mdl;
+ uint16_t mtu;
+ tMCA_CHNL_CFG chnl_cfg;
+ bool mdl_cfg_idx_included;
+ uint8_t mdl_cfg_idx;
+ uint8_t echo_oper;
+ bool cong;
+ bool close_pending;
+ uint8_t cout_oper;
+ BT_HDR* p_echo_tx_pkt;
+ BT_HDR* p_echo_rx_pkt;
+ tBTA_HL_STATUS ci_put_echo_data_status;
+} tBTA_HL_MDL_CB;
-typedef struct
-{
- bool in_use;
- uint16_t mdl_id;
- tBTA_HL_MDL_HANDLE mdl_handle;
- tBTA_HL_DCH_OPER dch_oper;
- bool intentional_close;
- tBTA_HL_DCH_STATE dch_state;
- uint8_t abort_oper;
- uint16_t req_data_psm;
- uint16_t max_rx_apdu_size;
- uint16_t max_tx_apdu_size;
- BT_HDR *p_tx_pkt;
- BT_HDR *p_rx_pkt;
- tBTA_HL_MDEP_ID local_mdep_id;
- uint8_t local_mdep_cfg_idx;
- tBTA_HL_DCH_CFG local_cfg;
- tBTA_HL_DCH_CFG remote_cfg;
- tBTA_HL_MDEP_ID peer_mdep_id;
- uint16_t peer_data_type;
- tBTA_HL_MDEP_ROLE peer_mdep_role;
- tBTA_HL_DCH_MODE dch_mode;
- tBTA_SEC sec_mask;
- bool is_the_first_reliable;
- bool delete_mdl;
- uint16_t mtu;
- tMCA_CHNL_CFG chnl_cfg;
- bool mdl_cfg_idx_included;
- uint8_t mdl_cfg_idx;
- uint8_t echo_oper;
- bool cong;
- bool close_pending;
- uint8_t cout_oper;
- BT_HDR *p_echo_tx_pkt;
- BT_HDR *p_echo_rx_pkt;
- tBTA_HL_STATUS ci_put_echo_data_status;
-}tBTA_HL_MDL_CB;
+typedef struct {
+ tBTA_HL_MDL_CB mdl[BTA_HL_NUM_MDLS_PER_MCL];
+ tBTA_HL_DELETE_MDL delete_mdl;
+ bool in_use;
+ tBTA_HL_CCH_STATE cch_state;
+ uint16_t req_ctrl_psm;
+ uint16_t ctrl_psm;
+ uint16_t data_psm;
+ BD_ADDR bd_addr;
+ uint16_t cch_mtu;
+ uint16_t sec_mask;
+ tBTA_HL_MCL_HANDLE mcl_handle;
+ tSDP_DISCOVERY_DB* p_db; /* pointer to discovery database */
+ tSDP_DISC_CMPL_CB* sdp_cback;
+ tBTA_HL_SDP_OPER sdp_oper;
+ bool close_pending;
+ uint8_t sdp_mdl_idx;
+ tBTA_HL_SDP sdp;
+ uint8_t cch_oper;
+ uint8_t force_close_local_cch_opening;
+ bool intentional_close;
+ bool rsp_tout;
+ uint8_t timer_oper;
+ bool echo_test;
+ uint8_t echo_mdl_idx;
+ uint8_t cch_close_dch_oper;
+ uint8_t app_id;
+} tBTA_HL_MCL_CB;
-typedef struct
-{
- tBTA_HL_MDL_CB mdl[BTA_HL_NUM_MDLS_PER_MCL];
- tBTA_HL_DELETE_MDL delete_mdl;
- bool in_use;
- tBTA_HL_CCH_STATE cch_state;
- uint16_t req_ctrl_psm;
- uint16_t ctrl_psm;
- uint16_t data_psm;
- BD_ADDR bd_addr;
- uint16_t cch_mtu;
- uint16_t sec_mask;
- tBTA_HL_MCL_HANDLE mcl_handle;
- tSDP_DISCOVERY_DB *p_db; /* pointer to discovery database */
- tSDP_DISC_CMPL_CB *sdp_cback;
- tBTA_HL_SDP_OPER sdp_oper;
- bool close_pending;
- uint8_t sdp_mdl_idx;
- tBTA_HL_SDP sdp;
- uint8_t cch_oper;
- uint8_t force_close_local_cch_opening;
- bool intentional_close;
- bool rsp_tout;
- uint8_t timer_oper;
- bool echo_test;
- uint8_t echo_mdl_idx;
- uint8_t cch_close_dch_oper;
- uint8_t app_id;
-}tBTA_HL_MCL_CB;
+typedef struct {
+ tBTA_HL_MCL_CB mcb[BTA_HL_NUM_MCLS]; /* application Control Blocks */
+ tBTA_HL_CBACK* p_cback; /* pointer to control callback function */
+ bool in_use; /* this CB is in use*/
+ bool deregistering;
+ uint8_t app_id;
+ uint32_t sdp_handle; /* SDP record handle */
+ tBTA_HL_SUP_FEATURE sup_feature;
+ tBTA_HL_MDL_CFG mdl_cfg[BTA_HL_NUM_MDL_CFGS];
+ tBTA_HL_DEVICE_TYPE dev_type;
+ tBTA_HL_APP_HANDLE app_handle;
+ uint16_t ctrl_psm; /* L2CAP PSM for the MCAP control channel */
+ uint16_t data_psm; /* L2CAP PSM for the MCAP data channel */
+ uint16_t sec_mask; /* Security mask for BTM_SetSecurityLevel() */
-typedef struct
-{
- tBTA_HL_MCL_CB mcb[BTA_HL_NUM_MCLS]; /* application Control Blocks */
- tBTA_HL_CBACK *p_cback; /* pointer to control callback function */
- bool in_use; /* this CB is in use*/
- bool deregistering;
- uint8_t app_id;
- uint32_t sdp_handle; /* SDP record handle */
- tBTA_HL_SUP_FEATURE sup_feature;
- tBTA_HL_MDL_CFG mdl_cfg[BTA_HL_NUM_MDL_CFGS];
- tBTA_HL_DEVICE_TYPE dev_type;
- tBTA_HL_APP_HANDLE app_handle;
- uint16_t ctrl_psm; /* L2CAP PSM for the MCAP control channel */
- uint16_t data_psm; /* L2CAP PSM for the MCAP data channel */
- uint16_t sec_mask; /* Security mask for BTM_SetSecurityLevel() */
+ char srv_name[BTA_SERVICE_NAME_LEN +
+ 1]; /* service name to be used in the SDP; null terminated*/
+ char srv_desp[BTA_SERVICE_DESP_LEN + 1]; /* service description to be used in
+ the SDP; null terminated */
+ char provider_name[BTA_PROVIDER_NAME_LEN + 1]; /* provide name to be used in
+ the SDP; null terminated */
- char srv_name[BTA_SERVICE_NAME_LEN +1]; /* service name to be used in the SDP; null terminated*/
- char srv_desp[BTA_SERVICE_DESP_LEN +1]; /* service description to be used in the SDP; null terminated */
- char provider_name[BTA_PROVIDER_NAME_LEN +1]; /* provide name to be used in the SDP; null terminated */
+ tMCA_CTRL_CBACK* p_mcap_cback; /* pointer to MCAP callback function */
+ tMCA_DATA_CBACK* p_data_cback;
+} tBTA_HL_APP_CB;
- tMCA_CTRL_CBACK *p_mcap_cback; /* pointer to MCAP callback function */
- tMCA_DATA_CBACK *p_data_cback;
-}tBTA_HL_APP_CB;
+typedef struct {
+ bool in_use;
+ tBTA_HL_SDP_OPER sdp_oper;
+ uint8_t app_idx;
+ uint8_t mcl_idx;
+ uint8_t mdl_idx;
+} tBTA_HL_SDP_CB;
+typedef struct {
+ bool in_use;
+ uint8_t app_idx;
+ uint8_t mcl_idx;
+} tBTA_HL_TIMER_CB;
-typedef struct
-{
- bool in_use;
- tBTA_HL_SDP_OPER sdp_oper;
- uint8_t app_idx;
- uint8_t mcl_idx;
- uint8_t mdl_idx;
-}tBTA_HL_SDP_CB;
+typedef struct {
+ tBTA_HL_APP_CB acb[BTA_HL_NUM_APPS]; /* HL Control Blocks */
+ tBTA_HL_CTRL_CBACK* p_ctrl_cback; /* pointer to control callback function */
+ bool enable;
+ bool disabling;
-typedef struct
-{
- bool in_use;
- uint8_t app_idx;
- uint8_t mcl_idx;
-}tBTA_HL_TIMER_CB;
-
-typedef struct
-{
- tBTA_HL_APP_CB acb[BTA_HL_NUM_APPS]; /* HL Control Blocks */
- tBTA_HL_CTRL_CBACK *p_ctrl_cback; /* pointer to control callback function */
- bool enable;
- bool disabling;
-
- tBTA_HL_SDP_CB scb[BTA_HL_NUM_SDP_CBACKS];
- tBTA_HL_TIMER_CB tcb[BTA_HL_NUM_TIMERS];
- bool enable_random_psm;
- tBTA_HL_ALLOCATE_PSM *p_alloc_psm;
-}tBTA_HL_CB;
+ tBTA_HL_SDP_CB scb[BTA_HL_NUM_SDP_CBACKS];
+ tBTA_HL_TIMER_CB tcb[BTA_HL_NUM_TIMERS];
+ bool enable_random_psm;
+ tBTA_HL_ALLOCATE_PSM* p_alloc_psm;
+} tBTA_HL_CB;
/******************************************************************************
* Configuration Definitions
@@ -578,7 +542,7 @@
****************************************************************************/
/* HL control block */
-extern tBTA_HL_CB bta_hl_cb;
+extern tBTA_HL_CB bta_hl_cb;
#define BTA_HL_GET_CB_PTR() &(bta_hl_cb)
#define BTA_HL_GET_APP_CB_PTR(app_idx) &(bta_hl_cb.acb[(app_idx)])
@@ -602,280 +566,294 @@
/*****************************************************************************
* Function prototypes
****************************************************************************/
- /* main */
- extern bool bta_hl_hdl_event(BT_HDR *p_msg);
- /* sdp */
- extern bool bta_hl_fill_sup_feature_list( const tSDP_DISC_ATTR *p_attr,
- tBTA_HL_SUP_FEATURE_LIST_ELEM *p_list);
- extern tBTA_HL_STATUS bta_hl_sdp_update (uint8_t app_id);
- extern tBTA_HL_STATUS bta_hl_sdp_register (uint8_t app_idx);
- extern tSDP_DISC_REC *bta_hl_find_sink_or_src_srv_class_in_db (const tSDP_DISCOVERY_DB *p_db,
- const tSDP_DISC_REC *p_start_rec);
+/* main */
+extern bool bta_hl_hdl_event(BT_HDR* p_msg);
+/* sdp */
+extern bool bta_hl_fill_sup_feature_list(const tSDP_DISC_ATTR* p_attr,
+ tBTA_HL_SUP_FEATURE_LIST_ELEM* p_list);
+extern tBTA_HL_STATUS bta_hl_sdp_update(uint8_t app_id);
+extern tBTA_HL_STATUS bta_hl_sdp_register(uint8_t app_idx);
+extern tSDP_DISC_REC* bta_hl_find_sink_or_src_srv_class_in_db(
+ const tSDP_DISCOVERY_DB* p_db, const tSDP_DISC_REC* p_start_rec);
- /* action routines */
- extern void bta_hl_dch_ci_get_tx_data(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- tBTA_HL_DATA *p_data);
- extern void bta_hl_dch_ci_put_rx_data(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- tBTA_HL_DATA *p_data);
- extern void bta_hl_dch_ci_get_echo_data(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- tBTA_HL_DATA *p_data);
+/* action routines */
+extern void bta_hl_dch_ci_get_tx_data(uint8_t app_idx, uint8_t mcl_idx,
+ uint8_t mdl_idx, tBTA_HL_DATA* p_data);
+extern void bta_hl_dch_ci_put_rx_data(uint8_t app_idx, uint8_t mcl_idx,
+ uint8_t mdl_idx, tBTA_HL_DATA* p_data);
+extern void bta_hl_dch_ci_get_echo_data(uint8_t app_idx, uint8_t mcl_idx,
+ uint8_t mdl_idx, tBTA_HL_DATA* p_data);
- extern void bta_hl_dch_echo_test(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- tBTA_HL_DATA *p_data);
- extern void bta_hl_dch_ci_put_echo_data(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- tBTA_HL_DATA *p_data);
- extern void bta_hl_dch_send_data(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- tBTA_HL_DATA *p_data);
- extern void bta_hl_dch_sdp_fail(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- tBTA_HL_DATA *p_data);
- extern void bta_hl_dch_mca_cong_change(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- tBTA_HL_DATA *p_data);
- extern void bta_hl_dch_mca_reconnect_ind(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- tBTA_HL_DATA *p_data);
- extern void bta_hl_dch_mca_reconnect_cfm(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- tBTA_HL_DATA *p_data);
- extern void bta_hl_dch_mca_reconnect(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- tBTA_HL_DATA *p_data);
- extern void bta_hl_dch_sdp_init(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- tBTA_HL_DATA *p_data);
- extern void bta_hl_dch_close_echo_test(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- tBTA_HL_DATA *p_data);
- extern void bta_hl_dch_create_rsp(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- tBTA_HL_DATA *p_data);
- extern void bta_hl_dch_mca_rcv_data(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- tBTA_HL_DATA *p_data);
- extern void bta_hl_dch_close_cmpl(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- tBTA_HL_DATA *p_data);
- extern void bta_hl_dch_mca_close_cfm(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- tBTA_HL_DATA *p_data);
- extern void bta_hl_dch_mca_close_ind(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- tBTA_HL_DATA *p_data);
- extern void bta_hl_dch_mca_close(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- tBTA_HL_DATA *p_data);
- extern void bta_hl_dch_mca_delete_ind(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- tBTA_HL_DATA *p_data);
+extern void bta_hl_dch_echo_test(uint8_t app_idx, uint8_t mcl_idx,
+ uint8_t mdl_idx, tBTA_HL_DATA* p_data);
+extern void bta_hl_dch_ci_put_echo_data(uint8_t app_idx, uint8_t mcl_idx,
+ uint8_t mdl_idx, tBTA_HL_DATA* p_data);
+extern void bta_hl_dch_send_data(uint8_t app_idx, uint8_t mcl_idx,
+ uint8_t mdl_idx, tBTA_HL_DATA* p_data);
+extern void bta_hl_dch_sdp_fail(uint8_t app_idx, uint8_t mcl_idx,
+ uint8_t mdl_idx, tBTA_HL_DATA* p_data);
+extern void bta_hl_dch_mca_cong_change(uint8_t app_idx, uint8_t mcl_idx,
+ uint8_t mdl_idx, tBTA_HL_DATA* p_data);
+extern void bta_hl_dch_mca_reconnect_ind(uint8_t app_idx, uint8_t mcl_idx,
+ uint8_t mdl_idx, tBTA_HL_DATA* p_data);
+extern void bta_hl_dch_mca_reconnect_cfm(uint8_t app_idx, uint8_t mcl_idx,
+ uint8_t mdl_idx, tBTA_HL_DATA* p_data);
+extern void bta_hl_dch_mca_reconnect(uint8_t app_idx, uint8_t mcl_idx,
+ uint8_t mdl_idx, tBTA_HL_DATA* p_data);
+extern void bta_hl_dch_sdp_init(uint8_t app_idx, uint8_t mcl_idx,
+ uint8_t mdl_idx, tBTA_HL_DATA* p_data);
+extern void bta_hl_dch_close_echo_test(uint8_t app_idx, uint8_t mcl_idx,
+ uint8_t mdl_idx, tBTA_HL_DATA* p_data);
+extern void bta_hl_dch_create_rsp(uint8_t app_idx, uint8_t mcl_idx,
+ uint8_t mdl_idx, tBTA_HL_DATA* p_data);
+extern void bta_hl_dch_mca_rcv_data(uint8_t app_idx, uint8_t mcl_idx,
+ uint8_t mdl_idx, tBTA_HL_DATA* p_data);
+extern void bta_hl_dch_close_cmpl(uint8_t app_idx, uint8_t mcl_idx,
+ uint8_t mdl_idx, tBTA_HL_DATA* p_data);
+extern void bta_hl_dch_mca_close_cfm(uint8_t app_idx, uint8_t mcl_idx,
+ uint8_t mdl_idx, tBTA_HL_DATA* p_data);
+extern void bta_hl_dch_mca_close_ind(uint8_t app_idx, uint8_t mcl_idx,
+ uint8_t mdl_idx, tBTA_HL_DATA* p_data);
+extern void bta_hl_dch_mca_close(uint8_t app_idx, uint8_t mcl_idx,
+ uint8_t mdl_idx, tBTA_HL_DATA* p_data);
+extern void bta_hl_dch_mca_delete_ind(uint8_t app_idx, uint8_t mcl_idx,
+ uint8_t mdl_idx, tBTA_HL_DATA* p_data);
- extern void bta_hl_dch_mca_delete_cfm(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- tBTA_HL_DATA *p_data);
- extern void bta_hl_dch_mca_delete(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- tBTA_HL_DATA *p_data);
- extern void bta_hl_dch_mca_abort_ind(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- tBTA_HL_DATA *p_data);
- extern void bta_hl_dch_mca_abort_cfm(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- tBTA_HL_DATA *p_data);
- extern void bta_hl_dch_mca_abort(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- tBTA_HL_DATA *p_data);
- extern void bta_hl_dch_mca_open_ind(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- tBTA_HL_DATA *p_data);
- extern void bta_hl_dch_mca_open_cfm(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- tBTA_HL_DATA *p_data);
- extern void bta_hl_dch_mca_create_ind(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- tBTA_HL_DATA *p_data);
- extern void bta_hl_dch_mca_create_cfm(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- tBTA_HL_DATA *p_data);
- extern void bta_hl_dch_mca_create(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- tBTA_HL_DATA *p_data);
- extern void bta_hl_deallocate_spd_cback(uint8_t sdp_cback_idx);
- extern tSDP_DISC_CMPL_CB *bta_hl_allocate_spd_cback(tBTA_HL_SDP_OPER sdp_oper, uint8_t app_idx, uint8_t mcl_idx,
- uint8_t mdl_idx,
- uint8_t *p_sdp_cback_idx);
- extern tBTA_HL_STATUS bta_hl_init_sdp(tBTA_HL_SDP_OPER sdp_oper, uint8_t app_idx, uint8_t mcl_idx,
- uint8_t mdl_idx);
- extern void bta_hl_cch_sdp_init(uint8_t app_idx, uint8_t mcl_idx, tBTA_HL_DATA *p_data);
- extern void bta_hl_cch_mca_open(uint8_t app_idx, uint8_t mcl_idx, tBTA_HL_DATA *p_data);
- extern void bta_hl_cch_mca_close(uint8_t app_idx, uint8_t mcl_idx, tBTA_HL_DATA *p_data);
- extern void bta_hl_cch_close_cmpl(uint8_t app_idx, uint8_t mcl_idx, tBTA_HL_DATA *p_data);
- extern void bta_hl_cch_mca_disconnect(uint8_t app_idx, uint8_t mcl_idx, tBTA_HL_DATA *p_data);
- extern void bta_hl_cch_mca_disc_open(uint8_t app_idx, uint8_t mcl_idx, tBTA_HL_DATA *p_data);
- extern void bta_hl_cch_mca_rsp_tout(uint8_t app_idx, uint8_t mcl_idx, tBTA_HL_DATA *p_data);
- extern void bta_hl_cch_mca_connect(uint8_t app_idx, uint8_t mcl_idx, tBTA_HL_DATA *p_data);
+extern void bta_hl_dch_mca_delete_cfm(uint8_t app_idx, uint8_t mcl_idx,
+ uint8_t mdl_idx, tBTA_HL_DATA* p_data);
+extern void bta_hl_dch_mca_delete(uint8_t app_idx, uint8_t mcl_idx,
+ uint8_t mdl_idx, tBTA_HL_DATA* p_data);
+extern void bta_hl_dch_mca_abort_ind(uint8_t app_idx, uint8_t mcl_idx,
+ uint8_t mdl_idx, tBTA_HL_DATA* p_data);
+extern void bta_hl_dch_mca_abort_cfm(uint8_t app_idx, uint8_t mcl_idx,
+ uint8_t mdl_idx, tBTA_HL_DATA* p_data);
+extern void bta_hl_dch_mca_abort(uint8_t app_idx, uint8_t mcl_idx,
+ uint8_t mdl_idx, tBTA_HL_DATA* p_data);
+extern void bta_hl_dch_mca_open_ind(uint8_t app_idx, uint8_t mcl_idx,
+ uint8_t mdl_idx, tBTA_HL_DATA* p_data);
+extern void bta_hl_dch_mca_open_cfm(uint8_t app_idx, uint8_t mcl_idx,
+ uint8_t mdl_idx, tBTA_HL_DATA* p_data);
+extern void bta_hl_dch_mca_create_ind(uint8_t app_idx, uint8_t mcl_idx,
+ uint8_t mdl_idx, tBTA_HL_DATA* p_data);
+extern void bta_hl_dch_mca_create_cfm(uint8_t app_idx, uint8_t mcl_idx,
+ uint8_t mdl_idx, tBTA_HL_DATA* p_data);
+extern void bta_hl_dch_mca_create(uint8_t app_idx, uint8_t mcl_idx,
+ uint8_t mdl_idx, tBTA_HL_DATA* p_data);
+extern void bta_hl_deallocate_spd_cback(uint8_t sdp_cback_idx);
+extern tSDP_DISC_CMPL_CB* bta_hl_allocate_spd_cback(tBTA_HL_SDP_OPER sdp_oper,
+ uint8_t app_idx,
+ uint8_t mcl_idx,
+ uint8_t mdl_idx,
+ uint8_t* p_sdp_cback_idx);
+extern tBTA_HL_STATUS bta_hl_init_sdp(tBTA_HL_SDP_OPER sdp_oper,
+ uint8_t app_idx, uint8_t mcl_idx,
+ uint8_t mdl_idx);
+extern void bta_hl_cch_sdp_init(uint8_t app_idx, uint8_t mcl_idx,
+ tBTA_HL_DATA* p_data);
+extern void bta_hl_cch_mca_open(uint8_t app_idx, uint8_t mcl_idx,
+ tBTA_HL_DATA* p_data);
+extern void bta_hl_cch_mca_close(uint8_t app_idx, uint8_t mcl_idx,
+ tBTA_HL_DATA* p_data);
+extern void bta_hl_cch_close_cmpl(uint8_t app_idx, uint8_t mcl_idx,
+ tBTA_HL_DATA* p_data);
+extern void bta_hl_cch_mca_disconnect(uint8_t app_idx, uint8_t mcl_idx,
+ tBTA_HL_DATA* p_data);
+extern void bta_hl_cch_mca_disc_open(uint8_t app_idx, uint8_t mcl_idx,
+ tBTA_HL_DATA* p_data);
+extern void bta_hl_cch_mca_rsp_tout(uint8_t app_idx, uint8_t mcl_idx,
+ tBTA_HL_DATA* p_data);
+extern void bta_hl_cch_mca_connect(uint8_t app_idx, uint8_t mcl_idx,
+ tBTA_HL_DATA* p_data);
- /* State machine drivers */
- extern void bta_hl_cch_sm_execute(uint8_t inst_idx, uint8_t mcl_idx,
- uint16_t event, tBTA_HL_DATA *p_data);
- extern void bta_hl_dch_sm_execute(uint8_t inst_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- uint16_t event, tBTA_HL_DATA *p_data);
- /* MCAP callback functions */
- extern void bta_hl_mcap_ctrl_cback(tMCA_HANDLE handle, tMCA_CL mcl, uint8_t event,
- tMCA_CTRL *p_data);
+/* State machine drivers */
+extern void bta_hl_cch_sm_execute(uint8_t inst_idx, uint8_t mcl_idx,
+ uint16_t event, tBTA_HL_DATA* p_data);
+extern void bta_hl_dch_sm_execute(uint8_t inst_idx, uint8_t mcl_idx,
+ uint8_t mdl_idx, uint16_t event,
+ tBTA_HL_DATA* p_data);
+/* MCAP callback functions */
+extern void bta_hl_mcap_ctrl_cback(tMCA_HANDLE handle, tMCA_CL mcl,
+ uint8_t event, tMCA_CTRL* p_data);
- extern void bta_hl_mcap_data_cback(tMCA_DL mdl, BT_HDR *p_pkt);
+extern void bta_hl_mcap_data_cback(tMCA_DL mdl, BT_HDR* p_pkt);
- /* utility functions */
- extern bool bta_hl_set_ctrl_psm_for_dch(uint8_t app_idx, uint8_t mcl_idx,
- uint8_t mdl_idx, uint16_t ctrl_psm);
- extern bool bta_hl_find_sdp_idx_using_ctrl_psm(tBTA_HL_SDP *p_sdp,
- uint16_t ctrl_psm,
- uint8_t *p_sdp_idx);
- extern uint16_t bta_hl_set_user_tx_buf_size(uint16_t max_tx_size);
- extern uint16_t bta_hl_set_user_rx_buf_size(uint16_t mtu);
- extern uint8_t bta_hl_set_tx_win_size(uint16_t mtu, uint16_t mps);
- extern uint16_t bta_hl_set_mps(uint16_t mtu);
- extern void bta_hl_clean_mdl_cb(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx);
- extern BT_HDR * bta_hl_get_buf(uint16_t data_size, bool fcs_use);
- extern bool bta_hl_find_service_in_db( uint8_t app_idx, uint8_t mcl_idx,
- uint16_t service_uuid,
- tSDP_DISC_REC **pp_rec );
- extern uint16_t bta_hl_get_service_uuids(uint8_t sdp_oper, uint8_t app_idx, uint8_t mcl_idx,
- uint8_t mdl_idx );
- extern bool bta_hl_find_echo_cfg_rsp(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdep_idx, uint8_t cfg,
- uint8_t *p_cfg_rsp);
- extern bool bta_hl_validate_cfg(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- uint8_t cfg);
- extern bool bta_hl_find_cch_cb_indexes(tBTA_HL_DATA *p_msg,
- uint8_t *p_app_idx,
- uint8_t *p_mcl_idx);
- extern bool bta_hl_find_dch_cb_indexes(tBTA_HL_DATA *p_msg,
- uint8_t *p_app_idx,
- uint8_t *p_mcl_idx,
- uint8_t *p_mdl_idx);
- extern uint16_t bta_hl_allocate_mdl_id(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx );
- extern bool bta_hl_find_mdl_idx_using_handle(tBTA_HL_MDL_HANDLE mdl_handle,
- uint8_t *p_app_idx, uint8_t *p_mcl_idx,
- uint8_t *p_mdl_idx);
- extern bool bta_hl_find_mdl_idx(uint8_t app_idx, uint8_t mcl_idx, uint16_t mdl_id,
- uint8_t *p_mdl_idx);
- extern bool bta_hl_find_an_active_mdl_idx(uint8_t app_idx, uint8_t mcl_idx,
- uint8_t *p_mdl_idx);
- extern bool bta_hl_find_dch_setup_mdl_idx(uint8_t app_idx, uint8_t mcl_idx,
- uint8_t *p_mdl_idx);
- extern bool bta_hl_find_an_in_use_mcl_idx(uint8_t app_idx,
- uint8_t *p_mcl_idx);
- extern bool bta_hl_find_an_in_use_app_idx(uint8_t *p_app_idx);
- extern bool bta_hl_find_app_idx(uint8_t app_id, uint8_t *p_app_idx);
- extern bool bta_hl_find_app_idx_using_handle(tBTA_HL_APP_HANDLE app_handle,
- uint8_t *p_app_idx);
- extern bool bta_hl_find_mcl_idx_using_handle( tBTA_HL_MCL_HANDLE mcl_handle,
- uint8_t *p_app_idx, uint8_t *p_mcl_idx);
- extern bool bta_hl_find_mcl_idx(uint8_t app_idx, BD_ADDR p_bd_addr, uint8_t *p_mcl_idx);
- extern bool bta_hl_is_the_first_reliable_existed(uint8_t app_idx, uint8_t mcl_idx );
- extern bool bta_hl_find_non_active_mdl_cfg(uint8_t app_idx, uint8_t start_mdl_cfg_idx,
- uint8_t *p_mdl_cfg_idx);
- extern bool bta_hl_find_avail_mdl_cfg_idx(uint8_t app_idx, uint8_t mcl_idx,
- uint8_t *p_mdl_cfg_idx);
- extern bool bta_hl_find_mdl_cfg_idx(uint8_t app_idx, uint8_t mcl_idx,
- tBTA_HL_MDL_ID mdl_id, uint8_t *p_mdl_cfg_idx);
- extern bool bta_hl_get_cur_time(uint8_t app_idx, uint8_t *p_cur_time);
- extern void bta_hl_sort_cfg_time_idx(uint8_t app_idx, uint8_t *a, uint8_t n);
- extern void bta_hl_compact_mdl_cfg_time(uint8_t app_idx, uint8_t mdep_id);
- extern bool bta_hl_is_mdl_exsit_in_mcl(uint8_t app_idx, BD_ADDR bd_addr,
- tBTA_HL_MDL_ID mdl_id);
- extern bool bta_hl_delete_mdl_cfg(uint8_t app_idx, BD_ADDR bd_addr,
- tBTA_HL_MDL_ID mdl_id);
- extern bool bta_hl_is_mdl_value_valid(tBTA_HL_MDL_ID mdl_id);
- extern bool bta_hl_find_mdep_cfg_idx(uint8_t app_idx,
- tBTA_HL_MDEP_ID local_mdep_id, uint8_t *p_mdep_cfg_idx);
- extern void bta_hl_find_rxtx_apdu_size(uint8_t app_idx, uint8_t mdep_cfg_idx,
- uint16_t *p_rx_apu_size,
- uint16_t *p_tx_apu_size);
- extern bool bta_hl_validate_peer_cfg(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- tBTA_HL_MDEP_ID peer_mdep_id,
- tBTA_HL_MDEP_ROLE peer_mdep_role,
- uint8_t sdp_idx);
- extern tBTA_HL_STATUS bta_hl_chk_local_cfg(uint8_t app_idx, uint8_t mcl_idx,
- uint8_t mdep_cfg_idx,
- tBTA_HL_DCH_CFG local_cfg);
+/* utility functions */
+extern bool bta_hl_set_ctrl_psm_for_dch(uint8_t app_idx, uint8_t mcl_idx,
+ uint8_t mdl_idx, uint16_t ctrl_psm);
+extern bool bta_hl_find_sdp_idx_using_ctrl_psm(tBTA_HL_SDP* p_sdp,
+ uint16_t ctrl_psm,
+ uint8_t* p_sdp_idx);
+extern uint16_t bta_hl_set_user_tx_buf_size(uint16_t max_tx_size);
+extern uint16_t bta_hl_set_user_rx_buf_size(uint16_t mtu);
+extern uint8_t bta_hl_set_tx_win_size(uint16_t mtu, uint16_t mps);
+extern uint16_t bta_hl_set_mps(uint16_t mtu);
+extern void bta_hl_clean_mdl_cb(uint8_t app_idx, uint8_t mcl_idx,
+ uint8_t mdl_idx);
+extern BT_HDR* bta_hl_get_buf(uint16_t data_size, bool fcs_use);
+extern bool bta_hl_find_service_in_db(uint8_t app_idx, uint8_t mcl_idx,
+ uint16_t service_uuid,
+ tSDP_DISC_REC** pp_rec);
+extern uint16_t bta_hl_get_service_uuids(uint8_t sdp_oper, uint8_t app_idx,
+ uint8_t mcl_idx, uint8_t mdl_idx);
+extern bool bta_hl_find_echo_cfg_rsp(uint8_t app_idx, uint8_t mcl_idx,
+ uint8_t mdep_idx, uint8_t cfg,
+ uint8_t* p_cfg_rsp);
+extern bool bta_hl_validate_cfg(uint8_t app_idx, uint8_t mcl_idx,
+ uint8_t mdl_idx, uint8_t cfg);
+extern bool bta_hl_find_cch_cb_indexes(tBTA_HL_DATA* p_msg, uint8_t* p_app_idx,
+ uint8_t* p_mcl_idx);
+extern bool bta_hl_find_dch_cb_indexes(tBTA_HL_DATA* p_msg, uint8_t* p_app_idx,
+ uint8_t* p_mcl_idx, uint8_t* p_mdl_idx);
+extern uint16_t bta_hl_allocate_mdl_id(uint8_t app_idx, uint8_t mcl_idx,
+ uint8_t mdl_idx);
+extern bool bta_hl_find_mdl_idx_using_handle(tBTA_HL_MDL_HANDLE mdl_handle,
+ uint8_t* p_app_idx,
+ uint8_t* p_mcl_idx,
+ uint8_t* p_mdl_idx);
+extern bool bta_hl_find_mdl_idx(uint8_t app_idx, uint8_t mcl_idx,
+ uint16_t mdl_id, uint8_t* p_mdl_idx);
+extern bool bta_hl_find_an_active_mdl_idx(uint8_t app_idx, uint8_t mcl_idx,
+ uint8_t* p_mdl_idx);
+extern bool bta_hl_find_dch_setup_mdl_idx(uint8_t app_idx, uint8_t mcl_idx,
+ uint8_t* p_mdl_idx);
+extern bool bta_hl_find_an_in_use_mcl_idx(uint8_t app_idx, uint8_t* p_mcl_idx);
+extern bool bta_hl_find_an_in_use_app_idx(uint8_t* p_app_idx);
+extern bool bta_hl_find_app_idx(uint8_t app_id, uint8_t* p_app_idx);
+extern bool bta_hl_find_app_idx_using_handle(tBTA_HL_APP_HANDLE app_handle,
+ uint8_t* p_app_idx);
+extern bool bta_hl_find_mcl_idx_using_handle(tBTA_HL_MCL_HANDLE mcl_handle,
+ uint8_t* p_app_idx,
+ uint8_t* p_mcl_idx);
+extern bool bta_hl_find_mcl_idx(uint8_t app_idx, BD_ADDR p_bd_addr,
+ uint8_t* p_mcl_idx);
+extern bool bta_hl_is_the_first_reliable_existed(uint8_t app_idx,
+ uint8_t mcl_idx);
+extern bool bta_hl_find_non_active_mdl_cfg(uint8_t app_idx,
+ uint8_t start_mdl_cfg_idx,
+ uint8_t* p_mdl_cfg_idx);
+extern bool bta_hl_find_avail_mdl_cfg_idx(uint8_t app_idx, uint8_t mcl_idx,
+ uint8_t* p_mdl_cfg_idx);
+extern bool bta_hl_find_mdl_cfg_idx(uint8_t app_idx, uint8_t mcl_idx,
+ tBTA_HL_MDL_ID mdl_id,
+ uint8_t* p_mdl_cfg_idx);
+extern bool bta_hl_get_cur_time(uint8_t app_idx, uint8_t* p_cur_time);
+extern void bta_hl_sort_cfg_time_idx(uint8_t app_idx, uint8_t* a, uint8_t n);
+extern void bta_hl_compact_mdl_cfg_time(uint8_t app_idx, uint8_t mdep_id);
+extern bool bta_hl_is_mdl_exsit_in_mcl(uint8_t app_idx, BD_ADDR bd_addr,
+ tBTA_HL_MDL_ID mdl_id);
+extern bool bta_hl_delete_mdl_cfg(uint8_t app_idx, BD_ADDR bd_addr,
+ tBTA_HL_MDL_ID mdl_id);
+extern bool bta_hl_is_mdl_value_valid(tBTA_HL_MDL_ID mdl_id);
+extern bool bta_hl_find_mdep_cfg_idx(uint8_t app_idx,
+ tBTA_HL_MDEP_ID local_mdep_id,
+ uint8_t* p_mdep_cfg_idx);
+extern void bta_hl_find_rxtx_apdu_size(uint8_t app_idx, uint8_t mdep_cfg_idx,
+ uint16_t* p_rx_apu_size,
+ uint16_t* p_tx_apu_size);
+extern bool bta_hl_validate_peer_cfg(uint8_t app_idx, uint8_t mcl_idx,
+ uint8_t mdl_idx,
+ tBTA_HL_MDEP_ID peer_mdep_id,
+ tBTA_HL_MDEP_ROLE peer_mdep_role,
+ uint8_t sdp_idx);
+extern tBTA_HL_STATUS bta_hl_chk_local_cfg(uint8_t app_idx, uint8_t mcl_idx,
+ uint8_t mdep_cfg_idx,
+ tBTA_HL_DCH_CFG local_cfg);
- extern bool bta_hl_validate_reconnect_params(uint8_t app_idx, uint8_t mcl_idx,
- tBTA_HL_API_DCH_RECONNECT *p_reconnect,
- uint8_t *p_mdep_cfg_idx, uint8_t *p_mdl_cfg_idx);
- extern bool bta_hl_find_avail_mcl_idx(uint8_t app_idx, uint8_t *p_mcl_idx);
- extern bool bta_hl_find_avail_mdl_idx(uint8_t app_idx, uint8_t mcl_idx,
- uint8_t *p_mdl_idx);
- extern bool bta_hl_is_a_duplicate_id(uint8_t app_id);
- extern bool bta_hl_find_avail_app_idx(uint8_t *p_idx);
- extern tBTA_HL_STATUS bta_hl_app_update(uint8_t app_id, bool is_register);
- extern tBTA_HL_STATUS bta_hl_app_registration(uint8_t app_idx);
- extern void bta_hl_discard_data(uint16_t event, tBTA_HL_DATA *p_data);
- extern void bta_hl_save_mdl_cfg(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx );
- extern void bta_hl_set_dch_chan_cfg(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx, tBTA_HL_DATA *p_data);
- extern bool bta_hl_get_l2cap_cfg(tBTA_HL_MDL_HANDLE mdl_hnd, tBTA_HL_L2CAP_CFG_INFO *p_cfg);
- extern bool bta_hl_validate_chan_cfg(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx);
- extern bool bta_hl_is_cong_on(uint8_t app_id, BD_ADDR bd_addr, tBTA_HL_MDL_ID mdl_id);
- extern void bta_hl_check_cch_close(uint8_t app_idx, uint8_t mcl_idx,
- tBTA_HL_DATA *p_data, bool check_dch_setup);
- extern void bta_hl_clean_app(uint8_t app_idx);
- extern void bta_hl_check_deregistration(uint8_t app_idx, tBTA_HL_DATA *p_data );
- extern void bta_hl_check_disable(tBTA_HL_DATA *p_data );
- extern void bta_hl_build_abort_ind(tBTA_HL *p_evt_data,
- tBTA_HL_APP_HANDLE app_handle,
- tBTA_HL_MCL_HANDLE mcl_handle);
- extern void bta_hl_build_abort_cfm(tBTA_HL *p_evt_data,
+extern bool bta_hl_validate_reconnect_params(
+ uint8_t app_idx, uint8_t mcl_idx, tBTA_HL_API_DCH_RECONNECT* p_reconnect,
+ uint8_t* p_mdep_cfg_idx, uint8_t* p_mdl_cfg_idx);
+extern bool bta_hl_find_avail_mcl_idx(uint8_t app_idx, uint8_t* p_mcl_idx);
+extern bool bta_hl_find_avail_mdl_idx(uint8_t app_idx, uint8_t mcl_idx,
+ uint8_t* p_mdl_idx);
+extern bool bta_hl_is_a_duplicate_id(uint8_t app_id);
+extern bool bta_hl_find_avail_app_idx(uint8_t* p_idx);
+extern tBTA_HL_STATUS bta_hl_app_update(uint8_t app_id, bool is_register);
+extern tBTA_HL_STATUS bta_hl_app_registration(uint8_t app_idx);
+extern void bta_hl_discard_data(uint16_t event, tBTA_HL_DATA* p_data);
+extern void bta_hl_save_mdl_cfg(uint8_t app_idx, uint8_t mcl_idx,
+ uint8_t mdl_idx);
+extern void bta_hl_set_dch_chan_cfg(uint8_t app_idx, uint8_t mcl_idx,
+ uint8_t mdl_idx, tBTA_HL_DATA* p_data);
+extern bool bta_hl_get_l2cap_cfg(tBTA_HL_MDL_HANDLE mdl_hnd,
+ tBTA_HL_L2CAP_CFG_INFO* p_cfg);
+extern bool bta_hl_validate_chan_cfg(uint8_t app_idx, uint8_t mcl_idx,
+ uint8_t mdl_idx);
+extern bool bta_hl_is_cong_on(uint8_t app_id, BD_ADDR bd_addr,
+ tBTA_HL_MDL_ID mdl_id);
+extern void bta_hl_check_cch_close(uint8_t app_idx, uint8_t mcl_idx,
+ tBTA_HL_DATA* p_data, bool check_dch_setup);
+extern void bta_hl_clean_app(uint8_t app_idx);
+extern void bta_hl_check_deregistration(uint8_t app_idx, tBTA_HL_DATA* p_data);
+extern void bta_hl_check_disable(tBTA_HL_DATA* p_data);
+extern void bta_hl_build_abort_ind(tBTA_HL* p_evt_data,
+ tBTA_HL_APP_HANDLE app_handle,
+ tBTA_HL_MCL_HANDLE mcl_handle);
+extern void bta_hl_build_abort_cfm(tBTA_HL* p_evt_data,
+ tBTA_HL_APP_HANDLE app_handle,
+ tBTA_HL_MCL_HANDLE mcl_handle,
+ tBTA_HL_STATUS status);
+extern void bta_hl_build_dch_close_cfm(tBTA_HL* p_evt_data,
+ tBTA_HL_APP_HANDLE app_handle,
+ tBTA_HL_MCL_HANDLE mcl_handle,
+ tBTA_HL_MDL_HANDLE mdl_handle,
+ tBTA_HL_STATUS status);
+extern void bta_hl_build_dch_close_ind(tBTA_HL* p_evt_data,
+ tBTA_HL_APP_HANDLE app_handle,
+ tBTA_HL_MCL_HANDLE mcl_handle,
+ tBTA_HL_MDL_HANDLE mdl_handle,
+ bool intentional);
+extern void bta_hl_build_send_data_cfm(tBTA_HL* p_evt_data,
+ tBTA_HL_APP_HANDLE app_handle,
+ tBTA_HL_MCL_HANDLE mcl_handle,
+ tBTA_HL_MDL_HANDLE mdl_handle,
+ tBTA_HL_STATUS status);
+extern void bta_hl_build_rcv_data_ind(tBTA_HL* p_evt_data,
+ tBTA_HL_APP_HANDLE app_handle,
+ tBTA_HL_MCL_HANDLE mcl_handle,
+ tBTA_HL_MDL_HANDLE mdl_handle);
+extern void bta_hl_build_cch_open_cfm(tBTA_HL* p_evt_data, uint8_t app_id,
+ tBTA_HL_APP_HANDLE app_handle,
+ tBTA_HL_MCL_HANDLE mcl_handle,
+ BD_ADDR bd_addr, tBTA_HL_STATUS status);
+extern void bta_hl_build_cch_open_ind(tBTA_HL* p_evt_data,
+ tBTA_HL_APP_HANDLE app_handle,
+ tBTA_HL_MCL_HANDLE mcl_handle,
+ BD_ADDR bd_addr);
+extern void bta_hl_build_cch_close_cfm(tBTA_HL* p_evt_data,
+ tBTA_HL_APP_HANDLE app_handle,
+ tBTA_HL_MCL_HANDLE mcl_handle,
+ tBTA_HL_STATUS status);
+extern void bta_hl_build_cch_close_ind(tBTA_HL* p_evt_data,
+ tBTA_HL_APP_HANDLE app_handle,
+ tBTA_HL_MCL_HANDLE mcl_handle,
+ bool intentional);
+
+extern void bta_hl_build_dch_open_cfm(
+ tBTA_HL* p_evt_data, tBTA_HL_APP_HANDLE app_handle,
+ tBTA_HL_MCL_HANDLE mcl_handle, tBTA_HL_MDL_HANDLE mdl_handle,
+ tBTA_HL_MDEP_ID local_mdep_id, tBTA_HL_MDL_ID mdl_id,
+ tBTA_HL_DCH_MODE dch_mode, bool first_reliable, uint16_t mtu,
+ tBTA_HL_STATUS status);
+
+extern void bta_hl_build_delete_mdl_cfm(tBTA_HL* p_evt_data,
tBTA_HL_APP_HANDLE app_handle,
tBTA_HL_MCL_HANDLE mcl_handle,
+ tBTA_HL_MDL_ID mdl_id,
tBTA_HL_STATUS status);
- extern void bta_hl_build_dch_close_cfm(tBTA_HL *p_evt_data,
- tBTA_HL_APP_HANDLE app_handle,
- tBTA_HL_MCL_HANDLE mcl_handle,
- tBTA_HL_MDL_HANDLE mdl_handle,
- tBTA_HL_STATUS status);
- extern void bta_hl_build_dch_close_ind(tBTA_HL *p_evt_data,
- tBTA_HL_APP_HANDLE app_handle,
- tBTA_HL_MCL_HANDLE mcl_handle,
- tBTA_HL_MDL_HANDLE mdl_handle,
- bool intentional);
- extern void bta_hl_build_send_data_cfm(tBTA_HL *p_evt_data,
- tBTA_HL_APP_HANDLE app_handle,
- tBTA_HL_MCL_HANDLE mcl_handle,
- tBTA_HL_MDL_HANDLE mdl_handle,
- tBTA_HL_STATUS status );
- extern void bta_hl_build_rcv_data_ind(tBTA_HL *p_evt_data,
- tBTA_HL_APP_HANDLE app_handle,
- tBTA_HL_MCL_HANDLE mcl_handle,
- tBTA_HL_MDL_HANDLE mdl_handle);
- extern void bta_hl_build_cch_open_cfm(tBTA_HL *p_evt_data,
- uint8_t app_id,
- tBTA_HL_APP_HANDLE app_handle,
- tBTA_HL_MCL_HANDLE mcl_handle,
- BD_ADDR bd_addr,
- tBTA_HL_STATUS status );
- extern void bta_hl_build_cch_open_ind(tBTA_HL *p_evt_data,
- tBTA_HL_APP_HANDLE app_handle,
- tBTA_HL_MCL_HANDLE mcl_handle,
- BD_ADDR bd_addr);
- extern void bta_hl_build_cch_close_cfm(tBTA_HL *p_evt_data,
- tBTA_HL_APP_HANDLE app_handle,
- tBTA_HL_MCL_HANDLE mcl_handle,
- tBTA_HL_STATUS status );
- extern void bta_hl_build_cch_close_ind(tBTA_HL *p_evt_data,
- tBTA_HL_APP_HANDLE app_handle,
- tBTA_HL_MCL_HANDLE mcl_handle,
- bool intentional);
-
- extern void bta_hl_build_dch_open_cfm(tBTA_HL *p_evt_data,
- tBTA_HL_APP_HANDLE app_handle,
- tBTA_HL_MCL_HANDLE mcl_handle,
- tBTA_HL_MDL_HANDLE mdl_handle,
- tBTA_HL_MDEP_ID local_mdep_id,
- tBTA_HL_MDL_ID mdl_id,
- tBTA_HL_DCH_MODE dch_mode,
- bool first_reliable,
- uint16_t mtu,
- tBTA_HL_STATUS status);
-
- extern void bta_hl_build_delete_mdl_cfm(tBTA_HL *p_evt_data,
- tBTA_HL_APP_HANDLE app_handle,
- tBTA_HL_MCL_HANDLE mcl_handle,
- tBTA_HL_MDL_ID mdl_id,
- tBTA_HL_STATUS status);
- extern void bta_hl_build_echo_test_cfm(tBTA_HL *p_evt_data,
- tBTA_HL_APP_HANDLE app_handle,
- tBTA_HL_MCL_HANDLE mcl_handle,
- tBTA_HL_STATUS status );
- extern void bta_hl_build_sdp_query_cfm(tBTA_HL *p_evt_data,
- uint8_t app_id,
- tBTA_HL_APP_HANDLE app_handle,
- BD_ADDR bd_addr,
- tBTA_HL_SDP *p_sdp,
- tBTA_HL_STATUS status);
+extern void bta_hl_build_echo_test_cfm(tBTA_HL* p_evt_data,
+ tBTA_HL_APP_HANDLE app_handle,
+ tBTA_HL_MCL_HANDLE mcl_handle,
+ tBTA_HL_STATUS status);
+extern void bta_hl_build_sdp_query_cfm(tBTA_HL* p_evt_data, uint8_t app_id,
+ tBTA_HL_APP_HANDLE app_handle,
+ BD_ADDR bd_addr, tBTA_HL_SDP* p_sdp,
+ tBTA_HL_STATUS status);
#if (BTA_HL_DEBUG == TRUE)
- extern const char *bta_hl_status_code(tBTA_HL_STATUS status);
- extern const char *bta_hl_evt_code(tBTA_HL_INT_EVT evt_code);
+extern const char* bta_hl_status_code(tBTA_HL_STATUS status);
+extern const char* bta_hl_evt_code(tBTA_HL_INT_EVT evt_code);
#endif
#ifdef __cplusplus
}
#endif
#endif /* BTA_MSE_INT_H */
-
-
diff --git a/bta/hl/bta_hl_main.cc b/bta/hl/bta_hl_main.cc
index a7afdc8..9be6813 100644
--- a/bta/hl/bta_hl_main.cc
+++ b/bta/hl/bta_hl_main.cc
@@ -27,20 +27,17 @@
#include "bt_target.h"
#if (HL_INCLUDED == TRUE)
-
-
+#include "bt_common.h"
#include "bta_hl_api.h"
#include "bta_hl_int.h"
-#include "bt_common.h"
-#include "utl.h"
#include "l2c_api.h"
#include "mca_defs.h"
#include "osi/include/osi.h"
-
+#include "utl.h"
#if (BTA_HL_DEBUG == TRUE)
-static const char *bta_hl_cch_state_code(tBTA_HL_CCH_STATE state_code);
-static const char *bta_hl_dch_state_code(tBTA_HL_DCH_STATE state_code);
+static const char* bta_hl_cch_state_code(tBTA_HL_CCH_STATE state_code);
+static const char* bta_hl_dch_state_code(tBTA_HL_DCH_STATE state_code);
#endif
extern uint16_t L2CA_AllocateRandomPsm(void);
@@ -53,236 +50,254 @@
****************************************************************************/
/* state machine action enumeration list for DCH */
/* The order of this enumeration must be the same as bta_hl_dch_act_tbl[] */
-enum
-{
- BTA_HL_DCH_MCA_CREATE,
- BTA_HL_DCH_MCA_CREATE_CFM,
- BTA_HL_DCH_MCA_CREATE_IND,
- BTA_HL_DCH_MCA_OPEN_CFM,
- BTA_HL_DCH_MCA_OPEN_IND,
- BTA_HL_DCH_MCA_CLOSE,
- BTA_HL_DCH_MCA_CLOSE_CFM,
- BTA_HL_DCH_MCA_CLOSE_IND,
- BTA_HL_DCH_CLOSE_CMPL,
- BTA_HL_DCH_MCA_RCV_DATA,
+enum {
+ BTA_HL_DCH_MCA_CREATE,
+ BTA_HL_DCH_MCA_CREATE_CFM,
+ BTA_HL_DCH_MCA_CREATE_IND,
+ BTA_HL_DCH_MCA_OPEN_CFM,
+ BTA_HL_DCH_MCA_OPEN_IND,
+ BTA_HL_DCH_MCA_CLOSE,
+ BTA_HL_DCH_MCA_CLOSE_CFM,
+ BTA_HL_DCH_MCA_CLOSE_IND,
+ BTA_HL_DCH_CLOSE_CMPL,
+ BTA_HL_DCH_MCA_RCV_DATA,
- BTA_HL_DCH_SDP_INIT,
- BTA_HL_DCH_MCA_RECONNECT,
- BTA_HL_DCH_MCA_RECONNECT_IND,
- BTA_HL_DCH_MCA_RECONNECT_CFM,
- BTA_HL_DCH_CLOSE_ECHO_TEST,
- BTA_HL_DCH_CREATE_RSP,
- BTA_HL_DCH_MCA_ABORT,
- BTA_HL_DCH_MCA_ABORT_IND,
- BTA_HL_DCH_MCA_ABORT_CFM,
- BTA_HL_DCH_MCA_CONG_CHANGE,
+ BTA_HL_DCH_SDP_INIT,
+ BTA_HL_DCH_MCA_RECONNECT,
+ BTA_HL_DCH_MCA_RECONNECT_IND,
+ BTA_HL_DCH_MCA_RECONNECT_CFM,
+ BTA_HL_DCH_CLOSE_ECHO_TEST,
+ BTA_HL_DCH_CREATE_RSP,
+ BTA_HL_DCH_MCA_ABORT,
+ BTA_HL_DCH_MCA_ABORT_IND,
+ BTA_HL_DCH_MCA_ABORT_CFM,
+ BTA_HL_DCH_MCA_CONG_CHANGE,
- BTA_HL_DCH_SDP_FAIL,
- BTA_HL_DCH_SEND_DATA,
- BTA_HL_DCH_CI_GET_TX_DATA,
- BTA_HL_DCH_CI_PUT_RX_DATA,
- BTA_HL_DCH_CI_GET_ECHO_DATA,
- BTA_HL_DCH_ECHO_TEST,
- BTA_HL_DCH_CI_PUT_ECHO_DATA,
- BTA_HL_DCH_IGNORE
+ BTA_HL_DCH_SDP_FAIL,
+ BTA_HL_DCH_SEND_DATA,
+ BTA_HL_DCH_CI_GET_TX_DATA,
+ BTA_HL_DCH_CI_PUT_RX_DATA,
+ BTA_HL_DCH_CI_GET_ECHO_DATA,
+ BTA_HL_DCH_ECHO_TEST,
+ BTA_HL_DCH_CI_PUT_ECHO_DATA,
+ BTA_HL_DCH_IGNORE
};
-typedef void (*tBTA_HL_DCH_ACTION)(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx, tBTA_HL_DATA *p_data);
+typedef void (*tBTA_HL_DCH_ACTION)(uint8_t app_idx, uint8_t mcl_idx,
+ uint8_t mdl_idx, tBTA_HL_DATA* p_data);
-static const tBTA_HL_DCH_ACTION bta_hl_dch_action[] =
-{
- bta_hl_dch_mca_create,
- bta_hl_dch_mca_create_cfm,
- bta_hl_dch_mca_create_ind,
- bta_hl_dch_mca_open_cfm,
- bta_hl_dch_mca_open_ind,
- bta_hl_dch_mca_close,
- bta_hl_dch_mca_close_cfm,
- bta_hl_dch_mca_close_ind,
- bta_hl_dch_close_cmpl,
- bta_hl_dch_mca_rcv_data,
+static const tBTA_HL_DCH_ACTION bta_hl_dch_action[] = {
+ bta_hl_dch_mca_create, bta_hl_dch_mca_create_cfm,
+ bta_hl_dch_mca_create_ind, bta_hl_dch_mca_open_cfm,
+ bta_hl_dch_mca_open_ind, bta_hl_dch_mca_close,
+ bta_hl_dch_mca_close_cfm, bta_hl_dch_mca_close_ind,
+ bta_hl_dch_close_cmpl, bta_hl_dch_mca_rcv_data,
- bta_hl_dch_sdp_init,
- bta_hl_dch_mca_reconnect,
- bta_hl_dch_mca_reconnect_ind,
- bta_hl_dch_mca_reconnect_cfm,
- bta_hl_dch_close_echo_test,
- bta_hl_dch_create_rsp,
- bta_hl_dch_mca_abort,
- bta_hl_dch_mca_abort_ind,
- bta_hl_dch_mca_abort_cfm,
- bta_hl_dch_mca_cong_change,
+ bta_hl_dch_sdp_init, bta_hl_dch_mca_reconnect,
+ bta_hl_dch_mca_reconnect_ind, bta_hl_dch_mca_reconnect_cfm,
+ bta_hl_dch_close_echo_test, bta_hl_dch_create_rsp,
+ bta_hl_dch_mca_abort, bta_hl_dch_mca_abort_ind,
+ bta_hl_dch_mca_abort_cfm, bta_hl_dch_mca_cong_change,
- bta_hl_dch_sdp_fail,
- bta_hl_dch_send_data,
- bta_hl_dch_ci_get_tx_data,
- bta_hl_dch_ci_put_rx_data,
- bta_hl_dch_ci_get_echo_data,
- bta_hl_dch_echo_test,
+ bta_hl_dch_sdp_fail, bta_hl_dch_send_data,
+ bta_hl_dch_ci_get_tx_data, bta_hl_dch_ci_put_rx_data,
+ bta_hl_dch_ci_get_echo_data, bta_hl_dch_echo_test,
bta_hl_dch_ci_put_echo_data,
};
-
/* state table information */
-#define BTA_HL_DCH_ACTIONS 1 /* number of actions */
-#define BTA_HL_DCH_ACTION_COL 0 /* position of action */
-#define BTA_HL_DCH_NEXT_STATE 1 /* position of next state */
-#define BTA_HL_DCH_NUM_COLS 2 /* number of columns in state tables */
+#define BTA_HL_DCH_ACTIONS 1 /* number of actions */
+#define BTA_HL_DCH_ACTION_COL 0 /* position of action */
+#define BTA_HL_DCH_NEXT_STATE 1 /* position of next state */
+#define BTA_HL_DCH_NUM_COLS 2 /* number of columns in state tables */
/* state table for idle state */
-static const uint8_t bta_hl_dch_st_idle[][BTA_HL_DCH_NUM_COLS] =
-{
-/* Event Action 1 Next state */
-/* BTA_HL_DCH_SDP_INIT_EVT */ {BTA_HL_DCH_SDP_INIT, BTA_HL_DCH_OPENING_ST},
-/* BTA_HL_DCH_OPEN_EVT */ {BTA_HL_DCH_MCA_CREATE, BTA_HL_DCH_OPENING_ST},
-/* BTA_HL_MCA_CREATE_IND_EVT */ {BTA_HL_DCH_MCA_CREATE_IND, BTA_HL_DCH_OPENING_ST},
-/* BTA_HL_MCA_CREATE_CFM_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_IDLE_ST},
-/* BTA_HL_MCA_OPEN_IND_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_IDLE_ST},
+static const uint8_t bta_hl_dch_st_idle[][BTA_HL_DCH_NUM_COLS] = {
+ /* Event Action 1 Next
+ state */
+ /* BTA_HL_DCH_SDP_INIT_EVT */ {BTA_HL_DCH_SDP_INIT,
+ BTA_HL_DCH_OPENING_ST},
+ /* BTA_HL_DCH_OPEN_EVT */ {BTA_HL_DCH_MCA_CREATE,
+ BTA_HL_DCH_OPENING_ST},
+ /* BTA_HL_MCA_CREATE_IND_EVT */ {BTA_HL_DCH_MCA_CREATE_IND,
+ BTA_HL_DCH_OPENING_ST},
+ /* BTA_HL_MCA_CREATE_CFM_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_IDLE_ST},
+ /* BTA_HL_MCA_OPEN_IND_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_IDLE_ST},
-/* BTA_HL_MCA_OPEN_CFM_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_IDLE_ST},
-/* BTA_HL_DCH_CLOSE_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_IDLE_ST},
-/* BTA_HL_MCA_CLOSE_IND_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_IDLE_ST},
-/* BTA_HL_MCA_CLOSE_CFM_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_IDLE_ST},
-/* BTA_HL_API_SEND_DATA_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_IDLE_ST},
+ /* BTA_HL_MCA_OPEN_CFM_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_IDLE_ST},
+ /* BTA_HL_DCH_CLOSE_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_IDLE_ST},
+ /* BTA_HL_MCA_CLOSE_IND_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_IDLE_ST},
+ /* BTA_HL_MCA_CLOSE_CFM_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_IDLE_ST},
+ /* BTA_HL_API_SEND_DATA_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_IDLE_ST},
-/* BTA_HL_MCA_RCV_DATA_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_IDLE_ST},
-/* BTA_HL_DCH_CLOSE_CMPL_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_IDLE_ST},
-/* BTA_HL_DCH_RECONNECT_EVT */ {BTA_HL_DCH_MCA_RECONNECT, BTA_HL_DCH_OPENING_ST},
-/* BTA_HL_DCH_SDP_FAIL_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_IDLE_ST},
-/* BTA_HL_MCA_RECONNECT_IND_EVT*/ {BTA_HL_DCH_MCA_RECONNECT_IND, BTA_HL_DCH_OPENING_ST},
+ /* BTA_HL_MCA_RCV_DATA_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_IDLE_ST},
+ /* BTA_HL_DCH_CLOSE_CMPL_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_IDLE_ST},
+ /* BTA_HL_DCH_RECONNECT_EVT */ {BTA_HL_DCH_MCA_RECONNECT,
+ BTA_HL_DCH_OPENING_ST},
+ /* BTA_HL_DCH_SDP_FAIL_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_IDLE_ST},
+ /* BTA_HL_MCA_RECONNECT_IND_EVT*/ {BTA_HL_DCH_MCA_RECONNECT_IND,
+ BTA_HL_DCH_OPENING_ST},
-/* BTA_HL_MCA_RECONNECT_CFM_EVT*/ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_IDLE_ST},
-/* BTA_HL_DCH_CLOSE_ECHO_TEST_EVT*/ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_IDLE_ST},
-/* BTA_HL_API_DCH_CREATE_RSP_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_IDLE_ST},
-/* BTA_HL_DCH_ABORT_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_IDLE_ST},
-/* BTA_HL_MCA_ABORT_IND_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_IDLE_ST},
+ /* BTA_HL_MCA_RECONNECT_CFM_EVT*/ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_IDLE_ST},
+ /* BTA_HL_DCH_CLOSE_ECHO_TEST_EVT*/ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_IDLE_ST},
+ /* BTA_HL_API_DCH_CREATE_RSP_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_IDLE_ST},
+ /* BTA_HL_DCH_ABORT_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_IDLE_ST},
+ /* BTA_HL_MCA_ABORT_IND_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_IDLE_ST},
-/* BTA_HL_MCA_ABORT_CFM_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_IDLE_ST},
-/* BTA_HL_MCA_CONG_CHG_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_IDLE_ST},
-/* BTA_HL_CI_GET_TX_DATA_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_IDLE_ST},
-/* BTA_HL_CI_PUT_RX_DATA_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_IDLE_ST},
-/* BTA_HL_CI_GET_ECHO_DATA_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_IDLE_ST},
-/* BTA_HL_DCH_ECHO_TEST_EVT */ {BTA_HL_DCH_ECHO_TEST, BTA_HL_DCH_OPENING_ST},
-/* BTA_HL_CI_PUT_ECHO_DATA_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_IDLE_ST}
-};
+ /* BTA_HL_MCA_ABORT_CFM_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_IDLE_ST},
+ /* BTA_HL_MCA_CONG_CHG_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_IDLE_ST},
+ /* BTA_HL_CI_GET_TX_DATA_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_IDLE_ST},
+ /* BTA_HL_CI_PUT_RX_DATA_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_IDLE_ST},
+ /* BTA_HL_CI_GET_ECHO_DATA_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_IDLE_ST},
+ /* BTA_HL_DCH_ECHO_TEST_EVT */ {BTA_HL_DCH_ECHO_TEST,
+ BTA_HL_DCH_OPENING_ST},
+ /* BTA_HL_CI_PUT_ECHO_DATA_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_IDLE_ST}};
/* state table for opening state */
-static const uint8_t bta_hl_dch_st_opening[][BTA_HL_DCH_NUM_COLS] =
-{
-/* Event Action 1 Next state */
-/* BTA_HL_DCH_SDP_INIT_EVT */ {BTA_HL_DCH_SDP_INIT, BTA_HL_DCH_OPENING_ST},
-/* BTA_HL_DCH_OPEN_EVT */ {BTA_HL_DCH_MCA_CREATE, BTA_HL_DCH_OPENING_ST},
-/* BTA_HL_MCA_CREATE_IND_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_OPENING_ST},
-/* BTA_HL_MCA_CREATE_CFM_EVT */ {BTA_HL_DCH_MCA_CREATE_CFM, BTA_HL_DCH_OPENING_ST},
-/* BTA_HL_MCA_OPEN_IND_EVT */ {BTA_HL_DCH_MCA_OPEN_IND, BTA_HL_DCH_OPEN_ST},
-/* BTA_HL_MCA_OPEN_CFM_EVT */ {BTA_HL_DCH_MCA_OPEN_CFM, BTA_HL_DCH_OPEN_ST},
-/* BTA_HL_DCH_CLOSE_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_OPENING_ST},
-/* BTA_HL_MCA_CLOSE_IND_EVT */ {BTA_HL_DCH_MCA_CLOSE_IND, BTA_HL_DCH_CLOSING_ST},
-/* BTA_HL_MCA_CLOSE_CFM_EVT */ {BTA_HL_DCH_MCA_CLOSE_CFM, BTA_HL_DCH_CLOSING_ST},
-/* BTA_HL_API_SEND_DATA_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_OPEN_ST},
+static const uint8_t bta_hl_dch_st_opening[][BTA_HL_DCH_NUM_COLS] = {
+ /* Event Action 1 Next
+ state */
+ /* BTA_HL_DCH_SDP_INIT_EVT */ {BTA_HL_DCH_SDP_INIT,
+ BTA_HL_DCH_OPENING_ST},
+ /* BTA_HL_DCH_OPEN_EVT */ {BTA_HL_DCH_MCA_CREATE,
+ BTA_HL_DCH_OPENING_ST},
+ /* BTA_HL_MCA_CREATE_IND_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_OPENING_ST},
+ /* BTA_HL_MCA_CREATE_CFM_EVT */ {BTA_HL_DCH_MCA_CREATE_CFM,
+ BTA_HL_DCH_OPENING_ST},
+ /* BTA_HL_MCA_OPEN_IND_EVT */ {BTA_HL_DCH_MCA_OPEN_IND,
+ BTA_HL_DCH_OPEN_ST},
+ /* BTA_HL_MCA_OPEN_CFM_EVT */ {BTA_HL_DCH_MCA_OPEN_CFM,
+ BTA_HL_DCH_OPEN_ST},
+ /* BTA_HL_DCH_CLOSE_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_OPENING_ST},
+ /* BTA_HL_MCA_CLOSE_IND_EVT */ {BTA_HL_DCH_MCA_CLOSE_IND,
+ BTA_HL_DCH_CLOSING_ST},
+ /* BTA_HL_MCA_CLOSE_CFM_EVT */ {BTA_HL_DCH_MCA_CLOSE_CFM,
+ BTA_HL_DCH_CLOSING_ST},
+ /* BTA_HL_API_SEND_DATA_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_OPEN_ST},
-/* BTA_HL_MCA_RCV_DATA_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_OPEN_ST},
-/* BTA_HL_DCH_CLOSE_CMPL_EVT */ {BTA_HL_DCH_CLOSE_CMPL, BTA_HL_DCH_IDLE_ST},
-/* BTA_HL_DCH_RECONNECT_EVT */ {BTA_HL_DCH_MCA_RECONNECT, BTA_HL_DCH_OPENING_ST},
-/* BTA_HL_DCH_SDP_FAIL_EVT */ {BTA_HL_DCH_SDP_FAIL, BTA_HL_DCH_CLOSING_ST},
-/* BTA_HL_MCA_RECONNECT_IND_EVT*/ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_IDLE_ST},
-/* BTA_HL_MCA_RECONNECT_CFM_EVT*/ {BTA_HL_DCH_MCA_RECONNECT_CFM, BTA_HL_DCH_OPENING_ST},
-/* BTA_HL_DCH_CLOSE_ECHO_TEST_EVT*/ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_OPENING_ST},
-/* BTA_HL_API_DCH_CREATE_RSP_EVT */ {BTA_HL_DCH_CREATE_RSP, BTA_HL_DCH_OPENING_ST},
-/* BTA_HL_DCH_ABORT_EVT */ {BTA_HL_DCH_MCA_ABORT, BTA_HL_DCH_OPENING_ST},
-/* BTA_HL_MCA_ABORT_IND_EVT */ {BTA_HL_DCH_MCA_ABORT_IND, BTA_HL_DCH_OPENING_ST},
+ /* BTA_HL_MCA_RCV_DATA_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_OPEN_ST},
+ /* BTA_HL_DCH_CLOSE_CMPL_EVT */ {BTA_HL_DCH_CLOSE_CMPL, BTA_HL_DCH_IDLE_ST},
+ /* BTA_HL_DCH_RECONNECT_EVT */ {BTA_HL_DCH_MCA_RECONNECT,
+ BTA_HL_DCH_OPENING_ST},
+ /* BTA_HL_DCH_SDP_FAIL_EVT */ {BTA_HL_DCH_SDP_FAIL,
+ BTA_HL_DCH_CLOSING_ST},
+ /* BTA_HL_MCA_RECONNECT_IND_EVT*/ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_IDLE_ST},
+ /* BTA_HL_MCA_RECONNECT_CFM_EVT*/ {BTA_HL_DCH_MCA_RECONNECT_CFM,
+ BTA_HL_DCH_OPENING_ST},
+ /* BTA_HL_DCH_CLOSE_ECHO_TEST_EVT*/ {BTA_HL_DCH_IGNORE,
+ BTA_HL_DCH_OPENING_ST},
+ /* BTA_HL_API_DCH_CREATE_RSP_EVT */ {BTA_HL_DCH_CREATE_RSP,
+ BTA_HL_DCH_OPENING_ST},
+ /* BTA_HL_DCH_ABORT_EVT */ {BTA_HL_DCH_MCA_ABORT, BTA_HL_DCH_OPENING_ST},
+ /* BTA_HL_MCA_ABORT_IND_EVT */ {BTA_HL_DCH_MCA_ABORT_IND,
+ BTA_HL_DCH_OPENING_ST},
-/* BTA_HL_MCA_ABORT_CFM_EVT */ {BTA_HL_DCH_MCA_ABORT_CFM, BTA_HL_DCH_OPENING_ST},
-/* BTA_HL_MCA_CONG_CHG_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_OPENING_ST},
-/* BTA_HL_CI_GET_TX_DATA_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_OPENING_ST},
-/* BTA_HL_CI_PUT_RX_DATA_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_OPENING_ST},
-/* BTA_HL_CI_GET_ECHO_DATA_EVT */ {BTA_HL_DCH_CI_GET_ECHO_DATA, BTA_HL_DCH_OPENING_ST},
-/* BTA_HL_DCH_ECHO_TEST_EVT */ {BTA_HL_DCH_ECHO_TEST, BTA_HL_DCH_OPENING_ST},
-/* BTA_HL_CI_PUT_ECHO_DATA_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_OPENING_ST}
-};
+ /* BTA_HL_MCA_ABORT_CFM_EVT */ {BTA_HL_DCH_MCA_ABORT_CFM,
+ BTA_HL_DCH_OPENING_ST},
+ /* BTA_HL_MCA_CONG_CHG_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_OPENING_ST},
+ /* BTA_HL_CI_GET_TX_DATA_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_OPENING_ST},
+ /* BTA_HL_CI_PUT_RX_DATA_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_OPENING_ST},
+ /* BTA_HL_CI_GET_ECHO_DATA_EVT */ {BTA_HL_DCH_CI_GET_ECHO_DATA,
+ BTA_HL_DCH_OPENING_ST},
+ /* BTA_HL_DCH_ECHO_TEST_EVT */ {BTA_HL_DCH_ECHO_TEST,
+ BTA_HL_DCH_OPENING_ST},
+ /* BTA_HL_CI_PUT_ECHO_DATA_EVT */ {BTA_HL_DCH_IGNORE,
+ BTA_HL_DCH_OPENING_ST}};
/* state table for open state */
-static const uint8_t bta_hl_dch_st_open[][BTA_HL_DCH_NUM_COLS] =
-{
-/* Event Action 1 Next state */
-/* BTA_HL_DCH_SDP_INIT_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_OPEN_ST},
-/* BTA_HL_DCH_OPEN_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_OPEN_ST},
-/* BTA_HL_MCA_CREATE_IND_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_OPEN_ST},
-/* BTA_HL_MCA_CREATE_CFM_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_OPEN_ST},
-/* BTA_HL_MCA_OPEN_IND_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_OPEN_ST},
-/* BTA_HL_MCA_OPEN_CFM_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_OPEN_ST},
-/* BTA_HL_DCH_CLOSE_EVT */ {BTA_HL_DCH_MCA_CLOSE, BTA_HL_DCH_CLOSING_ST},
-/* BTA_HL_MCA_CLOSE_IND_EVT */ {BTA_HL_DCH_MCA_CLOSE_IND, BTA_HL_DCH_CLOSING_ST},
-/* BTA_HL_MCA_CLOSE_CFM_EVT */ {BTA_HL_DCH_MCA_CLOSE_CFM, BTA_HL_DCH_CLOSING_ST},
-/* BTA_HL_API_SEND_DATA_EVT */ {BTA_HL_DCH_SEND_DATA, BTA_HL_DCH_OPEN_ST},
+static const uint8_t bta_hl_dch_st_open[][BTA_HL_DCH_NUM_COLS] = {
+ /* Event Action 1 Next
+ state */
+ /* BTA_HL_DCH_SDP_INIT_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_OPEN_ST},
+ /* BTA_HL_DCH_OPEN_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_OPEN_ST},
+ /* BTA_HL_MCA_CREATE_IND_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_OPEN_ST},
+ /* BTA_HL_MCA_CREATE_CFM_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_OPEN_ST},
+ /* BTA_HL_MCA_OPEN_IND_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_OPEN_ST},
+ /* BTA_HL_MCA_OPEN_CFM_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_OPEN_ST},
+ /* BTA_HL_DCH_CLOSE_EVT */ {BTA_HL_DCH_MCA_CLOSE,
+ BTA_HL_DCH_CLOSING_ST},
+ /* BTA_HL_MCA_CLOSE_IND_EVT */ {BTA_HL_DCH_MCA_CLOSE_IND,
+ BTA_HL_DCH_CLOSING_ST},
+ /* BTA_HL_MCA_CLOSE_CFM_EVT */ {BTA_HL_DCH_MCA_CLOSE_CFM,
+ BTA_HL_DCH_CLOSING_ST},
+ /* BTA_HL_API_SEND_DATA_EVT */ {BTA_HL_DCH_SEND_DATA, BTA_HL_DCH_OPEN_ST},
-/* BTA_HL_MCA_RCV_DATA_EVT */ {BTA_HL_DCH_MCA_RCV_DATA, BTA_HL_DCH_OPEN_ST},
-/* BTA_HL_DCH_CLOSE_CMPL_EVT */ {BTA_HL_DCH_CLOSE_CMPL, BTA_HL_DCH_IDLE_ST},
-/* BTA_HL_DCH_RECONNECT_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_OPEN_ST},
-/* BTA_HL_DCH_SDP_FAIL_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_OPEN_ST},
-/* BTA_HL_MCA_RECONNECT_IND_EVT*/ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_OPEN_ST},
-/* BTA_HL_MCA_RECONNECT_CFM_EVT*/ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_OPEN_ST},
-/* BTA_HL_DCH_CLOSE_ECHO_TEST_EVT*/ {BTA_HL_DCH_CLOSE_ECHO_TEST, BTA_HL_DCH_CLOSING_ST},
-/* BTA_HL_API_DCH_CREATE_RSP_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_OPEN_ST},
-/* BTA_HL_DCH_ABORT_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_OPEN_ST},
-/* BTA_HL_MCA_ABORT_IND_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_OPEN_ST},
+ /* BTA_HL_MCA_RCV_DATA_EVT */ {BTA_HL_DCH_MCA_RCV_DATA,
+ BTA_HL_DCH_OPEN_ST},
+ /* BTA_HL_DCH_CLOSE_CMPL_EVT */ {BTA_HL_DCH_CLOSE_CMPL, BTA_HL_DCH_IDLE_ST},
+ /* BTA_HL_DCH_RECONNECT_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_OPEN_ST},
+ /* BTA_HL_DCH_SDP_FAIL_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_OPEN_ST},
+ /* BTA_HL_MCA_RECONNECT_IND_EVT*/ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_OPEN_ST},
+ /* BTA_HL_MCA_RECONNECT_CFM_EVT*/ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_OPEN_ST},
+ /* BTA_HL_DCH_CLOSE_ECHO_TEST_EVT*/ {BTA_HL_DCH_CLOSE_ECHO_TEST,
+ BTA_HL_DCH_CLOSING_ST},
+ /* BTA_HL_API_DCH_CREATE_RSP_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_OPEN_ST},
+ /* BTA_HL_DCH_ABORT_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_OPEN_ST},
+ /* BTA_HL_MCA_ABORT_IND_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_OPEN_ST},
-/* BTA_HL_DCH_ABORT_CFM_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_OPEN_ST},
-/* BTA_HL_MCA_CONG_CHG_EVT */ {BTA_HL_DCH_MCA_CONG_CHANGE, BTA_HL_DCH_OPEN_ST},
-/* BTA_HL_CI_GET_TX_DATA_EVT */ {BTA_HL_DCH_CI_GET_TX_DATA, BTA_HL_DCH_OPEN_ST},
-/* BTA_HL_CI_PUT_RX_DATA_EVT */ {BTA_HL_DCH_CI_PUT_RX_DATA, BTA_HL_DCH_OPEN_ST},
-/* BTA_HL_CI_GET_ECHO_DATA_EVT */ {BTA_HL_DCH_CI_GET_ECHO_DATA, BTA_HL_DCH_OPEN_ST},
-/* BTA_HL_DCH_ECHO_TEST_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_OPEN_ST},
-/* BTA_HL_CI_PUT_ECHO_DATA_EVT */ {BTA_HL_DCH_CI_PUT_ECHO_DATA, BTA_HL_DCH_OPEN_ST}
-};
-
+ /* BTA_HL_DCH_ABORT_CFM_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_OPEN_ST},
+ /* BTA_HL_MCA_CONG_CHG_EVT */ {BTA_HL_DCH_MCA_CONG_CHANGE,
+ BTA_HL_DCH_OPEN_ST},
+ /* BTA_HL_CI_GET_TX_DATA_EVT */ {BTA_HL_DCH_CI_GET_TX_DATA,
+ BTA_HL_DCH_OPEN_ST},
+ /* BTA_HL_CI_PUT_RX_DATA_EVT */ {BTA_HL_DCH_CI_PUT_RX_DATA,
+ BTA_HL_DCH_OPEN_ST},
+ /* BTA_HL_CI_GET_ECHO_DATA_EVT */ {BTA_HL_DCH_CI_GET_ECHO_DATA,
+ BTA_HL_DCH_OPEN_ST},
+ /* BTA_HL_DCH_ECHO_TEST_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_OPEN_ST},
+ /* BTA_HL_CI_PUT_ECHO_DATA_EVT */ {BTA_HL_DCH_CI_PUT_ECHO_DATA,
+ BTA_HL_DCH_OPEN_ST}};
/* state table for closing state */
-static const uint8_t bta_hl_dch_st_closing[][BTA_HL_DCH_NUM_COLS] =
-{
-/* Event Action 1 Next state */
-/* BTA_HL_DCH_SDP_INIT_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_CLOSING_ST},
-/* BTA_HL_DCH_OPEN_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_CLOSING_ST},
-/* BTA_HL_MCA_CREATE_IND_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_CLOSING_ST},
-/* BTA_HL_MCA_CREATE_CFM_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_CLOSING_ST},
-/* BTA_HL_MCA_OPEN_IND_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_CLOSING_ST},
-/* BTA_HL_MCA_OPEN_CFM_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_CLOSING_ST},
-/* BTA_HL_DCH_CLOSE_EVT */ {BTA_HL_DCH_MCA_CLOSE, BTA_HL_DCH_CLOSING_ST},
-/* BTA_HL_MCA_CLOSE_IND_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_CLOSING_ST},
-/* BTA_HL_MCA_CLOSE_CFM_EVT */ {BTA_HL_DCH_MCA_CLOSE_CFM, BTA_HL_DCH_CLOSING_ST},
-/* BTA_HL_API_SEND_DATA_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_CLOSING_ST},
+static const uint8_t bta_hl_dch_st_closing[][BTA_HL_DCH_NUM_COLS] = {
+ /* Event Action 1 Next state */
+ /* BTA_HL_DCH_SDP_INIT_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_CLOSING_ST},
+ /* BTA_HL_DCH_OPEN_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_CLOSING_ST},
+ /* BTA_HL_MCA_CREATE_IND_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_CLOSING_ST},
+ /* BTA_HL_MCA_CREATE_CFM_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_CLOSING_ST},
+ /* BTA_HL_MCA_OPEN_IND_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_CLOSING_ST},
+ /* BTA_HL_MCA_OPEN_CFM_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_CLOSING_ST},
+ /* BTA_HL_DCH_CLOSE_EVT */ {BTA_HL_DCH_MCA_CLOSE,
+ BTA_HL_DCH_CLOSING_ST},
+ /* BTA_HL_MCA_CLOSE_IND_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_CLOSING_ST},
+ /* BTA_HL_MCA_CLOSE_CFM_EVT */ {BTA_HL_DCH_MCA_CLOSE_CFM,
+ BTA_HL_DCH_CLOSING_ST},
+ /* BTA_HL_API_SEND_DATA_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_CLOSING_ST},
-/* BTA_HL_MCA_RCV_DATA_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_CLOSING_ST},
-/* BTA_HL_DCH_CLOSE_CMPL_EVT */ {BTA_HL_DCH_CLOSE_CMPL, BTA_HL_DCH_IDLE_ST},
-/* BTA_HL_DCH_RECONNECT_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_CLOSING_ST},
-/* BTA_HL_DCH_SDP_FAIL_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_CLOSING_ST},
-/* BTA_HL_MCA_RECONNECT_IND_EVT*/ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_CLOSING_ST},
-/* BTA_HL_MCA_RECONNECT_CFM_EVT*/ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_CLOSING_ST},
-/* BTA_HL_DCH_CLOSE_ECHO_TEST_EVT*/ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_CLOSING_ST},
-/* BTA_HL_API_DCH_CREATE_RSP_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_CLOSING_ST},
-/* BTA_HL_DCH_ABORT_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_CLOSING_ST},
-/* BTA_HL_MCA_ABORT_IND_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_CLOSING_ST},
+ /* BTA_HL_MCA_RCV_DATA_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_CLOSING_ST},
+ /* BTA_HL_DCH_CLOSE_CMPL_EVT */ {BTA_HL_DCH_CLOSE_CMPL, BTA_HL_DCH_IDLE_ST},
+ /* BTA_HL_DCH_RECONNECT_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_CLOSING_ST},
+ /* BTA_HL_DCH_SDP_FAIL_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_CLOSING_ST},
+ /* BTA_HL_MCA_RECONNECT_IND_EVT*/ {BTA_HL_DCH_IGNORE,
+ BTA_HL_DCH_CLOSING_ST},
+ /* BTA_HL_MCA_RECONNECT_CFM_EVT*/ {BTA_HL_DCH_IGNORE,
+ BTA_HL_DCH_CLOSING_ST},
+ /* BTA_HL_DCH_CLOSE_ECHO_TEST_EVT*/ {BTA_HL_DCH_IGNORE,
+ BTA_HL_DCH_CLOSING_ST},
+ /* BTA_HL_API_DCH_CREATE_RSP_EVT */ {BTA_HL_DCH_IGNORE,
+ BTA_HL_DCH_CLOSING_ST},
+ /* BTA_HL_DCH_ABORT_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_CLOSING_ST},
+ /* BTA_HL_MCA_ABORT_IND_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_CLOSING_ST},
-/* BTA_HL_DCH_ABORT_CFM_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_CLOSING_ST},
-/* BTA_HL_MCA_CONG_CHG_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_CLOSING_ST},
-/* BTA_HL_CI_GET_TX_DATA_EVT */ {BTA_HL_DCH_CI_GET_TX_DATA, BTA_HL_DCH_CLOSING_ST},
-/* BTA_HL_CI_PUT_RX_DATA_EVT */ {BTA_HL_DCH_CI_PUT_RX_DATA, BTA_HL_DCH_CLOSING_ST},
-/* BTA_HL_CI_GET_ECHO_DATA_EVT */ {BTA_HL_DCH_CI_GET_ECHO_DATA, BTA_HL_DCH_CLOSING_ST},
-/* BTA_HL_DCH_ECHO_TEST_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_CLOSING_ST},
-/* BTA_HL_CI_PUT_ECHO_DATA_EVT */ {BTA_HL_DCH_CI_PUT_ECHO_DATA, BTA_HL_DCH_CLOSING_ST}
-};
+ /* BTA_HL_DCH_ABORT_CFM_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_CLOSING_ST},
+ /* BTA_HL_MCA_CONG_CHG_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_CLOSING_ST},
+ /* BTA_HL_CI_GET_TX_DATA_EVT */ {BTA_HL_DCH_CI_GET_TX_DATA,
+ BTA_HL_DCH_CLOSING_ST},
+ /* BTA_HL_CI_PUT_RX_DATA_EVT */ {BTA_HL_DCH_CI_PUT_RX_DATA,
+ BTA_HL_DCH_CLOSING_ST},
+ /* BTA_HL_CI_GET_ECHO_DATA_EVT */ {BTA_HL_DCH_CI_GET_ECHO_DATA,
+ BTA_HL_DCH_CLOSING_ST},
+ /* BTA_HL_DCH_ECHO_TEST_EVT */ {BTA_HL_DCH_IGNORE, BTA_HL_DCH_CLOSING_ST},
+ /* BTA_HL_CI_PUT_ECHO_DATA_EVT */ {BTA_HL_DCH_CI_PUT_ECHO_DATA,
+ BTA_HL_DCH_CLOSING_ST}};
/* type for state table */
typedef const uint8_t (*tBTA_HL_DCH_ST_TBL)[BTA_HL_DCH_NUM_COLS];
/* state table */
-const tBTA_HL_DCH_ST_TBL bta_hl_dch_st_tbl[] =
-{
- bta_hl_dch_st_idle,
- bta_hl_dch_st_opening,
- bta_hl_dch_st_open,
- bta_hl_dch_st_closing
-};
+const tBTA_HL_DCH_ST_TBL bta_hl_dch_st_tbl[] = {
+ bta_hl_dch_st_idle, bta_hl_dch_st_opening, bta_hl_dch_st_open,
+ bta_hl_dch_st_closing};
/*****************************************************************************
* CCH State Table
@@ -291,117 +306,117 @@
* Constants and types
****************************************************************************/
/* state machine action enumeration list for CCH */
-enum
-{
- BTA_HL_CCH_SDP_INIT,
- BTA_HL_CCH_MCA_OPEN,
- BTA_HL_CCH_MCA_CLOSE,
- BTA_HL_CCH_CLOSE_CMPL,
- BTA_HL_CCH_MCA_CONNECT,
- BTA_HL_CCH_MCA_DISCONNECT,
- BTA_HL_CCH_MCA_RSP_TOUT,
- BTA_HL_CCH_MCA_DISC_OPEN,
- BTA_HL_CCH_IGNORE
+enum {
+ BTA_HL_CCH_SDP_INIT,
+ BTA_HL_CCH_MCA_OPEN,
+ BTA_HL_CCH_MCA_CLOSE,
+ BTA_HL_CCH_CLOSE_CMPL,
+ BTA_HL_CCH_MCA_CONNECT,
+ BTA_HL_CCH_MCA_DISCONNECT,
+ BTA_HL_CCH_MCA_RSP_TOUT,
+ BTA_HL_CCH_MCA_DISC_OPEN,
+ BTA_HL_CCH_IGNORE
};
/* type for action functions */
-typedef void (*tBTA_HL_CCH_ACTION)(uint8_t app_idx, uint8_t mcl_idx, tBTA_HL_DATA *p_data);
+typedef void (*tBTA_HL_CCH_ACTION)(uint8_t app_idx, uint8_t mcl_idx,
+ tBTA_HL_DATA* p_data);
/* action function list for MAS */
-const tBTA_HL_CCH_ACTION bta_hl_cch_action[] =
-{
- bta_hl_cch_sdp_init,
- bta_hl_cch_mca_open,
- bta_hl_cch_mca_close,
- bta_hl_cch_close_cmpl,
- bta_hl_cch_mca_connect,
- bta_hl_cch_mca_disconnect,
- bta_hl_cch_mca_rsp_tout,
- bta_hl_cch_mca_disc_open
-};
-
+const tBTA_HL_CCH_ACTION bta_hl_cch_action[] = {
+ bta_hl_cch_sdp_init, bta_hl_cch_mca_open, bta_hl_cch_mca_close,
+ bta_hl_cch_close_cmpl, bta_hl_cch_mca_connect, bta_hl_cch_mca_disconnect,
+ bta_hl_cch_mca_rsp_tout, bta_hl_cch_mca_disc_open};
/* state table information */
-#define BTA_HL_CCH_ACTIONS 1 /* number of actions */
-#define BTA_HL_CCH_NEXT_STATE 1 /* position of next state */
-#define BTA_HL_CCH_NUM_COLS 2 /* number of columns in state tables */
-
+#define BTA_HL_CCH_ACTIONS 1 /* number of actions */
+#define BTA_HL_CCH_NEXT_STATE 1 /* position of next state */
+#define BTA_HL_CCH_NUM_COLS 2 /* number of columns in state tables */
/* state table for MAS idle state */
-static const uint8_t bta_hl_cch_st_idle[][BTA_HL_CCH_NUM_COLS] =
-{
-/* Event Action 1 Next state */
-/* BTA_HL_CCH_OPEN_EVT */ {BTA_HL_CCH_SDP_INIT, BTA_HL_CCH_OPENING_ST},
-/* BTA_HL_CCH_SDP_OK_EVT */ {BTA_HL_CCH_IGNORE, BTA_HL_CCH_IDLE_ST},
-/* BTA_HL_CCH_SDP_FAIL_EVT */ {BTA_HL_CCH_IGNORE, BTA_HL_CCH_IDLE_ST},
-/* BTA_HL_MCA_CONNECT_IND_EVT */ {BTA_HL_CCH_MCA_CONNECT, BTA_HL_CCH_OPEN_ST},
-/* BTA_HL_MCA_DISCONNECT_IND_EVT */ {BTA_HL_CCH_IGNORE, BTA_HL_CCH_IDLE_ST},
-/* BTA_HL_CCH_CLOSE_EVT */ {BTA_HL_CCH_IGNORE, BTA_HL_CCH_IDLE_ST},
-/* BTA_HL_CCH_CLOSE_CMPL_EVT */ {BTA_HL_CCH_IGNORE, BTA_HL_CCH_IDLE_ST},
-/* BTA_HL_CCH_CLOSE_CMPL_EVT */ {BTA_HL_CCH_IGNORE, BTA_HL_CCH_IDLE_ST}
-};
+static const uint8_t bta_hl_cch_st_idle[][BTA_HL_CCH_NUM_COLS] = {
+ /* Event Action 1 Next state */
+ /* BTA_HL_CCH_OPEN_EVT */ {BTA_HL_CCH_SDP_INIT,
+ BTA_HL_CCH_OPENING_ST},
+ /* BTA_HL_CCH_SDP_OK_EVT */ {BTA_HL_CCH_IGNORE, BTA_HL_CCH_IDLE_ST},
+ /* BTA_HL_CCH_SDP_FAIL_EVT */ {BTA_HL_CCH_IGNORE, BTA_HL_CCH_IDLE_ST},
+ /* BTA_HL_MCA_CONNECT_IND_EVT */ {BTA_HL_CCH_MCA_CONNECT,
+ BTA_HL_CCH_OPEN_ST},
+ /* BTA_HL_MCA_DISCONNECT_IND_EVT */ {BTA_HL_CCH_IGNORE, BTA_HL_CCH_IDLE_ST},
+ /* BTA_HL_CCH_CLOSE_EVT */ {BTA_HL_CCH_IGNORE, BTA_HL_CCH_IDLE_ST},
+ /* BTA_HL_CCH_CLOSE_CMPL_EVT */ {BTA_HL_CCH_IGNORE, BTA_HL_CCH_IDLE_ST},
+ /* BTA_HL_CCH_CLOSE_CMPL_EVT */ {BTA_HL_CCH_IGNORE,
+ BTA_HL_CCH_IDLE_ST}};
/* state table for obex/rfcomm connection state */
-static const uint8_t bta_hl_cch_st_opening[][BTA_HL_CCH_NUM_COLS] =
-{
-/* Event Action 1 Next state */
-/* BTA_HL_CCH_OPEN_EVT */ {BTA_HL_CCH_IGNORE, BTA_HL_CCH_OPENING_ST},
-/* BTA_HL_CCH_SDP_OK_EVT */ {BTA_HL_CCH_MCA_OPEN, BTA_HL_CCH_OPENING_ST},
-/* BTA_HL_CCH_SDP_FAIL_EVT */ {BTA_HL_CCH_CLOSE_CMPL, BTA_HL_CCH_IDLE_ST},
-/* BTA_HL_MCA_CONNECT_IND_EVT */ {BTA_HL_CCH_MCA_CONNECT, BTA_HL_CCH_OPEN_ST},
-/* BTA_HL_MCA_DISCONNECT_IND_EVT */ {BTA_HL_CCH_MCA_DISCONNECT, BTA_HL_CCH_CLOSING_ST},
-/* BTA_HL_CCH_CLOSE_EVT */ {BTA_HL_CCH_MCA_CLOSE, BTA_HL_CCH_CLOSING_ST},
-/* BTA_HL_CCH_CLOSE_CMPL_EVT */ {BTA_HL_CCH_CLOSE_CMPL, BTA_HL_CCH_IDLE_ST},
-/* BTA_HL_MCA_RSP_TOUT_IND_EVT */ {BTA_HL_CCH_MCA_RSP_TOUT, BTA_HL_CCH_CLOSING_ST}
-};
+static const uint8_t bta_hl_cch_st_opening[][BTA_HL_CCH_NUM_COLS] = {
+ /* Event Action 1 Next state */
+ /* BTA_HL_CCH_OPEN_EVT */ {BTA_HL_CCH_IGNORE,
+ BTA_HL_CCH_OPENING_ST},
+ /* BTA_HL_CCH_SDP_OK_EVT */ {BTA_HL_CCH_MCA_OPEN,
+ BTA_HL_CCH_OPENING_ST},
+ /* BTA_HL_CCH_SDP_FAIL_EVT */ {BTA_HL_CCH_CLOSE_CMPL,
+ BTA_HL_CCH_IDLE_ST},
+ /* BTA_HL_MCA_CONNECT_IND_EVT */ {BTA_HL_CCH_MCA_CONNECT,
+ BTA_HL_CCH_OPEN_ST},
+ /* BTA_HL_MCA_DISCONNECT_IND_EVT */ {BTA_HL_CCH_MCA_DISCONNECT,
+ BTA_HL_CCH_CLOSING_ST},
+ /* BTA_HL_CCH_CLOSE_EVT */ {BTA_HL_CCH_MCA_CLOSE,
+ BTA_HL_CCH_CLOSING_ST},
+ /* BTA_HL_CCH_CLOSE_CMPL_EVT */ {BTA_HL_CCH_CLOSE_CMPL,
+ BTA_HL_CCH_IDLE_ST},
+ /* BTA_HL_MCA_RSP_TOUT_IND_EVT */ {BTA_HL_CCH_MCA_RSP_TOUT,
+ BTA_HL_CCH_CLOSING_ST}};
/* state table for open state */
-static const uint8_t bta_hl_cch_st_open[][BTA_HL_CCH_NUM_COLS] =
-{
-/* Event Action 1 Next state */
-/* BTA_HL_CCH_OPEN_EVT */ {BTA_HL_CCH_IGNORE, BTA_HL_CCH_OPEN_ST},
-/* BTA_HL_CCH_SDP_OK_EVT */ {BTA_HL_CCH_IGNORE, BTA_HL_CCH_OPEN_ST},
-/* BTA_HL_CCH_SDP_FAIL_EVT */ {BTA_HL_CCH_IGNORE, BTA_HL_CCH_OPEN_ST},
-/* BTA_HL_MCA_CONNECT_IND_EVT */ {BTA_HL_CCH_IGNORE, BTA_HL_CCH_OPEN_ST},
-/* BTA_HL_MCA_DISCONNECT_IND_EVT */ {BTA_HL_CCH_MCA_DISCONNECT, BTA_HL_CCH_CLOSING_ST},
-/* BTA_HL_CCH_CLOSE_EVT */ {BTA_HL_CCH_MCA_CLOSE, BTA_HL_CCH_CLOSING_ST},
-/* BTA_HL_CCH_CLOSE_CMPL_EVT */ {BTA_HL_CCH_IGNORE, BTA_HL_CCH_OPEN_ST},
-/* BTA_HL_MCA_RSP_TOUT_IND_EVT */ {BTA_HL_CCH_MCA_RSP_TOUT, BTA_HL_CCH_CLOSING_ST}
-};
+static const uint8_t bta_hl_cch_st_open[][BTA_HL_CCH_NUM_COLS] = {
+ /* Event Action 1 Next state */
+ /* BTA_HL_CCH_OPEN_EVT */ {BTA_HL_CCH_IGNORE, BTA_HL_CCH_OPEN_ST},
+ /* BTA_HL_CCH_SDP_OK_EVT */ {BTA_HL_CCH_IGNORE, BTA_HL_CCH_OPEN_ST},
+ /* BTA_HL_CCH_SDP_FAIL_EVT */ {BTA_HL_CCH_IGNORE, BTA_HL_CCH_OPEN_ST},
+ /* BTA_HL_MCA_CONNECT_IND_EVT */ {BTA_HL_CCH_IGNORE, BTA_HL_CCH_OPEN_ST},
+ /* BTA_HL_MCA_DISCONNECT_IND_EVT */ {BTA_HL_CCH_MCA_DISCONNECT,
+ BTA_HL_CCH_CLOSING_ST},
+ /* BTA_HL_CCH_CLOSE_EVT */ {BTA_HL_CCH_MCA_CLOSE,
+ BTA_HL_CCH_CLOSING_ST},
+ /* BTA_HL_CCH_CLOSE_CMPL_EVT */ {BTA_HL_CCH_IGNORE, BTA_HL_CCH_OPEN_ST},
+ /* BTA_HL_MCA_RSP_TOUT_IND_EVT */ {BTA_HL_CCH_MCA_RSP_TOUT,
+ BTA_HL_CCH_CLOSING_ST}};
/* state table for closing state */
-static const uint8_t bta_hl_cch_st_closing[][BTA_HL_CCH_NUM_COLS] =
-{
-/* Event Action 1 Next state */
-/* BTA_HL_CCH_OPEN_EVT */ {BTA_HL_CCH_IGNORE, BTA_HL_CCH_CLOSING_ST},
-/* BTA_HL_CCH_SDP_OK_EVT */ {BTA_HL_CCH_CLOSE_CMPL, BTA_HL_CCH_IDLE_ST},
-/* BTA_HL_CCH_SDP_FAIL_EVT */ {BTA_HL_CCH_CLOSE_CMPL, BTA_HL_CCH_IDLE_ST},
-/* BTA_HL_MCA_CONNECT_IND_EVT */ {BTA_HL_CCH_MCA_DISC_OPEN, BTA_HL_CCH_CLOSING_ST},
-/* BTA_HL_MCA_DISCONNECT_IND_EVT */ {BTA_HL_CCH_MCA_DISCONNECT, BTA_HL_CCH_CLOSING_ST},
-/* BTA_HL_CCH_CLOSE_EVT */ {BTA_HL_CCH_MCA_CLOSE, BTA_HL_CCH_CLOSING_ST},
-/* BTA_HL_CCH_CLOSE_CMPL_EVT */ {BTA_HL_CCH_CLOSE_CMPL, BTA_HL_CCH_IDLE_ST},
-/* BTA_HL_MCA_RSP_TOUT_IND_EVT */ {BTA_HL_CCH_IGNORE, BTA_HL_CCH_CLOSING_ST}
-};
+static const uint8_t bta_hl_cch_st_closing[][BTA_HL_CCH_NUM_COLS] = {
+ /* Event Action 1 Next state */
+ /* BTA_HL_CCH_OPEN_EVT */ {BTA_HL_CCH_IGNORE,
+ BTA_HL_CCH_CLOSING_ST},
+ /* BTA_HL_CCH_SDP_OK_EVT */ {BTA_HL_CCH_CLOSE_CMPL,
+ BTA_HL_CCH_IDLE_ST},
+ /* BTA_HL_CCH_SDP_FAIL_EVT */ {BTA_HL_CCH_CLOSE_CMPL,
+ BTA_HL_CCH_IDLE_ST},
+ /* BTA_HL_MCA_CONNECT_IND_EVT */ {BTA_HL_CCH_MCA_DISC_OPEN,
+ BTA_HL_CCH_CLOSING_ST},
+ /* BTA_HL_MCA_DISCONNECT_IND_EVT */ {BTA_HL_CCH_MCA_DISCONNECT,
+ BTA_HL_CCH_CLOSING_ST},
+ /* BTA_HL_CCH_CLOSE_EVT */ {BTA_HL_CCH_MCA_CLOSE,
+ BTA_HL_CCH_CLOSING_ST},
+ /* BTA_HL_CCH_CLOSE_CMPL_EVT */ {BTA_HL_CCH_CLOSE_CMPL,
+ BTA_HL_CCH_IDLE_ST},
+ /* BTA_HL_MCA_RSP_TOUT_IND_EVT */ {BTA_HL_CCH_IGNORE,
+ BTA_HL_CCH_CLOSING_ST}};
/* type for state table CCH */
typedef const uint8_t (*tBTA_HL_CCH_ST_TBL)[BTA_HL_CCH_NUM_COLS];
/* MAS state table */
-const tBTA_HL_CCH_ST_TBL bta_hl_cch_st_tbl[] =
-{
- bta_hl_cch_st_idle,
- bta_hl_cch_st_opening,
- bta_hl_cch_st_open,
- bta_hl_cch_st_closing
-};
-
+const tBTA_HL_CCH_ST_TBL bta_hl_cch_st_tbl[] = {
+ bta_hl_cch_st_idle, bta_hl_cch_st_opening, bta_hl_cch_st_open,
+ bta_hl_cch_st_closing};
/*****************************************************************************
* Global data
****************************************************************************/
/* HL control block */
-tBTA_HL_CB bta_hl_cb;
+tBTA_HL_CB bta_hl_cb;
/*******************************************************************************
*
@@ -412,53 +427,46 @@
* Returns void
*
******************************************************************************/
-void bta_hl_cch_sm_execute(uint8_t app_idx, uint8_t mcl_idx,
- uint16_t event, tBTA_HL_DATA *p_data)
-{
- tBTA_HL_CCH_ST_TBL state_table;
- uint8_t action;
- int i;
- tBTA_HL_MCL_CB *p_cb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
+void bta_hl_cch_sm_execute(uint8_t app_idx, uint8_t mcl_idx, uint16_t event,
+ tBTA_HL_DATA* p_data) {
+ tBTA_HL_CCH_ST_TBL state_table;
+ uint8_t action;
+ int i;
+ tBTA_HL_MCL_CB* p_cb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
#if (BTA_HL_DEBUG == TRUE)
- tBTA_HL_CCH_STATE in_state = p_cb->cch_state;
- uint16_t cur_evt = event;
- APPL_TRACE_DEBUG("HDP CCH Event Handler: State 0x%02x [%s], Event [%s]", in_state,
- bta_hl_cch_state_code(in_state),
- bta_hl_evt_code(cur_evt));
+ tBTA_HL_CCH_STATE in_state = p_cb->cch_state;
+ uint16_t cur_evt = event;
+ APPL_TRACE_DEBUG("HDP CCH Event Handler: State 0x%02x [%s], Event [%s]",
+ in_state, bta_hl_cch_state_code(in_state),
+ bta_hl_evt_code(cur_evt));
#endif
- /* look up the state table for the current state */
- state_table = bta_hl_cch_st_tbl[p_cb->cch_state];
+ /* look up the state table for the current state */
+ state_table = bta_hl_cch_st_tbl[p_cb->cch_state];
- event &= 0x00FF;
+ event &= 0x00FF;
- /* set next state */
- p_cb->cch_state = state_table[event][BTA_HL_CCH_NEXT_STATE];
+ /* set next state */
+ p_cb->cch_state = state_table[event][BTA_HL_CCH_NEXT_STATE];
- for (i = 0; i < BTA_HL_CCH_ACTIONS; i++)
- {
- if ((action = state_table[event][i]) != BTA_HL_CCH_IGNORE)
- {
- (*bta_hl_cch_action[action])(app_idx, mcl_idx, p_data);
- }
- else
- {
- /* discard HDP data */
- bta_hl_discard_data(p_data->hdr.event, p_data);
- break;
- }
+ for (i = 0; i < BTA_HL_CCH_ACTIONS; i++) {
+ if ((action = state_table[event][i]) != BTA_HL_CCH_IGNORE) {
+ (*bta_hl_cch_action[action])(app_idx, mcl_idx, p_data);
+ } else {
+ /* discard HDP data */
+ bta_hl_discard_data(p_data->hdr.event, p_data);
+ break;
}
+ }
#if (BTA_HL_DEBUG == TRUE)
- if (in_state != p_cb->cch_state)
- {
- APPL_TRACE_DEBUG("HL CCH State Change: [%s] -> [%s] after [%s]",
- bta_hl_cch_state_code(in_state),
- bta_hl_cch_state_code(p_cb->cch_state),
- bta_hl_evt_code(cur_evt));
- }
+ if (in_state != p_cb->cch_state) {
+ APPL_TRACE_DEBUG("HL CCH State Change: [%s] -> [%s] after [%s]",
+ bta_hl_cch_state_code(in_state),
+ bta_hl_cch_state_code(p_cb->cch_state),
+ bta_hl_evt_code(cur_evt));
+ }
#endif
-
}
/*******************************************************************************
@@ -471,51 +479,44 @@
*
******************************************************************************/
void bta_hl_dch_sm_execute(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- uint16_t event, tBTA_HL_DATA *p_data)
-{
- tBTA_HL_DCH_ST_TBL state_table;
- uint8_t action;
- int i;
- tBTA_HL_MDL_CB *p_cb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
+ uint16_t event, tBTA_HL_DATA* p_data) {
+ tBTA_HL_DCH_ST_TBL state_table;
+ uint8_t action;
+ int i;
+ tBTA_HL_MDL_CB* p_cb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
#if (BTA_HL_DEBUG == TRUE)
- tBTA_HL_DCH_STATE in_state = p_cb->dch_state;
- uint16_t cur_evt = event;
- APPL_TRACE_DEBUG("HDP DCH Event Handler: State 0x%02x [%s], Event [%s]", in_state,
- bta_hl_dch_state_code(in_state),
- bta_hl_evt_code(cur_evt));
+ tBTA_HL_DCH_STATE in_state = p_cb->dch_state;
+ uint16_t cur_evt = event;
+ APPL_TRACE_DEBUG("HDP DCH Event Handler: State 0x%02x [%s], Event [%s]",
+ in_state, bta_hl_dch_state_code(in_state),
+ bta_hl_evt_code(cur_evt));
#endif
- /* look up the state table for the current state */
- state_table = bta_hl_dch_st_tbl[p_cb->dch_state];
- event -= BTA_HL_DCH_EVT_MIN;
+ /* look up the state table for the current state */
+ state_table = bta_hl_dch_st_tbl[p_cb->dch_state];
+ event -= BTA_HL_DCH_EVT_MIN;
- /* set next state */
- p_cb->dch_state = state_table[event][BTA_HL_DCH_NEXT_STATE];
+ /* set next state */
+ p_cb->dch_state = state_table[event][BTA_HL_DCH_NEXT_STATE];
- for (i = 0; i < BTA_HL_DCH_ACTIONS; i++)
- {
- if ((action = state_table[event][i]) != BTA_HL_DCH_IGNORE)
- {
- (*bta_hl_dch_action[action])(app_idx, mcl_idx, mdl_idx, p_data);
- }
- else
- {
- /* discard mas data */
- bta_hl_discard_data(p_data->hdr.event, p_data);
- break;
- }
+ for (i = 0; i < BTA_HL_DCH_ACTIONS; i++) {
+ if ((action = state_table[event][i]) != BTA_HL_DCH_IGNORE) {
+ (*bta_hl_dch_action[action])(app_idx, mcl_idx, mdl_idx, p_data);
+ } else {
+ /* discard mas data */
+ bta_hl_discard_data(p_data->hdr.event, p_data);
+ break;
}
-
+ }
#if (BTA_HL_DEBUG == TRUE)
- if (in_state != p_cb->dch_state)
- {
- APPL_TRACE_DEBUG("HL DCH State Change: [%s] -> [%s] after [%s]",
- bta_hl_dch_state_code(in_state),
- bta_hl_dch_state_code(p_cb->dch_state),
- bta_hl_evt_code(cur_evt));
- }
+ if (in_state != p_cb->dch_state) {
+ APPL_TRACE_DEBUG("HL DCH State Change: [%s] -> [%s] after [%s]",
+ bta_hl_dch_state_code(in_state),
+ bta_hl_dch_state_code(p_cb->dch_state),
+ bta_hl_evt_code(cur_evt));
+ }
#endif
}
/*******************************************************************************
@@ -527,29 +528,28 @@
* Returns void
*
******************************************************************************/
-static void bta_hl_api_enable(tBTA_HL_CB *p_cb, tBTA_HL_DATA *p_data)
-{
- tBTA_HL_CTRL evt_data;
+static void bta_hl_api_enable(tBTA_HL_CB* p_cb, tBTA_HL_DATA* p_data) {
+ tBTA_HL_CTRL evt_data;
- /* If already enabled then reject this request */
- if (p_cb->enable)
- {
- APPL_TRACE_ERROR("HL is already enabled");
- evt_data.enable_cfm.status = BTA_HL_STATUS_FAIL;
- if (p_data->api_enable.p_cback)
- p_data->api_enable.p_cback(BTA_HL_CTRL_ENABLE_CFM_EVT, (tBTA_HL_CTRL *) &evt_data);
- return;
- }
-
- /* Done with checking. now perform the enable oepration*/
- /* initialize control block */
- memset(p_cb, 0, sizeof(tBTA_HL_CB));
- p_cb->enable = true;
- p_cb->p_ctrl_cback = p_data->api_enable.p_cback;
- evt_data.enable_cfm.status = BTA_HL_STATUS_OK;
+ /* If already enabled then reject this request */
+ if (p_cb->enable) {
+ APPL_TRACE_ERROR("HL is already enabled");
+ evt_data.enable_cfm.status = BTA_HL_STATUS_FAIL;
if (p_data->api_enable.p_cback)
- p_data->api_enable.p_cback(BTA_HL_CTRL_ENABLE_CFM_EVT, (tBTA_HL_CTRL *) &evt_data);
+ p_data->api_enable.p_cback(BTA_HL_CTRL_ENABLE_CFM_EVT,
+ (tBTA_HL_CTRL*)&evt_data);
+ return;
+ }
+ /* Done with checking. now perform the enable oepration*/
+ /* initialize control block */
+ memset(p_cb, 0, sizeof(tBTA_HL_CB));
+ p_cb->enable = true;
+ p_cb->p_ctrl_cback = p_data->api_enable.p_cback;
+ evt_data.enable_cfm.status = BTA_HL_STATUS_OK;
+ if (p_data->api_enable.p_cback)
+ p_data->api_enable.p_cback(BTA_HL_CTRL_ENABLE_CFM_EVT,
+ (tBTA_HL_CTRL*)&evt_data);
}
/*******************************************************************************
*
@@ -560,200 +560,173 @@
* Returns void
*
******************************************************************************/
-static void bta_hl_api_disable(tBTA_HL_CB *p_cb, tBTA_HL_DATA *p_data)
-{
- tBTA_HL_CTRL evt_data;
- tBTA_HL_STATUS status = BTA_HL_STATUS_OK;
+static void bta_hl_api_disable(tBTA_HL_CB* p_cb, tBTA_HL_DATA* p_data) {
+ tBTA_HL_CTRL evt_data;
+ tBTA_HL_STATUS status = BTA_HL_STATUS_OK;
- if (p_cb->enable)
- {
- p_cb->disabling = true;
- bta_hl_check_disable(p_data);
- }
- else
- {
- status = BTA_HL_STATUS_FAIL;
- evt_data.disable_cfm.status = status;
- if (p_cb->p_ctrl_cback) p_cb->p_ctrl_cback(BTA_HL_CTRL_DISABLE_CFM_EVT, (tBTA_HL_CTRL *) &evt_data);
- }
-
+ if (p_cb->enable) {
+ p_cb->disabling = true;
+ bta_hl_check_disable(p_data);
+ } else {
+ status = BTA_HL_STATUS_FAIL;
+ evt_data.disable_cfm.status = status;
+ if (p_cb->p_ctrl_cback)
+ p_cb->p_ctrl_cback(BTA_HL_CTRL_DISABLE_CFM_EVT, (tBTA_HL_CTRL*)&evt_data);
+ }
#if (BTA_HL_DEBUG == TRUE)
- if (status != BTA_HL_STATUS_OK)
- {
- APPL_TRACE_DEBUG("bta_hl_api_disable status =%s", bta_hl_status_code(status));
- }
+ if (status != BTA_HL_STATUS_OK) {
+ APPL_TRACE_DEBUG("bta_hl_api_disable status =%s",
+ bta_hl_status_code(status));
+ }
#endif
-
}
/*******************************************************************************
*
* Function bta_hl_api_update
*
- * Description Process the API registration request to register an HDP applciation
+ * Description Process the API registration request to register an HDP
+ *applciation
*
* Returns void
*
******************************************************************************/
-static void bta_hl_api_update(tBTA_HL_CB *p_cb, tBTA_HL_DATA *p_data)
-{
- tBTA_HL evt_data;
- tBTA_HL_APP_CB *p_acb = BTA_HL_GET_APP_CB_PTR(0);
- tBTA_HL_STATUS status = BTA_HL_STATUS_FAIL;
+static void bta_hl_api_update(tBTA_HL_CB* p_cb, tBTA_HL_DATA* p_data) {
+ tBTA_HL evt_data;
+ tBTA_HL_APP_CB* p_acb = BTA_HL_GET_APP_CB_PTR(0);
+ tBTA_HL_STATUS status = BTA_HL_STATUS_FAIL;
-
- APPL_TRACE_DEBUG("bta_hl_api_update");
- if (p_cb->enable)
- {
-
- status = bta_hl_app_update(p_data->api_update.app_id, p_data->api_update.is_register);
- if (!p_data->api_update.is_register)
- {
- APPL_TRACE_DEBUG("Deregister");
- memset(&evt_data, 0, sizeof(tBTA_HL));
- evt_data.dereg_cfm.status = status;
- evt_data.dereg_cfm.app_id = p_data->api_update.app_id;
- if (status == BTA_HL_STATUS_OK)
- evt_data.dereg_cfm.app_handle = p_acb->app_handle;
- if (p_acb->p_cback)
- {
- p_acb->p_cback(BTA_HL_DEREGISTER_CFM_EVT, (tBTA_HL *) &evt_data);
- }
- return ;
- }
-
+ APPL_TRACE_DEBUG("bta_hl_api_update");
+ if (p_cb->enable) {
+ status = bta_hl_app_update(p_data->api_update.app_id,
+ p_data->api_update.is_register);
+ if (!p_data->api_update.is_register) {
+ APPL_TRACE_DEBUG("Deregister");
+ memset(&evt_data, 0, sizeof(tBTA_HL));
+ evt_data.dereg_cfm.status = status;
+ evt_data.dereg_cfm.app_id = p_data->api_update.app_id;
+ if (status == BTA_HL_STATUS_OK)
+ evt_data.dereg_cfm.app_handle = p_acb->app_handle;
+ if (p_acb->p_cback) {
+ p_acb->p_cback(BTA_HL_DEREGISTER_CFM_EVT, (tBTA_HL*)&evt_data);
+ }
+ return;
}
+ }
- if (status != BTA_HL_STATUS_OK)
- {
- if ((status != BTA_HL_STATUS_DUPLICATE_APP_ID) &&
- (status != BTA_HL_STATUS_NO_RESOURCE))
- {
- if (p_acb)
- memset(p_acb, 0, sizeof(tBTA_HL_APP_CB));
- }
+ if (status != BTA_HL_STATUS_OK) {
+ if ((status != BTA_HL_STATUS_DUPLICATE_APP_ID) &&
+ (status != BTA_HL_STATUS_NO_RESOURCE)) {
+ if (p_acb) memset(p_acb, 0, sizeof(tBTA_HL_APP_CB));
}
+ }
#if (BTA_HL_DEBUG == TRUE)
- if (status != BTA_HL_STATUS_OK)
- {
- APPL_TRACE_DEBUG("bta_hl_api_register status =%s", bta_hl_status_code(status));
- }
+ if (status != BTA_HL_STATUS_OK) {
+ APPL_TRACE_DEBUG("bta_hl_api_register status =%s",
+ bta_hl_status_code(status));
+ }
#endif
- memset(&evt_data, 0, sizeof(tBTA_HL));
- evt_data.reg_cfm.status = status;
- evt_data.reg_cfm.app_id = p_data->api_update.app_id;
- if (status == BTA_HL_STATUS_OK)
- evt_data.reg_cfm.app_handle = p_acb->app_handle;
- if (p_data->api_reg.p_cback)
- {
- p_data->api_reg.p_cback(BTA_HL_REGISTER_CFM_EVT, (tBTA_HL *) &evt_data);
- }
+ memset(&evt_data, 0, sizeof(tBTA_HL));
+ evt_data.reg_cfm.status = status;
+ evt_data.reg_cfm.app_id = p_data->api_update.app_id;
+ if (status == BTA_HL_STATUS_OK)
+ evt_data.reg_cfm.app_handle = p_acb->app_handle;
+ if (p_data->api_reg.p_cback) {
+ p_data->api_reg.p_cback(BTA_HL_REGISTER_CFM_EVT, (tBTA_HL*)&evt_data);
+ }
- if (status == BTA_HL_STATUS_OK)
- {
- evt_data.sdp_info_ind.app_handle = p_acb->app_handle;
- evt_data.sdp_info_ind.ctrl_psm = p_acb->ctrl_psm;
- evt_data.sdp_info_ind.data_psm = p_acb->data_psm;
- evt_data.sdp_info_ind.data_x_spec = BTA_HL_SDP_IEEE_11073_20601;
- evt_data.sdp_info_ind.mcap_sup_procs = BTA_HL_MCAP_SUP_PROC_MASK ;
+ if (status == BTA_HL_STATUS_OK) {
+ evt_data.sdp_info_ind.app_handle = p_acb->app_handle;
+ evt_data.sdp_info_ind.ctrl_psm = p_acb->ctrl_psm;
+ evt_data.sdp_info_ind.data_psm = p_acb->data_psm;
+ evt_data.sdp_info_ind.data_x_spec = BTA_HL_SDP_IEEE_11073_20601;
+ evt_data.sdp_info_ind.mcap_sup_procs = BTA_HL_MCAP_SUP_PROC_MASK;
- if (p_data->api_reg.p_cback)
- {
- p_data->api_reg.p_cback(BTA_HL_SDP_INFO_IND_EVT, (tBTA_HL *) &evt_data);
- }
+ if (p_data->api_reg.p_cback) {
+ p_data->api_reg.p_cback(BTA_HL_SDP_INFO_IND_EVT, (tBTA_HL*)&evt_data);
}
+ }
}
/*******************************************************************************
*
* Function bta_hl_api_register
*
- * Description Process the API registration request to register an HDP applciation
+ * Description Process the API registration request to register an HDP
+ *applciation
*
* Returns void
*
******************************************************************************/
-static void bta_hl_api_register(tBTA_HL_CB *p_cb, tBTA_HL_DATA *p_data)
-{
- tBTA_HL evt_data;
- uint8_t app_idx;
- tBTA_HL_APP_CB *p_acb = NULL;
- tBTA_HL_STATUS status = BTA_HL_STATUS_FAIL;
+static void bta_hl_api_register(tBTA_HL_CB* p_cb, tBTA_HL_DATA* p_data) {
+ tBTA_HL evt_data;
+ uint8_t app_idx;
+ tBTA_HL_APP_CB* p_acb = NULL;
+ tBTA_HL_STATUS status = BTA_HL_STATUS_FAIL;
-
- if (p_cb->enable)
- {
- if (!bta_hl_is_a_duplicate_id(p_data->api_reg.app_id))
- {
- if (bta_hl_find_avail_app_idx(&app_idx))
- {
- p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
- p_acb->in_use = true;
- p_acb->app_id = p_data->api_reg.app_id;
- p_acb->p_cback = p_data->api_reg.p_cback;
- p_acb->sec_mask = p_data->api_reg.sec_mask;
- p_acb->dev_type = p_data->api_reg.dev_type;
- strlcpy(p_acb->srv_name, p_data->api_reg.srv_name, BTA_SERVICE_NAME_LEN);
- strlcpy(p_acb->srv_desp, p_data->api_reg.srv_desp, BTA_SERVICE_DESP_LEN);
- strlcpy(p_acb->provider_name, p_data->api_reg.provider_name, BTA_PROVIDER_NAME_LEN);
- bta_hl_cb.p_alloc_psm = L2CA_AllocatePSM;
- p_acb->ctrl_psm = bta_hl_cb.p_alloc_psm();
- p_acb->data_psm = bta_hl_cb.p_alloc_psm();
- p_acb->p_mcap_cback = bta_hl_mcap_ctrl_cback;
- status = bta_hl_app_registration(app_idx);
- }
- else
- {
- status = BTA_HL_STATUS_NO_RESOURCE;
- }
- }
- else
- {
- status = BTA_HL_STATUS_DUPLICATE_APP_ID;
- }
+ if (p_cb->enable) {
+ if (!bta_hl_is_a_duplicate_id(p_data->api_reg.app_id)) {
+ if (bta_hl_find_avail_app_idx(&app_idx)) {
+ p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
+ p_acb->in_use = true;
+ p_acb->app_id = p_data->api_reg.app_id;
+ p_acb->p_cback = p_data->api_reg.p_cback;
+ p_acb->sec_mask = p_data->api_reg.sec_mask;
+ p_acb->dev_type = p_data->api_reg.dev_type;
+ strlcpy(p_acb->srv_name, p_data->api_reg.srv_name,
+ BTA_SERVICE_NAME_LEN);
+ strlcpy(p_acb->srv_desp, p_data->api_reg.srv_desp,
+ BTA_SERVICE_DESP_LEN);
+ strlcpy(p_acb->provider_name, p_data->api_reg.provider_name,
+ BTA_PROVIDER_NAME_LEN);
+ bta_hl_cb.p_alloc_psm = L2CA_AllocatePSM;
+ p_acb->ctrl_psm = bta_hl_cb.p_alloc_psm();
+ p_acb->data_psm = bta_hl_cb.p_alloc_psm();
+ p_acb->p_mcap_cback = bta_hl_mcap_ctrl_cback;
+ status = bta_hl_app_registration(app_idx);
+ } else {
+ status = BTA_HL_STATUS_NO_RESOURCE;
+ }
+ } else {
+ status = BTA_HL_STATUS_DUPLICATE_APP_ID;
}
+ }
- if (status != BTA_HL_STATUS_OK)
- {
- if ((status != BTA_HL_STATUS_DUPLICATE_APP_ID) &&
- (status != BTA_HL_STATUS_NO_RESOURCE))
- {
- if (p_acb)
- memset(p_acb, 0, sizeof(tBTA_HL_APP_CB));
- }
+ if (status != BTA_HL_STATUS_OK) {
+ if ((status != BTA_HL_STATUS_DUPLICATE_APP_ID) &&
+ (status != BTA_HL_STATUS_NO_RESOURCE)) {
+ if (p_acb) memset(p_acb, 0, sizeof(tBTA_HL_APP_CB));
}
+ }
#if (BTA_HL_DEBUG == TRUE)
- if (status != BTA_HL_STATUS_OK)
- {
- APPL_TRACE_DEBUG("bta_hl_api_register status =%s", bta_hl_status_code(status));
- }
+ if (status != BTA_HL_STATUS_OK) {
+ APPL_TRACE_DEBUG("bta_hl_api_register status =%s",
+ bta_hl_status_code(status));
+ }
#endif
- memset(&evt_data, 0, sizeof(tBTA_HL));
- evt_data.reg_cfm.status = status;
- evt_data.reg_cfm.app_id = p_data->api_reg.app_id;
- if (status == BTA_HL_STATUS_OK)
- evt_data.reg_cfm.app_handle = p_acb->app_handle;
- if (p_data->api_reg.p_cback)
- {
- p_data->api_reg.p_cback(BTA_HL_REGISTER_CFM_EVT, (tBTA_HL *) &evt_data);
- }
+ memset(&evt_data, 0, sizeof(tBTA_HL));
+ evt_data.reg_cfm.status = status;
+ evt_data.reg_cfm.app_id = p_data->api_reg.app_id;
+ if (status == BTA_HL_STATUS_OK)
+ evt_data.reg_cfm.app_handle = p_acb->app_handle;
+ if (p_data->api_reg.p_cback) {
+ p_data->api_reg.p_cback(BTA_HL_REGISTER_CFM_EVT, (tBTA_HL*)&evt_data);
+ }
- if (status == BTA_HL_STATUS_OK)
- {
- evt_data.sdp_info_ind.app_handle = p_acb->app_handle;
- evt_data.sdp_info_ind.ctrl_psm = p_acb->ctrl_psm;
- evt_data.sdp_info_ind.data_psm = p_acb->data_psm;
- evt_data.sdp_info_ind.data_x_spec = BTA_HL_SDP_IEEE_11073_20601;
- evt_data.sdp_info_ind.mcap_sup_procs = BTA_HL_MCAP_SUP_PROC_MASK ;
+ if (status == BTA_HL_STATUS_OK) {
+ evt_data.sdp_info_ind.app_handle = p_acb->app_handle;
+ evt_data.sdp_info_ind.ctrl_psm = p_acb->ctrl_psm;
+ evt_data.sdp_info_ind.data_psm = p_acb->data_psm;
+ evt_data.sdp_info_ind.data_x_spec = BTA_HL_SDP_IEEE_11073_20601;
+ evt_data.sdp_info_ind.mcap_sup_procs = BTA_HL_MCAP_SUP_PROC_MASK;
- if (p_data->api_reg.p_cback)
- {
- p_data->api_reg.p_cback(BTA_HL_SDP_INFO_IND_EVT, (tBTA_HL *) &evt_data);
- }
+ if (p_data->api_reg.p_cback) {
+ p_data->api_reg.p_cback(BTA_HL_SDP_INFO_IND_EVT, (tBTA_HL*)&evt_data);
}
+ }
}
/*******************************************************************************
@@ -765,21 +738,19 @@
* Returns void
*
******************************************************************************/
-static void bta_hl_api_deregister(UNUSED_ATTR tBTA_HL_CB *p_cb, tBTA_HL_DATA *p_data)
-{
- uint8_t app_idx;
- tBTA_HL_APP_CB *p_acb;
+static void bta_hl_api_deregister(UNUSED_ATTR tBTA_HL_CB* p_cb,
+ tBTA_HL_DATA* p_data) {
+ uint8_t app_idx;
+ tBTA_HL_APP_CB* p_acb;
- if (bta_hl_find_app_idx_using_handle(p_data->api_dereg.app_handle, &app_idx))
- {
- p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
- p_acb->deregistering= true;
- bta_hl_check_deregistration(app_idx,p_data);
- }
- else
- {
- APPL_TRACE_ERROR("Invalid app_handle=%d", p_data->api_dereg.app_handle);
- }
+ if (bta_hl_find_app_idx_using_handle(p_data->api_dereg.app_handle,
+ &app_idx)) {
+ p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
+ p_acb->deregistering = true;
+ bta_hl_check_deregistration(app_idx, p_data);
+ } else {
+ APPL_TRACE_ERROR("Invalid app_handle=%d", p_data->api_dereg.app_handle);
+ }
}
/*******************************************************************************
@@ -791,93 +762,75 @@
* Returns void
*
******************************************************************************/
-static void bta_hl_api_cch_open(UNUSED_ATTR tBTA_HL_CB *p_cb, tBTA_HL_DATA *p_data)
-{
- tBTA_HL evt_data;
- tBTA_HL_STATUS status = BTA_HL_STATUS_OK;
- uint8_t app_idx, mcl_idx;
- tBTA_HL_APP_CB *p_acb;
- tBTA_HL_MCL_CB *p_mcb;
+static void bta_hl_api_cch_open(UNUSED_ATTR tBTA_HL_CB* p_cb,
+ tBTA_HL_DATA* p_data) {
+ tBTA_HL evt_data;
+ tBTA_HL_STATUS status = BTA_HL_STATUS_OK;
+ uint8_t app_idx, mcl_idx;
+ tBTA_HL_APP_CB* p_acb;
+ tBTA_HL_MCL_CB* p_mcb;
- if (bta_hl_find_app_idx_using_handle(p_data->api_cch_open.app_handle, &app_idx))
- {
-
- if (!bta_hl_find_mcl_idx(app_idx, p_data->api_cch_open.bd_addr, &mcl_idx))
- {
- if (bta_hl_find_avail_mcl_idx(app_idx, &mcl_idx))
- {
- p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
- p_mcb->in_use = true;
- p_mcb->req_ctrl_psm = p_data->api_cch_open.ctrl_psm;
- p_mcb->sec_mask = p_data->api_cch_open.sec_mask;
- bdcpy(p_mcb->bd_addr, p_data->api_cch_open.bd_addr);
- p_mcb->cch_oper = BTA_HL_CCH_OP_LOCAL_OPEN;
- }
- else
- {
- status = BTA_HL_STATUS_NO_RESOURCE;
- }
- }
- else
- {
- /* Only one MCL per BD_ADDR */
- status = BTA_HL_STATUS_DUPLICATE_CCH_OPEN;
- APPL_TRACE_DEBUG("bta_hl_api_cch_open: CCH already open: status =%d",status)
- p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
- p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
- if (p_acb->p_cback)
- {
- bta_hl_build_cch_open_cfm(&evt_data, p_data->api_cch_open.app_id,
- p_data->api_cch_open.app_handle,
- p_mcb->mcl_handle,
- p_data->api_cch_open.bd_addr,
- status);
- p_acb->p_cback(BTA_HL_CCH_OPEN_CFM_EVT,(tBTA_HL *) &evt_data );
- }
- else
- {
- APPL_TRACE_ERROR("bta_hl_api_cch_open Null Callback");
- }
- return;
- }
+ if (bta_hl_find_app_idx_using_handle(p_data->api_cch_open.app_handle,
+ &app_idx)) {
+ if (!bta_hl_find_mcl_idx(app_idx, p_data->api_cch_open.bd_addr, &mcl_idx)) {
+ if (bta_hl_find_avail_mcl_idx(app_idx, &mcl_idx)) {
+ p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
+ p_mcb->in_use = true;
+ p_mcb->req_ctrl_psm = p_data->api_cch_open.ctrl_psm;
+ p_mcb->sec_mask = p_data->api_cch_open.sec_mask;
+ bdcpy(p_mcb->bd_addr, p_data->api_cch_open.bd_addr);
+ p_mcb->cch_oper = BTA_HL_CCH_OP_LOCAL_OPEN;
+ } else {
+ status = BTA_HL_STATUS_NO_RESOURCE;
+ }
+ } else {
+ /* Only one MCL per BD_ADDR */
+ status = BTA_HL_STATUS_DUPLICATE_CCH_OPEN;
+ APPL_TRACE_DEBUG("bta_hl_api_cch_open: CCH already open: status =%d",
+ status)
+ p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
+ p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
+ if (p_acb->p_cback) {
+ bta_hl_build_cch_open_cfm(&evt_data, p_data->api_cch_open.app_id,
+ p_data->api_cch_open.app_handle,
+ p_mcb->mcl_handle,
+ p_data->api_cch_open.bd_addr, status);
+ p_acb->p_cback(BTA_HL_CCH_OPEN_CFM_EVT, (tBTA_HL*)&evt_data);
+ } else {
+ APPL_TRACE_ERROR("bta_hl_api_cch_open Null Callback");
+ }
+ return;
}
- else
- {
- status = BTA_HL_STATUS_INVALID_APP_HANDLE;
- }
+ } else {
+ status = BTA_HL_STATUS_INVALID_APP_HANDLE;
+ }
#if (BTA_HL_DEBUG == TRUE)
- if (status != BTA_HL_STATUS_OK)
- {
- APPL_TRACE_DEBUG("bta_hl_api_cch_open status =%s", bta_hl_status_code(status));
- }
+ if (status != BTA_HL_STATUS_OK) {
+ APPL_TRACE_DEBUG("bta_hl_api_cch_open status =%s",
+ bta_hl_status_code(status));
+ }
#endif
- switch (status)
- {
- case BTA_HL_STATUS_OK:
- bta_hl_cch_sm_execute(app_idx, mcl_idx, BTA_HL_CCH_OPEN_EVT, p_data);
- break;
- case BTA_HL_STATUS_NO_RESOURCE:
- case BTA_HL_STATUS_FAIL:
+ switch (status) {
+ case BTA_HL_STATUS_OK:
+ bta_hl_cch_sm_execute(app_idx, mcl_idx, BTA_HL_CCH_OPEN_EVT, p_data);
+ break;
+ case BTA_HL_STATUS_NO_RESOURCE:
+ case BTA_HL_STATUS_FAIL:
- p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
- if (p_acb->p_cback)
- {
- bta_hl_build_cch_open_cfm(&evt_data, p_data->api_cch_open.app_id,
- p_data->api_cch_open.app_handle,
- 0,
- p_data->api_cch_open.bd_addr,
- status);
- p_acb->p_cback(BTA_HL_CCH_OPEN_CFM_EVT,(tBTA_HL *) &evt_data );
- }
- else
- {
- APPL_TRACE_ERROR("bta_hl_api_cch_open Null Callback");
- }
- break;
- default:
- APPL_TRACE_ERROR("status code=%d", status);
- break;
- }
+ p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
+ if (p_acb->p_cback) {
+ bta_hl_build_cch_open_cfm(&evt_data, p_data->api_cch_open.app_id,
+ p_data->api_cch_open.app_handle, 0,
+ p_data->api_cch_open.bd_addr, status);
+ p_acb->p_cback(BTA_HL_CCH_OPEN_CFM_EVT, (tBTA_HL*)&evt_data);
+ } else {
+ APPL_TRACE_ERROR("bta_hl_api_cch_open Null Callback");
+ }
+ break;
+ default:
+ APPL_TRACE_ERROR("status code=%d", status);
+ break;
+ }
}
/*******************************************************************************
@@ -889,55 +842,46 @@
* Returns void
*
******************************************************************************/
-static void bta_hl_api_cch_close(UNUSED_ATTR tBTA_HL_CB *p_cb, tBTA_HL_DATA *p_data)
-{
- tBTA_HL evt_data;
- tBTA_HL_STATUS status = BTA_HL_STATUS_OK;
- uint8_t app_idx, mcl_idx;
- tBTA_HL_APP_CB *p_acb;
- tBTA_HL_MCL_CB *p_mcb;
+static void bta_hl_api_cch_close(UNUSED_ATTR tBTA_HL_CB* p_cb,
+ tBTA_HL_DATA* p_data) {
+ tBTA_HL evt_data;
+ tBTA_HL_STATUS status = BTA_HL_STATUS_OK;
+ uint8_t app_idx, mcl_idx;
+ tBTA_HL_APP_CB* p_acb;
+ tBTA_HL_MCL_CB* p_mcb;
- if (bta_hl_find_mcl_idx_using_handle(p_data->api_cch_close.mcl_handle, &app_idx, &mcl_idx))
- {
- p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
- p_mcb->cch_oper = BTA_HL_CCH_OP_LOCAL_CLOSE;
- }
- else
- {
- status = BTA_HL_STATUS_INVALID_MCL_HANDLE;
- }
+ if (bta_hl_find_mcl_idx_using_handle(p_data->api_cch_close.mcl_handle,
+ &app_idx, &mcl_idx)) {
+ p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
+ p_mcb->cch_oper = BTA_HL_CCH_OP_LOCAL_CLOSE;
+ } else {
+ status = BTA_HL_STATUS_INVALID_MCL_HANDLE;
+ }
#if (BTA_HL_DEBUG == TRUE)
- if (status != BTA_HL_STATUS_OK)
- {
- APPL_TRACE_DEBUG("bta_hl_api_cch_close status =%s", bta_hl_status_code(status));
- }
+ if (status != BTA_HL_STATUS_OK) {
+ APPL_TRACE_DEBUG("bta_hl_api_cch_close status =%s",
+ bta_hl_status_code(status));
+ }
#endif
- switch (status)
- {
- case BTA_HL_STATUS_OK:
- bta_hl_check_cch_close(app_idx, mcl_idx, p_data, true);
- break;
+ switch (status) {
+ case BTA_HL_STATUS_OK:
+ bta_hl_check_cch_close(app_idx, mcl_idx, p_data, true);
+ break;
- case BTA_HL_STATUS_INVALID_MCL_HANDLE:
- p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
- if (p_acb->p_cback)
- {
- bta_hl_build_cch_close_cfm(&evt_data,
- p_acb->app_handle,
- p_data->api_cch_close.mcl_handle,
- status);
- p_acb->p_cback(BTA_HL_CCH_CLOSE_CFM_EVT,(tBTA_HL *) &evt_data );
- }
- else
- {
- APPL_TRACE_ERROR("bta_hl_api_cch_close Null Callback");
- }
- break;
- default:
- APPL_TRACE_ERROR("status code=%d", status);
- break;
- }
-
+ case BTA_HL_STATUS_INVALID_MCL_HANDLE:
+ p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
+ if (p_acb->p_cback) {
+ bta_hl_build_cch_close_cfm(&evt_data, p_acb->app_handle,
+ p_data->api_cch_close.mcl_handle, status);
+ p_acb->p_cback(BTA_HL_CCH_CLOSE_CFM_EVT, (tBTA_HL*)&evt_data);
+ } else {
+ APPL_TRACE_ERROR("bta_hl_api_cch_close Null Callback");
+ }
+ break;
+ default:
+ APPL_TRACE_ERROR("status code=%d", status);
+ break;
+ }
}
/*******************************************************************************
@@ -949,149 +893,126 @@
* Returns void
*
******************************************************************************/
-static void bta_hl_api_dch_open(UNUSED_ATTR tBTA_HL_CB *p_cb, tBTA_HL_DATA *p_data)
-{
- tBTA_HL evt_data;
- tBTA_HL_STATUS status = BTA_HL_STATUS_OK;
- uint8_t app_idx, mcl_idx, mdl_idx;
- tBTA_HL_APP_CB *p_acb;
- tBTA_HL_MCL_CB *p_mcb = NULL;
- tBTA_HL_MDL_CB *p_dcb;
- tBTA_HL_MDEP_CFG *p_mdep_cfg;
- uint8_t mdep_cfg_idx;
+static void bta_hl_api_dch_open(UNUSED_ATTR tBTA_HL_CB* p_cb,
+ tBTA_HL_DATA* p_data) {
+ tBTA_HL evt_data;
+ tBTA_HL_STATUS status = BTA_HL_STATUS_OK;
+ uint8_t app_idx, mcl_idx, mdl_idx;
+ tBTA_HL_APP_CB* p_acb;
+ tBTA_HL_MCL_CB* p_mcb = NULL;
+ tBTA_HL_MDL_CB* p_dcb;
+ tBTA_HL_MDEP_CFG* p_mdep_cfg;
+ uint8_t mdep_cfg_idx;
- if (bta_hl_find_mcl_idx_using_handle(p_data->api_dch_open.mcl_handle, &app_idx, &mcl_idx))
- {
- p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
- p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
+ if (bta_hl_find_mcl_idx_using_handle(p_data->api_dch_open.mcl_handle,
+ &app_idx, &mcl_idx)) {
+ p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
+ p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
- APPL_TRACE_DEBUG("bta_hl_api_dch_open: app_ix=%d, mcl_idx=%d, cch_state=%d, mcl_handle=%d",app_idx,mcl_idx,p_mcb->cch_state,p_data->api_dch_open.mcl_handle);
- if (p_mcb->cch_state == BTA_HL_CCH_OPEN_ST)
- {
- if (bta_hl_find_avail_mdl_idx(app_idx, mcl_idx, &mdl_idx))
- {
- p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
+ APPL_TRACE_DEBUG(
+ "bta_hl_api_dch_open: app_ix=%d, mcl_idx=%d, cch_state=%d, "
+ "mcl_handle=%d",
+ app_idx, mcl_idx, p_mcb->cch_state, p_data->api_dch_open.mcl_handle);
+ if (p_mcb->cch_state == BTA_HL_CCH_OPEN_ST) {
+ if (bta_hl_find_avail_mdl_idx(app_idx, mcl_idx, &mdl_idx)) {
+ p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
- if (bta_hl_find_mdep_cfg_idx(app_idx, p_data->api_dch_open.local_mdep_id, &mdep_cfg_idx))
- {
- if ( mdep_cfg_idx &&
- (p_acb->sup_feature.mdep[mdep_cfg_idx].mdep_cfg.mdep_role == BTA_HL_MDEP_ROLE_SINK))
- {
- p_data->api_dch_open.local_cfg = BTA_HL_DCH_CFG_NO_PREF;
- }
+ if (bta_hl_find_mdep_cfg_idx(
+ app_idx, p_data->api_dch_open.local_mdep_id, &mdep_cfg_idx)) {
+ if (mdep_cfg_idx &&
+ (p_acb->sup_feature.mdep[mdep_cfg_idx].mdep_cfg.mdep_role ==
+ BTA_HL_MDEP_ROLE_SINK)) {
+ p_data->api_dch_open.local_cfg = BTA_HL_DCH_CFG_NO_PREF;
+ }
- if ((status = bta_hl_chk_local_cfg(app_idx,mcl_idx,mdep_cfg_idx,p_data->api_dch_open.local_cfg))
- == BTA_HL_STATUS_OK)
- {
+ if ((status = bta_hl_chk_local_cfg(app_idx, mcl_idx, mdep_cfg_idx,
+ p_data->api_dch_open.local_cfg)) ==
+ BTA_HL_STATUS_OK) {
+ if (p_data->api_dch_open.local_mdep_id !=
+ BTA_HL_ECHO_TEST_MDEP_ID) {
+ if (bta_hl_set_ctrl_psm_for_dch(app_idx, mcl_idx, mdl_idx,
+ p_data->api_dch_open.ctrl_psm)) {
+ p_mdep_cfg = BTA_HL_GET_MDEP_CFG_PTR(app_idx, mdep_cfg_idx);
+ p_dcb->in_use = true;
+ p_dcb->dch_oper = BTA_HL_DCH_OP_LOCAL_OPEN;
+ p_dcb->sec_mask = p_data->api_dch_open.sec_mask;
+ p_dcb->local_mdep_id = p_data->api_dch_open.local_mdep_id;
+ p_dcb->peer_mdep_id = p_data->api_dch_open.peer_mdep_id;
- if (p_data->api_dch_open.local_mdep_id != BTA_HL_ECHO_TEST_MDEP_ID)
- {
- if (bta_hl_set_ctrl_psm_for_dch(app_idx, mcl_idx, mdl_idx, p_data->api_dch_open.ctrl_psm))
- {
- p_mdep_cfg = BTA_HL_GET_MDEP_CFG_PTR(app_idx, mdep_cfg_idx);
- p_dcb->in_use = true;
- p_dcb->dch_oper = BTA_HL_DCH_OP_LOCAL_OPEN;
- p_dcb->sec_mask = p_data->api_dch_open.sec_mask;
- p_dcb->local_mdep_id = p_data->api_dch_open.local_mdep_id;
- p_dcb->peer_mdep_id = p_data->api_dch_open.peer_mdep_id;
-
- if (p_mdep_cfg->mdep_role == BTA_HL_MDEP_ROLE_SINK)
- {
- p_dcb->peer_mdep_role = BTA_HL_MDEP_ROLE_SOURCE;
- }
- else
- {
- p_dcb->peer_mdep_role = BTA_HL_MDEP_ROLE_SINK;
- }
-
- p_dcb->local_mdep_cfg_idx = mdep_cfg_idx;
- p_dcb->local_cfg = p_data->api_dch_open.local_cfg;
-
- bta_hl_find_rxtx_apdu_size(app_idx, mdep_cfg_idx,
- &p_dcb->max_rx_apdu_size,
- &p_dcb->max_tx_apdu_size);
- p_dcb->mdl_id = bta_hl_allocate_mdl_id(app_idx,mcl_idx,mdl_idx);
- p_dcb->mdl_cfg_idx_included = false;
- }
- else
- {
- status = BTA_HL_STATUS_INVALID_CTRL_PSM;
- }
-
- }
- else
- {
- status = BTA_HL_STATUS_INVALID_LOCAL_MDEP_ID;
- }
- }
+ if (p_mdep_cfg->mdep_role == BTA_HL_MDEP_ROLE_SINK) {
+ p_dcb->peer_mdep_role = BTA_HL_MDEP_ROLE_SOURCE;
+ } else {
+ p_dcb->peer_mdep_role = BTA_HL_MDEP_ROLE_SINK;
}
- else
- {
- status = BTA_HL_STATUS_INVALID_LOCAL_MDEP_ID;
- }
+
+ p_dcb->local_mdep_cfg_idx = mdep_cfg_idx;
+ p_dcb->local_cfg = p_data->api_dch_open.local_cfg;
+
+ bta_hl_find_rxtx_apdu_size(app_idx, mdep_cfg_idx,
+ &p_dcb->max_rx_apdu_size,
+ &p_dcb->max_tx_apdu_size);
+ p_dcb->mdl_id =
+ bta_hl_allocate_mdl_id(app_idx, mcl_idx, mdl_idx);
+ p_dcb->mdl_cfg_idx_included = false;
+ } else {
+ status = BTA_HL_STATUS_INVALID_CTRL_PSM;
+ }
+
+ } else {
+ status = BTA_HL_STATUS_INVALID_LOCAL_MDEP_ID;
}
- else
- {
- status = BTA_HL_STATUS_NO_RESOURCE;
- }
+ }
+ } else {
+ status = BTA_HL_STATUS_INVALID_LOCAL_MDEP_ID;
}
- else
- {
- status = BTA_HL_STATUS_NO_CCH;
- }
+ } else {
+ status = BTA_HL_STATUS_NO_RESOURCE;
+ }
+ } else {
+ status = BTA_HL_STATUS_NO_CCH;
}
- else
- {
- status = BTA_HL_STATUS_INVALID_MCL_HANDLE;
- }
+ } else {
+ status = BTA_HL_STATUS_INVALID_MCL_HANDLE;
+ }
#if (BTA_HL_DEBUG == TRUE)
- if (status != BTA_HL_STATUS_OK)
- {
- APPL_TRACE_DEBUG("bta_hl_api_dch_open status =%s", bta_hl_status_code(status));
- }
+ if (status != BTA_HL_STATUS_OK) {
+ APPL_TRACE_DEBUG("bta_hl_api_dch_open status =%s",
+ bta_hl_status_code(status));
+ }
#endif
- switch (status)
- {
- case BTA_HL_STATUS_OK:
- if (p_mcb->sdp.num_recs)
- {
- bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_OPEN_EVT, p_data);
- }
- else
- {
- bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_SDP_INIT_EVT, p_data);
- }
- break;
- case BTA_HL_STATUS_INVALID_DCH_CFG:
- case BTA_HL_STATUS_NO_FIRST_RELIABLE:
- case BTA_HL_STATUS_NO_CCH:
- case BTA_HL_STATUS_NO_RESOURCE:
- case BTA_HL_STATUS_FAIL:
- case BTA_HL_STATUS_INVALID_LOCAL_MDEP_ID:
- case BTA_HL_STATUS_INVALID_CTRL_PSM:
- p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
- if (p_acb->p_cback)
- {
- bta_hl_build_dch_open_cfm(&evt_data,
- p_acb->app_handle,
- p_data->api_dch_open.mcl_handle,
- BTA_HL_INVALID_MDL_HANDLE,
- 0,0,0,0,0, status);
- p_acb->p_cback(BTA_HL_DCH_OPEN_CFM_EVT,(tBTA_HL *) &evt_data );
- }
- else
- {
- APPL_TRACE_ERROR("bta_hl_api_dch_open Null Callback");
- }
+ switch (status) {
+ case BTA_HL_STATUS_OK:
+ if (p_mcb->sdp.num_recs) {
+ bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_OPEN_EVT,
+ p_data);
+ } else {
+ bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx,
+ BTA_HL_DCH_SDP_INIT_EVT, p_data);
+ }
+ break;
+ case BTA_HL_STATUS_INVALID_DCH_CFG:
+ case BTA_HL_STATUS_NO_FIRST_RELIABLE:
+ case BTA_HL_STATUS_NO_CCH:
+ case BTA_HL_STATUS_NO_RESOURCE:
+ case BTA_HL_STATUS_FAIL:
+ case BTA_HL_STATUS_INVALID_LOCAL_MDEP_ID:
+ case BTA_HL_STATUS_INVALID_CTRL_PSM:
+ p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
+ if (p_acb->p_cback) {
+ bta_hl_build_dch_open_cfm(
+ &evt_data, p_acb->app_handle, p_data->api_dch_open.mcl_handle,
+ BTA_HL_INVALID_MDL_HANDLE, 0, 0, 0, 0, 0, status);
+ p_acb->p_cback(BTA_HL_DCH_OPEN_CFM_EVT, (tBTA_HL*)&evt_data);
+ } else {
+ APPL_TRACE_ERROR("bta_hl_api_dch_open Null Callback");
+ }
- break;
- default:
- APPL_TRACE_ERROR("Status code=%d", status);
- break;
-
- }
-
+ break;
+ default:
+ APPL_TRACE_ERROR("Status code=%d", status);
+ break;
+ }
}
/*******************************************************************************
*
@@ -1102,65 +1023,56 @@
* Returns void
*
******************************************************************************/
-static void bta_hl_api_dch_close(UNUSED_ATTR tBTA_HL_CB *p_cb, tBTA_HL_DATA *p_data)
-{
- tBTA_HL evt_data;
- tBTA_HL_STATUS status = BTA_HL_STATUS_OK;
- uint8_t app_idx, mcl_idx, mdl_idx;
- tBTA_HL_APP_CB *p_acb;
- tBTA_HL_MCL_CB *p_mcb;
- tBTA_HL_MDL_CB *p_dcb;
+static void bta_hl_api_dch_close(UNUSED_ATTR tBTA_HL_CB* p_cb,
+ tBTA_HL_DATA* p_data) {
+ tBTA_HL evt_data;
+ tBTA_HL_STATUS status = BTA_HL_STATUS_OK;
+ uint8_t app_idx, mcl_idx, mdl_idx;
+ tBTA_HL_APP_CB* p_acb;
+ tBTA_HL_MCL_CB* p_mcb;
+ tBTA_HL_MDL_CB* p_dcb;
- if (bta_hl_find_mdl_idx_using_handle(p_data->api_dch_close.mdl_handle, &app_idx, &mcl_idx, &mdl_idx ))
- {
- p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
- if (p_dcb->dch_state != BTA_HL_DCH_OPEN_ST)
- {
- status = BTA_HL_STATUS_FAIL;
- }
+ if (bta_hl_find_mdl_idx_using_handle(p_data->api_dch_close.mdl_handle,
+ &app_idx, &mcl_idx, &mdl_idx)) {
+ p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
+ if (p_dcb->dch_state != BTA_HL_DCH_OPEN_ST) {
+ status = BTA_HL_STATUS_FAIL;
}
- else
- {
- status = BTA_HL_STATUS_INVALID_MDL_HANDLE;
- }
+ } else {
+ status = BTA_HL_STATUS_INVALID_MDL_HANDLE;
+ }
#if (BTA_HL_DEBUG == TRUE)
- if (status != BTA_HL_STATUS_OK)
- {
- APPL_TRACE_DEBUG("bta_hl_api_dch_close status =%s", bta_hl_status_code(status));
- }
+ if (status != BTA_HL_STATUS_OK) {
+ APPL_TRACE_DEBUG("bta_hl_api_dch_close status =%s",
+ bta_hl_status_code(status));
+ }
#endif
- switch (status)
- {
- case BTA_HL_STATUS_OK:
- bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_CLOSE_EVT, p_data);
- break;
- case BTA_HL_STATUS_FAIL:
- p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
- if (p_acb->p_cback)
- {
- p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
- bta_hl_build_dch_close_cfm(&evt_data,
- p_acb->app_handle,
- p_mcb->mcl_handle,
- p_data->api_dch_close.mdl_handle,
- status);
+ switch (status) {
+ case BTA_HL_STATUS_OK:
+ bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_CLOSE_EVT,
+ p_data);
+ break;
+ case BTA_HL_STATUS_FAIL:
+ p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
+ if (p_acb->p_cback) {
+ p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
+ bta_hl_build_dch_close_cfm(&evt_data, p_acb->app_handle,
+ p_mcb->mcl_handle,
+ p_data->api_dch_close.mdl_handle, status);
- p_acb->p_cback(BTA_HL_DCH_CLOSE_CFM_EVT,(tBTA_HL *) &evt_data );
- }
- else
- {
- APPL_TRACE_ERROR("bta_hl_api_dch_close Null Callback");
- }
- break;
- default:
- APPL_TRACE_ERROR("Status code=%d", status);
- break;
- }
+ p_acb->p_cback(BTA_HL_DCH_CLOSE_CFM_EVT, (tBTA_HL*)&evt_data);
+ } else {
+ APPL_TRACE_ERROR("bta_hl_api_dch_close Null Callback");
+ }
+ break;
+ default:
+ APPL_TRACE_ERROR("Status code=%d", status);
+ break;
+ }
}
-
/*******************************************************************************
*
* Function bta_hl_api_dch_reconnect
@@ -1170,135 +1082,112 @@
* Returns void
*
******************************************************************************/
-static void bta_hl_api_dch_reconnect(UNUSED_ATTR tBTA_HL_CB *p_cb, tBTA_HL_DATA *p_data)
-{
- tBTA_HL evt_data;
- tBTA_HL_STATUS status = BTA_HL_STATUS_OK;
- uint8_t app_idx, mcl_idx, mdl_idx;
- tBTA_HL_APP_CB *p_acb;
- tBTA_HL_MCL_CB *p_mcb = NULL;
- tBTA_HL_MDL_CB *p_dcb;
- uint8_t mdep_cfg_idx;
- uint8_t mdl_cfg_idx;
- tBTA_HL_MDEP_CFG *p_mdep_cfg;
+static void bta_hl_api_dch_reconnect(UNUSED_ATTR tBTA_HL_CB* p_cb,
+ tBTA_HL_DATA* p_data) {
+ tBTA_HL evt_data;
+ tBTA_HL_STATUS status = BTA_HL_STATUS_OK;
+ uint8_t app_idx, mcl_idx, mdl_idx;
+ tBTA_HL_APP_CB* p_acb;
+ tBTA_HL_MCL_CB* p_mcb = NULL;
+ tBTA_HL_MDL_CB* p_dcb;
+ uint8_t mdep_cfg_idx;
+ uint8_t mdl_cfg_idx;
+ tBTA_HL_MDEP_CFG* p_mdep_cfg;
- if (bta_hl_find_mcl_idx_using_handle(p_data->api_dch_reconnect.mcl_handle, &app_idx, &mcl_idx))
- {
- p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
- p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
- if (p_mcb->cch_state == BTA_HL_CCH_OPEN_ST)
- {
- if (bta_hl_find_avail_mdl_idx(app_idx, mcl_idx, &mdl_idx))
- {
- p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
- if (bta_hl_validate_reconnect_params(app_idx, mcl_idx, &(p_data->api_dch_reconnect),
- &mdep_cfg_idx, &mdl_cfg_idx ))
- {
- if (!bta_hl_is_the_first_reliable_existed(app_idx, mcl_idx) &&
- (p_acb->mdl_cfg[mdl_cfg_idx].dch_mode != BTA_HL_DCH_MODE_RELIABLE))
- {
- status = BTA_HL_STATUS_NO_FIRST_RELIABLE;
- }
- else
- {
- if (bta_hl_set_ctrl_psm_for_dch(app_idx, mcl_idx, mdl_idx, p_data->api_dch_open.ctrl_psm))
- {
- p_dcb->in_use = true;
- p_dcb->dch_oper = BTA_HL_DCH_OP_LOCAL_RECONNECT;
- p_dcb->sec_mask = (BTA_SEC_AUTHENTICATE | BTA_SEC_ENCRYPT);
- p_dcb->local_mdep_id = p_acb->mdl_cfg[mdl_cfg_idx].local_mdep_id;
- p_dcb->local_mdep_cfg_idx = mdep_cfg_idx;
- p_dcb->local_cfg = BTA_HL_DCH_CFG_UNKNOWN;
- p_dcb->mdl_id = p_data->api_dch_reconnect.mdl_id;
- p_dcb->mdl_cfg_idx_included = true;
- p_dcb->mdl_cfg_idx = mdl_cfg_idx;
- p_dcb->dch_mode = p_acb->mdl_cfg[mdl_cfg_idx].dch_mode;
+ if (bta_hl_find_mcl_idx_using_handle(p_data->api_dch_reconnect.mcl_handle,
+ &app_idx, &mcl_idx)) {
+ p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
+ p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
+ if (p_mcb->cch_state == BTA_HL_CCH_OPEN_ST) {
+ if (bta_hl_find_avail_mdl_idx(app_idx, mcl_idx, &mdl_idx)) {
+ p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
+ if (bta_hl_validate_reconnect_params(app_idx, mcl_idx,
+ &(p_data->api_dch_reconnect),
+ &mdep_cfg_idx, &mdl_cfg_idx)) {
+ if (!bta_hl_is_the_first_reliable_existed(app_idx, mcl_idx) &&
+ (p_acb->mdl_cfg[mdl_cfg_idx].dch_mode !=
+ BTA_HL_DCH_MODE_RELIABLE)) {
+ status = BTA_HL_STATUS_NO_FIRST_RELIABLE;
+ } else {
+ if (bta_hl_set_ctrl_psm_for_dch(app_idx, mcl_idx, mdl_idx,
+ p_data->api_dch_open.ctrl_psm)) {
+ p_dcb->in_use = true;
+ p_dcb->dch_oper = BTA_HL_DCH_OP_LOCAL_RECONNECT;
+ p_dcb->sec_mask = (BTA_SEC_AUTHENTICATE | BTA_SEC_ENCRYPT);
+ p_dcb->local_mdep_id = p_acb->mdl_cfg[mdl_cfg_idx].local_mdep_id;
+ p_dcb->local_mdep_cfg_idx = mdep_cfg_idx;
+ p_dcb->local_cfg = BTA_HL_DCH_CFG_UNKNOWN;
+ p_dcb->mdl_id = p_data->api_dch_reconnect.mdl_id;
+ p_dcb->mdl_cfg_idx_included = true;
+ p_dcb->mdl_cfg_idx = mdl_cfg_idx;
+ p_dcb->dch_mode = p_acb->mdl_cfg[mdl_cfg_idx].dch_mode;
- p_mdep_cfg = BTA_HL_GET_MDEP_CFG_PTR(app_idx, mdep_cfg_idx);
+ p_mdep_cfg = BTA_HL_GET_MDEP_CFG_PTR(app_idx, mdep_cfg_idx);
- if (p_mdep_cfg->mdep_role == BTA_HL_MDEP_ROLE_SINK)
- {
- p_dcb->peer_mdep_role = BTA_HL_MDEP_ROLE_SOURCE;
- APPL_TRACE_DEBUG("peer mdep role = SOURCE ");
- }
- else
- {
- p_dcb->peer_mdep_role = BTA_HL_MDEP_ROLE_SINK;
- APPL_TRACE_DEBUG("peer mdep role = SINK ");
- }
+ if (p_mdep_cfg->mdep_role == BTA_HL_MDEP_ROLE_SINK) {
+ p_dcb->peer_mdep_role = BTA_HL_MDEP_ROLE_SOURCE;
+ APPL_TRACE_DEBUG("peer mdep role = SOURCE ");
+ } else {
+ p_dcb->peer_mdep_role = BTA_HL_MDEP_ROLE_SINK;
+ APPL_TRACE_DEBUG("peer mdep role = SINK ");
+ }
- bta_hl_find_rxtx_apdu_size(app_idx, mdep_cfg_idx,
- &p_dcb->max_rx_apdu_size,
- &p_dcb->max_tx_apdu_size);
- }
- else
- {
- status = BTA_HL_STATUS_INVALID_CTRL_PSM;
- }
- }
- }
- else
- {
- status = BTA_HL_STATUS_INVALID_RECONNECT_CFG;
- }
+ bta_hl_find_rxtx_apdu_size(app_idx, mdep_cfg_idx,
+ &p_dcb->max_rx_apdu_size,
+ &p_dcb->max_tx_apdu_size);
+ } else {
+ status = BTA_HL_STATUS_INVALID_CTRL_PSM;
}
- else
- {
- status = BTA_HL_STATUS_NO_RESOURCE;
- }
+ }
+ } else {
+ status = BTA_HL_STATUS_INVALID_RECONNECT_CFG;
}
- else
- {
- status = BTA_HL_STATUS_NO_CCH;
- }
+ } else {
+ status = BTA_HL_STATUS_NO_RESOURCE;
+ }
+ } else {
+ status = BTA_HL_STATUS_NO_CCH;
}
- else
- {
- status = BTA_HL_STATUS_INVALID_MCL_HANDLE;
- }
+ } else {
+ status = BTA_HL_STATUS_INVALID_MCL_HANDLE;
+ }
#if (BTA_HL_DEBUG == TRUE)
- if (status != BTA_HL_STATUS_OK)
- {
- APPL_TRACE_DEBUG("bta_hl_api_dch_reconnect status=%s", bta_hl_status_code(status));
- }
+ if (status != BTA_HL_STATUS_OK) {
+ APPL_TRACE_DEBUG("bta_hl_api_dch_reconnect status=%s",
+ bta_hl_status_code(status));
+ }
#endif
- switch (status)
- {
- case BTA_HL_STATUS_OK:
- if (p_mcb->sdp.num_recs)
- {
- bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_RECONNECT_EVT, p_data);
- }
- else
- {
- bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_SDP_INIT_EVT, p_data);
- }
- break;
- case BTA_HL_STATUS_INVALID_RECONNECT_CFG:
- case BTA_HL_STATUS_NO_FIRST_RELIABLE:
- case BTA_HL_STATUS_NO_CCH:
- case BTA_HL_STATUS_NO_RESOURCE:
- p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
- if (p_acb->p_cback)
- {
- bta_hl_build_dch_open_cfm(&evt_data,
- p_acb->app_handle,
- p_data->api_dch_reconnect.mcl_handle,
- BTA_HL_INVALID_MDL_HANDLE,
- 0,p_data->api_dch_reconnect.mdl_id,0,0,0, status);
- p_acb->p_cback(BTA_HL_DCH_RECONNECT_CFM_EVT,(tBTA_HL *) &evt_data );
- }
- else
- {
- APPL_TRACE_ERROR("bta_hl_api_dch_reconnect Null Callback");
- }
- break;
- default:
- APPL_TRACE_ERROR("Status code=%d", status);
- break;
- }
+ switch (status) {
+ case BTA_HL_STATUS_OK:
+ if (p_mcb->sdp.num_recs) {
+ bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx,
+ BTA_HL_DCH_RECONNECT_EVT, p_data);
+ } else {
+ bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx,
+ BTA_HL_DCH_SDP_INIT_EVT, p_data);
+ }
+ break;
+ case BTA_HL_STATUS_INVALID_RECONNECT_CFG:
+ case BTA_HL_STATUS_NO_FIRST_RELIABLE:
+ case BTA_HL_STATUS_NO_CCH:
+ case BTA_HL_STATUS_NO_RESOURCE:
+ p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
+ if (p_acb->p_cback) {
+ bta_hl_build_dch_open_cfm(
+ &evt_data, p_acb->app_handle, p_data->api_dch_reconnect.mcl_handle,
+ BTA_HL_INVALID_MDL_HANDLE, 0, p_data->api_dch_reconnect.mdl_id, 0,
+ 0, 0, status);
+ p_acb->p_cback(BTA_HL_DCH_RECONNECT_CFM_EVT, (tBTA_HL*)&evt_data);
+ } else {
+ APPL_TRACE_ERROR("bta_hl_api_dch_reconnect Null Callback");
+ }
+ break;
+ default:
+ APPL_TRACE_ERROR("Status code=%d", status);
+ break;
+ }
}
/*******************************************************************************
@@ -1310,130 +1199,108 @@
* Returns void
*
******************************************************************************/
-static void bta_hl_api_dch_echo_test(UNUSED_ATTR tBTA_HL_CB *p_cb, tBTA_HL_DATA *p_data)
-{
- tBTA_HL evt_data;
- tBTA_HL_STATUS status = BTA_HL_STATUS_OK;
- uint8_t app_idx, mcl_idx, mdl_idx;
- tBTA_HL_APP_CB *p_acb;
- tBTA_HL_MCL_CB *p_mcb = NULL;
- tBTA_HL_MDL_CB *p_dcb;
- tBTA_HL_ECHO_CFG *p_echo_cfg;
+static void bta_hl_api_dch_echo_test(UNUSED_ATTR tBTA_HL_CB* p_cb,
+ tBTA_HL_DATA* p_data) {
+ tBTA_HL evt_data;
+ tBTA_HL_STATUS status = BTA_HL_STATUS_OK;
+ uint8_t app_idx, mcl_idx, mdl_idx;
+ tBTA_HL_APP_CB* p_acb;
+ tBTA_HL_MCL_CB* p_mcb = NULL;
+ tBTA_HL_MDL_CB* p_dcb;
+ tBTA_HL_ECHO_CFG* p_echo_cfg;
- if (bta_hl_find_mcl_idx_using_handle(p_data->api_dch_echo_test.mcl_handle, &app_idx, &mcl_idx))
- {
- p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
- p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
- if (p_mcb->cch_state == BTA_HL_CCH_OPEN_ST)
- {
- if (!p_mcb->echo_test )
- {
- if (bta_hl_find_avail_mdl_idx(app_idx, mcl_idx, &mdl_idx))
- {
- p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
+ if (bta_hl_find_mcl_idx_using_handle(p_data->api_dch_echo_test.mcl_handle,
+ &app_idx, &mcl_idx)) {
+ p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
+ p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
+ if (p_mcb->cch_state == BTA_HL_CCH_OPEN_ST) {
+ if (!p_mcb->echo_test) {
+ if (bta_hl_find_avail_mdl_idx(app_idx, mcl_idx, &mdl_idx)) {
+ p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
- if ((p_data->api_dch_echo_test.local_cfg == BTA_HL_DCH_CFG_RELIABLE) ||
- (p_data->api_dch_echo_test.local_cfg == BTA_HL_DCH_CFG_STREAMING))
- {
- bool fcs_use = (bool) (p_dcb->chnl_cfg.fcs & BTA_HL_MCA_FCS_USE_MASK);
- if ((p_dcb->p_echo_tx_pkt = bta_hl_get_buf(p_data->api_dch_echo_test.pkt_size, fcs_use)) != NULL )
- {
- if (bta_hl_set_ctrl_psm_for_dch(app_idx, mcl_idx, mdl_idx, p_data->api_dch_open.ctrl_psm))
- {
- p_dcb->in_use = true;
- p_dcb->dch_oper = BTA_HL_DCH_OP_LOCAL_OPEN;
- p_dcb->sec_mask = (BTA_SEC_AUTHENTICATE | BTA_SEC_ENCRYPT);
- p_dcb->local_mdep_cfg_idx = BTA_HL_ECHO_TEST_MDEP_CFG_IDX;
- p_dcb->local_cfg = p_data->api_dch_echo_test.local_cfg;
- p_dcb->local_mdep_id = BTA_HL_ECHO_TEST_MDEP_ID;
- p_dcb->peer_mdep_id = BTA_HL_ECHO_TEST_MDEP_ID;
- p_dcb->mdl_id = bta_hl_allocate_mdl_id(app_idx,mcl_idx,mdl_idx);
- p_dcb->mdl_cfg_idx_included = false;
- p_echo_cfg = BTA_HL_GET_ECHO_CFG_PTR(app_idx);
- p_dcb->max_rx_apdu_size = p_echo_cfg->max_rx_apdu_size;
- p_dcb->max_tx_apdu_size = p_echo_cfg->max_tx_apdu_size;
- p_mcb->echo_test = true;
- p_mcb->echo_mdl_idx = mdl_idx;
- }
- else
- {
- status = BTA_HL_STATUS_INVALID_CTRL_PSM;
- }
- }
- else
- {
- status = BTA_HL_STATUS_NO_RESOURCE;
- }
- }
- else
- {
- status = BTA_HL_STATUS_INVALID_DCH_CFG;
- }
- }
- else
- {
- status = BTA_HL_STATUS_NO_RESOURCE;
- }
+ if ((p_data->api_dch_echo_test.local_cfg ==
+ BTA_HL_DCH_CFG_RELIABLE) ||
+ (p_data->api_dch_echo_test.local_cfg ==
+ BTA_HL_DCH_CFG_STREAMING)) {
+ bool fcs_use =
+ (bool)(p_dcb->chnl_cfg.fcs & BTA_HL_MCA_FCS_USE_MASK);
+ if ((p_dcb->p_echo_tx_pkt = bta_hl_get_buf(
+ p_data->api_dch_echo_test.pkt_size, fcs_use)) != NULL) {
+ if (bta_hl_set_ctrl_psm_for_dch(app_idx, mcl_idx, mdl_idx,
+ p_data->api_dch_open.ctrl_psm)) {
+ p_dcb->in_use = true;
+ p_dcb->dch_oper = BTA_HL_DCH_OP_LOCAL_OPEN;
+ p_dcb->sec_mask = (BTA_SEC_AUTHENTICATE | BTA_SEC_ENCRYPT);
+ p_dcb->local_mdep_cfg_idx = BTA_HL_ECHO_TEST_MDEP_CFG_IDX;
+ p_dcb->local_cfg = p_data->api_dch_echo_test.local_cfg;
+ p_dcb->local_mdep_id = BTA_HL_ECHO_TEST_MDEP_ID;
+ p_dcb->peer_mdep_id = BTA_HL_ECHO_TEST_MDEP_ID;
+ p_dcb->mdl_id =
+ bta_hl_allocate_mdl_id(app_idx, mcl_idx, mdl_idx);
+ p_dcb->mdl_cfg_idx_included = false;
+ p_echo_cfg = BTA_HL_GET_ECHO_CFG_PTR(app_idx);
+ p_dcb->max_rx_apdu_size = p_echo_cfg->max_rx_apdu_size;
+ p_dcb->max_tx_apdu_size = p_echo_cfg->max_tx_apdu_size;
+ p_mcb->echo_test = true;
+ p_mcb->echo_mdl_idx = mdl_idx;
+ } else {
+ status = BTA_HL_STATUS_INVALID_CTRL_PSM;
+ }
+ } else {
+ status = BTA_HL_STATUS_NO_RESOURCE;
}
- else
- {
- status = BTA_HL_STATUS_ECHO_TEST_BUSY;
- }
+ } else {
+ status = BTA_HL_STATUS_INVALID_DCH_CFG;
+ }
+ } else {
+ status = BTA_HL_STATUS_NO_RESOURCE;
}
- else
- {
- status = BTA_HL_STATUS_NO_CCH;
- }
+ } else {
+ status = BTA_HL_STATUS_ECHO_TEST_BUSY;
+ }
+ } else {
+ status = BTA_HL_STATUS_NO_CCH;
}
- else
- {
- status = BTA_HL_STATUS_NO_MCL;
- }
+ } else {
+ status = BTA_HL_STATUS_NO_MCL;
+ }
#if (BTA_HL_DEBUG == TRUE)
- if (status != BTA_HL_STATUS_OK)
- {
- APPL_TRACE_DEBUG("bta_hl_api_dch_echo_test status=%s", bta_hl_status_code(status));
- }
+ if (status != BTA_HL_STATUS_OK) {
+ APPL_TRACE_DEBUG("bta_hl_api_dch_echo_test status=%s",
+ bta_hl_status_code(status));
+ }
#endif
- switch (status)
- {
- case BTA_HL_STATUS_OK:
- if (p_mcb->sdp.num_recs)
- {
- bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_ECHO_TEST_EVT, p_data);
- }
- else
- {
- bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_SDP_INIT_EVT, p_data);
- }
- break;
- case BTA_HL_STATUS_ECHO_TEST_BUSY:
- case BTA_HL_STATUS_NO_RESOURCE:
- case BTA_HL_STATUS_INVALID_DCH_CFG:
- p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
- if (p_acb->p_cback)
- {
- bta_hl_build_echo_test_cfm(&evt_data,
- p_acb->app_handle,
- p_mcb->mcl_handle,
- status);
- p_acb->p_cback(BTA_HL_DCH_ECHO_TEST_CFM_EVT,(tBTA_HL *) &evt_data );
- }
- else
- {
- APPL_TRACE_ERROR("bta_hl_api_dch_echo_test Null Callback");
- }
- break;
+ switch (status) {
+ case BTA_HL_STATUS_OK:
+ if (p_mcb->sdp.num_recs) {
+ bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx,
+ BTA_HL_DCH_ECHO_TEST_EVT, p_data);
+ } else {
+ bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx,
+ BTA_HL_DCH_SDP_INIT_EVT, p_data);
+ }
+ break;
+ case BTA_HL_STATUS_ECHO_TEST_BUSY:
+ case BTA_HL_STATUS_NO_RESOURCE:
+ case BTA_HL_STATUS_INVALID_DCH_CFG:
+ p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
+ if (p_acb->p_cback) {
+ bta_hl_build_echo_test_cfm(&evt_data, p_acb->app_handle,
+ p_mcb->mcl_handle, status);
+ p_acb->p_cback(BTA_HL_DCH_ECHO_TEST_CFM_EVT, (tBTA_HL*)&evt_data);
+ } else {
+ APPL_TRACE_ERROR("bta_hl_api_dch_echo_test Null Callback");
+ }
+ break;
- default:
- APPL_TRACE_ERROR("Status code=%s", status);
- break;
- }
+ default:
+ APPL_TRACE_ERROR("Status code=%s", status);
+ break;
+ }
}
-
/*******************************************************************************
*
* Function bta_hl_api_sdp_query
@@ -1443,98 +1310,78 @@
* Returns void
*
******************************************************************************/
-static void bta_hl_api_sdp_query(UNUSED_ATTR tBTA_HL_CB *p_cb, tBTA_HL_DATA *p_data)
-{
- tBTA_HL evt_data;
- tBTA_HL_STATUS status = BTA_HL_STATUS_OK;
- uint8_t app_idx, mcl_idx;
- tBTA_HL_APP_CB *p_acb;
- tBTA_HL_MCL_CB *p_mcb;
+static void bta_hl_api_sdp_query(UNUSED_ATTR tBTA_HL_CB* p_cb,
+ tBTA_HL_DATA* p_data) {
+ tBTA_HL evt_data;
+ tBTA_HL_STATUS status = BTA_HL_STATUS_OK;
+ uint8_t app_idx, mcl_idx;
+ tBTA_HL_APP_CB* p_acb;
+ tBTA_HL_MCL_CB* p_mcb;
- if (bta_hl_find_app_idx_using_handle(p_data->api_sdp_query.app_handle, &app_idx))
- {
- if (!bta_hl_find_mcl_idx(app_idx, p_data->api_sdp_query.bd_addr, &mcl_idx))
- {
- if (bta_hl_find_avail_mcl_idx(app_idx, &mcl_idx))
- {
- p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
- p_mcb->in_use = true;
- bdcpy(p_mcb->bd_addr, p_data->api_sdp_query.bd_addr);
- APPL_TRACE_DEBUG("bta_hl_api_sdp_query p_mcb->app_id %d app_idx %d mcl_idx %d", p_mcb->app_id, app_idx, mcl_idx);
- p_mcb->app_id = p_data->api_sdp_query.app_id;
- p_mcb->sdp_oper = BTA_HL_SDP_OP_SDP_QUERY_NEW ;
- }
- else
- {
- status = BTA_HL_STATUS_NO_RESOURCE;
- }
- }
- else
- {
- p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
- p_mcb->app_id = p_data->api_sdp_query.app_id;
- if (p_mcb->sdp_oper != BTA_HL_SDP_OP_NONE)
- {
- status = BTA_HL_STATUS_SDP_NO_RESOURCE;
- }
- else
- {
- p_mcb->sdp_oper = BTA_HL_SDP_OP_SDP_QUERY_CURRENT;
- }
- }
+ if (bta_hl_find_app_idx_using_handle(p_data->api_sdp_query.app_handle,
+ &app_idx)) {
+ if (!bta_hl_find_mcl_idx(app_idx, p_data->api_sdp_query.bd_addr,
+ &mcl_idx)) {
+ if (bta_hl_find_avail_mcl_idx(app_idx, &mcl_idx)) {
+ p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
+ p_mcb->in_use = true;
+ bdcpy(p_mcb->bd_addr, p_data->api_sdp_query.bd_addr);
+ APPL_TRACE_DEBUG(
+ "bta_hl_api_sdp_query p_mcb->app_id %d app_idx %d mcl_idx %d",
+ p_mcb->app_id, app_idx, mcl_idx);
+ p_mcb->app_id = p_data->api_sdp_query.app_id;
+ p_mcb->sdp_oper = BTA_HL_SDP_OP_SDP_QUERY_NEW;
+ } else {
+ status = BTA_HL_STATUS_NO_RESOURCE;
+ }
+ } else {
+ p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
+ p_mcb->app_id = p_data->api_sdp_query.app_id;
+ if (p_mcb->sdp_oper != BTA_HL_SDP_OP_NONE) {
+ status = BTA_HL_STATUS_SDP_NO_RESOURCE;
+ } else {
+ p_mcb->sdp_oper = BTA_HL_SDP_OP_SDP_QUERY_CURRENT;
+ }
}
- else
- {
- status = BTA_HL_STATUS_INVALID_APP_HANDLE;
- }
+ } else {
+ status = BTA_HL_STATUS_INVALID_APP_HANDLE;
+ }
- if (status == BTA_HL_STATUS_OK)
- {
- status = bta_hl_init_sdp( p_mcb->sdp_oper, app_idx, mcl_idx, 0xFF);
- if ( (status != BTA_HL_STATUS_OK) &&
- (p_mcb->sdp_oper == BTA_HL_SDP_OP_SDP_QUERY_NEW) )
- {
- memset(p_mcb, 0 ,sizeof(tBTA_HL_MCL_CB));
- }
+ if (status == BTA_HL_STATUS_OK) {
+ status = bta_hl_init_sdp(p_mcb->sdp_oper, app_idx, mcl_idx, 0xFF);
+ if ((status != BTA_HL_STATUS_OK) &&
+ (p_mcb->sdp_oper == BTA_HL_SDP_OP_SDP_QUERY_NEW)) {
+ memset(p_mcb, 0, sizeof(tBTA_HL_MCL_CB));
}
+ }
#if (BTA_HL_DEBUG == TRUE)
- if (status != BTA_HL_STATUS_OK)
- {
- APPL_TRACE_DEBUG("bta_hl_api_sdp_query status=%s", bta_hl_status_code(status));
- }
+ if (status != BTA_HL_STATUS_OK) {
+ APPL_TRACE_DEBUG("bta_hl_api_sdp_query status=%s",
+ bta_hl_status_code(status));
+ }
#endif
- switch (status)
- {
- case BTA_HL_STATUS_NO_RESOURCE:
- case BTA_HL_STATUS_FAIL:
- case BTA_HL_STATUS_SDP_NO_RESOURCE:
- p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
- if (p_acb->p_cback)
- {
- bta_hl_build_sdp_query_cfm(&evt_data,
- p_data->api_sdp_query.app_id,
- p_data->api_sdp_query.app_handle,
- p_data->api_sdp_query.bd_addr,
- NULL,
- status);
- p_acb->p_cback(BTA_HL_SDP_QUERY_CFM_EVT,(tBTA_HL *) &evt_data );
- }
- else
- {
- APPL_TRACE_ERROR("bta_hl_api_sdp_query Null Callback");
- }
- break;
- case BTA_HL_STATUS_OK:
- break;
- default:
- APPL_TRACE_ERROR("Status code=%d", status);
- break;
- }
+ switch (status) {
+ case BTA_HL_STATUS_NO_RESOURCE:
+ case BTA_HL_STATUS_FAIL:
+ case BTA_HL_STATUS_SDP_NO_RESOURCE:
+ p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
+ if (p_acb->p_cback) {
+ bta_hl_build_sdp_query_cfm(&evt_data, p_data->api_sdp_query.app_id,
+ p_data->api_sdp_query.app_handle,
+ p_data->api_sdp_query.bd_addr, NULL, status);
+ p_acb->p_cback(BTA_HL_SDP_QUERY_CFM_EVT, (tBTA_HL*)&evt_data);
+ } else {
+ APPL_TRACE_ERROR("bta_hl_api_sdp_query Null Callback");
+ }
+ break;
+ case BTA_HL_STATUS_OK:
+ break;
+ default:
+ APPL_TRACE_ERROR("Status code=%d", status);
+ break;
+ }
}
-
-
-
/*******************************************************************************
*
* Function bta_hl_sdp_query_results
@@ -1544,57 +1391,57 @@
* Returns void
*
******************************************************************************/
-static void bta_hl_sdp_query_results(UNUSED_ATTR tBTA_HL_CB *p_cb, tBTA_HL_DATA *p_data)
-{
- tBTA_HL evt_data;
- tBTA_HL_STATUS status = BTA_HL_STATUS_OK;
- uint8_t app_idx = p_data->cch_sdp.app_idx;
- uint8_t mcl_idx = p_data->cch_sdp.mcl_idx;
- tBTA_HL_APP_CB *p_acb = BTA_HL_GET_APP_CB_PTR( app_idx);
- tBTA_HL_MCL_CB *p_mcb = BTA_HL_GET_MCL_CB_PTR( app_idx, mcl_idx);
- tBTA_HL_SDP *p_sdp=NULL;
- uint16_t event;
- bool release_sdp_buf=false;
+static void bta_hl_sdp_query_results(UNUSED_ATTR tBTA_HL_CB* p_cb,
+ tBTA_HL_DATA* p_data) {
+ tBTA_HL evt_data;
+ tBTA_HL_STATUS status = BTA_HL_STATUS_OK;
+ uint8_t app_idx = p_data->cch_sdp.app_idx;
+ uint8_t mcl_idx = p_data->cch_sdp.mcl_idx;
+ tBTA_HL_APP_CB* p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
+ tBTA_HL_MCL_CB* p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
+ tBTA_HL_SDP* p_sdp = NULL;
+ uint16_t event;
+ bool release_sdp_buf = false;
- event = p_data->hdr.event;
+ event = p_data->hdr.event;
- if (event == BTA_HL_SDP_QUERY_OK_EVT) {
- p_sdp = (tBTA_HL_SDP *)osi_malloc(sizeof(tBTA_HL_SDP));
- memcpy(p_sdp, &p_mcb->sdp, sizeof(tBTA_HL_SDP));
- release_sdp_buf = true;
- } else {
- status = BTA_HL_STATUS_SDP_FAIL;
- }
+ if (event == BTA_HL_SDP_QUERY_OK_EVT) {
+ p_sdp = (tBTA_HL_SDP*)osi_malloc(sizeof(tBTA_HL_SDP));
+ memcpy(p_sdp, &p_mcb->sdp, sizeof(tBTA_HL_SDP));
+ release_sdp_buf = true;
+ } else {
+ status = BTA_HL_STATUS_SDP_FAIL;
+ }
#if (BTA_HL_DEBUG == TRUE)
- if (status != BTA_HL_STATUS_OK)
- {
- APPL_TRACE_DEBUG("bta_hl_sdp_query_results status=%s", bta_hl_status_code(status));
- }
+ if (status != BTA_HL_STATUS_OK) {
+ APPL_TRACE_DEBUG("bta_hl_sdp_query_results status=%s",
+ bta_hl_status_code(status));
+ }
#endif
- APPL_TRACE_DEBUG("bta_hl_sdp_query_results p_mcb->app_id %d app_idx %d mcl_idx %d", p_mcb->app_id, app_idx, mcl_idx);
- bta_hl_build_sdp_query_cfm(&evt_data,p_mcb->app_id, p_acb->app_handle,
- p_mcb->bd_addr,p_sdp,status);
- p_acb->p_cback(BTA_HL_SDP_QUERY_CFM_EVT,(tBTA_HL *) &evt_data );
+ APPL_TRACE_DEBUG(
+ "bta_hl_sdp_query_results p_mcb->app_id %d app_idx %d mcl_idx %d",
+ p_mcb->app_id, app_idx, mcl_idx);
+ bta_hl_build_sdp_query_cfm(&evt_data, p_mcb->app_id, p_acb->app_handle,
+ p_mcb->bd_addr, p_sdp, status);
+ p_acb->p_cback(BTA_HL_SDP_QUERY_CFM_EVT, (tBTA_HL*)&evt_data);
- if (release_sdp_buf)
- osi_free_and_reset((void **)&p_sdp);
+ if (release_sdp_buf) osi_free_and_reset((void**)&p_sdp);
- if (p_data->cch_sdp.release_mcl_cb) {
- memset(p_mcb, 0, sizeof(tBTA_HL_MCL_CB));
- } else {
- if (p_mcb->close_pending)
- bta_hl_check_cch_close(app_idx, mcl_idx, p_data, true);
+ if (p_data->cch_sdp.release_mcl_cb) {
+ memset(p_mcb, 0, sizeof(tBTA_HL_MCL_CB));
+ } else {
+ if (p_mcb->close_pending)
+ bta_hl_check_cch_close(app_idx, mcl_idx, p_data, true);
- if (!p_mcb->ctrl_psm) {
- /* Control channel acceptor: do not store the SDP records */
- memset(&p_mcb->sdp, 0, sizeof(tBTA_HL_SDP));
- }
+ if (!p_mcb->ctrl_psm) {
+ /* Control channel acceptor: do not store the SDP records */
+ memset(&p_mcb->sdp, 0, sizeof(tBTA_HL_SDP));
}
+ }
}
-
/*******************************************************************************
*
* Function bta_hl_api_delete_mdl
@@ -1604,83 +1451,65 @@
* Returns void
*
******************************************************************************/
-static void bta_hl_api_delete_mdl(UNUSED_ATTR tBTA_HL_CB *p_cb, tBTA_HL_DATA *p_data)
-{
- tBTA_HL evt_data;
- tBTA_HL_STATUS status = BTA_HL_STATUS_OK;
- uint8_t app_idx, mcl_idx;
- tBTA_HL_APP_CB *p_acb;
- tBTA_HL_MCL_CB *p_mcb;
+static void bta_hl_api_delete_mdl(UNUSED_ATTR tBTA_HL_CB* p_cb,
+ tBTA_HL_DATA* p_data) {
+ tBTA_HL evt_data;
+ tBTA_HL_STATUS status = BTA_HL_STATUS_OK;
+ uint8_t app_idx, mcl_idx;
+ tBTA_HL_APP_CB* p_acb;
+ tBTA_HL_MCL_CB* p_mcb;
- if (bta_hl_find_mcl_idx_using_handle(p_data->api_delete_mdl.mcl_handle, &app_idx, &mcl_idx ))
- {
- if (bta_hl_is_mdl_value_valid(p_data->api_delete_mdl.mdl_id))
- {
- p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
- if (bta_hl_is_mdl_exsit_in_mcl(app_idx,
- p_mcb->bd_addr,
- p_data->api_delete_mdl.mdl_id))
- {
+ if (bta_hl_find_mcl_idx_using_handle(p_data->api_delete_mdl.mcl_handle,
+ &app_idx, &mcl_idx)) {
+ if (bta_hl_is_mdl_value_valid(p_data->api_delete_mdl.mdl_id)) {
+ p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
+ if (bta_hl_is_mdl_exsit_in_mcl(app_idx, p_mcb->bd_addr,
+ p_data->api_delete_mdl.mdl_id)) {
+ p_mcb->delete_mdl.mcl_handle = p_data->api_delete_mdl.mcl_handle;
+ p_mcb->delete_mdl.mdl_id = p_data->api_delete_mdl.mdl_id;
+ p_mcb->delete_mdl.delete_req_pending = true;
-
- p_mcb->delete_mdl.mcl_handle = p_data->api_delete_mdl.mcl_handle;
- p_mcb->delete_mdl.mdl_id = p_data->api_delete_mdl.mdl_id;
- p_mcb->delete_mdl.delete_req_pending = true;
-
- if (MCA_Delete((tMCA_CL) p_mcb->mcl_handle,
- p_data->api_delete_mdl.mdl_id)!= MCA_SUCCESS)
- {
- status = BTA_HL_STATUS_FAIL;
- memset(&p_mcb->delete_mdl, 0, sizeof(tBTA_HL_DELETE_MDL));
- }
- }
- else
- {
- status = BTA_HL_STATUS_NO_MDL_ID_FOUND;
- }
+ if (MCA_Delete((tMCA_CL)p_mcb->mcl_handle,
+ p_data->api_delete_mdl.mdl_id) != MCA_SUCCESS) {
+ status = BTA_HL_STATUS_FAIL;
+ memset(&p_mcb->delete_mdl, 0, sizeof(tBTA_HL_DELETE_MDL));
}
- else
- {
- status = BTA_HL_STATUS_INVALID_MDL_ID;
- }
+ } else {
+ status = BTA_HL_STATUS_NO_MDL_ID_FOUND;
+ }
+ } else {
+ status = BTA_HL_STATUS_INVALID_MDL_ID;
}
- else
- {
- status = BTA_HL_STATUS_INVALID_MCL_HANDLE;
- }
+ } else {
+ status = BTA_HL_STATUS_INVALID_MCL_HANDLE;
+ }
#if (BTA_HL_DEBUG == TRUE)
- if (status != BTA_HL_STATUS_OK)
- {
- APPL_TRACE_DEBUG("bta_hl_api_delete_mdl status=%s", bta_hl_status_code(status));
- }
+ if (status != BTA_HL_STATUS_OK) {
+ APPL_TRACE_DEBUG("bta_hl_api_delete_mdl status=%s",
+ bta_hl_status_code(status));
+ }
#endif
- switch (status)
- {
- case BTA_HL_STATUS_OK:
- break;
- case BTA_HL_STATUS_FAIL:
- case BTA_HL_STATUS_NO_MDL_ID_FOUND:
- case BTA_HL_STATUS_INVALID_MDL_ID:
- p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
- if (p_acb->p_cback)
- {
- bta_hl_build_delete_mdl_cfm(&evt_data,
- p_acb->app_handle,
- p_data->api_delete_mdl.mcl_handle,
- p_data->api_delete_mdl.mdl_id,
- status);
- p_acb->p_cback(BTA_HL_DELETE_MDL_CFM_EVT,(tBTA_HL *) &evt_data );
- }
- else
- {
- APPL_TRACE_ERROR("bta_hl_api_delete_mdl Null Callback");
- }
- break;
- default:
- APPL_TRACE_ERROR("status code =%d", status);
- break;
- }
+ switch (status) {
+ case BTA_HL_STATUS_OK:
+ break;
+ case BTA_HL_STATUS_FAIL:
+ case BTA_HL_STATUS_NO_MDL_ID_FOUND:
+ case BTA_HL_STATUS_INVALID_MDL_ID:
+ p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
+ if (p_acb->p_cback) {
+ bta_hl_build_delete_mdl_cfm(&evt_data, p_acb->app_handle,
+ p_data->api_delete_mdl.mcl_handle,
+ p_data->api_delete_mdl.mdl_id, status);
+ p_acb->p_cback(BTA_HL_DELETE_MDL_CFM_EVT, (tBTA_HL*)&evt_data);
+ } else {
+ APPL_TRACE_ERROR("bta_hl_api_delete_mdl Null Callback");
+ }
+ break;
+ default:
+ APPL_TRACE_ERROR("status code =%d", status);
+ break;
+ }
}
/*******************************************************************************
@@ -1692,74 +1521,56 @@
* Returns void
*
******************************************************************************/
-static void bta_hl_mca_delete_mdl_cfm(UNUSED_ATTR tBTA_HL_CB *p_cb, tBTA_HL_DATA *p_data)
-{
- tBTA_HL evt_data;
- tBTA_HL_STATUS status = BTA_HL_STATUS_OK;
- uint8_t app_idx, mcl_idx;
- tMCA_RSP_EVT *p_delete_cfm = &p_data->mca_evt.mca_data.delete_cfm;
- tBTA_HL_MCL_CB *p_mcb;
- bool send_cfm_evt = true;
- tBTA_HL_APP_CB *p_acb;
+static void bta_hl_mca_delete_mdl_cfm(UNUSED_ATTR tBTA_HL_CB* p_cb,
+ tBTA_HL_DATA* p_data) {
+ tBTA_HL evt_data;
+ tBTA_HL_STATUS status = BTA_HL_STATUS_OK;
+ uint8_t app_idx, mcl_idx;
+ tMCA_RSP_EVT* p_delete_cfm = &p_data->mca_evt.mca_data.delete_cfm;
+ tBTA_HL_MCL_CB* p_mcb;
+ bool send_cfm_evt = true;
+ tBTA_HL_APP_CB* p_acb;
- if (bta_hl_find_mcl_idx_using_handle(p_data->mca_evt.mcl_handle, &app_idx, &mcl_idx))
- {
- p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
- if ( p_mcb->delete_mdl.delete_req_pending)
- {
- if (p_delete_cfm->rsp_code == MCA_RSP_SUCCESS )
- {
-
- if (!bta_hl_delete_mdl_cfg(app_idx,
- p_mcb->bd_addr ,
- p_delete_cfm->mdl_id))
- {
- status = BTA_HL_STATUS_FAIL;
- }
- }
- else
- {
- status = BTA_HL_STATUS_FAIL;
- }
-
- memset(&p_mcb->delete_mdl, 0, sizeof(tBTA_HL_DELETE_MDL));
+ if (bta_hl_find_mcl_idx_using_handle(p_data->mca_evt.mcl_handle, &app_idx,
+ &mcl_idx)) {
+ p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
+ if (p_mcb->delete_mdl.delete_req_pending) {
+ if (p_delete_cfm->rsp_code == MCA_RSP_SUCCESS) {
+ if (!bta_hl_delete_mdl_cfg(app_idx, p_mcb->bd_addr,
+ p_delete_cfm->mdl_id)) {
+ status = BTA_HL_STATUS_FAIL;
}
- else
- {
- send_cfm_evt = false;
- }
+ } else {
+ status = BTA_HL_STATUS_FAIL;
+ }
+
+ memset(&p_mcb->delete_mdl, 0, sizeof(tBTA_HL_DELETE_MDL));
+ } else {
+ send_cfm_evt = false;
}
- else
- {
- send_cfm_evt = false;
- }
+ } else {
+ send_cfm_evt = false;
+ }
#if (BTA_HL_DEBUG == TRUE)
- if (status != BTA_HL_STATUS_OK)
- {
- APPL_TRACE_DEBUG("bta_hl_api_delete_mdl status=%s", bta_hl_status_code(status));
- }
+ if (status != BTA_HL_STATUS_OK) {
+ APPL_TRACE_DEBUG("bta_hl_api_delete_mdl status=%s",
+ bta_hl_status_code(status));
+ }
#endif
- if (send_cfm_evt)
- {
- p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
- if (p_acb->p_cback)
- {
- bta_hl_build_delete_mdl_cfm(&evt_data,
- p_acb->app_handle,
- p_mcb->mcl_handle,
- p_delete_cfm->mdl_id,
- status);
+ if (send_cfm_evt) {
+ p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
+ if (p_acb->p_cback) {
+ bta_hl_build_delete_mdl_cfm(&evt_data, p_acb->app_handle,
+ p_mcb->mcl_handle, p_delete_cfm->mdl_id,
+ status);
- p_acb->p_cback(BTA_HL_DELETE_MDL_CFM_EVT,(tBTA_HL *) &evt_data );
- }
- else
- {
- APPL_TRACE_ERROR("bta_hl_mca_delete_mdl_cfm Null Callback");
-
- }
+ p_acb->p_cback(BTA_HL_DELETE_MDL_CFM_EVT, (tBTA_HL*)&evt_data);
+ } else {
+ APPL_TRACE_ERROR("bta_hl_mca_delete_mdl_cfm Null Callback");
}
+ }
}
/*******************************************************************************
@@ -1771,59 +1582,49 @@
* Returns void
*
******************************************************************************/
-static void bta_hl_mca_delete_mdl_ind(UNUSED_ATTR tBTA_HL_CB *p_cb, tBTA_HL_DATA *p_data)
-{
- tBTA_HL evt_data;
- uint8_t app_idx, mcl_idx, mdl_idx;
- tMCA_EVT_HDR *p_delete_ind = &p_data->mca_evt.mca_data.delete_ind;
- tBTA_HL_MCL_CB *p_mcb;
- tBTA_HL_MDL_CB *p_dcb;
- bool send_ind_evt = false;
- tBTA_HL_APP_CB *p_acb;
+static void bta_hl_mca_delete_mdl_ind(UNUSED_ATTR tBTA_HL_CB* p_cb,
+ tBTA_HL_DATA* p_data) {
+ tBTA_HL evt_data;
+ uint8_t app_idx, mcl_idx, mdl_idx;
+ tMCA_EVT_HDR* p_delete_ind = &p_data->mca_evt.mca_data.delete_ind;
+ tBTA_HL_MCL_CB* p_mcb;
+ tBTA_HL_MDL_CB* p_dcb;
+ bool send_ind_evt = false;
+ tBTA_HL_APP_CB* p_acb;
- if (bta_hl_find_mcl_idx_using_handle(p_data->mca_evt.mcl_handle, &app_idx, &mcl_idx) )
- {
- p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
+ if (bta_hl_find_mcl_idx_using_handle(p_data->mca_evt.mcl_handle, &app_idx,
+ &mcl_idx)) {
+ p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
- if (bta_hl_find_mdl_idx(app_idx, mcl_idx, p_delete_ind->mdl_id, &mdl_idx ))
- {
- p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
- p_dcb->dch_oper = BTA_HL_DCH_OP_REMOTE_DELETE;
- }
- if (bta_hl_delete_mdl_cfg(app_idx,
- p_mcb->bd_addr ,
- p_delete_ind->mdl_id))
- {
- send_ind_evt = true;
- }
+ if (bta_hl_find_mdl_idx(app_idx, mcl_idx, p_delete_ind->mdl_id, &mdl_idx)) {
+ p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
+ p_dcb->dch_oper = BTA_HL_DCH_OP_REMOTE_DELETE;
}
+ if (bta_hl_delete_mdl_cfg(app_idx, p_mcb->bd_addr, p_delete_ind->mdl_id)) {
+ send_ind_evt = true;
+ }
+ }
#if (BTA_HL_DEBUG == TRUE)
- if (!send_ind_evt)
- {
- APPL_TRACE_DEBUG("bta_hl_mca_delete_mdl_ind is_send_ind_evt =%d", send_ind_evt);
- }
+ if (!send_ind_evt) {
+ APPL_TRACE_DEBUG("bta_hl_mca_delete_mdl_ind is_send_ind_evt =%d",
+ send_ind_evt);
+ }
#endif
- if (send_ind_evt)
- {
- p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
- if (p_acb->p_cback)
- {
- evt_data.delete_mdl_ind.mcl_handle = p_mcb->mcl_handle;
- evt_data.delete_mdl_ind.app_handle = p_acb->app_handle;
- evt_data.delete_mdl_ind.mdl_id = p_delete_ind->mdl_id;
- p_acb->p_cback(BTA_HL_DELETE_MDL_IND_EVT,(tBTA_HL *) &evt_data );
- }
- else
- {
- APPL_TRACE_ERROR("bta_hl_mca_delete_mdl_ind Null Callback");
- }
+ if (send_ind_evt) {
+ p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
+ if (p_acb->p_cback) {
+ evt_data.delete_mdl_ind.mcl_handle = p_mcb->mcl_handle;
+ evt_data.delete_mdl_ind.app_handle = p_acb->app_handle;
+ evt_data.delete_mdl_ind.mdl_id = p_delete_ind->mdl_id;
+ p_acb->p_cback(BTA_HL_DELETE_MDL_IND_EVT, (tBTA_HL*)&evt_data);
+ } else {
+ APPL_TRACE_ERROR("bta_hl_mca_delete_mdl_ind Null Callback");
}
+ }
}
-
-
/*******************************************************************************
*
* Function bta_hl_api_dch_abort
@@ -1833,79 +1634,63 @@
* Returns void
*
******************************************************************************/
-static void bta_hl_api_dch_abort(UNUSED_ATTR tBTA_HL_CB *p_cb, tBTA_HL_DATA *p_data)
-{
- tBTA_HL_STATUS status = BTA_HL_STATUS_OK;
- uint8_t app_idx, mcl_idx, mdl_idx;
- tBTA_HL_APP_CB *p_acb;
- tBTA_HL_MCL_CB *p_mcb;
- tBTA_HL_MDL_CB *p_dcb;
- tBTA_HL evt_data;
+static void bta_hl_api_dch_abort(UNUSED_ATTR tBTA_HL_CB* p_cb,
+ tBTA_HL_DATA* p_data) {
+ tBTA_HL_STATUS status = BTA_HL_STATUS_OK;
+ uint8_t app_idx, mcl_idx, mdl_idx;
+ tBTA_HL_APP_CB* p_acb;
+ tBTA_HL_MCL_CB* p_mcb;
+ tBTA_HL_MDL_CB* p_dcb;
+ tBTA_HL evt_data;
- if (bta_hl_find_mcl_idx_using_handle(p_data->api_dch_abort.mcl_handle, &app_idx, &mcl_idx ))
- {
-
- if (!bta_hl_find_dch_setup_mdl_idx(app_idx, mcl_idx, &mdl_idx ))
- {
- status = BTA_HL_STATUS_NO_MDL_ID_FOUND;
- }
- else
- {
- p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
- if (p_dcb->abort_oper)
- {
- /* abort already in progress*/
- status = BTA_HL_STATUS_FAIL;
- }
- else
- {
- p_dcb->abort_oper = BTA_HL_ABORT_LOCAL_MASK;
- }
- }
+ if (bta_hl_find_mcl_idx_using_handle(p_data->api_dch_abort.mcl_handle,
+ &app_idx, &mcl_idx)) {
+ if (!bta_hl_find_dch_setup_mdl_idx(app_idx, mcl_idx, &mdl_idx)) {
+ status = BTA_HL_STATUS_NO_MDL_ID_FOUND;
+ } else {
+ p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
+ if (p_dcb->abort_oper) {
+ /* abort already in progress*/
+ status = BTA_HL_STATUS_FAIL;
+ } else {
+ p_dcb->abort_oper = BTA_HL_ABORT_LOCAL_MASK;
+ }
}
- else
- {
- status = BTA_HL_STATUS_INVALID_MCL_HANDLE;
- }
-
+ } else {
+ status = BTA_HL_STATUS_INVALID_MCL_HANDLE;
+ }
#if (BTA_HL_DEBUG == TRUE)
- if (status != BTA_HL_STATUS_OK)
- {
- APPL_TRACE_DEBUG("bta_hl_api_dch_abort status=%s", bta_hl_status_code(status));
- }
+ if (status != BTA_HL_STATUS_OK) {
+ APPL_TRACE_DEBUG("bta_hl_api_dch_abort status=%s",
+ bta_hl_status_code(status));
+ }
#endif
- switch (status)
- {
- case BTA_HL_STATUS_OK:
+ switch (status) {
+ case BTA_HL_STATUS_OK:
- bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_ABORT_EVT, p_data);
- break;
- case BTA_HL_STATUS_NO_MDL_ID_FOUND:
- case BTA_HL_STATUS_FAIL:
+ bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_ABORT_EVT,
+ p_data);
+ break;
+ case BTA_HL_STATUS_NO_MDL_ID_FOUND:
+ case BTA_HL_STATUS_FAIL:
- p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
- if (p_acb->p_cback)
- {
- p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
- bta_hl_build_abort_cfm(&evt_data,
+ p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
+ if (p_acb->p_cback) {
+ p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
+ bta_hl_build_abort_cfm(&evt_data,
-
-
- p_acb->app_handle,
- p_mcb->mcl_handle,
- BTA_HL_STATUS_FAIL);
- p_acb->p_cback(BTA_HL_DCH_ABORT_CFM_EVT,(tBTA_HL *) &evt_data);
- }
- else
- {
- APPL_TRACE_ERROR("bta_hl_api_dch_abort Null Callback");
- }
- break;
- default:
- APPL_TRACE_ERROR("Status code=%d", status);
- break;
- }
+ p_acb->app_handle, p_mcb->mcl_handle,
+ BTA_HL_STATUS_FAIL);
+ p_acb->p_cback(BTA_HL_DCH_ABORT_CFM_EVT, (tBTA_HL*)&evt_data);
+ } else {
+ APPL_TRACE_ERROR("bta_hl_api_dch_abort Null Callback");
+ }
+ break;
+ default:
+ APPL_TRACE_ERROR("Status code=%d", status);
+ break;
+ }
}
/*******************************************************************************
@@ -1917,126 +1702,117 @@
* Returns void
*
******************************************************************************/
-bool bta_hl_hdl_event(BT_HDR *p_msg)
-{
- uint8_t app_idx, mcl_idx, mdl_idx;
- bool success = true;
+bool bta_hl_hdl_event(BT_HDR* p_msg) {
+ uint8_t app_idx, mcl_idx, mdl_idx;
+ bool success = true;
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("BTA HL Event Handler: Event [%s]",
- bta_hl_evt_code(p_msg->event));
+ APPL_TRACE_DEBUG("BTA HL Event Handler: Event [%s]",
+ bta_hl_evt_code(p_msg->event));
#endif
- switch (p_msg->event)
- {
- case BTA_HL_API_ENABLE_EVT:
- bta_hl_api_enable(&bta_hl_cb, (tBTA_HL_DATA *) p_msg);
- break;
- case BTA_HL_API_DISABLE_EVT:
- bta_hl_api_disable(&bta_hl_cb, (tBTA_HL_DATA *) p_msg);
- break;
- case BTA_HL_API_UPDATE_EVT:
- bta_hl_api_update(&bta_hl_cb, (tBTA_HL_DATA *) p_msg);
- break;
- case BTA_HL_API_REGISTER_EVT:
- bta_hl_api_register(&bta_hl_cb, (tBTA_HL_DATA *) p_msg);
- break;
- case BTA_HL_API_DEREGISTER_EVT:
- bta_hl_api_deregister(&bta_hl_cb, (tBTA_HL_DATA *) p_msg);
- break;
- case BTA_HL_API_CCH_OPEN_EVT:
- bta_hl_api_cch_open(&bta_hl_cb, (tBTA_HL_DATA *) p_msg);
- break;
- case BTA_HL_API_CCH_CLOSE_EVT:
- bta_hl_api_cch_close(&bta_hl_cb, (tBTA_HL_DATA *) p_msg);
- break;
- case BTA_HL_API_DCH_OPEN_EVT:
- bta_hl_api_dch_open(&bta_hl_cb, (tBTA_HL_DATA *) p_msg);
- break;
- case BTA_HL_API_DCH_CLOSE_EVT:
- bta_hl_api_dch_close(&bta_hl_cb, (tBTA_HL_DATA *) p_msg);
- break;
- case BTA_HL_API_DELETE_MDL_EVT:
- bta_hl_api_delete_mdl(&bta_hl_cb, (tBTA_HL_DATA *) p_msg);
- break;
- case BTA_HL_API_DCH_RECONNECT_EVT:
- bta_hl_api_dch_reconnect(&bta_hl_cb, (tBTA_HL_DATA *) p_msg);
- break;
+ switch (p_msg->event) {
+ case BTA_HL_API_ENABLE_EVT:
+ bta_hl_api_enable(&bta_hl_cb, (tBTA_HL_DATA*)p_msg);
+ break;
+ case BTA_HL_API_DISABLE_EVT:
+ bta_hl_api_disable(&bta_hl_cb, (tBTA_HL_DATA*)p_msg);
+ break;
+ case BTA_HL_API_UPDATE_EVT:
+ bta_hl_api_update(&bta_hl_cb, (tBTA_HL_DATA*)p_msg);
+ break;
+ case BTA_HL_API_REGISTER_EVT:
+ bta_hl_api_register(&bta_hl_cb, (tBTA_HL_DATA*)p_msg);
+ break;
+ case BTA_HL_API_DEREGISTER_EVT:
+ bta_hl_api_deregister(&bta_hl_cb, (tBTA_HL_DATA*)p_msg);
+ break;
+ case BTA_HL_API_CCH_OPEN_EVT:
+ bta_hl_api_cch_open(&bta_hl_cb, (tBTA_HL_DATA*)p_msg);
+ break;
+ case BTA_HL_API_CCH_CLOSE_EVT:
+ bta_hl_api_cch_close(&bta_hl_cb, (tBTA_HL_DATA*)p_msg);
+ break;
+ case BTA_HL_API_DCH_OPEN_EVT:
+ bta_hl_api_dch_open(&bta_hl_cb, (tBTA_HL_DATA*)p_msg);
+ break;
+ case BTA_HL_API_DCH_CLOSE_EVT:
+ bta_hl_api_dch_close(&bta_hl_cb, (tBTA_HL_DATA*)p_msg);
+ break;
+ case BTA_HL_API_DELETE_MDL_EVT:
+ bta_hl_api_delete_mdl(&bta_hl_cb, (tBTA_HL_DATA*)p_msg);
+ break;
+ case BTA_HL_API_DCH_RECONNECT_EVT:
+ bta_hl_api_dch_reconnect(&bta_hl_cb, (tBTA_HL_DATA*)p_msg);
+ break;
- case BTA_HL_API_DCH_ECHO_TEST_EVT:
- bta_hl_api_dch_echo_test(&bta_hl_cb, (tBTA_HL_DATA *) p_msg);
- break;
+ case BTA_HL_API_DCH_ECHO_TEST_EVT:
+ bta_hl_api_dch_echo_test(&bta_hl_cb, (tBTA_HL_DATA*)p_msg);
+ break;
- case BTA_HL_API_SDP_QUERY_EVT:
- bta_hl_api_sdp_query(&bta_hl_cb, (tBTA_HL_DATA *) p_msg);
- break;
+ case BTA_HL_API_SDP_QUERY_EVT:
+ bta_hl_api_sdp_query(&bta_hl_cb, (tBTA_HL_DATA*)p_msg);
+ break;
- case BTA_HL_MCA_DELETE_CFM_EVT:
- bta_hl_mca_delete_mdl_cfm(&bta_hl_cb, (tBTA_HL_DATA *) p_msg);
- break;
+ case BTA_HL_MCA_DELETE_CFM_EVT:
+ bta_hl_mca_delete_mdl_cfm(&bta_hl_cb, (tBTA_HL_DATA*)p_msg);
+ break;
- case BTA_HL_MCA_DELETE_IND_EVT:
- bta_hl_mca_delete_mdl_ind(&bta_hl_cb, (tBTA_HL_DATA *) p_msg);
- break;
+ case BTA_HL_MCA_DELETE_IND_EVT:
+ bta_hl_mca_delete_mdl_ind(&bta_hl_cb, (tBTA_HL_DATA*)p_msg);
+ break;
- case BTA_HL_SDP_QUERY_OK_EVT:
- case BTA_HL_SDP_QUERY_FAIL_EVT:
- bta_hl_sdp_query_results(&bta_hl_cb, (tBTA_HL_DATA *) p_msg);
- break;
- case BTA_HL_API_DCH_ABORT_EVT:
- bta_hl_api_dch_abort(&bta_hl_cb, (tBTA_HL_DATA *) p_msg);
- break;
+ case BTA_HL_SDP_QUERY_OK_EVT:
+ case BTA_HL_SDP_QUERY_FAIL_EVT:
+ bta_hl_sdp_query_results(&bta_hl_cb, (tBTA_HL_DATA*)p_msg);
+ break;
+ case BTA_HL_API_DCH_ABORT_EVT:
+ bta_hl_api_dch_abort(&bta_hl_cb, (tBTA_HL_DATA*)p_msg);
+ break;
-
- default:
- if (p_msg->event < BTA_HL_DCH_EVT_MIN)
- {
- if (bta_hl_find_cch_cb_indexes((tBTA_HL_DATA *) p_msg, &app_idx, &mcl_idx))
- {
- bta_hl_cch_sm_execute( app_idx,
- mcl_idx,
- p_msg->event, (tBTA_HL_DATA *) p_msg);
- }
- else
- {
+ default:
+ if (p_msg->event < BTA_HL_DCH_EVT_MIN) {
+ if (bta_hl_find_cch_cb_indexes((tBTA_HL_DATA*)p_msg, &app_idx,
+ &mcl_idx)) {
+ bta_hl_cch_sm_execute(app_idx, mcl_idx, p_msg->event,
+ (tBTA_HL_DATA*)p_msg);
+ } else {
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_ERROR("unable to find control block indexes for CCH: [event=%s]",
- bta_hl_evt_code(p_msg->event));
+ APPL_TRACE_ERROR(
+ "unable to find control block indexes for CCH: [event=%s]",
+ bta_hl_evt_code(p_msg->event));
#else
- APPL_TRACE_ERROR("unable to find control block indexes for CCH: [event=%d]", p_msg->event);
+ APPL_TRACE_ERROR(
+ "unable to find control block indexes for CCH: [event=%d]",
+ p_msg->event);
#endif
- success = false;
- }
- }
- else
- {
- if (bta_hl_find_dch_cb_indexes((tBTA_HL_DATA *) p_msg, &app_idx, &mcl_idx, &mdl_idx))
- {
- bta_hl_dch_sm_execute( app_idx,
- mcl_idx,
- mdl_idx,
- p_msg->event, (tBTA_HL_DATA *) p_msg);
- }
- else
- {
-
+ success = false;
+ }
+ } else {
+ if (bta_hl_find_dch_cb_indexes((tBTA_HL_DATA*)p_msg, &app_idx, &mcl_idx,
+ &mdl_idx)) {
+ bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, p_msg->event,
+ (tBTA_HL_DATA*)p_msg);
+ } else {
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_ERROR("unable to find control block indexes for DCH : [event=%s]",
- bta_hl_evt_code(p_msg->event));
+ APPL_TRACE_ERROR(
+ "unable to find control block indexes for DCH : [event=%s]",
+ bta_hl_evt_code(p_msg->event));
#else
- APPL_TRACE_ERROR("unable to find control block indexes for DCH: [event=%d]", p_msg->event);
+ APPL_TRACE_ERROR(
+ "unable to find control block indexes for DCH: [event=%d]",
+ p_msg->event);
#endif
- success = false;
- }
- }
+ success = false;
+ }
+ }
- break;
- }
+ break;
+ }
- return(success);
+ return (success);
}
-
/*****************************************************************************
* Debug Functions
****************************************************************************/
@@ -2051,21 +1827,19 @@
* Returns string pointer for the associated state name
*
******************************************************************************/
-static const char *bta_hl_cch_state_code(tBTA_HL_CCH_STATE state_code)
-{
- switch (state_code)
- {
- case BTA_HL_CCH_IDLE_ST:
- return "BTA_HL_CCH_IDLE_ST";
- case BTA_HL_CCH_OPENING_ST:
- return "BTA_HL_CCH_OPENING_ST";
- case BTA_HL_CCH_OPEN_ST:
- return "BTA_HL_CCH_OPEN_ST";
- case BTA_HL_CCH_CLOSING_ST:
- return "BTA_HL_CCH_CLOSING_ST";
- default:
- return "Unknown CCH state code";
- }
+static const char* bta_hl_cch_state_code(tBTA_HL_CCH_STATE state_code) {
+ switch (state_code) {
+ case BTA_HL_CCH_IDLE_ST:
+ return "BTA_HL_CCH_IDLE_ST";
+ case BTA_HL_CCH_OPENING_ST:
+ return "BTA_HL_CCH_OPENING_ST";
+ case BTA_HL_CCH_OPEN_ST:
+ return "BTA_HL_CCH_OPEN_ST";
+ case BTA_HL_CCH_CLOSING_ST:
+ return "BTA_HL_CCH_CLOSING_ST";
+ default:
+ return "Unknown CCH state code";
+ }
}
/*******************************************************************************
@@ -2077,21 +1851,19 @@
* Returns string pointer for the associated state name
*
******************************************************************************/
-static const char *bta_hl_dch_state_code(tBTA_HL_DCH_STATE state_code)
-{
- switch (state_code)
- {
- case BTA_HL_DCH_IDLE_ST:
- return "BTA_HL_DCH_IDLE_ST";
- case BTA_HL_DCH_OPENING_ST:
- return "BTA_HL_DCH_OPENING_ST";
- case BTA_HL_DCH_OPEN_ST:
- return "BTA_HL_DCH_OPEN_ST";
- case BTA_HL_DCH_CLOSING_ST:
- return "BTA_HL_DCH_CLOSING_ST";
- default:
- return "Unknown DCH state code";
- }
+static const char* bta_hl_dch_state_code(tBTA_HL_DCH_STATE state_code) {
+ switch (state_code) {
+ case BTA_HL_DCH_IDLE_ST:
+ return "BTA_HL_DCH_IDLE_ST";
+ case BTA_HL_DCH_OPENING_ST:
+ return "BTA_HL_DCH_OPENING_ST";
+ case BTA_HL_DCH_OPEN_ST:
+ return "BTA_HL_DCH_OPEN_ST";
+ case BTA_HL_DCH_CLOSING_ST:
+ return "BTA_HL_DCH_CLOSING_ST";
+ default:
+ return "Unknown DCH state code";
+ }
}
-#endif /* Debug Functions */
+#endif /* Debug Functions */
#endif /* HL_INCLUDED */
diff --git a/bta/hl/bta_hl_sdp.cc b/bta/hl/bta_hl_sdp.cc
index 8b3951f..94c9136 100644
--- a/bta/hl/bta_hl_sdp.cc
+++ b/bta/hl/bta_hl_sdp.cc
@@ -21,9 +21,9 @@
#include "bt_target.h"
#if (HL_INCLUDED == TRUE)
-#include "sdp_api.h"
#include "bta_hl_int.h"
#include "osi/include/osi.h"
+#include "sdp_api.h"
#include "utl.h"
/*******************************************************************************
@@ -36,51 +36,50 @@
* If found, the passed protocol list element is filled in.
*
******************************************************************************/
-bool bta_hl_fill_sup_feature_list( const tSDP_DISC_ATTR *p_attr,
- tBTA_HL_SUP_FEATURE_LIST_ELEM *p_list)
-{
- tSDP_DISC_ATTR *p_sattr;
- uint8_t item_cnt;
- uint8_t list_cnt=0;
- bool status=true;
+bool bta_hl_fill_sup_feature_list(const tSDP_DISC_ATTR* p_attr,
+ tBTA_HL_SUP_FEATURE_LIST_ELEM* p_list) {
+ tSDP_DISC_ATTR* p_sattr;
+ uint8_t item_cnt;
+ uint8_t list_cnt = 0;
+ bool status = true;
- for (p_attr = p_attr->attr_value.v.p_sub_attr; p_attr; p_attr = p_attr->p_next_attr)
- {
- /* mdep sequence */
- if (SDP_DISC_ATTR_TYPE(p_attr->attr_len_type) != DATA_ELE_SEQ_DESC_TYPE)
- {
- return(false);
- }
-
- item_cnt=0;
-
- for (p_sattr = p_attr->attr_value.v.p_sub_attr; p_sattr && (item_cnt < 4) ; p_sattr = p_sattr->p_next_attr)
- {
- /* for each mdep list */
-
- p_list->list_elem[list_cnt].p_mdep_desp = NULL;
- switch (item_cnt)
- {
- case 0:
- p_list->list_elem[list_cnt].mdep_id = p_sattr->attr_value.v.u8;
- break;
- case 1:
- p_list->list_elem[list_cnt].data_type = p_sattr->attr_value.v.u16;
- break;
- case 2:
- p_list->list_elem[list_cnt].mdep_role = (tBTA_HL_MDEP_ROLE) p_sattr->attr_value.v.u8;
- break;
- case 3:
- p_list->list_elem[list_cnt].p_mdep_desp = (char *) p_sattr->attr_value.v.array;
- break;
- }
-
- item_cnt++;
- }
- list_cnt++;
+ for (p_attr = p_attr->attr_value.v.p_sub_attr; p_attr;
+ p_attr = p_attr->p_next_attr) {
+ /* mdep sequence */
+ if (SDP_DISC_ATTR_TYPE(p_attr->attr_len_type) != DATA_ELE_SEQ_DESC_TYPE) {
+ return (false);
}
- p_list->num_elems = list_cnt;
- return(status);
+
+ item_cnt = 0;
+
+ for (p_sattr = p_attr->attr_value.v.p_sub_attr; p_sattr && (item_cnt < 4);
+ p_sattr = p_sattr->p_next_attr) {
+ /* for each mdep list */
+
+ p_list->list_elem[list_cnt].p_mdep_desp = NULL;
+ switch (item_cnt) {
+ case 0:
+ p_list->list_elem[list_cnt].mdep_id = p_sattr->attr_value.v.u8;
+ break;
+ case 1:
+ p_list->list_elem[list_cnt].data_type = p_sattr->attr_value.v.u16;
+ break;
+ case 2:
+ p_list->list_elem[list_cnt].mdep_role =
+ (tBTA_HL_MDEP_ROLE)p_sattr->attr_value.v.u8;
+ break;
+ case 3:
+ p_list->list_elem[list_cnt].p_mdep_desp =
+ (char*)p_sattr->attr_value.v.array;
+ break;
+ }
+
+ item_cnt++;
+ }
+ list_cnt++;
+ }
+ p_list->num_elems = list_cnt;
+ return (status);
}
/*******************************************************************************
@@ -93,41 +92,38 @@
* Returns the length of the data sequence
*
******************************************************************************/
-int bta_hl_compose_supported_feature_list( uint8_t *p, uint16_t num_elem,
- const tBTA_HL_SUP_FEATURE_ELEM *p_elem_list)
-{
- uint16_t xx, str_len, seq_len;
- uint8_t *p_head = p;
+int bta_hl_compose_supported_feature_list(
+ uint8_t* p, uint16_t num_elem,
+ const tBTA_HL_SUP_FEATURE_ELEM* p_elem_list) {
+ uint16_t xx, str_len, seq_len;
+ uint8_t* p_head = p;
- for (xx = 0; xx < num_elem; xx++, p_elem_list++)
- {
- UINT8_TO_BE_STREAM (p, (DATA_ELE_SEQ_DESC_TYPE << 3) | SIZE_IN_NEXT_BYTE);
- seq_len=7;
- str_len=0;
- if (p_elem_list->p_mdep_desp)
- {
- str_len = strlen(p_elem_list->p_mdep_desp)+1;
- seq_len += str_len+2; /* todo add a # symbol for 2 */
- }
-
- *p++ = (uint8_t) seq_len;
-
- UINT8_TO_BE_STREAM (p, (UINT_DESC_TYPE << 3) | SIZE_ONE_BYTE);
- UINT8_TO_BE_STREAM (p, p_elem_list->mdep_id);
- UINT8_TO_BE_STREAM (p, (UINT_DESC_TYPE << 3) | SIZE_TWO_BYTES);
- UINT16_TO_BE_STREAM (p, p_elem_list->data_type);
- UINT8_TO_BE_STREAM (p, (UINT_DESC_TYPE << 3) | SIZE_ONE_BYTE);
- UINT8_TO_BE_STREAM (p, p_elem_list->mdep_role);
-
- if (str_len)
- {
- UINT8_TO_BE_STREAM (p, (TEXT_STR_DESC_TYPE << 3) | SIZE_IN_NEXT_BYTE);
- UINT8_TO_BE_STREAM (p, str_len);
- ARRAY_TO_BE_STREAM(p, p_elem_list->p_mdep_desp, str_len);
- }
+ for (xx = 0; xx < num_elem; xx++, p_elem_list++) {
+ UINT8_TO_BE_STREAM(p, (DATA_ELE_SEQ_DESC_TYPE << 3) | SIZE_IN_NEXT_BYTE);
+ seq_len = 7;
+ str_len = 0;
+ if (p_elem_list->p_mdep_desp) {
+ str_len = strlen(p_elem_list->p_mdep_desp) + 1;
+ seq_len += str_len + 2; /* todo add a # symbol for 2 */
}
- return(p - p_head);
+ *p++ = (uint8_t)seq_len;
+
+ UINT8_TO_BE_STREAM(p, (UINT_DESC_TYPE << 3) | SIZE_ONE_BYTE);
+ UINT8_TO_BE_STREAM(p, p_elem_list->mdep_id);
+ UINT8_TO_BE_STREAM(p, (UINT_DESC_TYPE << 3) | SIZE_TWO_BYTES);
+ UINT16_TO_BE_STREAM(p, p_elem_list->data_type);
+ UINT8_TO_BE_STREAM(p, (UINT_DESC_TYPE << 3) | SIZE_ONE_BYTE);
+ UINT8_TO_BE_STREAM(p, p_elem_list->mdep_role);
+
+ if (str_len) {
+ UINT8_TO_BE_STREAM(p, (TEXT_STR_DESC_TYPE << 3) | SIZE_IN_NEXT_BYTE);
+ UINT8_TO_BE_STREAM(p, str_len);
+ ARRAY_TO_BE_STREAM(p, p_elem_list->p_mdep_desp, str_len);
+ }
+ }
+
+ return (p - p_head);
}
/*******************************************************************************
@@ -135,27 +131,27 @@
* Function bta_hl_add_sup_feature_list
*
* Description This function is called to add a protocol descriptor list to
- * a record. This would be through the SDP database maintenance API.
- * If the protocol list already exists in the record, it is replaced
+ * a record. This would be through the SDP database maintenance
+ *API.
+ * If the protocol list already exists in the record, it is
+ *replaced
* with the new list.
*
* Returns true if added OK, else false
*
******************************************************************************/
-bool bta_hl_add_sup_feature_list (uint32_t handle, uint16_t num_elem,
- const tBTA_HL_SUP_FEATURE_ELEM *p_elem_list)
-{
- int offset;
- bool result;
- uint8_t *p_buf = (uint8_t *)osi_malloc(BTA_HL_SUP_FEATURE_SDP_BUF_SIZE);
+bool bta_hl_add_sup_feature_list(uint32_t handle, uint16_t num_elem,
+ const tBTA_HL_SUP_FEATURE_ELEM* p_elem_list) {
+ int offset;
+ bool result;
+ uint8_t* p_buf = (uint8_t*)osi_malloc(BTA_HL_SUP_FEATURE_SDP_BUF_SIZE);
- offset = bta_hl_compose_supported_feature_list(p_buf, num_elem,
- p_elem_list);
- result = SDP_AddAttribute(handle, ATTR_ID_HDP_SUP_FEAT_LIST,
- DATA_ELE_SEQ_DESC_TYPE, (uint32_t) offset, p_buf);
- osi_free(p_buf);
+ offset = bta_hl_compose_supported_feature_list(p_buf, num_elem, p_elem_list);
+ result = SDP_AddAttribute(handle, ATTR_ID_HDP_SUP_FEAT_LIST,
+ DATA_ELE_SEQ_DESC_TYPE, (uint32_t)offset, p_buf);
+ osi_free(p_buf);
- return result;
+ return result;
}
/*****************************************************************************
@@ -169,193 +165,172 @@
* Returns: void
*
****************************************************************************/
-tBTA_HL_STATUS bta_hl_sdp_update (UNUSED_ATTR uint8_t app_id)
-{
- uint16_t svc_class_id_list[BTA_HL_NUM_SVC_ELEMS];
- tSDP_PROTOCOL_ELEM proto_elem_list[BTA_HL_NUM_PROTO_ELEMS];
- tSDP_PROTO_LIST_ELEM add_proto_list;
- tBTA_HL_SUP_FEATURE_LIST_ELEM sup_feature_list;
- uint16_t browse_list[] = {UUID_SERVCLASS_PUBLIC_BROWSE_GROUP};
- uint8_t i,j, cnt,mdep_id, mdep_role;
- uint8_t data_exchange_spec = BTA_HL_SDP_IEEE_11073_20601;
- uint8_t mcap_sup_proc = BTA_HL_MCAP_SUP_PROC_MASK;
- uint16_t profile_uuid = UUID_SERVCLASS_HDP_PROFILE;
- uint16_t version = BTA_HL_VERSION;
- uint8_t num_services=1;
- tBTA_HL_APP_CB *p_cb = BTA_HL_GET_APP_CB_PTR(0);
- bool result = true;
- tBTA_HL_STATUS status = BTA_HL_STATUS_OK;
+tBTA_HL_STATUS bta_hl_sdp_update(UNUSED_ATTR uint8_t app_id) {
+ uint16_t svc_class_id_list[BTA_HL_NUM_SVC_ELEMS];
+ tSDP_PROTOCOL_ELEM proto_elem_list[BTA_HL_NUM_PROTO_ELEMS];
+ tSDP_PROTO_LIST_ELEM add_proto_list;
+ tBTA_HL_SUP_FEATURE_LIST_ELEM sup_feature_list;
+ uint16_t browse_list[] = {UUID_SERVCLASS_PUBLIC_BROWSE_GROUP};
+ uint8_t i, j, cnt, mdep_id, mdep_role;
+ uint8_t data_exchange_spec = BTA_HL_SDP_IEEE_11073_20601;
+ uint8_t mcap_sup_proc = BTA_HL_MCAP_SUP_PROC_MASK;
+ uint16_t profile_uuid = UUID_SERVCLASS_HDP_PROFILE;
+ uint16_t version = BTA_HL_VERSION;
+ uint8_t num_services = 1;
+ tBTA_HL_APP_CB* p_cb = BTA_HL_GET_APP_CB_PTR(0);
+ bool result = true;
+ tBTA_HL_STATUS status = BTA_HL_STATUS_OK;
- if ((p_cb->sup_feature.app_role_mask == BTA_HL_MDEP_ROLE_MASK_SOURCE) &&
- (!p_cb->sup_feature.advertize_source_sdp))
- {
- return BTA_HL_STATUS_OK;
- }
+ if ((p_cb->sup_feature.app_role_mask == BTA_HL_MDEP_ROLE_MASK_SOURCE) &&
+ (!p_cb->sup_feature.advertize_source_sdp)) {
+ return BTA_HL_STATUS_OK;
+ }
- num_services=1;
- svc_class_id_list[0]= UUID_SERVCLASS_HDP_SOURCE;
- if (p_cb->sup_feature.app_role_mask == BTA_HL_MDEP_ROLE_MASK_SINK)
- {
- svc_class_id_list[0]= UUID_SERVCLASS_HDP_SINK;
+ num_services = 1;
+ svc_class_id_list[0] = UUID_SERVCLASS_HDP_SOURCE;
+ if (p_cb->sup_feature.app_role_mask == BTA_HL_MDEP_ROLE_MASK_SINK) {
+ svc_class_id_list[0] = UUID_SERVCLASS_HDP_SINK;
+ } else {
+ if (p_cb->sup_feature.app_role_mask != BTA_HL_MDEP_ROLE_MASK_SOURCE) {
+ /* dual role */
+ num_services = 2;
+ svc_class_id_list[1] = UUID_SERVCLASS_HDP_SINK;
}
- else
- {
- if (p_cb->sup_feature.app_role_mask != BTA_HL_MDEP_ROLE_MASK_SOURCE)
- {
- /* dual role */
- num_services=2;
- svc_class_id_list[1]= UUID_SERVCLASS_HDP_SINK;
+ }
+ result &= SDP_AddServiceClassIdList(p_cb->sdp_handle, num_services,
+ svc_class_id_list);
+
+ if (result) {
+ /* add the protocol element sequence */
+ proto_elem_list[0].protocol_uuid = UUID_PROTOCOL_L2CAP;
+ proto_elem_list[0].num_params = 1;
+ proto_elem_list[0].params[0] = p_cb->ctrl_psm;
+ proto_elem_list[1].protocol_uuid = UUID_PROTOCOL_MCAP_CTRL;
+ proto_elem_list[1].num_params = 1;
+ proto_elem_list[1].params[0] = version;
+ result &= SDP_AddProtocolList(p_cb->sdp_handle, BTA_HL_NUM_PROTO_ELEMS,
+ proto_elem_list);
+
+ result &=
+ SDP_AddProfileDescriptorList(p_cb->sdp_handle, profile_uuid, version);
+ }
+
+ if (result) {
+ add_proto_list.num_elems = BTA_HL_NUM_ADD_PROTO_ELEMS;
+ add_proto_list.list_elem[0].protocol_uuid = UUID_PROTOCOL_L2CAP;
+ add_proto_list.list_elem[0].num_params = 1;
+ add_proto_list.list_elem[0].params[0] = p_cb->data_psm;
+ add_proto_list.list_elem[1].protocol_uuid = UUID_PROTOCOL_MCAP_DATA;
+ add_proto_list.list_elem[1].num_params = 0;
+ result &=
+ SDP_AddAdditionProtoLists(p_cb->sdp_handle, BTA_HL_NUM_ADD_PROTO_LISTS,
+ (tSDP_PROTO_LIST_ELEM*)&add_proto_list);
+ }
+
+ if (result) {
+ if (p_cb->srv_name[0]) {
+ result &= SDP_AddAttribute(
+ p_cb->sdp_handle, (uint16_t)ATTR_ID_SERVICE_NAME,
+ (uint8_t)TEXT_STR_DESC_TYPE, (uint32_t)(strlen(p_cb->srv_name) + 1),
+ (uint8_t*)p_cb->srv_name);
+ } /* end of setting optional service name */
+ }
+
+ if (result) {
+ if (p_cb->srv_desp[0]) {
+ result &= SDP_AddAttribute(
+ p_cb->sdp_handle, (uint16_t)ATTR_ID_SERVICE_DESCRIPTION,
+ (uint8_t)TEXT_STR_DESC_TYPE, (uint32_t)(strlen(p_cb->srv_desp) + 1),
+ (uint8_t*)p_cb->srv_desp);
+
+ } /* end of setting optional service description */
+ }
+
+ if (result) {
+ if (p_cb->provider_name[0]) {
+ result &=
+ SDP_AddAttribute(p_cb->sdp_handle, (uint16_t)ATTR_ID_PROVIDER_NAME,
+ (uint8_t)TEXT_STR_DESC_TYPE,
+ (uint32_t)(strlen(p_cb->provider_name) + 1),
+ (uint8_t*)p_cb->provider_name);
+ } /* end of setting optional provider name */
+ }
+
+ /* add supported feture list */
+
+ if (result) {
+ cnt = 0;
+ for (i = 1; i < BTA_HL_NUM_MDEPS; i++) {
+ if (p_cb->sup_feature.mdep[i].mdep_id) {
+ mdep_id = (uint8_t)p_cb->sup_feature.mdep[i].mdep_id;
+ mdep_role = (uint8_t)p_cb->sup_feature.mdep[i].mdep_cfg.mdep_role;
+
+ APPL_TRACE_DEBUG(
+ "num_of_mdep_data_types %d ",
+ p_cb->sup_feature.mdep[i].mdep_cfg.num_of_mdep_data_types);
+ for (j = 0;
+ j < p_cb->sup_feature.mdep[i].mdep_cfg.num_of_mdep_data_types;
+ j++) {
+ sup_feature_list.list_elem[cnt].mdep_id = mdep_id;
+ sup_feature_list.list_elem[cnt].mdep_role = mdep_role;
+ sup_feature_list.list_elem[cnt].data_type =
+ p_cb->sup_feature.mdep[i].mdep_cfg.data_cfg[j].data_type;
+ if (p_cb->sup_feature.mdep[i].mdep_cfg.data_cfg[j].desp[0] != '\0') {
+ sup_feature_list.list_elem[cnt].p_mdep_desp =
+ p_cb->sup_feature.mdep[i].mdep_cfg.data_cfg[j].desp;
+ } else {
+ sup_feature_list.list_elem[cnt].p_mdep_desp = NULL;
+ }
+
+ cnt++;
+ if (cnt == BTA_HL_NUM_SUP_FEATURE_ELEMS) {
+ result = false;
+ break;
+ }
}
+ }
}
- result &= SDP_AddServiceClassIdList(p_cb->sdp_handle, num_services, svc_class_id_list);
+ sup_feature_list.num_elems = cnt;
+ result &= bta_hl_add_sup_feature_list(p_cb->sdp_handle,
+ sup_feature_list.num_elems,
+ sup_feature_list.list_elem);
+ }
+ if (result) {
+ result &= SDP_AddAttribute(p_cb->sdp_handle, ATTR_ID_HDP_DATA_EXCH_SPEC,
+ UINT_DESC_TYPE, (uint32_t)1,
+ (uint8_t*)&data_exchange_spec);
+ }
- if (result)
- {
- /* add the protocol element sequence */
- proto_elem_list[0].protocol_uuid = UUID_PROTOCOL_L2CAP;
- proto_elem_list[0].num_params = 1;
- proto_elem_list[0].params[0] = p_cb->ctrl_psm;
- proto_elem_list[1].protocol_uuid = UUID_PROTOCOL_MCAP_CTRL;
- proto_elem_list[1].num_params = 1;
- proto_elem_list[1].params[0] = version;
- result &= SDP_AddProtocolList(p_cb->sdp_handle, BTA_HL_NUM_PROTO_ELEMS, proto_elem_list);
+ if (result) {
+ result &=
+ SDP_AddAttribute(p_cb->sdp_handle, ATTR_ID_HDP_MCAP_SUP_PROC,
+ UINT_DESC_TYPE, (uint32_t)1, (uint8_t*)&mcap_sup_proc);
+ }
- result &= SDP_AddProfileDescriptorList(p_cb->sdp_handle, profile_uuid, version);
+ if (result) {
+ result &= SDP_AddUuidSequence(p_cb->sdp_handle, ATTR_ID_BROWSE_GROUP_LIST,
+ 1, browse_list);
+ }
+
+ if (result) {
+ for (i = 0; i < num_services; i++) {
+ bta_sys_add_uuid(svc_class_id_list[i]);
+ APPL_TRACE_DEBUG("dbg bta_sys_add_uuid i=%d uuid=0x%x", i,
+ svc_class_id_list[i]); // todo
}
-
- if (result)
- {
- add_proto_list.num_elems = BTA_HL_NUM_ADD_PROTO_ELEMS;
- add_proto_list.list_elem[0].protocol_uuid = UUID_PROTOCOL_L2CAP;
- add_proto_list.list_elem[0].num_params = 1;
- add_proto_list.list_elem[0].params[0] = p_cb->data_psm;
- add_proto_list.list_elem[1].protocol_uuid = UUID_PROTOCOL_MCAP_DATA;
- add_proto_list.list_elem[1].num_params = 0;
- result &= SDP_AddAdditionProtoLists(p_cb->sdp_handle, BTA_HL_NUM_ADD_PROTO_LISTS,
- (tSDP_PROTO_LIST_ELEM *)&add_proto_list);
+ } else {
+ if (p_cb->sdp_handle) {
+ SDP_DeleteRecord(p_cb->sdp_handle);
+ p_cb->sdp_handle = 0;
}
-
- if (result)
- {
- if (p_cb->srv_name[0] )
- {
- result &= SDP_AddAttribute(p_cb->sdp_handle,
- (uint16_t)ATTR_ID_SERVICE_NAME,
- (uint8_t)TEXT_STR_DESC_TYPE,
- (uint32_t)(strlen(p_cb->srv_name) + 1),
- (uint8_t *)p_cb->srv_name);
- } /* end of setting optional service name */
- }
-
- if (result)
- {
- if (p_cb->srv_desp[0] )
- {
- result &= SDP_AddAttribute(p_cb->sdp_handle,
- (uint16_t)ATTR_ID_SERVICE_DESCRIPTION,
- (uint8_t)TEXT_STR_DESC_TYPE,
- (uint32_t)(strlen(p_cb->srv_desp) + 1),
- (uint8_t *)p_cb->srv_desp);
-
- } /* end of setting optional service description */
-
- }
-
- if (result)
- {
- if (p_cb->provider_name[0] )
- {
- result &= SDP_AddAttribute(p_cb->sdp_handle,
- (uint16_t)ATTR_ID_PROVIDER_NAME,
- (uint8_t)TEXT_STR_DESC_TYPE,
- (uint32_t)(strlen(p_cb->provider_name) + 1),
- (uint8_t *)p_cb->provider_name);
- } /* end of setting optional provider name */
- }
-
- /* add supported feture list */
-
- if (result)
- {
- cnt=0;
- for (i=1; i< BTA_HL_NUM_MDEPS; i++)
- {
- if (p_cb->sup_feature.mdep[i].mdep_id)
- {
- mdep_id = (uint8_t)p_cb->sup_feature.mdep[i].mdep_id;
- mdep_role = (uint8_t)p_cb->sup_feature.mdep[i].mdep_cfg.mdep_role;
-
- APPL_TRACE_DEBUG("num_of_mdep_data_types %d ", p_cb->sup_feature.mdep[i].mdep_cfg.num_of_mdep_data_types);
- for (j=0; j<p_cb->sup_feature.mdep[i].mdep_cfg.num_of_mdep_data_types; j++)
- {
- sup_feature_list.list_elem[cnt].mdep_id = mdep_id;
- sup_feature_list.list_elem[cnt].mdep_role = mdep_role;
- sup_feature_list.list_elem[cnt].data_type = p_cb->sup_feature.mdep[i].mdep_cfg.data_cfg[j].data_type;
- if (p_cb->sup_feature.mdep[i].mdep_cfg.data_cfg[j].desp[0] != '\0')
- {
- sup_feature_list.list_elem[cnt].p_mdep_desp = p_cb->sup_feature.mdep[i].mdep_cfg.data_cfg[j].desp;
- }
- else
- {
- sup_feature_list.list_elem[cnt].p_mdep_desp = NULL;
- }
-
- cnt++;
- if (cnt==BTA_HL_NUM_SUP_FEATURE_ELEMS)
- {
- result = false;
- break;
- }
- }
- }
- }
- sup_feature_list.num_elems = cnt;
- result &= bta_hl_add_sup_feature_list (p_cb->sdp_handle,
- sup_feature_list.num_elems,
- sup_feature_list.list_elem);
- }
- if (result)
- {
- result &= SDP_AddAttribute(p_cb->sdp_handle, ATTR_ID_HDP_DATA_EXCH_SPEC, UINT_DESC_TYPE,
- (uint32_t)1, (uint8_t*)&data_exchange_spec);
- }
-
- if (result)
- {
-
- result &= SDP_AddAttribute(p_cb->sdp_handle, ATTR_ID_HDP_MCAP_SUP_PROC, UINT_DESC_TYPE,
- (uint32_t)1, (uint8_t*)&mcap_sup_proc);
- }
-
- if (result)
- {
- result &= SDP_AddUuidSequence(p_cb->sdp_handle, ATTR_ID_BROWSE_GROUP_LIST, 1, browse_list);
- }
-
- if (result)
- {
- for(i=0; i < num_services; i++)
- {
- bta_sys_add_uuid(svc_class_id_list[i]);
- APPL_TRACE_DEBUG("dbg bta_sys_add_uuid i=%d uuid=0x%x", i, svc_class_id_list[i]); //todo
- }
- }
- else
- {
- if (p_cb->sdp_handle)
- {
- SDP_DeleteRecord(p_cb->sdp_handle);
- p_cb->sdp_handle = 0;
- }
- status = BTA_HL_STATUS_SDP_FAIL;
- }
+ status = BTA_HL_STATUS_SDP_FAIL;
+ }
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hl_sdp_update status=%s", bta_hl_status_code(status));
+ APPL_TRACE_DEBUG("bta_hl_sdp_update status=%s", bta_hl_status_code(status));
#endif
- return status;
+ return status;
}
-
/*****************************************************************************
*
* Function: bta_hl_sdp_register
@@ -371,265 +346,235 @@
* Returns: void
*
****************************************************************************/
-tBTA_HL_STATUS bta_hl_sdp_register (uint8_t app_idx)
-{
- uint16_t svc_class_id_list[BTA_HL_NUM_SVC_ELEMS];
- tSDP_PROTOCOL_ELEM proto_elem_list[BTA_HL_NUM_PROTO_ELEMS];
- tSDP_PROTO_LIST_ELEM add_proto_list;
- tBTA_HL_SUP_FEATURE_LIST_ELEM sup_feature_list;
- uint16_t browse_list[] = {UUID_SERVCLASS_PUBLIC_BROWSE_GROUP};
- uint8_t i,j, cnt,mdep_id, mdep_role;
- uint8_t data_exchange_spec = BTA_HL_SDP_IEEE_11073_20601;
- uint8_t mcap_sup_proc = BTA_HL_MCAP_SUP_PROC_MASK;
- uint16_t profile_uuid = UUID_SERVCLASS_HDP_PROFILE;
- uint16_t version = BTA_HL_VERSION;
- uint8_t num_services=1;
- tBTA_HL_APP_CB *p_cb = BTA_HL_GET_APP_CB_PTR(app_idx);
- bool result = true;
- tBTA_HL_STATUS status = BTA_HL_STATUS_OK;
+tBTA_HL_STATUS bta_hl_sdp_register(uint8_t app_idx) {
+ uint16_t svc_class_id_list[BTA_HL_NUM_SVC_ELEMS];
+ tSDP_PROTOCOL_ELEM proto_elem_list[BTA_HL_NUM_PROTO_ELEMS];
+ tSDP_PROTO_LIST_ELEM add_proto_list;
+ tBTA_HL_SUP_FEATURE_LIST_ELEM sup_feature_list;
+ uint16_t browse_list[] = {UUID_SERVCLASS_PUBLIC_BROWSE_GROUP};
+ uint8_t i, j, cnt, mdep_id, mdep_role;
+ uint8_t data_exchange_spec = BTA_HL_SDP_IEEE_11073_20601;
+ uint8_t mcap_sup_proc = BTA_HL_MCAP_SUP_PROC_MASK;
+ uint16_t profile_uuid = UUID_SERVCLASS_HDP_PROFILE;
+ uint16_t version = BTA_HL_VERSION;
+ uint8_t num_services = 1;
+ tBTA_HL_APP_CB* p_cb = BTA_HL_GET_APP_CB_PTR(app_idx);
+ bool result = true;
+ tBTA_HL_STATUS status = BTA_HL_STATUS_OK;
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hl_sdp_register app_idx=%d",app_idx);
+ APPL_TRACE_DEBUG("bta_hl_sdp_register app_idx=%d", app_idx);
#endif
- if ((p_cb->sup_feature.app_role_mask == BTA_HL_MDEP_ROLE_MASK_SOURCE) &&
- (!p_cb->sup_feature.advertize_source_sdp))
- {
- return BTA_HL_STATUS_OK;
- }
+ if ((p_cb->sup_feature.app_role_mask == BTA_HL_MDEP_ROLE_MASK_SOURCE) &&
+ (!p_cb->sup_feature.advertize_source_sdp)) {
+ return BTA_HL_STATUS_OK;
+ }
- if ((p_cb->sdp_handle = SDP_CreateRecord()) == 0)
- {
- return BTA_HL_STATUS_SDP_NO_RESOURCE;
- }
+ if ((p_cb->sdp_handle = SDP_CreateRecord()) == 0) {
+ return BTA_HL_STATUS_SDP_NO_RESOURCE;
+ }
- num_services=1;
- svc_class_id_list[0]= UUID_SERVCLASS_HDP_SOURCE;
- if (p_cb->sup_feature.app_role_mask == BTA_HL_MDEP_ROLE_MASK_SINK)
- {
- svc_class_id_list[0]= UUID_SERVCLASS_HDP_SINK;
+ num_services = 1;
+ svc_class_id_list[0] = UUID_SERVCLASS_HDP_SOURCE;
+ if (p_cb->sup_feature.app_role_mask == BTA_HL_MDEP_ROLE_MASK_SINK) {
+ svc_class_id_list[0] = UUID_SERVCLASS_HDP_SINK;
+ } else {
+ if (p_cb->sup_feature.app_role_mask != BTA_HL_MDEP_ROLE_MASK_SOURCE) {
+ /* dual role */
+ num_services = 2;
+ svc_class_id_list[1] = UUID_SERVCLASS_HDP_SINK;
}
- else
- {
- if (p_cb->sup_feature.app_role_mask != BTA_HL_MDEP_ROLE_MASK_SOURCE)
- {
- /* dual role */
- num_services=2;
- svc_class_id_list[1]= UUID_SERVCLASS_HDP_SINK;
+ }
+ result &= SDP_AddServiceClassIdList(p_cb->sdp_handle, num_services,
+ svc_class_id_list);
+
+ if (result) {
+ /* add the protocol element sequence */
+ proto_elem_list[0].protocol_uuid = UUID_PROTOCOL_L2CAP;
+ proto_elem_list[0].num_params = 1;
+ proto_elem_list[0].params[0] = p_cb->ctrl_psm;
+ proto_elem_list[1].protocol_uuid = UUID_PROTOCOL_MCAP_CTRL;
+ proto_elem_list[1].num_params = 1;
+ proto_elem_list[1].params[0] = version;
+ result &= SDP_AddProtocolList(p_cb->sdp_handle, BTA_HL_NUM_PROTO_ELEMS,
+ proto_elem_list);
+
+ result &=
+ SDP_AddProfileDescriptorList(p_cb->sdp_handle, profile_uuid, version);
+ }
+
+ if (result) {
+ add_proto_list.num_elems = BTA_HL_NUM_ADD_PROTO_ELEMS;
+ add_proto_list.list_elem[0].protocol_uuid = UUID_PROTOCOL_L2CAP;
+ add_proto_list.list_elem[0].num_params = 1;
+ add_proto_list.list_elem[0].params[0] = p_cb->data_psm;
+ add_proto_list.list_elem[1].protocol_uuid = UUID_PROTOCOL_MCAP_DATA;
+ add_proto_list.list_elem[1].num_params = 0;
+ result &=
+ SDP_AddAdditionProtoLists(p_cb->sdp_handle, BTA_HL_NUM_ADD_PROTO_LISTS,
+ (tSDP_PROTO_LIST_ELEM*)&add_proto_list);
+ }
+
+ if (result) {
+ if (p_cb->srv_name[0]) {
+ result &= SDP_AddAttribute(
+ p_cb->sdp_handle, (uint16_t)ATTR_ID_SERVICE_NAME,
+ (uint8_t)TEXT_STR_DESC_TYPE, (uint32_t)(strlen(p_cb->srv_name) + 1),
+ (uint8_t*)p_cb->srv_name);
+ } /* end of setting optional service name */
+ }
+
+ if (result) {
+ if (p_cb->srv_desp[0]) {
+ result &= SDP_AddAttribute(
+ p_cb->sdp_handle, (uint16_t)ATTR_ID_SERVICE_DESCRIPTION,
+ (uint8_t)TEXT_STR_DESC_TYPE, (uint32_t)(strlen(p_cb->srv_desp) + 1),
+ (uint8_t*)p_cb->srv_desp);
+
+ } /* end of setting optional service description */
+ }
+
+ if (result) {
+ if (p_cb->provider_name[0]) {
+ result &=
+ SDP_AddAttribute(p_cb->sdp_handle, (uint16_t)ATTR_ID_PROVIDER_NAME,
+ (uint8_t)TEXT_STR_DESC_TYPE,
+ (uint32_t)(strlen(p_cb->provider_name) + 1),
+ (uint8_t*)p_cb->provider_name);
+ } /* end of setting optional provider name */
+ }
+
+ /* add supported feture list */
+
+ if (result) {
+ cnt = 0;
+ for (i = 1; i <= p_cb->sup_feature.num_of_mdeps; i++) {
+ mdep_id = (uint8_t)p_cb->sup_feature.mdep[i].mdep_id;
+ mdep_role = (uint8_t)p_cb->sup_feature.mdep[i].mdep_cfg.mdep_role;
+
+ for (j = 0; j < p_cb->sup_feature.mdep[i].mdep_cfg.num_of_mdep_data_types;
+ j++) {
+ sup_feature_list.list_elem[cnt].mdep_id = mdep_id;
+ sup_feature_list.list_elem[cnt].mdep_role = mdep_role;
+ sup_feature_list.list_elem[cnt].data_type =
+ p_cb->sup_feature.mdep[i].mdep_cfg.data_cfg[j].data_type;
+ if (p_cb->sup_feature.mdep[i].mdep_cfg.data_cfg[j].desp[0] != '\0') {
+ sup_feature_list.list_elem[cnt].p_mdep_desp =
+ p_cb->sup_feature.mdep[i].mdep_cfg.data_cfg[j].desp;
+ } else {
+ sup_feature_list.list_elem[cnt].p_mdep_desp = NULL;
}
- }
- result &= SDP_AddServiceClassIdList(p_cb->sdp_handle, num_services, svc_class_id_list);
- if (result)
- {
- /* add the protocol element sequence */
- proto_elem_list[0].protocol_uuid = UUID_PROTOCOL_L2CAP;
- proto_elem_list[0].num_params = 1;
- proto_elem_list[0].params[0] = p_cb->ctrl_psm;
- proto_elem_list[1].protocol_uuid = UUID_PROTOCOL_MCAP_CTRL;
- proto_elem_list[1].num_params = 1;
- proto_elem_list[1].params[0] = version;
- result &= SDP_AddProtocolList(p_cb->sdp_handle, BTA_HL_NUM_PROTO_ELEMS, proto_elem_list);
-
- result &= SDP_AddProfileDescriptorList(p_cb->sdp_handle, profile_uuid, version);
- }
-
- if (result)
- {
- add_proto_list.num_elems = BTA_HL_NUM_ADD_PROTO_ELEMS;
- add_proto_list.list_elem[0].protocol_uuid = UUID_PROTOCOL_L2CAP;
- add_proto_list.list_elem[0].num_params = 1;
- add_proto_list.list_elem[0].params[0] = p_cb->data_psm;
- add_proto_list.list_elem[1].protocol_uuid = UUID_PROTOCOL_MCAP_DATA;
- add_proto_list.list_elem[1].num_params = 0;
- result &= SDP_AddAdditionProtoLists(p_cb->sdp_handle, BTA_HL_NUM_ADD_PROTO_LISTS,
- (tSDP_PROTO_LIST_ELEM *)&add_proto_list);
- }
-
- if (result)
- {
- if (p_cb->srv_name[0] )
- {
- result &= SDP_AddAttribute(p_cb->sdp_handle,
- (uint16_t)ATTR_ID_SERVICE_NAME,
- (uint8_t)TEXT_STR_DESC_TYPE,
- (uint32_t)(strlen(p_cb->srv_name) + 1),
- (uint8_t *)p_cb->srv_name);
- } /* end of setting optional service name */
- }
-
- if (result)
- {
- if (p_cb->srv_desp[0] )
- {
- result &= SDP_AddAttribute(p_cb->sdp_handle,
- (uint16_t)ATTR_ID_SERVICE_DESCRIPTION,
- (uint8_t)TEXT_STR_DESC_TYPE,
- (uint32_t)(strlen(p_cb->srv_desp) + 1),
- (uint8_t *)p_cb->srv_desp);
-
- } /* end of setting optional service description */
-
- }
-
- if (result)
- {
- if (p_cb->provider_name[0] )
- {
- result &= SDP_AddAttribute(p_cb->sdp_handle,
- (uint16_t)ATTR_ID_PROVIDER_NAME,
- (uint8_t)TEXT_STR_DESC_TYPE,
- (uint32_t)(strlen(p_cb->provider_name) + 1),
- (uint8_t *)p_cb->provider_name);
- } /* end of setting optional provider name */
- }
-
- /* add supported feture list */
-
- if (result)
- {
- cnt=0;
- for (i=1; i<= p_cb->sup_feature.num_of_mdeps; i++)
- {
- mdep_id = (uint8_t)p_cb->sup_feature.mdep[i].mdep_id;
- mdep_role = (uint8_t)p_cb->sup_feature.mdep[i].mdep_cfg.mdep_role;
-
- for (j=0; j<p_cb->sup_feature.mdep[i].mdep_cfg.num_of_mdep_data_types; j++)
- {
- sup_feature_list.list_elem[cnt].mdep_id = mdep_id;
- sup_feature_list.list_elem[cnt].mdep_role = mdep_role;
- sup_feature_list.list_elem[cnt].data_type = p_cb->sup_feature.mdep[i].mdep_cfg.data_cfg[j].data_type;
- if (p_cb->sup_feature.mdep[i].mdep_cfg.data_cfg[j].desp[0] != '\0')
- {
- sup_feature_list.list_elem[cnt].p_mdep_desp = p_cb->sup_feature.mdep[i].mdep_cfg.data_cfg[j].desp;
- }
- else
- {
- sup_feature_list.list_elem[cnt].p_mdep_desp = NULL;
- }
-
- cnt++;
- if (cnt==BTA_HL_NUM_SUP_FEATURE_ELEMS)
- {
- result = false;
- break;
- }
- }
+ cnt++;
+ if (cnt == BTA_HL_NUM_SUP_FEATURE_ELEMS) {
+ result = false;
+ break;
}
- sup_feature_list.num_elems = cnt;
- result &= bta_hl_add_sup_feature_list (p_cb->sdp_handle,
- sup_feature_list.num_elems,
- sup_feature_list.list_elem);
+ }
}
- if (result)
- {
- result &= SDP_AddAttribute(p_cb->sdp_handle, ATTR_ID_HDP_DATA_EXCH_SPEC, UINT_DESC_TYPE,
- (uint32_t)1, (uint8_t*)&data_exchange_spec);
- }
+ sup_feature_list.num_elems = cnt;
+ result &= bta_hl_add_sup_feature_list(p_cb->sdp_handle,
+ sup_feature_list.num_elems,
+ sup_feature_list.list_elem);
+ }
+ if (result) {
+ result &= SDP_AddAttribute(p_cb->sdp_handle, ATTR_ID_HDP_DATA_EXCH_SPEC,
+ UINT_DESC_TYPE, (uint32_t)1,
+ (uint8_t*)&data_exchange_spec);
+ }
- if (result)
- {
+ if (result) {
+ result &=
+ SDP_AddAttribute(p_cb->sdp_handle, ATTR_ID_HDP_MCAP_SUP_PROC,
+ UINT_DESC_TYPE, (uint32_t)1, (uint8_t*)&mcap_sup_proc);
+ }
- result &= SDP_AddAttribute(p_cb->sdp_handle, ATTR_ID_HDP_MCAP_SUP_PROC, UINT_DESC_TYPE,
- (uint32_t)1, (uint8_t*)&mcap_sup_proc);
- }
+ if (result) {
+ result &= SDP_AddUuidSequence(p_cb->sdp_handle, ATTR_ID_BROWSE_GROUP_LIST,
+ 1, browse_list);
+ }
- if (result)
- {
- result &= SDP_AddUuidSequence(p_cb->sdp_handle, ATTR_ID_BROWSE_GROUP_LIST, 1, browse_list);
+ if (result) {
+ for (i = 0; i < num_services; i++) {
+ bta_sys_add_uuid(svc_class_id_list[i]);
+ APPL_TRACE_DEBUG("dbg bta_sys_add_uuid i=%d uuid=0x%x", i,
+ svc_class_id_list[i]); // todo
}
-
- if (result)
- {
- for(i=0; i < num_services; i++)
- {
- bta_sys_add_uuid(svc_class_id_list[i]);
- APPL_TRACE_DEBUG("dbg bta_sys_add_uuid i=%d uuid=0x%x", i, svc_class_id_list[i]); //todo
- }
+ } else {
+ if (p_cb->sdp_handle) {
+ SDP_DeleteRecord(p_cb->sdp_handle);
+ p_cb->sdp_handle = 0;
}
- else
- {
- if (p_cb->sdp_handle)
- {
- SDP_DeleteRecord(p_cb->sdp_handle);
- p_cb->sdp_handle = 0;
- }
- status = BTA_HL_STATUS_SDP_FAIL;
- }
+ status = BTA_HL_STATUS_SDP_FAIL;
+ }
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hl_sdp_register status=%s", bta_hl_status_code(status));
+ APPL_TRACE_DEBUG("bta_hl_sdp_register status=%s", bta_hl_status_code(status));
#endif
- return status;
+ return status;
}
/*******************************************************************************
*
* Function bta_hl_find_sink_or_src_srv_class_in_db
*
- * Description This function queries an SDP database for either a HDP Sink or
+ * Description This function queries an SDP database for either a HDP Sink
+ *or
* Source service class ID.
- * If the p_start_rec pointer is NULL, it looks from the beginning
- * of the database, else it continues from the next record after
+ * If the p_start_rec pointer is NULL, it looks from the
+ *beginning
+ * of the database, else it continues from the next record
+ *after
* p_start_rec.
*
* Returns Pointer to record containing service class, or NULL
*
******************************************************************************/
-tSDP_DISC_REC *bta_hl_find_sink_or_src_srv_class_in_db (const tSDP_DISCOVERY_DB *p_db,
- const tSDP_DISC_REC *p_start_rec)
-{
+tSDP_DISC_REC* bta_hl_find_sink_or_src_srv_class_in_db(
+ const tSDP_DISCOVERY_DB* p_db, const tSDP_DISC_REC* p_start_rec) {
#if (SDP_CLIENT_ENABLED == TRUE)
- tSDP_DISC_REC *p_rec;
- tSDP_DISC_ATTR *p_attr, *p_sattr;
+ tSDP_DISC_REC* p_rec;
+ tSDP_DISC_ATTR *p_attr, *p_sattr;
- /* Must have a valid database */
- if (p_db == NULL)
- return(NULL);
+ /* Must have a valid database */
+ if (p_db == NULL) return (NULL);
+ if (!p_start_rec) {
+ p_rec = p_db->p_first_rec;
+ } else {
+ p_rec = p_start_rec->p_next_rec;
+ }
- if (!p_start_rec)
- {
-
- p_rec = p_db->p_first_rec;
- }
- else
- {
- p_rec = p_start_rec->p_next_rec;
- }
-
- while (p_rec)
- {
- p_attr = p_rec->p_first_attr;
- while (p_attr)
- {
- if ((p_attr->attr_id == ATTR_ID_SERVICE_CLASS_ID_LIST)
- && (SDP_DISC_ATTR_TYPE(p_attr->attr_len_type) == DATA_ELE_SEQ_DESC_TYPE))
- {
- for (p_sattr = p_attr->attr_value.v.p_sub_attr; p_sattr; p_sattr = p_sattr->p_next_attr)
- {
- if ((SDP_DISC_ATTR_TYPE(p_sattr->attr_len_type) == UUID_DESC_TYPE)
- && (SDP_DISC_ATTR_LEN(p_sattr->attr_len_type) == 2)
- && ( (p_sattr->attr_value.v.u16 == UUID_SERVCLASS_HDP_SINK) ||
- (p_sattr->attr_value.v.u16 == UUID_SERVCLASS_HDP_SOURCE)) )
- {
- return(p_rec);
- }
- }
- break;
- }
-
- p_attr = p_attr->p_next_attr;
+ while (p_rec) {
+ p_attr = p_rec->p_first_attr;
+ while (p_attr) {
+ if ((p_attr->attr_id == ATTR_ID_SERVICE_CLASS_ID_LIST) &&
+ (SDP_DISC_ATTR_TYPE(p_attr->attr_len_type) ==
+ DATA_ELE_SEQ_DESC_TYPE)) {
+ for (p_sattr = p_attr->attr_value.v.p_sub_attr; p_sattr;
+ p_sattr = p_sattr->p_next_attr) {
+ if ((SDP_DISC_ATTR_TYPE(p_sattr->attr_len_type) == UUID_DESC_TYPE) &&
+ (SDP_DISC_ATTR_LEN(p_sattr->attr_len_type) == 2) &&
+ ((p_sattr->attr_value.v.u16 == UUID_SERVCLASS_HDP_SINK) ||
+ (p_sattr->attr_value.v.u16 == UUID_SERVCLASS_HDP_SOURCE))) {
+ return (p_rec);
+ }
}
+ break;
+ }
- p_rec = p_rec->p_next_rec;
+ p_attr = p_attr->p_next_attr;
}
+
+ p_rec = p_rec->p_next_rec;
+ }
#endif
- /* If here, no matching UUID found */
+/* If here, no matching UUID found */
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hl_find_sink_or_src_srv_class_in_db failed");
+ APPL_TRACE_DEBUG("bta_hl_find_sink_or_src_srv_class_in_db failed");
#endif
- return(NULL);
+ return (NULL);
}
#endif /* HL_INCLUDED */
diff --git a/bta/hl/bta_hl_utils.cc b/bta/hl/bta_hl_utils.cc
index 4bab910..061e64e 100644
--- a/bta/hl/bta_hl_utils.cc
+++ b/bta/hl/bta_hl_utils.cc
@@ -29,15 +29,13 @@
#include "bt_target.h"
#if (HL_INCLUDED == TRUE)
-
#include "bt_common.h"
-#include "utl.h"
-#include "bta_hl_int.h"
#include "bta_hl_co.h"
-#include "mca_defs.h"
+#include "bta_hl_int.h"
#include "mca_api.h"
+#include "mca_defs.h"
#include "osi/include/osi.h"
-
+#include "utl.h"
/*******************************************************************************
*
@@ -48,43 +46,37 @@
* Returns bool - true - control PSM setting is successful
******************************************************************************/
bool bta_hl_set_ctrl_psm_for_dch(uint8_t app_idx, uint8_t mcl_idx,
- UNUSED_ATTR uint8_t mdl_idx, uint16_t ctrl_psm)
-{
- tBTA_HL_MCL_CB *p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
- bool success = true, update_ctrl_psm = false;
+ UNUSED_ATTR uint8_t mdl_idx,
+ uint16_t ctrl_psm) {
+ tBTA_HL_MCL_CB* p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
+ bool success = true, update_ctrl_psm = false;
- if (p_mcb->sdp.num_recs)
- {
- if (p_mcb->ctrl_psm != ctrl_psm)
- {
- /* can not use a different ctrl PSM than the current one*/
- success = false;
- }
+ if (p_mcb->sdp.num_recs) {
+ if (p_mcb->ctrl_psm != ctrl_psm) {
+ /* can not use a different ctrl PSM than the current one*/
+ success = false;
}
- else
- {
- /* No SDP info control i.e. channel was opened by the peer */
- update_ctrl_psm = true;
- }
+ } else {
+ /* No SDP info control i.e. channel was opened by the peer */
+ update_ctrl_psm = true;
+ }
- if (success && update_ctrl_psm)
- {
- p_mcb->ctrl_psm = ctrl_psm;
- }
-
+ if (success && update_ctrl_psm) {
+ p_mcb->ctrl_psm = ctrl_psm;
+ }
#if (BTA_HL_DEBUG == TRUE)
- if (!success)
- {
- APPL_TRACE_DEBUG("bta_hl_set_ctrl_psm_for_dch num_recs=%d success=%d update_ctrl_psm=%d ctrl_psm=0x%x ",
- p_mcb->sdp.num_recs, success, update_ctrl_psm, ctrl_psm );
- }
+ if (!success) {
+ APPL_TRACE_DEBUG(
+ "bta_hl_set_ctrl_psm_for_dch num_recs=%d success=%d update_ctrl_psm=%d "
+ "ctrl_psm=0x%x ",
+ p_mcb->sdp.num_recs, success, update_ctrl_psm, ctrl_psm);
+ }
#endif
- return success;
+ return success;
}
-
/*******************************************************************************
*
* Function bta_hl_find_sdp_idx_using_ctrl_psm
@@ -94,41 +86,34 @@
* Returns true if found
*
******************************************************************************/
-bool bta_hl_find_sdp_idx_using_ctrl_psm(tBTA_HL_SDP *p_sdp,
- uint16_t ctrl_psm,
- uint8_t *p_sdp_idx)
-{
- bool found=false;
- tBTA_HL_SDP_REC *p_rec;
- uint8_t i;
+bool bta_hl_find_sdp_idx_using_ctrl_psm(tBTA_HL_SDP* p_sdp, uint16_t ctrl_psm,
+ uint8_t* p_sdp_idx) {
+ bool found = false;
+ tBTA_HL_SDP_REC* p_rec;
+ uint8_t i;
- if (ctrl_psm != 0)
- {
- for (i=0; i<p_sdp->num_recs; i++)
- {
- p_rec = &p_sdp->sdp_rec[i];
- if (p_rec->ctrl_psm == ctrl_psm)
- {
- *p_sdp_idx = i;
- found = true;
- break;
- }
- }
- }
- else
- {
- *p_sdp_idx = 0;
+ if (ctrl_psm != 0) {
+ for (i = 0; i < p_sdp->num_recs; i++) {
+ p_rec = &p_sdp->sdp_rec[i];
+ if (p_rec->ctrl_psm == ctrl_psm) {
+ *p_sdp_idx = i;
found = true;
+ break;
+ }
}
+ } else {
+ *p_sdp_idx = 0;
+ found = true;
+ }
#if (BTA_HL_DEBUG == TRUE)
- if (!found)
- {
- APPL_TRACE_DEBUG("bta_hl_find_sdp_idx_using_ctrl_psm found=%d sdp_idx=%d ctrl_psm=0x%x ",
- found, *p_sdp_idx, ctrl_psm );
- }
+ if (!found) {
+ APPL_TRACE_DEBUG(
+ "bta_hl_find_sdp_idx_using_ctrl_psm found=%d sdp_idx=%d ctrl_psm=0x%x ",
+ found, *p_sdp_idx, ctrl_psm);
+ }
#endif
- return found;
+ return found;
}
/*******************************************************************************
@@ -141,11 +126,9 @@
*
******************************************************************************/
-uint16_t bta_hl_set_user_tx_buf_size(uint16_t max_tx_size)
-{
- if (max_tx_size > BT_DEFAULT_BUFFER_SIZE)
- return BTA_HL_LRG_DATA_BUF_SIZE;
- return L2CAP_INVALID_ERM_BUF_SIZE;
+uint16_t bta_hl_set_user_tx_buf_size(uint16_t max_tx_size) {
+ if (max_tx_size > BT_DEFAULT_BUFFER_SIZE) return BTA_HL_LRG_DATA_BUF_SIZE;
+ return L2CAP_INVALID_ERM_BUF_SIZE;
}
/*******************************************************************************
@@ -158,15 +141,11 @@
*
******************************************************************************/
-uint16_t bta_hl_set_user_rx_buf_size(uint16_t mtu)
-{
- if (mtu > BT_DEFAULT_BUFFER_SIZE)
- return BTA_HL_LRG_DATA_BUF_SIZE;
- return L2CAP_INVALID_ERM_BUF_SIZE;
+uint16_t bta_hl_set_user_rx_buf_size(uint16_t mtu) {
+ if (mtu > BT_DEFAULT_BUFFER_SIZE) return BTA_HL_LRG_DATA_BUF_SIZE;
+ return L2CAP_INVALID_ERM_BUF_SIZE;
}
-
-
/*******************************************************************************
*
* Function bta_hl_set_tx_win_size
@@ -176,32 +155,25 @@
* Returns uint8_t tx_win_size
*
******************************************************************************/
-uint8_t bta_hl_set_tx_win_size(uint16_t mtu, uint16_t mps)
-{
- uint8_t tx_win_size;
+uint8_t bta_hl_set_tx_win_size(uint16_t mtu, uint16_t mps) {
+ uint8_t tx_win_size;
- if (mtu <= mps)
- {
- tx_win_size =1;
+ if (mtu <= mps) {
+ tx_win_size = 1;
+ } else {
+ if (mps > 0) {
+ tx_win_size = (mtu / mps) + 1;
+ } else {
+ APPL_TRACE_ERROR("The MPS is zero");
+ tx_win_size = 10;
}
- else
- {
- if (mps > 0)
- {
- tx_win_size = (mtu/mps)+1;
- }
- else
- {
- APPL_TRACE_ERROR("The MPS is zero");
- tx_win_size = 10;
- }
- }
+ }
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hl_set_tx_win_size win_size=%d mtu=%d mps=%d",
- tx_win_size, mtu, mps);
+ APPL_TRACE_DEBUG("bta_hl_set_tx_win_size win_size=%d mtu=%d mps=%d",
+ tx_win_size, mtu, mps);
#endif
- return tx_win_size;
+ return tx_win_size;
}
/*******************************************************************************
@@ -213,25 +185,19 @@
* Returns uint16_t MPS
*
******************************************************************************/
-uint16_t bta_hl_set_mps(uint16_t mtu)
-{
- uint16_t mps;
- if (mtu > BTA_HL_L2C_MPS)
- {
- mps = BTA_HL_L2C_MPS;
- }
- else
- {
- mps = mtu;
- }
+uint16_t bta_hl_set_mps(uint16_t mtu) {
+ uint16_t mps;
+ if (mtu > BTA_HL_L2C_MPS) {
+ mps = BTA_HL_L2C_MPS;
+ } else {
+ mps = mtu;
+ }
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hl_set_mps mps=%d mtu=%d",
- mps, mtu);
+ APPL_TRACE_DEBUG("bta_hl_set_mps mps=%d mtu=%d", mps, mtu);
#endif
- return mps;
+ return mps;
}
-
/*******************************************************************************
*
* Function bta_hl_clean_mdl_cb
@@ -241,22 +207,20 @@
* Returns void
*
******************************************************************************/
-void bta_hl_clean_mdl_cb(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx)
-{
- tBTA_HL_MDL_CB *p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
+void bta_hl_clean_mdl_cb(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx) {
+ tBTA_HL_MDL_CB* p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hl_clean_mdl_cb app_idx=%d mcl_idx=%d mdl_idx=%d",
- app_idx, mcl_idx, mdl_idx);
+ APPL_TRACE_DEBUG("bta_hl_clean_mdl_cb app_idx=%d mcl_idx=%d mdl_idx=%d",
+ app_idx, mcl_idx, mdl_idx);
#endif
- osi_free_and_reset((void **)&p_dcb->p_tx_pkt);
- osi_free_and_reset((void **)&p_dcb->p_rx_pkt);
- osi_free_and_reset((void **)&p_dcb->p_echo_tx_pkt);
- osi_free_and_reset((void **)&p_dcb->p_echo_rx_pkt);
+ osi_free_and_reset((void**)&p_dcb->p_tx_pkt);
+ osi_free_and_reset((void**)&p_dcb->p_rx_pkt);
+ osi_free_and_reset((void**)&p_dcb->p_echo_tx_pkt);
+ osi_free_and_reset((void**)&p_dcb->p_echo_rx_pkt);
- memset((void *)p_dcb, 0 , sizeof(tBTA_HL_MDL_CB));
+ memset((void*)p_dcb, 0, sizeof(tBTA_HL_MDL_CB));
}
-
/*******************************************************************************
*
* Function bta_hl_get_buf
@@ -266,58 +230,52 @@
* Returns BT_HDR *.
*
******************************************************************************/
-BT_HDR * bta_hl_get_buf(uint16_t data_size, bool fcs_use)
-{
- size_t size = data_size + L2CAP_MIN_OFFSET + BT_HDR_SIZE + L2CAP_FCS_LEN
- + L2CAP_EXT_CONTROL_OVERHEAD;
+BT_HDR* bta_hl_get_buf(uint16_t data_size, bool fcs_use) {
+ size_t size = data_size + L2CAP_MIN_OFFSET + BT_HDR_SIZE + L2CAP_FCS_LEN +
+ L2CAP_EXT_CONTROL_OVERHEAD;
- if (fcs_use)
- size += L2CAP_FCS_LEN;
+ if (fcs_use) size += L2CAP_FCS_LEN;
- BT_HDR *p_new = (BT_HDR *)osi_malloc(size);
- p_new->len = data_size;
- p_new->offset = L2CAP_MIN_OFFSET;
+ BT_HDR* p_new = (BT_HDR*)osi_malloc(size);
+ p_new->len = data_size;
+ p_new->offset = L2CAP_MIN_OFFSET;
- return p_new;
+ return p_new;
}
/*******************************************************************************
*
* Function bta_hl_find_service_in_db
*
- * Description This function check the specified service class(es) can be find in
+ * Description This function check the specified service class(es) can be find
+ *in
* the received SDP database
*
* Returns bool true - found
* false - not found
*
******************************************************************************/
-bool bta_hl_find_service_in_db( uint8_t app_idx, uint8_t mcl_idx,
- uint16_t service_uuid,
- tSDP_DISC_REC **pp_rec )
-{
- tBTA_HL_MCL_CB *p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
- bool found = true;
+bool bta_hl_find_service_in_db(uint8_t app_idx, uint8_t mcl_idx,
+ uint16_t service_uuid, tSDP_DISC_REC** pp_rec) {
+ tBTA_HL_MCL_CB* p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
+ bool found = true;
- switch (service_uuid)
- {
- case UUID_SERVCLASS_HDP_SINK:
- case UUID_SERVCLASS_HDP_SOURCE:
- if ((*pp_rec = SDP_FindServiceInDb(p_mcb->p_db, service_uuid,
- *pp_rec)) == NULL)
- {
- found = false;
- }
- break;
- default:
- if ((*pp_rec = bta_hl_find_sink_or_src_srv_class_in_db(p_mcb->p_db,
- *pp_rec)) == NULL)
- {
- found = false;
- }
- break;
- }
- return found;
+ switch (service_uuid) {
+ case UUID_SERVCLASS_HDP_SINK:
+ case UUID_SERVCLASS_HDP_SOURCE:
+ if ((*pp_rec = SDP_FindServiceInDb(p_mcb->p_db, service_uuid, *pp_rec)) ==
+ NULL) {
+ found = false;
+ }
+ break;
+ default:
+ if ((*pp_rec = bta_hl_find_sink_or_src_srv_class_in_db(
+ p_mcb->p_db, *pp_rec)) == NULL) {
+ found = false;
+ }
+ break;
+ }
+ return found;
}
/*******************************************************************************
@@ -325,46 +283,40 @@
* Function bta_hl_get_service_uuids
*
*
- * Description This function finds the service class(es) for both CCH and DCH oeprations
+ * Description This function finds the service class(es) for both CCH and DCH
+ *oeprations
*
* Returns uint16_t - service_id
* if service_uuid = 0xFFFF then it means service uuid
* can be either Sink or Source
*
******************************************************************************/
-uint16_t bta_hl_get_service_uuids(uint8_t sdp_oper, uint8_t app_idx, uint8_t mcl_idx,
- uint8_t mdl_idx )
-{
- tBTA_HL_MDL_CB *p_dcb;
- uint16_t service_uuid = 0xFFFF; /* both Sink and Source */
+uint16_t bta_hl_get_service_uuids(uint8_t sdp_oper, uint8_t app_idx,
+ uint8_t mcl_idx, uint8_t mdl_idx) {
+ tBTA_HL_MDL_CB* p_dcb;
+ uint16_t service_uuid = 0xFFFF; /* both Sink and Source */
- switch (sdp_oper)
- {
-
- case BTA_HL_SDP_OP_DCH_OPEN_INIT:
- case BTA_HL_SDP_OP_DCH_RECONNECT_INIT:
- p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
- if (p_dcb->local_mdep_id != BTA_HL_ECHO_TEST_MDEP_ID)
- {
- if (p_dcb->peer_mdep_role == BTA_HL_MDEP_ROLE_SINK)
- {
- service_uuid = UUID_SERVCLASS_HDP_SINK;
- }
- else
- {
- service_uuid = UUID_SERVCLASS_HDP_SOURCE;
- }
- }
- break;
- case BTA_HL_SDP_OP_CCH_INIT:
- default:
- /* use default that is both Sink and Source */
- break;
- }
+ switch (sdp_oper) {
+ case BTA_HL_SDP_OP_DCH_OPEN_INIT:
+ case BTA_HL_SDP_OP_DCH_RECONNECT_INIT:
+ p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
+ if (p_dcb->local_mdep_id != BTA_HL_ECHO_TEST_MDEP_ID) {
+ if (p_dcb->peer_mdep_role == BTA_HL_MDEP_ROLE_SINK) {
+ service_uuid = UUID_SERVCLASS_HDP_SINK;
+ } else {
+ service_uuid = UUID_SERVCLASS_HDP_SOURCE;
+ }
+ }
+ break;
+ case BTA_HL_SDP_OP_CCH_INIT:
+ default:
+ /* use default that is both Sink and Source */
+ break;
+ }
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hl_get_service_uuids service_uuid=0x%x",service_uuid );
+ APPL_TRACE_DEBUG("bta_hl_get_service_uuids service_uuid=0x%x", service_uuid);
#endif
- return service_uuid;
+ return service_uuid;
}
/*******************************************************************************
@@ -378,40 +330,35 @@
* false not found
*
******************************************************************************/
-bool bta_hl_find_echo_cfg_rsp(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdep_idx, uint8_t cfg,
- uint8_t *p_cfg_rsp)
-{
- tBTA_HL_APP_CB *p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
- tBTA_HL_MDEP *p_mdep= &p_acb->sup_feature.mdep[mdep_idx];
- bool status =true;
+bool bta_hl_find_echo_cfg_rsp(uint8_t app_idx, uint8_t mcl_idx,
+ uint8_t mdep_idx, uint8_t cfg,
+ uint8_t* p_cfg_rsp) {
+ tBTA_HL_APP_CB* p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
+ tBTA_HL_MDEP* p_mdep = &p_acb->sup_feature.mdep[mdep_idx];
+ bool status = true;
- if (p_mdep->mdep_id == BTA_HL_ECHO_TEST_MDEP_ID)
- {
- if ((cfg == BTA_HL_DCH_CFG_RELIABLE) || (cfg == BTA_HL_DCH_CFG_STREAMING))
- {
- *p_cfg_rsp = cfg;
- }
- else if (cfg == BTA_HL_DCH_CFG_NO_PREF )
- {
- *p_cfg_rsp = BTA_HL_DEFAULT_ECHO_TEST_SRC_DCH_CFG;
- }
- else
- {
- status = false;
- APPL_TRACE_ERROR("Inavlid echo cfg value");
- }
- return status;
+ if (p_mdep->mdep_id == BTA_HL_ECHO_TEST_MDEP_ID) {
+ if ((cfg == BTA_HL_DCH_CFG_RELIABLE) || (cfg == BTA_HL_DCH_CFG_STREAMING)) {
+ *p_cfg_rsp = cfg;
+ } else if (cfg == BTA_HL_DCH_CFG_NO_PREF) {
+ *p_cfg_rsp = BTA_HL_DEFAULT_ECHO_TEST_SRC_DCH_CFG;
+ } else {
+ status = false;
+ APPL_TRACE_ERROR("Inavlid echo cfg value");
}
+ return status;
+ }
#if (BTA_HL_DEBUG == TRUE)
- if (!status)
- {
- APPL_TRACE_DEBUG("bta_hl_find_echo_cfg_rsp status=failed app_idx=%d mcl_idx=%d mdep_idx=%d cfg=%d",
- app_idx, mcl_idx, mdep_idx, cfg);
- }
+ if (!status) {
+ APPL_TRACE_DEBUG(
+ "bta_hl_find_echo_cfg_rsp status=failed app_idx=%d mcl_idx=%d "
+ "mdep_idx=%d cfg=%d",
+ app_idx, mcl_idx, mdep_idx, cfg);
+ }
#endif
- return status;
+ return status;
}
/*******************************************************************************
@@ -425,46 +372,41 @@
*
******************************************************************************/
bool bta_hl_validate_cfg(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- uint8_t cfg)
-{
- tBTA_HL_MDL_CB *p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
- bool is_valid =false;
+ uint8_t cfg) {
+ tBTA_HL_MDL_CB* p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
+ bool is_valid = false;
+ if (!bta_hl_is_the_first_reliable_existed(app_idx, mcl_idx) &&
+ (cfg != BTA_HL_DCH_CFG_RELIABLE)) {
+ APPL_TRACE_ERROR("the first DCH should be a reliable channel");
+ return is_valid;
+ }
- if (!bta_hl_is_the_first_reliable_existed(app_idx, mcl_idx) &&
- (cfg != BTA_HL_DCH_CFG_RELIABLE))
- {
- APPL_TRACE_ERROR("the first DCH should be a reliable channel");
- return is_valid;
- }
+ switch (p_dcb->local_cfg) {
+ case BTA_HL_DCH_CFG_NO_PREF:
- switch (p_dcb->local_cfg)
- {
- case BTA_HL_DCH_CFG_NO_PREF:
-
- if ((cfg == BTA_HL_DCH_CFG_RELIABLE) || (cfg == BTA_HL_DCH_CFG_STREAMING))
- {
- is_valid = true;
- }
- break;
- case BTA_HL_DCH_CFG_RELIABLE:
- case BTA_HL_DCH_CFG_STREAMING:
- if (p_dcb->local_cfg == cfg )
- {
- is_valid = true;
- }
- break;
- default:
- break;
- }
+ if ((cfg == BTA_HL_DCH_CFG_RELIABLE) ||
+ (cfg == BTA_HL_DCH_CFG_STREAMING)) {
+ is_valid = true;
+ }
+ break;
+ case BTA_HL_DCH_CFG_RELIABLE:
+ case BTA_HL_DCH_CFG_STREAMING:
+ if (p_dcb->local_cfg == cfg) {
+ is_valid = true;
+ }
+ break;
+ default:
+ break;
+ }
#if (BTA_HL_DEBUG == TRUE)
- if (!is_valid)
- {
- APPL_TRACE_DEBUG("bta_hl_validate_dch_open_cfg is_valid=%d, cfg=%d", is_valid, cfg );
- }
+ if (!is_valid) {
+ APPL_TRACE_DEBUG("bta_hl_validate_dch_open_cfg is_valid=%d, cfg=%d",
+ is_valid, cfg);
+ }
#endif
- return is_valid;
+ return is_valid;
}
/*******************************************************************************
@@ -477,102 +419,96 @@
* false not found
*
******************************************************************************/
-bool bta_hl_find_cch_cb_indexes(tBTA_HL_DATA *p_msg,
- uint8_t *p_app_idx,
- uint8_t *p_mcl_idx)
-{
- bool found = false;
- tBTA_HL_MCL_CB *p_mcb;
- uint8_t app_idx = 0, mcl_idx = 0;
+bool bta_hl_find_cch_cb_indexes(tBTA_HL_DATA* p_msg, uint8_t* p_app_idx,
+ uint8_t* p_mcl_idx) {
+ bool found = false;
+ tBTA_HL_MCL_CB* p_mcb;
+ uint8_t app_idx = 0, mcl_idx = 0;
- switch (p_msg->hdr.event)
- {
- case BTA_HL_CCH_SDP_OK_EVT:
- case BTA_HL_CCH_SDP_FAIL_EVT:
- app_idx = p_msg->cch_sdp.app_idx;
- mcl_idx = p_msg->cch_sdp.mcl_idx;
- found = true;
- break;
+ switch (p_msg->hdr.event) {
+ case BTA_HL_CCH_SDP_OK_EVT:
+ case BTA_HL_CCH_SDP_FAIL_EVT:
+ app_idx = p_msg->cch_sdp.app_idx;
+ mcl_idx = p_msg->cch_sdp.mcl_idx;
+ found = true;
+ break;
- case BTA_HL_MCA_CONNECT_IND_EVT:
+ case BTA_HL_MCA_CONNECT_IND_EVT:
- if (bta_hl_find_app_idx_using_handle(p_msg->mca_evt.app_handle, &app_idx))
- {
- if (bta_hl_find_mcl_idx(app_idx, p_msg->mca_evt.mca_data.connect_ind.bd_addr, &mcl_idx))
- {
- /* local initiated */
- found = true;
- }
- else if (!bta_hl_find_mcl_idx_using_handle(p_msg->mca_evt.mcl_handle, &app_idx, &mcl_idx)&&
- bta_hl_find_avail_mcl_idx(app_idx, &mcl_idx))
- {
- /* remote initiated */
- p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
- p_mcb->in_use = true;
- p_mcb->cch_oper = BTA_HL_CCH_OP_REMOTE_OPEN;
- found = true;
- }
- }
- break;
+ if (bta_hl_find_app_idx_using_handle(p_msg->mca_evt.app_handle,
+ &app_idx)) {
+ if (bta_hl_find_mcl_idx(app_idx,
+ p_msg->mca_evt.mca_data.connect_ind.bd_addr,
+ &mcl_idx)) {
+ /* local initiated */
+ found = true;
+ } else if (!bta_hl_find_mcl_idx_using_handle(p_msg->mca_evt.mcl_handle,
+ &app_idx, &mcl_idx) &&
+ bta_hl_find_avail_mcl_idx(app_idx, &mcl_idx)) {
+ /* remote initiated */
+ p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
+ p_mcb->in_use = true;
+ p_mcb->cch_oper = BTA_HL_CCH_OP_REMOTE_OPEN;
+ found = true;
+ }
+ }
+ break;
- case BTA_HL_MCA_DISCONNECT_IND_EVT:
+ case BTA_HL_MCA_DISCONNECT_IND_EVT:
- if (bta_hl_find_mcl_idx_using_handle(p_msg->mca_evt.mcl_handle, &app_idx, &mcl_idx))
- {
- found = true;
- }
- else if (bta_hl_find_app_idx_using_handle(p_msg->mca_evt.app_handle, &app_idx) &&
- bta_hl_find_mcl_idx(app_idx, p_msg->mca_evt.mca_data.disconnect_ind.bd_addr, &mcl_idx))
- {
- found = true;
- }
+ if (bta_hl_find_mcl_idx_using_handle(p_msg->mca_evt.mcl_handle, &app_idx,
+ &mcl_idx)) {
+ found = true;
+ } else if (bta_hl_find_app_idx_using_handle(p_msg->mca_evt.app_handle,
+ &app_idx) &&
+ bta_hl_find_mcl_idx(
+ app_idx, p_msg->mca_evt.mca_data.disconnect_ind.bd_addr,
+ &mcl_idx)) {
+ found = true;
+ }
- if (found)
- {
- p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
- if ((p_mcb->cch_oper != BTA_HL_CCH_OP_LOCAL_CLOSE) && (p_mcb->cch_oper != BTA_HL_CCH_OP_LOCAL_OPEN) )
- {
- p_mcb->cch_oper = BTA_HL_CCH_OP_REMOTE_CLOSE;
- }
- }
- break;
+ if (found) {
+ p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
+ if ((p_mcb->cch_oper != BTA_HL_CCH_OP_LOCAL_CLOSE) &&
+ (p_mcb->cch_oper != BTA_HL_CCH_OP_LOCAL_OPEN)) {
+ p_mcb->cch_oper = BTA_HL_CCH_OP_REMOTE_CLOSE;
+ }
+ }
+ break;
- case BTA_HL_MCA_RSP_TOUT_IND_EVT:
+ case BTA_HL_MCA_RSP_TOUT_IND_EVT:
- if (bta_hl_find_mcl_idx_using_handle(p_msg->mca_evt.mcl_handle, &app_idx, &mcl_idx))
- {
- found = true;
- }
+ if (bta_hl_find_mcl_idx_using_handle(p_msg->mca_evt.mcl_handle, &app_idx,
+ &mcl_idx)) {
+ found = true;
+ }
- if (found)
- {
- p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
- if ((p_mcb->cch_oper != BTA_HL_CCH_OP_REMOTE_CLOSE) && (p_mcb->cch_oper != BTA_HL_CCH_OP_LOCAL_OPEN))
- {
- p_mcb->cch_oper = BTA_HL_CCH_OP_LOCAL_CLOSE;
- }
- }
- break;
- default:
- break;
- }
+ if (found) {
+ p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
+ if ((p_mcb->cch_oper != BTA_HL_CCH_OP_REMOTE_CLOSE) &&
+ (p_mcb->cch_oper != BTA_HL_CCH_OP_LOCAL_OPEN)) {
+ p_mcb->cch_oper = BTA_HL_CCH_OP_LOCAL_CLOSE;
+ }
+ }
+ break;
+ default:
+ break;
+ }
-
- if (found)
- {
- *p_app_idx = app_idx;
- *p_mcl_idx = mcl_idx;
- }
+ if (found) {
+ *p_app_idx = app_idx;
+ *p_mcl_idx = mcl_idx;
+ }
#if (BTA_HL_DEBUG == TRUE)
- if (!found)
- {
- APPL_TRACE_DEBUG("bta_hl_find_cch_cb_indexes event=%s found=%d app_idx=%d mcl_idx=%d",
- bta_hl_evt_code(p_msg->hdr.event), found, app_idx, mcl_idx);
- }
+ if (!found) {
+ APPL_TRACE_DEBUG(
+ "bta_hl_find_cch_cb_indexes event=%s found=%d app_idx=%d mcl_idx=%d",
+ bta_hl_evt_code(p_msg->hdr.event), found, app_idx, mcl_idx);
+ }
#endif
- return found;
+ return found;
}
/*******************************************************************************
@@ -585,168 +521,175 @@
* false not found
*
******************************************************************************/
-bool bta_hl_find_dch_cb_indexes(tBTA_HL_DATA *p_msg,
- uint8_t *p_app_idx,
- uint8_t *p_mcl_idx,
- uint8_t *p_mdl_idx)
-{
- bool found = false;
- tBTA_HL_MCL_CB *p_mcb;
- uint8_t app_idx = 0, mcl_idx = 0, mdl_idx = 0;
+bool bta_hl_find_dch_cb_indexes(tBTA_HL_DATA* p_msg, uint8_t* p_app_idx,
+ uint8_t* p_mcl_idx, uint8_t* p_mdl_idx) {
+ bool found = false;
+ tBTA_HL_MCL_CB* p_mcb;
+ uint8_t app_idx = 0, mcl_idx = 0, mdl_idx = 0;
- switch (p_msg->hdr.event)
- {
- case BTA_HL_MCA_CREATE_CFM_EVT:
- if (bta_hl_find_mcl_idx_using_handle(p_msg->mca_evt.mcl_handle, &app_idx, &mcl_idx) &&
- bta_hl_find_mdl_idx( app_idx, mcl_idx, p_msg->mca_evt.mca_data.create_cfm.mdl_id, &mdl_idx))
- {
- found = true;
- }
- break;
+ switch (p_msg->hdr.event) {
+ case BTA_HL_MCA_CREATE_CFM_EVT:
+ if (bta_hl_find_mcl_idx_using_handle(p_msg->mca_evt.mcl_handle, &app_idx,
+ &mcl_idx) &&
+ bta_hl_find_mdl_idx(app_idx, mcl_idx,
+ p_msg->mca_evt.mca_data.create_cfm.mdl_id,
+ &mdl_idx)) {
+ found = true;
+ }
+ break;
- case BTA_HL_MCA_CREATE_IND_EVT:
- case BTA_HL_MCA_RECONNECT_IND_EVT:
- if (bta_hl_find_mcl_idx_using_handle(p_msg->mca_evt.mcl_handle, &app_idx, &mcl_idx) &&
- bta_hl_find_avail_mdl_idx( app_idx, mcl_idx, &mdl_idx))
- {
- found = true;
- }
- break;
+ case BTA_HL_MCA_CREATE_IND_EVT:
+ case BTA_HL_MCA_RECONNECT_IND_EVT:
+ if (bta_hl_find_mcl_idx_using_handle(p_msg->mca_evt.mcl_handle, &app_idx,
+ &mcl_idx) &&
+ bta_hl_find_avail_mdl_idx(app_idx, mcl_idx, &mdl_idx)) {
+ found = true;
+ }
+ break;
- case BTA_HL_MCA_OPEN_CFM_EVT:
- if (bta_hl_find_mcl_idx_using_handle(p_msg->mca_evt.mcl_handle, &app_idx, &mcl_idx) &&
- bta_hl_find_mdl_idx( app_idx, mcl_idx, p_msg->mca_evt.mca_data.open_cfm.mdl_id, &mdl_idx))
- {
- found = true;
- }
- break;
+ case BTA_HL_MCA_OPEN_CFM_EVT:
+ if (bta_hl_find_mcl_idx_using_handle(p_msg->mca_evt.mcl_handle, &app_idx,
+ &mcl_idx) &&
+ bta_hl_find_mdl_idx(app_idx, mcl_idx,
+ p_msg->mca_evt.mca_data.open_cfm.mdl_id,
+ &mdl_idx)) {
+ found = true;
+ }
+ break;
- case BTA_HL_MCA_OPEN_IND_EVT:
- if (bta_hl_find_mcl_idx_using_handle(p_msg->mca_evt.mcl_handle, &app_idx, &mcl_idx) &&
- bta_hl_find_mdl_idx( app_idx, mcl_idx, p_msg->mca_evt.mca_data.open_ind.mdl_id, &mdl_idx))
- {
- found = true;
- }
- break;
+ case BTA_HL_MCA_OPEN_IND_EVT:
+ if (bta_hl_find_mcl_idx_using_handle(p_msg->mca_evt.mcl_handle, &app_idx,
+ &mcl_idx) &&
+ bta_hl_find_mdl_idx(app_idx, mcl_idx,
+ p_msg->mca_evt.mca_data.open_ind.mdl_id,
+ &mdl_idx)) {
+ found = true;
+ }
+ break;
- case BTA_HL_MCA_CLOSE_CFM_EVT:
+ case BTA_HL_MCA_CLOSE_CFM_EVT:
- if (bta_hl_find_mdl_idx_using_handle((tBTA_HL_MDL_HANDLE)p_msg->mca_evt.mca_data.close_cfm.mdl,
- &app_idx, &mcl_idx, &mdl_idx))
- {
- found = true;
- }
- break;
- case BTA_HL_MCA_CLOSE_IND_EVT:
+ if (bta_hl_find_mdl_idx_using_handle(
+ (tBTA_HL_MDL_HANDLE)p_msg->mca_evt.mca_data.close_cfm.mdl,
+ &app_idx, &mcl_idx, &mdl_idx)) {
+ found = true;
+ }
+ break;
+ case BTA_HL_MCA_CLOSE_IND_EVT:
- if (bta_hl_find_mdl_idx_using_handle((tBTA_HL_MDL_HANDLE)p_msg->mca_evt.mca_data.close_ind.mdl,
- &app_idx, &mcl_idx, &mdl_idx))
- {
- found = true;
- }
- break;
- case BTA_HL_API_SEND_DATA_EVT:
+ if (bta_hl_find_mdl_idx_using_handle(
+ (tBTA_HL_MDL_HANDLE)p_msg->mca_evt.mca_data.close_ind.mdl,
+ &app_idx, &mcl_idx, &mdl_idx)) {
+ found = true;
+ }
+ break;
+ case BTA_HL_API_SEND_DATA_EVT:
- if (bta_hl_find_mdl_idx_using_handle(p_msg->api_send_data.mdl_handle,
- &app_idx, &mcl_idx, &mdl_idx ))
- {
- found = true;
- }
+ if (bta_hl_find_mdl_idx_using_handle(p_msg->api_send_data.mdl_handle,
+ &app_idx, &mcl_idx, &mdl_idx)) {
+ found = true;
+ }
- break;
+ break;
- case BTA_HL_MCA_CONG_CHG_EVT:
+ case BTA_HL_MCA_CONG_CHG_EVT:
- if (bta_hl_find_mdl_idx_using_handle((tBTA_HL_MDL_HANDLE)p_msg->mca_evt.mca_data.cong_chg.mdl,
- &app_idx, &mcl_idx, &mdl_idx ))
- {
- found = true;
- }
+ if (bta_hl_find_mdl_idx_using_handle(
+ (tBTA_HL_MDL_HANDLE)p_msg->mca_evt.mca_data.cong_chg.mdl,
+ &app_idx, &mcl_idx, &mdl_idx)) {
+ found = true;
+ }
- break;
+ break;
- case BTA_HL_MCA_RCV_DATA_EVT:
- app_idx = p_msg->mca_rcv_data_evt.app_idx;
- mcl_idx = p_msg->mca_rcv_data_evt.mcl_idx;
- mdl_idx = p_msg->mca_rcv_data_evt.mdl_idx;
- found = true;
- break;
- case BTA_HL_DCH_RECONNECT_EVT:
- case BTA_HL_DCH_OPEN_EVT:
- case BTA_HL_DCH_ECHO_TEST_EVT:
- case BTA_HL_DCH_SDP_FAIL_EVT:
- app_idx = p_msg->dch_sdp.app_idx;
- mcl_idx = p_msg->dch_sdp.mcl_idx;
- mdl_idx = p_msg->dch_sdp.mdl_idx;
- found = true;
- break;
- case BTA_HL_MCA_RECONNECT_CFM_EVT:
- if (bta_hl_find_mcl_idx_using_handle(p_msg->mca_evt.mcl_handle, &app_idx, &mcl_idx) &&
- bta_hl_find_mdl_idx( app_idx, mcl_idx, p_msg->mca_evt.mca_data.reconnect_cfm.mdl_id, &mdl_idx))
- {
- found = true;
- }
- break;
+ case BTA_HL_MCA_RCV_DATA_EVT:
+ app_idx = p_msg->mca_rcv_data_evt.app_idx;
+ mcl_idx = p_msg->mca_rcv_data_evt.mcl_idx;
+ mdl_idx = p_msg->mca_rcv_data_evt.mdl_idx;
+ found = true;
+ break;
+ case BTA_HL_DCH_RECONNECT_EVT:
+ case BTA_HL_DCH_OPEN_EVT:
+ case BTA_HL_DCH_ECHO_TEST_EVT:
+ case BTA_HL_DCH_SDP_FAIL_EVT:
+ app_idx = p_msg->dch_sdp.app_idx;
+ mcl_idx = p_msg->dch_sdp.mcl_idx;
+ mdl_idx = p_msg->dch_sdp.mdl_idx;
+ found = true;
+ break;
+ case BTA_HL_MCA_RECONNECT_CFM_EVT:
+ if (bta_hl_find_mcl_idx_using_handle(p_msg->mca_evt.mcl_handle, &app_idx,
+ &mcl_idx) &&
+ bta_hl_find_mdl_idx(app_idx, mcl_idx,
+ p_msg->mca_evt.mca_data.reconnect_cfm.mdl_id,
+ &mdl_idx)) {
+ found = true;
+ }
+ break;
+ case BTA_HL_API_DCH_CREATE_RSP_EVT:
+ if (bta_hl_find_mcl_idx_using_handle(p_msg->api_dch_create_rsp.mcl_handle,
+ &app_idx, &mcl_idx) &&
+ bta_hl_find_mdl_idx(app_idx, mcl_idx,
+ p_msg->api_dch_create_rsp.mdl_id, &mdl_idx)) {
+ found = true;
+ }
+ break;
+ case BTA_HL_MCA_ABORT_IND_EVT:
+ if (bta_hl_find_mcl_idx_using_handle(p_msg->mca_evt.mcl_handle, &app_idx,
+ &mcl_idx) &&
+ bta_hl_find_mdl_idx(app_idx, mcl_idx,
+ p_msg->mca_evt.mca_data.abort_ind.mdl_id,
+ &mdl_idx)) {
+ found = true;
+ }
+ break;
+ case BTA_HL_MCA_ABORT_CFM_EVT:
+ if (bta_hl_find_mcl_idx_using_handle(p_msg->mca_evt.mcl_handle, &app_idx,
+ &mcl_idx) &&
+ bta_hl_find_mdl_idx(app_idx, mcl_idx,
+ p_msg->mca_evt.mca_data.abort_cfm.mdl_id,
+ &mdl_idx)) {
+ found = true;
+ }
+ break;
+ case BTA_HL_CI_GET_TX_DATA_EVT:
+ case BTA_HL_CI_PUT_RX_DATA_EVT:
+ if (bta_hl_find_mdl_idx_using_handle(p_msg->ci_get_put_data.mdl_handle,
+ &app_idx, &mcl_idx, &mdl_idx)) {
+ found = true;
+ }
+ break;
+ case BTA_HL_CI_GET_ECHO_DATA_EVT:
+ case BTA_HL_CI_PUT_ECHO_DATA_EVT:
+ if (bta_hl_find_mcl_idx_using_handle(
+ p_msg->ci_get_put_echo_data.mcl_handle, &app_idx, &mcl_idx)) {
+ p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
+ mdl_idx = p_mcb->echo_mdl_idx;
+ found = true;
+ }
+ break;
- case BTA_HL_API_DCH_CREATE_RSP_EVT:
- if (bta_hl_find_mcl_idx_using_handle(p_msg->api_dch_create_rsp.mcl_handle, &app_idx, &mcl_idx)&&
- bta_hl_find_mdl_idx( app_idx, mcl_idx,p_msg->api_dch_create_rsp.mdl_id, &mdl_idx))
- {
- found = true;
- }
- break;
- case BTA_HL_MCA_ABORT_IND_EVT:
- if (bta_hl_find_mcl_idx_using_handle(p_msg->mca_evt.mcl_handle, &app_idx, &mcl_idx) &&
- bta_hl_find_mdl_idx( app_idx, mcl_idx,p_msg->mca_evt.mca_data.abort_ind.mdl_id, &mdl_idx))
- {
- found = true;
- }
- break;
- case BTA_HL_MCA_ABORT_CFM_EVT:
- if (bta_hl_find_mcl_idx_using_handle(p_msg->mca_evt.mcl_handle, &app_idx, &mcl_idx) &&
- bta_hl_find_mdl_idx( app_idx, mcl_idx, p_msg->mca_evt.mca_data.abort_cfm.mdl_id, &mdl_idx))
- {
- found = true;
- }
- break;
- case BTA_HL_CI_GET_TX_DATA_EVT:
- case BTA_HL_CI_PUT_RX_DATA_EVT:
- if (bta_hl_find_mdl_idx_using_handle(p_msg->ci_get_put_data.mdl_handle, &app_idx, &mcl_idx, &mdl_idx))
- {
- found = true;
- }
- break;
- case BTA_HL_CI_GET_ECHO_DATA_EVT:
- case BTA_HL_CI_PUT_ECHO_DATA_EVT:
- if (bta_hl_find_mcl_idx_using_handle(p_msg->ci_get_put_echo_data.mcl_handle, &app_idx, &mcl_idx))
- {
- p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
- mdl_idx = p_mcb->echo_mdl_idx;
- found = true;
- }
- break;
+ default:
+ break;
+ }
- default:
- break;
-
- }
-
- if (found)
- {
- *p_app_idx = app_idx;
- *p_mcl_idx = mcl_idx;
- *p_mdl_idx = mdl_idx;
- }
+ if (found) {
+ *p_app_idx = app_idx;
+ *p_mcl_idx = mcl_idx;
+ *p_mdl_idx = mdl_idx;
+ }
#if (BTA_HL_DEBUG == TRUE)
- if (!found)
- {
- APPL_TRACE_DEBUG("bta_hl_find_dch_cb_indexes event=%s found=%d app_idx=%d mcl_idx=%d mdl_idx=%d",
- bta_hl_evt_code(p_msg->hdr.event), found, *p_app_idx, *p_mcl_idx, *p_mdl_idx );
- }
+ if (!found) {
+ APPL_TRACE_DEBUG(
+ "bta_hl_find_dch_cb_indexes event=%s found=%d app_idx=%d mcl_idx=%d "
+ "mdl_idx=%d",
+ bta_hl_evt_code(p_msg->hdr.event), found, *p_app_idx, *p_mcl_idx,
+ *p_mdl_idx);
+ }
#endif
- return found;
+ return found;
}
/*******************************************************************************
@@ -758,54 +701,44 @@
* Returns uint16_t - MDL ID
*
******************************************************************************/
-uint16_t bta_hl_allocate_mdl_id(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx )
-{
- uint16_t mdl_id=0;
- tBTA_HL_MCL_CB *p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
- bool duplicate_id;
- uint8_t i, mdl_cfg_idx;
+uint16_t bta_hl_allocate_mdl_id(uint8_t app_idx, uint8_t mcl_idx,
+ uint8_t mdl_idx) {
+ uint16_t mdl_id = 0;
+ tBTA_HL_MCL_CB* p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
+ bool duplicate_id;
+ uint8_t i, mdl_cfg_idx;
- do
- {
- duplicate_id = false;
- mdl_id = ((mdl_id+1) & 0xFEFF);
- /* check mdl_ids that are used for the current conenctions */
- for (i=0; i< BTA_HL_NUM_MDLS_PER_MCL; i++)
- {
- if (p_mcb->mdl[i].in_use &&
- (i != mdl_idx) &&
- (p_mcb->mdl[i].mdl_id == mdl_id) )
- {
- duplicate_id = true;
- break;
- }
- }
+ do {
+ duplicate_id = false;
+ mdl_id = ((mdl_id + 1) & 0xFEFF);
+ /* check mdl_ids that are used for the current conenctions */
+ for (i = 0; i < BTA_HL_NUM_MDLS_PER_MCL; i++) {
+ if (p_mcb->mdl[i].in_use && (i != mdl_idx) &&
+ (p_mcb->mdl[i].mdl_id == mdl_id)) {
+ duplicate_id = true;
+ break;
+ }
+ }
- if (duplicate_id)
- {
- /* start from the beginning to get another MDL value*/
- continue;
- }
- else
- {
- /* check mdl_ids that are stored in the persistent memory */
- if (bta_hl_find_mdl_cfg_idx(app_idx,mcl_idx, mdl_id, &mdl_cfg_idx))
- {
- duplicate_id = true;
- }
- else
- {
- /* found a new MDL value */
- break;
- }
- }
+ if (duplicate_id) {
+ /* start from the beginning to get another MDL value*/
+ continue;
+ } else {
+ /* check mdl_ids that are stored in the persistent memory */
+ if (bta_hl_find_mdl_cfg_idx(app_idx, mcl_idx, mdl_id, &mdl_cfg_idx)) {
+ duplicate_id = true;
+ } else {
+ /* found a new MDL value */
+ break;
+ }
+ }
- }while (true);
+ } while (true);
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hl_allocate_mdl OK mdl_id=%d", mdl_id);
+ APPL_TRACE_DEBUG("bta_hl_allocate_mdl OK mdl_id=%d", mdl_id);
#endif
- return mdl_id;
+ return mdl_id;
}
/*******************************************************************************
*
@@ -817,33 +750,28 @@
*
******************************************************************************/
bool bta_hl_find_mdl_idx(uint8_t app_idx, uint8_t mcl_idx, uint16_t mdl_id,
- uint8_t *p_mdl_idx)
-{
- tBTA_HL_MCL_CB *p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
- bool found=false;
- uint8_t i;
+ uint8_t* p_mdl_idx) {
+ tBTA_HL_MCL_CB* p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
+ bool found = false;
+ uint8_t i;
- for (i=0; i < BTA_HL_NUM_MDLS_PER_MCL ; i ++)
- {
- if (p_mcb->mdl[i].in_use &&
- (mdl_id !=0) &&
- (p_mcb->mdl[i].mdl_id== mdl_id))
- {
- found = true;
- *p_mdl_idx = i;
- break;
- }
+ for (i = 0; i < BTA_HL_NUM_MDLS_PER_MCL; i++) {
+ if (p_mcb->mdl[i].in_use && (mdl_id != 0) &&
+ (p_mcb->mdl[i].mdl_id == mdl_id)) {
+ found = true;
+ *p_mdl_idx = i;
+ break;
}
+ }
#if (BTA_HL_DEBUG == TRUE)
- if (!found)
- {
- APPL_TRACE_DEBUG("bta_hl_find_mdl_idx found=%d mdl_id=%d mdl_idx=%d ",
- found, mdl_id, i);
- }
+ if (!found) {
+ APPL_TRACE_DEBUG("bta_hl_find_mdl_idx found=%d mdl_id=%d mdl_idx=%d ",
+ found, mdl_id, i);
+ }
#endif
- return found;
+ return found;
}
/*******************************************************************************
@@ -856,32 +784,30 @@
*
******************************************************************************/
bool bta_hl_find_an_active_mdl_idx(uint8_t app_idx, uint8_t mcl_idx,
- uint8_t *p_mdl_idx)
-{
- tBTA_HL_MCL_CB *p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
- bool found=false;
- uint8_t i;
+ uint8_t* p_mdl_idx) {
+ tBTA_HL_MCL_CB* p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
+ bool found = false;
+ uint8_t i;
- for (i=0; i < BTA_HL_NUM_MDLS_PER_MCL ; i ++)
- {
- if (p_mcb->mdl[i].in_use &&
- (p_mcb->mdl[i].dch_state == BTA_HL_DCH_OPEN_ST))
- {
- found = true;
- *p_mdl_idx = i;
- break;
- }
+ for (i = 0; i < BTA_HL_NUM_MDLS_PER_MCL; i++) {
+ if (p_mcb->mdl[i].in_use &&
+ (p_mcb->mdl[i].dch_state == BTA_HL_DCH_OPEN_ST)) {
+ found = true;
+ *p_mdl_idx = i;
+ break;
}
+ }
#if (BTA_HL_DEBUG == TRUE)
- if (found)
- {
- APPL_TRACE_DEBUG("bta_hl_find_an_opened_mdl_idx found=%d app_idx=%d mcl_idx=%d mdl_idx=%d",
- found, app_idx, mcl_idx, i);
- }
+ if (found) {
+ APPL_TRACE_DEBUG(
+ "bta_hl_find_an_opened_mdl_idx found=%d app_idx=%d mcl_idx=%d "
+ "mdl_idx=%d",
+ found, app_idx, mcl_idx, i);
+ }
#endif
- return found;
+ return found;
}
/*******************************************************************************
@@ -894,32 +820,30 @@
*
******************************************************************************/
bool bta_hl_find_dch_setup_mdl_idx(uint8_t app_idx, uint8_t mcl_idx,
- uint8_t *p_mdl_idx)
-{
- tBTA_HL_MCL_CB *p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
- bool found=false;
- uint8_t i;
+ uint8_t* p_mdl_idx) {
+ tBTA_HL_MCL_CB* p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
+ bool found = false;
+ uint8_t i;
- for (i=0; i < BTA_HL_NUM_MDLS_PER_MCL ; i ++)
- {
- if (p_mcb->mdl[i].in_use &&
- (p_mcb->mdl[i].dch_state == BTA_HL_DCH_OPENING_ST))
- {
- found = true;
- *p_mdl_idx = i;
- break;
- }
+ for (i = 0; i < BTA_HL_NUM_MDLS_PER_MCL; i++) {
+ if (p_mcb->mdl[i].in_use &&
+ (p_mcb->mdl[i].dch_state == BTA_HL_DCH_OPENING_ST)) {
+ found = true;
+ *p_mdl_idx = i;
+ break;
}
+ }
#if (BTA_HL_DEBUG == TRUE)
- if (found)
- {
- APPL_TRACE_DEBUG("bta_hl_find_dch_setup_mdl_idx found=%d app_idx=%d mcl_idx=%d mdl_idx=%d",
- found, app_idx, mcl_idx, i);
- }
+ if (found) {
+ APPL_TRACE_DEBUG(
+ "bta_hl_find_dch_setup_mdl_idx found=%d app_idx=%d mcl_idx=%d "
+ "mdl_idx=%d",
+ found, app_idx, mcl_idx, i);
+ }
#endif
- return found;
+ return found;
}
/*******************************************************************************
@@ -931,37 +855,31 @@
* Returns bool true-found
*
******************************************************************************/
-bool bta_hl_find_an_in_use_mcl_idx(uint8_t app_idx,
- uint8_t *p_mcl_idx)
-{
- tBTA_HL_MCL_CB *p_mcb;
- bool found=false;
- uint8_t i;
+bool bta_hl_find_an_in_use_mcl_idx(uint8_t app_idx, uint8_t* p_mcl_idx) {
+ tBTA_HL_MCL_CB* p_mcb;
+ bool found = false;
+ uint8_t i;
- for (i=0; i < BTA_HL_NUM_MCLS ; i ++)
- {
- p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, i);
- if (p_mcb->in_use &&
- (p_mcb->cch_state != BTA_HL_CCH_IDLE_ST))
- {
- found = true;
- *p_mcl_idx = i;
- break;
- }
+ for (i = 0; i < BTA_HL_NUM_MCLS; i++) {
+ p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, i);
+ if (p_mcb->in_use && (p_mcb->cch_state != BTA_HL_CCH_IDLE_ST)) {
+ found = true;
+ *p_mcl_idx = i;
+ break;
}
+ }
#if (BTA_HL_DEBUG == TRUE)
- if (found)
- {
- APPL_TRACE_DEBUG("bta_hl_find_an_in_use_mcl_idx found=%d app_idx=%d mcl_idx=%d ",
- found, app_idx, i);
- }
+ if (found) {
+ APPL_TRACE_DEBUG(
+ "bta_hl_find_an_in_use_mcl_idx found=%d app_idx=%d mcl_idx=%d ", found,
+ app_idx, i);
+ }
#endif
- return found;
+ return found;
}
-
/*******************************************************************************
*
* Function bta_hl_find_an_in_use_app_idx
@@ -971,32 +889,28 @@
* Returns bool true-found
*
******************************************************************************/
-bool bta_hl_find_an_in_use_app_idx(uint8_t *p_app_idx)
-{
- tBTA_HL_APP_CB *p_acb ;
- bool found=false;
- uint8_t i;
+bool bta_hl_find_an_in_use_app_idx(uint8_t* p_app_idx) {
+ tBTA_HL_APP_CB* p_acb;
+ bool found = false;
+ uint8_t i;
- for (i=0; i < BTA_HL_NUM_APPS ; i ++)
- {
- p_acb = BTA_HL_GET_APP_CB_PTR(i);
- if (p_acb->in_use)
- {
- found = true;
- *p_app_idx = i;
- break;
- }
+ for (i = 0; i < BTA_HL_NUM_APPS; i++) {
+ p_acb = BTA_HL_GET_APP_CB_PTR(i);
+ if (p_acb->in_use) {
+ found = true;
+ *p_app_idx = i;
+ break;
}
+ }
#if (BTA_HL_DEBUG == TRUE)
- if (found)
- {
- APPL_TRACE_DEBUG("bta_hl_find_an_in_use_app_idx found=%d app_idx=%d ",
- found, i);
- }
+ if (found) {
+ APPL_TRACE_DEBUG("bta_hl_find_an_in_use_app_idx found=%d app_idx=%d ",
+ found, i);
+ }
#endif
- return found;
+ return found;
}
/*******************************************************************************
*
@@ -1008,31 +922,26 @@
* Returns bool true-found
*
******************************************************************************/
-bool bta_hl_find_app_idx(uint8_t app_id, uint8_t *p_app_idx)
-{
- bool found=false;
- uint8_t i;
+bool bta_hl_find_app_idx(uint8_t app_id, uint8_t* p_app_idx) {
+ bool found = false;
+ uint8_t i;
- for (i=0; i < BTA_HL_NUM_APPS ; i ++)
- {
- if (bta_hl_cb.acb[i].in_use &&
- (bta_hl_cb.acb[i].app_id == app_id))
- {
- found = true;
- *p_app_idx = i;
- break;
- }
+ for (i = 0; i < BTA_HL_NUM_APPS; i++) {
+ if (bta_hl_cb.acb[i].in_use && (bta_hl_cb.acb[i].app_id == app_id)) {
+ found = true;
+ *p_app_idx = i;
+ break;
}
+ }
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hl_find_app_idx found=%d app_id=%d idx=%d ",
- found, app_id, i);
+ APPL_TRACE_DEBUG("bta_hl_find_app_idx found=%d app_id=%d idx=%d ", found,
+ app_id, i);
#endif
- return found;
+ return found;
}
-
/*******************************************************************************
*
* Function bta_hl_find_app_idx_using_handle
@@ -1044,34 +953,30 @@
*
******************************************************************************/
bool bta_hl_find_app_idx_using_handle(tBTA_HL_APP_HANDLE app_handle,
- uint8_t *p_app_idx)
-{
- bool found=false;
- uint8_t i;
+ uint8_t* p_app_idx) {
+ bool found = false;
+ uint8_t i;
- for (i=0; i < BTA_HL_NUM_APPS ; i ++)
- {
- if (bta_hl_cb.acb[i].in_use &&
- (bta_hl_cb.acb[i].app_handle == app_handle))
- {
- found = true;
- *p_app_idx = i;
- break;
- }
+ for (i = 0; i < BTA_HL_NUM_APPS; i++) {
+ if (bta_hl_cb.acb[i].in_use &&
+ (bta_hl_cb.acb[i].app_handle == app_handle)) {
+ found = true;
+ *p_app_idx = i;
+ break;
}
+ }
#if (BTA_HL_DEBUG == TRUE)
- if (!found)
- {
- APPL_TRACE_DEBUG("bta_hl_find_app_idx_using_mca_handle status=%d handle=%d app_idx=%d ",
- found, app_handle , i);
- }
+ if (!found) {
+ APPL_TRACE_DEBUG(
+ "bta_hl_find_app_idx_using_mca_handle status=%d handle=%d app_idx=%d ",
+ found, app_handle, i);
+ }
#endif
- return found;
+ return found;
}
-
/*******************************************************************************
*
* Function bta_hl_find_mcl_idx_using_handle
@@ -1082,39 +987,34 @@
* Returns bool true-found
*
******************************************************************************/
-bool bta_hl_find_mcl_idx_using_handle( tBTA_HL_MCL_HANDLE mcl_handle,
- uint8_t *p_app_idx, uint8_t *p_mcl_idx)
-{
- tBTA_HL_APP_CB *p_acb;
- bool found=false;
- uint8_t i = 0,j = 0;
+bool bta_hl_find_mcl_idx_using_handle(tBTA_HL_MCL_HANDLE mcl_handle,
+ uint8_t* p_app_idx, uint8_t* p_mcl_idx) {
+ tBTA_HL_APP_CB* p_acb;
+ bool found = false;
+ uint8_t i = 0, j = 0;
- for (i=0; i<BTA_HL_NUM_APPS; i++)
- {
- p_acb = BTA_HL_GET_APP_CB_PTR(i);
- if (p_acb->in_use)
- {
- for (j=0; j < BTA_HL_NUM_MCLS ; j++)
- {
- if ( p_acb->mcb[j].mcl_handle == mcl_handle )
- {
- found = true;
- *p_app_idx = i;
- *p_mcl_idx = j;
- break;
- }
- }
+ for (i = 0; i < BTA_HL_NUM_APPS; i++) {
+ p_acb = BTA_HL_GET_APP_CB_PTR(i);
+ if (p_acb->in_use) {
+ for (j = 0; j < BTA_HL_NUM_MCLS; j++) {
+ if (p_acb->mcb[j].mcl_handle == mcl_handle) {
+ found = true;
+ *p_app_idx = i;
+ *p_mcl_idx = j;
+ break;
}
+ }
}
+ }
#if (BTA_HL_DEBUG == TRUE)
- if (!found)
- {
- APPL_TRACE_DEBUG("bta_hl_find_mcl_idx_using_handle found=%d app_idx=%d mcl_idx=%d",
- found, i, j);
- }
+ if (!found) {
+ APPL_TRACE_DEBUG(
+ "bta_hl_find_mcl_idx_using_handle found=%d app_idx=%d mcl_idx=%d",
+ found, i, j);
+ }
#endif
- return found;
+ return found;
}
/*******************************************************************************
@@ -1127,34 +1027,29 @@
* Returns bool true-found
*
******************************************************************************/
-bool bta_hl_find_mcl_idx(uint8_t app_idx, BD_ADDR p_bd_addr, uint8_t *p_mcl_idx)
-{
- bool found=false;
- uint8_t i;
+bool bta_hl_find_mcl_idx(uint8_t app_idx, BD_ADDR p_bd_addr,
+ uint8_t* p_mcl_idx) {
+ bool found = false;
+ uint8_t i;
- for (i=0; i < BTA_HL_NUM_MCLS ; i ++)
- {
- if (bta_hl_cb.acb[app_idx].mcb[i].in_use &&
- (!memcmp (bta_hl_cb.acb[app_idx].mcb[i].bd_addr, p_bd_addr, BD_ADDR_LEN)))
- {
- found = true;
- *p_mcl_idx = i;
- break;
- }
+ for (i = 0; i < BTA_HL_NUM_MCLS; i++) {
+ if (bta_hl_cb.acb[app_idx].mcb[i].in_use &&
+ (!memcmp(bta_hl_cb.acb[app_idx].mcb[i].bd_addr, p_bd_addr,
+ BD_ADDR_LEN))) {
+ found = true;
+ *p_mcl_idx = i;
+ break;
}
+ }
#if (BTA_HL_DEBUG == TRUE)
- if (!found)
- {
- APPL_TRACE_DEBUG("bta_hl_find_mcl_idx found=%d idx=%d",
- found, i);
- }
+ if (!found) {
+ APPL_TRACE_DEBUG("bta_hl_find_mcl_idx found=%d idx=%d", found, i);
+ }
#endif
- return found;
+ return found;
}
-
-
/*******************************************************************************
*
* Function bta_hl_find_mdl_idx_using_handle
@@ -1166,54 +1061,45 @@
*
******************************************************************************/
bool bta_hl_find_mdl_idx_using_handle(tBTA_HL_MDL_HANDLE mdl_handle,
- uint8_t *p_app_idx,uint8_t *p_mcl_idx,
- uint8_t *p_mdl_idx)
-{
- tBTA_HL_APP_CB *p_acb;
- tBTA_HL_MCL_CB *p_mcb;
- tBTA_HL_MDL_CB *p_dcb;
- bool found=false;
- uint8_t i,j,k;
+ uint8_t* p_app_idx, uint8_t* p_mcl_idx,
+ uint8_t* p_mdl_idx) {
+ tBTA_HL_APP_CB* p_acb;
+ tBTA_HL_MCL_CB* p_mcb;
+ tBTA_HL_MDL_CB* p_dcb;
+ bool found = false;
+ uint8_t i, j, k;
- for (i=0; i < BTA_HL_NUM_APPS ; i ++)
- {
- p_acb = BTA_HL_GET_APP_CB_PTR(i);
- if (p_acb->in_use)
- {
- for (j=0; j< BTA_HL_NUM_MCLS; j++)
- {
- p_mcb = BTA_HL_GET_MCL_CB_PTR(i,j);
- if (p_mcb->in_use)
- {
- for (k=0; k< BTA_HL_NUM_MDLS_PER_MCL; k++)
- {
- p_dcb = BTA_HL_GET_MDL_CB_PTR(i,j,k);
- if (p_dcb->in_use)
- {
- if (p_dcb->mdl_handle == mdl_handle)
- {
- found = true;
- *p_app_idx = i;
- *p_mcl_idx =j;
- *p_mdl_idx = k;
- break;
- }
- }
- }
- }
+ for (i = 0; i < BTA_HL_NUM_APPS; i++) {
+ p_acb = BTA_HL_GET_APP_CB_PTR(i);
+ if (p_acb->in_use) {
+ for (j = 0; j < BTA_HL_NUM_MCLS; j++) {
+ p_mcb = BTA_HL_GET_MCL_CB_PTR(i, j);
+ if (p_mcb->in_use) {
+ for (k = 0; k < BTA_HL_NUM_MDLS_PER_MCL; k++) {
+ p_dcb = BTA_HL_GET_MDL_CB_PTR(i, j, k);
+ if (p_dcb->in_use) {
+ if (p_dcb->mdl_handle == mdl_handle) {
+ found = true;
+ *p_app_idx = i;
+ *p_mcl_idx = j;
+ *p_mdl_idx = k;
+ break;
+ }
}
+ }
}
+ }
}
-
+ }
#if (BTA_HL_DEBUG == TRUE)
- if (!found)
- {
- APPL_TRACE_DEBUG("bta_hl_find_mdl_idx_using_handle found=%d mdl_handle=%d ",
- found, mdl_handle);
- }
+ if (!found) {
+ APPL_TRACE_DEBUG(
+ "bta_hl_find_mdl_idx_using_handle found=%d mdl_handle=%d ", found,
+ mdl_handle);
+ }
#endif
- return found;
+ return found;
}
/*******************************************************************************
*
@@ -1226,25 +1112,23 @@
* false does not exist
*
******************************************************************************/
-bool bta_hl_is_the_first_reliable_existed(uint8_t app_idx, uint8_t mcl_idx )
-{
- tBTA_HL_MCL_CB *p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
- bool is_existed =false;
- uint8_t i ;
+bool bta_hl_is_the_first_reliable_existed(uint8_t app_idx, uint8_t mcl_idx) {
+ tBTA_HL_MCL_CB* p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
+ bool is_existed = false;
+ uint8_t i;
- for (i=0; i< BTA_HL_NUM_MDLS_PER_MCL; i++)
- {
- if (p_mcb->mdl[i].in_use && p_mcb->mdl[i].is_the_first_reliable)
- {
- is_existed = true;
- break;
- }
+ for (i = 0; i < BTA_HL_NUM_MDLS_PER_MCL; i++) {
+ if (p_mcb->mdl[i].in_use && p_mcb->mdl[i].is_the_first_reliable) {
+ is_existed = true;
+ break;
}
+ }
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hl_is_the_first_reliable_existed is_existed=%d ",is_existed );
+ APPL_TRACE_DEBUG("bta_hl_is_the_first_reliable_existed is_existed=%d ",
+ is_existed);
#endif
- return is_existed;
+ return is_existed;
}
/*******************************************************************************
@@ -1258,55 +1142,45 @@
* false not found
*
******************************************************************************/
-bool bta_hl_find_non_active_mdl_cfg(uint8_t app_idx, uint8_t start_mdl_cfg_idx,
- uint8_t *p_mdl_cfg_idx)
-{
+bool bta_hl_find_non_active_mdl_cfg(uint8_t app_idx, uint8_t start_mdl_cfg_idx,
+ uint8_t* p_mdl_cfg_idx) {
+ tBTA_HL_MCL_CB* p_mcb;
+ tBTA_HL_MDL_CB* p_dcb;
+ tBTA_HL_MDL_CFG* p_mdl;
+ bool mdl_in_use;
+ bool found = false;
+ uint8_t i, j, k;
- tBTA_HL_MCL_CB *p_mcb;
- tBTA_HL_MDL_CB *p_dcb;
- tBTA_HL_MDL_CFG *p_mdl;
- bool mdl_in_use;
- bool found = false;
- uint8_t i,j,k;
+ for (i = start_mdl_cfg_idx; i < BTA_HL_NUM_MDL_CFGS; i++) {
+ mdl_in_use = false;
+ p_mdl = BTA_HL_GET_MDL_CFG_PTR(app_idx, i);
+ for (j = 0; j < BTA_HL_NUM_MCLS; j++) {
+ p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, j);
+ if (p_mcb->in_use &&
+ !memcmp(p_mdl->peer_bd_addr, p_mcb->bd_addr, BD_ADDR_LEN)) {
+ for (k = 0; k < BTA_HL_NUM_MDLS_PER_MCL; k++) {
+ p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, j, k);
- for (i = start_mdl_cfg_idx; i< BTA_HL_NUM_MDL_CFGS; i++)
- {
- mdl_in_use = false;
- p_mdl = BTA_HL_GET_MDL_CFG_PTR(app_idx, i);
- for (j=0; j< BTA_HL_NUM_MCLS; j++)
- {
- p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, j);
- if (p_mcb->in_use &&
- !memcmp(p_mdl->peer_bd_addr,p_mcb->bd_addr,BD_ADDR_LEN))
- {
-
- for (k=0; k<BTA_HL_NUM_MDLS_PER_MCL; k++)
- {
- p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, j, k);
-
- if (p_dcb->in_use && p_mdl->mdl_id == p_dcb->mdl_id)
- {
- mdl_in_use = true;
- break;
- }
- }
- }
-
- if (mdl_in_use)
- {
- break;
- }
- }
-
- if (!mdl_in_use)
- {
- *p_mdl_cfg_idx = i;
- found = true;
+ if (p_dcb->in_use && p_mdl->mdl_id == p_dcb->mdl_id) {
+ mdl_in_use = true;
break;
+ }
}
+ }
+
+ if (mdl_in_use) {
+ break;
+ }
}
- return found;
+ if (!mdl_in_use) {
+ *p_mdl_cfg_idx = i;
+ found = true;
+ break;
+ }
+ }
+
+ return found;
}
/*******************************************************************************
@@ -1319,87 +1193,72 @@
* false not found
*
******************************************************************************/
-bool bta_hl_find_avail_mdl_cfg_idx(uint8_t app_idx, UNUSED_ATTR uint8_t mcl_idx,
- uint8_t *p_mdl_cfg_idx)
-{
- tBTA_HL_MDL_CFG *p_mdl, *p_mdl1, *p_mdl2;
- uint8_t i;
- bool found=false;
- uint8_t first_mdl_cfg_idx, second_mdl_cfg_idx, older_mdl_cfg_idx;
- bool done;
+bool bta_hl_find_avail_mdl_cfg_idx(uint8_t app_idx, UNUSED_ATTR uint8_t mcl_idx,
+ uint8_t* p_mdl_cfg_idx) {
+ tBTA_HL_MDL_CFG *p_mdl, *p_mdl1, *p_mdl2;
+ uint8_t i;
+ bool found = false;
+ uint8_t first_mdl_cfg_idx, second_mdl_cfg_idx, older_mdl_cfg_idx;
+ bool done;
- for (i=0; i< BTA_HL_NUM_MDL_CFGS; i++)
- {
- p_mdl = BTA_HL_GET_MDL_CFG_PTR(app_idx, i);
- if (!p_mdl->active )
- {
- /* found an unused space to store mdl cfg*/
- found=true;
- *p_mdl_cfg_idx =i;
- break;
- }
+ for (i = 0; i < BTA_HL_NUM_MDL_CFGS; i++) {
+ p_mdl = BTA_HL_GET_MDL_CFG_PTR(app_idx, i);
+ if (!p_mdl->active) {
+ /* found an unused space to store mdl cfg*/
+ found = true;
+ *p_mdl_cfg_idx = i;
+ break;
}
+ }
- if (!found)
- {
- /* all available mdl cfg spaces are in use so we need to find the mdl cfg which is
- not currently in use and has the the oldest time stamp to remove*/
+ if (!found) {
+ /* all available mdl cfg spaces are in use so we need to find the mdl cfg
+ which is
+ not currently in use and has the the oldest time stamp to remove*/
- found = true;
- if (bta_hl_find_non_active_mdl_cfg(app_idx,0, &first_mdl_cfg_idx))
- {
- if (bta_hl_find_non_active_mdl_cfg(app_idx,(uint8_t) (first_mdl_cfg_idx+1), &second_mdl_cfg_idx))
- {
- done = false;
- while (!done)
- {
- p_mdl1 = BTA_HL_GET_MDL_CFG_PTR(app_idx, first_mdl_cfg_idx);
- p_mdl2 = BTA_HL_GET_MDL_CFG_PTR(app_idx, second_mdl_cfg_idx);
+ found = true;
+ if (bta_hl_find_non_active_mdl_cfg(app_idx, 0, &first_mdl_cfg_idx)) {
+ if (bta_hl_find_non_active_mdl_cfg(
+ app_idx, (uint8_t)(first_mdl_cfg_idx + 1), &second_mdl_cfg_idx)) {
+ done = false;
+ while (!done) {
+ p_mdl1 = BTA_HL_GET_MDL_CFG_PTR(app_idx, first_mdl_cfg_idx);
+ p_mdl2 = BTA_HL_GET_MDL_CFG_PTR(app_idx, second_mdl_cfg_idx);
- if (p_mdl1->time < p_mdl2->time)
- {
- older_mdl_cfg_idx = first_mdl_cfg_idx;
- }
- else
- {
- older_mdl_cfg_idx = second_mdl_cfg_idx;
- }
+ if (p_mdl1->time < p_mdl2->time) {
+ older_mdl_cfg_idx = first_mdl_cfg_idx;
+ } else {
+ older_mdl_cfg_idx = second_mdl_cfg_idx;
+ }
- if (bta_hl_find_non_active_mdl_cfg(app_idx,(uint8_t) (second_mdl_cfg_idx+1), &second_mdl_cfg_idx))
- {
- first_mdl_cfg_idx = older_mdl_cfg_idx;
- }
- else
- {
- done = true;
- }
- }
-
- *p_mdl_cfg_idx = older_mdl_cfg_idx;
-
- }
- else
- {
- *p_mdl_cfg_idx = first_mdl_cfg_idx;
- }
-
+ if (bta_hl_find_non_active_mdl_cfg(app_idx,
+ (uint8_t)(second_mdl_cfg_idx + 1),
+ &second_mdl_cfg_idx)) {
+ first_mdl_cfg_idx = older_mdl_cfg_idx;
+ } else {
+ done = true;
+ }
}
- else
- {
- found = false;
- }
+
+ *p_mdl_cfg_idx = older_mdl_cfg_idx;
+
+ } else {
+ *p_mdl_cfg_idx = first_mdl_cfg_idx;
+ }
+
+ } else {
+ found = false;
}
+ }
#if (BTA_HL_DEBUG == TRUE)
- if (!found)
- {
- APPL_TRACE_DEBUG("bta_hl_find_avail_mdl_cfg_idx found=%d mdl_cfg_idx=%d ",found, *p_mdl_cfg_idx );
- }
+ if (!found) {
+ APPL_TRACE_DEBUG("bta_hl_find_avail_mdl_cfg_idx found=%d mdl_cfg_idx=%d ",
+ found, *p_mdl_cfg_idx);
+ }
#endif
- return found;
-
-
+ return found;
}
/*******************************************************************************
@@ -1413,44 +1272,38 @@
* false not found
*
******************************************************************************/
-bool bta_hl_find_mdl_cfg_idx(uint8_t app_idx, uint8_t mcl_idx,
- tBTA_HL_MDL_ID mdl_id, uint8_t *p_mdl_cfg_idx)
-{
- tBTA_HL_MCL_CB *p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
- tBTA_HL_MDL_CFG *p_mdl;
- uint8_t i ;
- bool found=false;
+bool bta_hl_find_mdl_cfg_idx(uint8_t app_idx, uint8_t mcl_idx,
+ tBTA_HL_MDL_ID mdl_id, uint8_t* p_mdl_cfg_idx) {
+ tBTA_HL_MCL_CB* p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
+ tBTA_HL_MDL_CFG* p_mdl;
+ uint8_t i;
+ bool found = false;
- *p_mdl_cfg_idx = 0;
- for (i=0; i< BTA_HL_NUM_MDL_CFGS; i++)
- {
- p_mdl = BTA_HL_GET_MDL_CFG_PTR(app_idx, i);
- if(p_mdl->active)
- APPL_TRACE_DEBUG("bta_hl_find_mdl_cfg_idx: mdl_id =%d, p_mdl->mdl_id=%d",mdl_id,
- p_mdl->mdl_id);
- if (p_mdl->active &&
- (!memcmp (p_mcb->bd_addr, p_mdl->peer_bd_addr, BD_ADDR_LEN))&&
- (p_mdl->mdl_id == mdl_id))
- {
- found=true;
- *p_mdl_cfg_idx =i;
- break;
- }
+ *p_mdl_cfg_idx = 0;
+ for (i = 0; i < BTA_HL_NUM_MDL_CFGS; i++) {
+ p_mdl = BTA_HL_GET_MDL_CFG_PTR(app_idx, i);
+ if (p_mdl->active)
+ APPL_TRACE_DEBUG("bta_hl_find_mdl_cfg_idx: mdl_id =%d, p_mdl->mdl_id=%d",
+ mdl_id, p_mdl->mdl_id);
+ if (p_mdl->active &&
+ (!memcmp(p_mcb->bd_addr, p_mdl->peer_bd_addr, BD_ADDR_LEN)) &&
+ (p_mdl->mdl_id == mdl_id)) {
+ found = true;
+ *p_mdl_cfg_idx = i;
+ break;
}
+ }
#if (BTA_HL_DEBUG == TRUE)
- if (!found)
- {
- APPL_TRACE_DEBUG("bta_hl_find_mdl_cfg_idx found=%d mdl_cfg_idx=%d ",found, i );
- }
+ if (!found) {
+ APPL_TRACE_DEBUG("bta_hl_find_mdl_cfg_idx found=%d mdl_cfg_idx=%d ", found,
+ i);
+ }
#endif
- return found;
-
-
+ return found;
}
-
/*******************************************************************************
*
* Function bta_hl_get_cur_time
@@ -1461,62 +1314,48 @@
* false not found
*
******************************************************************************/
-bool bta_hl_get_cur_time(uint8_t app_idx, uint8_t *p_cur_time)
-{
- tBTA_HL_MDL_CFG *p_mdl;
- uint8_t i, j, time_latest, time;
- bool found=false, result=true;
+bool bta_hl_get_cur_time(uint8_t app_idx, uint8_t* p_cur_time) {
+ tBTA_HL_MDL_CFG* p_mdl;
+ uint8_t i, j, time_latest, time;
+ bool found = false, result = true;
- for (i=0; i< BTA_HL_NUM_MDL_CFGS; i++)
- {
- p_mdl = BTA_HL_GET_MDL_CFG_PTR(app_idx, i);
- if (p_mdl->active)
- {
- found=true;
- time_latest = p_mdl->time;
- for (j=(i+1); j< BTA_HL_NUM_MDL_CFGS; j++ )
- {
- p_mdl = BTA_HL_GET_MDL_CFG_PTR(app_idx, j);
- if (p_mdl->active)
- {
- time = p_mdl->time;
- if (time > time_latest)
- {
- time_latest = time;
- }
- }
- }
- break;
+ for (i = 0; i < BTA_HL_NUM_MDL_CFGS; i++) {
+ p_mdl = BTA_HL_GET_MDL_CFG_PTR(app_idx, i);
+ if (p_mdl->active) {
+ found = true;
+ time_latest = p_mdl->time;
+ for (j = (i + 1); j < BTA_HL_NUM_MDL_CFGS; j++) {
+ p_mdl = BTA_HL_GET_MDL_CFG_PTR(app_idx, j);
+ if (p_mdl->active) {
+ time = p_mdl->time;
+ if (time > time_latest) {
+ time_latest = time;
+ }
}
+ }
+ break;
}
+ }
-
- if (found)
- {
- if (time_latest < BTA_HL_MAX_TIME)
- {
- *p_cur_time = time_latest+1;
- }
- else
- {
- /* need to wrap around */
- result = false;
- }
+ if (found) {
+ if (time_latest < BTA_HL_MAX_TIME) {
+ *p_cur_time = time_latest + 1;
+ } else {
+ /* need to wrap around */
+ result = false;
}
- else
- {
- *p_cur_time = BTA_HL_MIN_TIME;
- }
+ } else {
+ *p_cur_time = BTA_HL_MIN_TIME;
+ }
#if (BTA_HL_DEBUG == TRUE)
- if (!result)
- {
- APPL_TRACE_DEBUG("bta_hl_get_cur_time result=%s cur_time=%d",
- (result?"OK":"FAIL"), *p_cur_time);
- }
+ if (!result) {
+ APPL_TRACE_DEBUG("bta_hl_get_cur_time result=%s cur_time=%d",
+ (result ? "OK" : "FAIL"), *p_cur_time);
+ }
#endif
- return result;
+ return result;
}
/*******************************************************************************
@@ -1530,23 +1369,20 @@
* false not found
*
******************************************************************************/
-void bta_hl_sort_cfg_time_idx(uint8_t app_idx, uint8_t *a, uint8_t n)
-{
- tBTA_HL_APP_CB *p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
- uint8_t temp_time, temp_idx;
- int16_t i, j;
- for (i = 1; i < n; ++i)
- {
- temp_idx = a[i];
- temp_time = p_acb->mdl_cfg[temp_idx].time;
- j = i - 1;
- while ((j >= 0) && (temp_time < p_acb->mdl_cfg[a[j]].time))
- {
- a[j + 1] = a[j];
- --j;
- }
- a[j + 1] = temp_idx;
+void bta_hl_sort_cfg_time_idx(uint8_t app_idx, uint8_t* a, uint8_t n) {
+ tBTA_HL_APP_CB* p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
+ uint8_t temp_time, temp_idx;
+ int16_t i, j;
+ for (i = 1; i < n; ++i) {
+ temp_idx = a[i];
+ temp_time = p_acb->mdl_cfg[temp_idx].time;
+ j = i - 1;
+ while ((j >= 0) && (temp_time < p_acb->mdl_cfg[a[j]].time)) {
+ a[j + 1] = a[j];
+ --j;
}
+ a[j + 1] = temp_idx;
+ }
}
/*******************************************************************************
@@ -1560,47 +1396,34 @@
* false not found
*
******************************************************************************/
-void bta_hl_compact_mdl_cfg_time(uint8_t app_idx, uint8_t mdep_id)
-{
- tBTA_HL_MDL_CFG *p_mdl;
- uint8_t i, time_min, cnt=0;
- uint8_t s_arr[BTA_HL_NUM_MDL_CFGS];
+void bta_hl_compact_mdl_cfg_time(uint8_t app_idx, uint8_t mdep_id) {
+ tBTA_HL_MDL_CFG* p_mdl;
+ uint8_t i, time_min, cnt = 0;
+ uint8_t s_arr[BTA_HL_NUM_MDL_CFGS];
-
- for (i=0; i< BTA_HL_NUM_MDL_CFGS; i++)
- {
- p_mdl = BTA_HL_GET_MDL_CFG_PTR(app_idx, i);
- if (p_mdl->active )
- {
- s_arr[cnt]= i;
- cnt++;
- }
+ for (i = 0; i < BTA_HL_NUM_MDL_CFGS; i++) {
+ p_mdl = BTA_HL_GET_MDL_CFG_PTR(app_idx, i);
+ if (p_mdl->active) {
+ s_arr[cnt] = i;
+ cnt++;
}
-
-
+ }
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hl_compact_mdl_cfg_time cnt=%d ",cnt );
+ APPL_TRACE_DEBUG("bta_hl_compact_mdl_cfg_time cnt=%d ", cnt);
#endif
-
- if (cnt)
- {
- bta_hl_sort_cfg_time_idx(app_idx, s_arr, cnt);
- time_min = BTA_HL_MIN_TIME;
- for (i=0;i<cnt; i++)
- {
- p_mdl = BTA_HL_GET_MDL_CFG_PTR(app_idx, s_arr[i]);
- p_mdl->time = time_min + i;
- bta_hl_co_save_mdl(mdep_id, s_arr[i], p_mdl);
- }
+ if (cnt) {
+ bta_hl_sort_cfg_time_idx(app_idx, s_arr, cnt);
+ time_min = BTA_HL_MIN_TIME;
+ for (i = 0; i < cnt; i++) {
+ p_mdl = BTA_HL_GET_MDL_CFG_PTR(app_idx, s_arr[i]);
+ p_mdl->time = time_min + i;
+ bta_hl_co_save_mdl(mdep_id, s_arr[i], p_mdl);
}
-
-
+ }
}
-
-
/*******************************************************************************
*
* Function bta_hl_is_mdl_exsit_in_mcl
@@ -1612,36 +1435,28 @@
* false does not exist
*
******************************************************************************/
-bool bta_hl_is_mdl_exsit_in_mcl(uint8_t app_idx, BD_ADDR bd_addr,
- tBTA_HL_MDL_ID mdl_id)
-{
- tBTA_HL_MDL_CFG *p_mdl;
- bool found = false;
- uint8_t i;
+bool bta_hl_is_mdl_exsit_in_mcl(uint8_t app_idx, BD_ADDR bd_addr,
+ tBTA_HL_MDL_ID mdl_id) {
+ tBTA_HL_MDL_CFG* p_mdl;
+ bool found = false;
+ uint8_t i;
- for (i = 0; i< BTA_HL_NUM_MDL_CFGS; i++)
- {
- p_mdl = BTA_HL_GET_MDL_CFG_PTR(app_idx, i);
- if (p_mdl->active &&
- !memcmp(p_mdl->peer_bd_addr, bd_addr,BD_ADDR_LEN))
- {
- if (mdl_id != BTA_HL_DELETE_ALL_MDL_IDS)
- {
- if (p_mdl->mdl_id == mdl_id)
- {
- found = true;
- break;
- }
- }
- else
- {
- found = true;
- break;
- }
+ for (i = 0; i < BTA_HL_NUM_MDL_CFGS; i++) {
+ p_mdl = BTA_HL_GET_MDL_CFG_PTR(app_idx, i);
+ if (p_mdl->active && !memcmp(p_mdl->peer_bd_addr, bd_addr, BD_ADDR_LEN)) {
+ if (mdl_id != BTA_HL_DELETE_ALL_MDL_IDS) {
+ if (p_mdl->mdl_id == mdl_id) {
+ found = true;
+ break;
}
+ } else {
+ found = true;
+ break;
+ }
}
+ }
- return found;
+ return found;
}
/*******************************************************************************
@@ -1654,48 +1469,40 @@
* false Failed
*
******************************************************************************/
-bool bta_hl_delete_mdl_cfg(uint8_t app_idx, BD_ADDR bd_addr,
- tBTA_HL_MDL_ID mdl_id)
-{
- tBTA_HL_MDL_CFG *p_mdl;
- bool success = false;
- uint8_t i;
+bool bta_hl_delete_mdl_cfg(uint8_t app_idx, BD_ADDR bd_addr,
+ tBTA_HL_MDL_ID mdl_id) {
+ tBTA_HL_MDL_CFG* p_mdl;
+ bool success = false;
+ uint8_t i;
- for (i = 0; i< BTA_HL_NUM_MDL_CFGS; i++)
- {
- p_mdl = BTA_HL_GET_MDL_CFG_PTR(app_idx, i);
- if (p_mdl->active &&
- !memcmp(p_mdl->peer_bd_addr, bd_addr,BD_ADDR_LEN))
- {
- if (mdl_id != BTA_HL_DELETE_ALL_MDL_IDS)
- {
- if (p_mdl->mdl_id == mdl_id)
- {
- bta_hl_co_delete_mdl(p_mdl->local_mdep_id, i);
- memset(p_mdl, 0, sizeof(tBTA_HL_MDL_CFG));
- success = true;
- break;
- }
- }
- else
- {
- bta_hl_co_delete_mdl(p_mdl->local_mdep_id, i);
- memset(p_mdl, 0, sizeof(tBTA_HL_MDL_CFG));
- success = true;
- }
+ for (i = 0; i < BTA_HL_NUM_MDL_CFGS; i++) {
+ p_mdl = BTA_HL_GET_MDL_CFG_PTR(app_idx, i);
+ if (p_mdl->active && !memcmp(p_mdl->peer_bd_addr, bd_addr, BD_ADDR_LEN)) {
+ if (mdl_id != BTA_HL_DELETE_ALL_MDL_IDS) {
+ if (p_mdl->mdl_id == mdl_id) {
+ bta_hl_co_delete_mdl(p_mdl->local_mdep_id, i);
+ memset(p_mdl, 0, sizeof(tBTA_HL_MDL_CFG));
+ success = true;
+ break;
}
+ } else {
+ bta_hl_co_delete_mdl(p_mdl->local_mdep_id, i);
+ memset(p_mdl, 0, sizeof(tBTA_HL_MDL_CFG));
+ success = true;
+ }
}
+ }
- return success;
+ return success;
}
-
/*******************************************************************************
*
* Function bta_hl_is_mdl_value_valid
*
*
- * Description This function checks the specified MDL ID is in valid range or not
+ * Description This function checks the specified MDL ID is in valid range or
+ *not
*
* Returns bool - true Success
* false Failed
@@ -1706,26 +1513,20 @@
* 0xFFFF indicates all MDLs (for delete operation only)
*
******************************************************************************/
-bool bta_hl_is_mdl_value_valid(tBTA_HL_MDL_ID mdl_id)
-{
- bool status = true;
+bool bta_hl_is_mdl_value_valid(tBTA_HL_MDL_ID mdl_id) {
+ bool status = true;
- if (mdl_id != BTA_HL_DELETE_ALL_MDL_IDS)
- {
- if (mdl_id != 0)
- {
- if (mdl_id > BTA_HL_MAX_MDL_VAL )
- {
- status = false;
- }
- }
- else
- {
- status = false;
- }
+ if (mdl_id != BTA_HL_DELETE_ALL_MDL_IDS) {
+ if (mdl_id != 0) {
+ if (mdl_id > BTA_HL_MAX_MDL_VAL) {
+ status = false;
+ }
+ } else {
+ status = false;
}
+ }
- return status;
+ return status;
}
/*******************************************************************************
@@ -1739,35 +1540,31 @@
* false not found
*
******************************************************************************/
-bool bta_hl_find_mdep_cfg_idx(uint8_t app_idx, tBTA_HL_MDEP_ID local_mdep_id,
- uint8_t *p_mdep_cfg_idx)
-{
- tBTA_HL_APP_CB *p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
- tBTA_HL_SUP_FEATURE *p_sup_feature= &p_acb->sup_feature;
- bool found =false;
- uint8_t i;
+bool bta_hl_find_mdep_cfg_idx(uint8_t app_idx, tBTA_HL_MDEP_ID local_mdep_id,
+ uint8_t* p_mdep_cfg_idx) {
+ tBTA_HL_APP_CB* p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
+ tBTA_HL_SUP_FEATURE* p_sup_feature = &p_acb->sup_feature;
+ bool found = false;
+ uint8_t i;
- for (i=0; i< p_sup_feature->num_of_mdeps; i++)
- {
- if ( p_sup_feature->mdep[i].mdep_id == local_mdep_id)
- {
- found = true;
- *p_mdep_cfg_idx = i;
- break;
- }
+ for (i = 0; i < p_sup_feature->num_of_mdeps; i++) {
+ if (p_sup_feature->mdep[i].mdep_id == local_mdep_id) {
+ found = true;
+ *p_mdep_cfg_idx = i;
+ break;
}
+ }
#if (BTA_HL_DEBUG == TRUE)
- if (!found)
- {
- APPL_TRACE_DEBUG("bta_hl_find_mdep_cfg_idx found=%d mdep_idx=%d local_mdep_id=%d ",
- found,i, local_mdep_id );
- }
+ if (!found) {
+ APPL_TRACE_DEBUG(
+ "bta_hl_find_mdep_cfg_idx found=%d mdep_idx=%d local_mdep_id=%d ",
+ found, i, local_mdep_id);
+ }
#endif
- return found;
+ return found;
}
-
/*******************************************************************************
*
* Function bta_hl_find_rxtx_apdu_size
@@ -1779,41 +1576,33 @@
*
******************************************************************************/
void bta_hl_find_rxtx_apdu_size(uint8_t app_idx, uint8_t mdep_cfg_idx,
- uint16_t *p_rx_apu_size,
- uint16_t *p_tx_apu_size)
-{
- tBTA_HL_APP_CB *p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
- tBTA_HL_MDEP_CFG *p_mdep_cfg;
- uint8_t i;
- uint16_t max_rx_apdu_size=0, max_tx_apdu_size=0;
+ uint16_t* p_rx_apu_size,
+ uint16_t* p_tx_apu_size) {
+ tBTA_HL_APP_CB* p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
+ tBTA_HL_MDEP_CFG* p_mdep_cfg;
+ uint8_t i;
+ uint16_t max_rx_apdu_size = 0, max_tx_apdu_size = 0;
- p_mdep_cfg = &p_acb->sup_feature.mdep[mdep_cfg_idx].mdep_cfg;
+ p_mdep_cfg = &p_acb->sup_feature.mdep[mdep_cfg_idx].mdep_cfg;
-
- for (i=0; i< p_mdep_cfg->num_of_mdep_data_types ; i++)
- {
-
- if (max_rx_apdu_size < p_mdep_cfg->data_cfg[i].max_rx_apdu_size)
- {
- max_rx_apdu_size = p_mdep_cfg->data_cfg[i].max_rx_apdu_size;
- }
-
- if (max_tx_apdu_size < p_mdep_cfg->data_cfg[i].max_tx_apdu_size)
- {
- max_tx_apdu_size = p_mdep_cfg->data_cfg[i].max_tx_apdu_size;
- }
+ for (i = 0; i < p_mdep_cfg->num_of_mdep_data_types; i++) {
+ if (max_rx_apdu_size < p_mdep_cfg->data_cfg[i].max_rx_apdu_size) {
+ max_rx_apdu_size = p_mdep_cfg->data_cfg[i].max_rx_apdu_size;
}
+ if (max_tx_apdu_size < p_mdep_cfg->data_cfg[i].max_tx_apdu_size) {
+ max_tx_apdu_size = p_mdep_cfg->data_cfg[i].max_tx_apdu_size;
+ }
+ }
- *p_rx_apu_size = max_rx_apdu_size;
- *p_tx_apu_size = max_tx_apdu_size;
+ *p_rx_apu_size = max_rx_apdu_size;
+ *p_tx_apu_size = max_tx_apdu_size;
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hl_find_rxtx_apdu_size max_rx_apdu_size=%d max_tx_apdu_size=%d ",
- max_rx_apdu_size, max_tx_apdu_size );
+ APPL_TRACE_DEBUG(
+ "bta_hl_find_rxtx_apdu_size max_rx_apdu_size=%d max_tx_apdu_size=%d ",
+ max_rx_apdu_size, max_tx_apdu_size);
#endif
-
-
}
/*******************************************************************************
@@ -1827,80 +1616,78 @@
*
******************************************************************************/
bool bta_hl_validate_peer_cfg(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
- tBTA_HL_MDEP_ID peer_mdep_id,
- tBTA_HL_MDEP_ROLE peer_mdep_role,
- uint8_t sdp_idx)
-{
- tBTA_HL_MCL_CB *p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
- tBTA_HL_MDL_CB *p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
- tBTA_HL_SDP_REC *p_rec;
- bool peer_found =false;
- uint8_t i;
+ tBTA_HL_MDEP_ID peer_mdep_id,
+ tBTA_HL_MDEP_ROLE peer_mdep_role,
+ uint8_t sdp_idx) {
+ tBTA_HL_MCL_CB* p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
+ tBTA_HL_MDL_CB* p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
+ tBTA_HL_SDP_REC* p_rec;
+ bool peer_found = false;
+ uint8_t i;
- APPL_TRACE_DEBUG("bta_hl_validate_peer_cfg sdp_idx=%d app_idx %d", sdp_idx, app_idx);
+ APPL_TRACE_DEBUG("bta_hl_validate_peer_cfg sdp_idx=%d app_idx %d", sdp_idx,
+ app_idx);
+ if (p_dcb->local_mdep_id == BTA_HL_ECHO_TEST_MDEP_ID) {
+ return true;
+ }
- if (p_dcb->local_mdep_id == BTA_HL_ECHO_TEST_MDEP_ID)
- {
- return true;
+ p_rec = &p_mcb->sdp.sdp_rec[sdp_idx];
+ for (i = 0; i < p_rec->num_mdeps; i++) {
+ APPL_TRACE_DEBUG("mdep_id %d peer_mdep_id %d", p_rec->mdep_cfg[i].mdep_id,
+ peer_mdep_id);
+ APPL_TRACE_DEBUG("mdep_role %d peer_mdep_role %d",
+ p_rec->mdep_cfg[i].mdep_role, peer_mdep_role)
+ if ((p_rec->mdep_cfg[i].mdep_id == peer_mdep_id) &&
+ (p_rec->mdep_cfg[i].mdep_role == peer_mdep_role)) {
+ peer_found = true;
+
+ break;
}
-
- p_rec = &p_mcb->sdp.sdp_rec[sdp_idx];
- for (i=0; i< p_rec->num_mdeps; i++)
- {
- APPL_TRACE_DEBUG("mdep_id %d peer_mdep_id %d",p_rec->mdep_cfg[i].mdep_id , peer_mdep_id);
- APPL_TRACE_DEBUG("mdep_role %d peer_mdep_role %d",p_rec->mdep_cfg[i].mdep_role,
- peer_mdep_role)
- if ( (p_rec->mdep_cfg[i].mdep_id == peer_mdep_id) &&
- (p_rec->mdep_cfg[i].mdep_role == peer_mdep_role))
- {
- peer_found = true;
-
- break;
- }
- }
+ }
#if (BTA_HL_DEBUG == TRUE)
- if (!peer_found)
- {
- APPL_TRACE_DEBUG("bta_hl_validate_peer_cfg failed num_mdeps=%d",p_rec->num_mdeps);
- }
+ if (!peer_found) {
+ APPL_TRACE_DEBUG("bta_hl_validate_peer_cfg failed num_mdeps=%d",
+ p_rec->num_mdeps);
+ }
#endif
- return peer_found;
+ return peer_found;
}
/*******************************************************************************
*
* Function bta_hl_chk_local_cfg
*
- * Description This function check whether the local DCH configuration is OK or not
+ * Description This function check whether the local DCH configuration is OK or
+ *not
*
* Returns tBTA_HL_STATUS - OK - local DCH configuration is OK
- * NO_FIRST_RELIABLE - the streaming DCH configuration
- * is not OK and it needs to use
+ * NO_FIRST_RELIABLE - the streaming DCH
+ *configuration
+ * is not OK and it needs to
+ *use
* reliable DCH configuration
*
******************************************************************************/
tBTA_HL_STATUS bta_hl_chk_local_cfg(uint8_t app_idx, uint8_t mcl_idx,
uint8_t mdep_cfg_idx,
- tBTA_HL_DCH_CFG local_cfg)
-{
- tBTA_HL_APP_CB *p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
- tBTA_HL_STATUS status = BTA_HL_STATUS_OK;
+ tBTA_HL_DCH_CFG local_cfg) {
+ tBTA_HL_APP_CB* p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
+ tBTA_HL_STATUS status = BTA_HL_STATUS_OK;
- if ( mdep_cfg_idx &&
- (p_acb->sup_feature.mdep[mdep_cfg_idx].mdep_cfg.mdep_role == BTA_HL_MDEP_ROLE_SOURCE) &&
- (!bta_hl_is_the_first_reliable_existed(app_idx, mcl_idx)) &&
- (local_cfg != BTA_HL_DCH_CFG_RELIABLE))
- {
- status = BTA_HL_STATUS_NO_FIRST_RELIABLE;
- APPL_TRACE_ERROR("BTA_HL_STATUS_INVALID_DCH_CFG");
- }
+ if (mdep_cfg_idx &&
+ (p_acb->sup_feature.mdep[mdep_cfg_idx].mdep_cfg.mdep_role ==
+ BTA_HL_MDEP_ROLE_SOURCE) &&
+ (!bta_hl_is_the_first_reliable_existed(app_idx, mcl_idx)) &&
+ (local_cfg != BTA_HL_DCH_CFG_RELIABLE)) {
+ status = BTA_HL_STATUS_NO_FIRST_RELIABLE;
+ APPL_TRACE_ERROR("BTA_HL_STATUS_INVALID_DCH_CFG");
+ }
- return status;
+ return status;
}
-
/*******************************************************************************
*
* Function bta_hl_validate_reconnect_params
@@ -1911,77 +1698,70 @@
* false validation failed
******************************************************************************/
bool bta_hl_validate_reconnect_params(uint8_t app_idx, uint8_t mcl_idx,
- tBTA_HL_API_DCH_RECONNECT *p_reconnect,
- uint8_t *p_mdep_cfg_idx, uint8_t *p_mdl_cfg_idx)
-{
- tBTA_HL_APP_CB *p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
- tBTA_HL_SUP_FEATURE *p_sup_feature = &p_acb->sup_feature;
- uint8_t num_mdeps;
- uint8_t mdl_cfg_idx;
- bool local_mdep_id_found =false;
- bool mdl_cfg_found =false;
- bool status=false;
- uint8_t i, in_use_mdl_idx = 0;
+ tBTA_HL_API_DCH_RECONNECT* p_reconnect,
+ uint8_t* p_mdep_cfg_idx,
+ uint8_t* p_mdl_cfg_idx) {
+ tBTA_HL_APP_CB* p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
+ tBTA_HL_SUP_FEATURE* p_sup_feature = &p_acb->sup_feature;
+ uint8_t num_mdeps;
+ uint8_t mdl_cfg_idx;
+ bool local_mdep_id_found = false;
+ bool mdl_cfg_found = false;
+ bool status = false;
+ uint8_t i, in_use_mdl_idx = 0;
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hl_validate_reconnect_params mdl_id=%d app_idx=%d", p_reconnect->mdl_id, app_idx);
+ APPL_TRACE_DEBUG("bta_hl_validate_reconnect_params mdl_id=%d app_idx=%d",
+ p_reconnect->mdl_id, app_idx);
#endif
- if (bta_hl_find_mdl_cfg_idx(app_idx, mcl_idx, p_reconnect->mdl_id, &mdl_cfg_idx))
- {
- mdl_cfg_found = true;
- }
+ if (bta_hl_find_mdl_cfg_idx(app_idx, mcl_idx, p_reconnect->mdl_id,
+ &mdl_cfg_idx)) {
+ mdl_cfg_found = true;
+ }
#if (BTA_HL_DEBUG == TRUE)
- if (!mdl_cfg_found)
- {
- APPL_TRACE_DEBUG("mdl_cfg_found not found");
- }
+ if (!mdl_cfg_found) {
+ APPL_TRACE_DEBUG("mdl_cfg_found not found");
+ }
#endif
-
- if (mdl_cfg_found)
- {
- num_mdeps = p_sup_feature->num_of_mdeps;
- for (i=0; i< num_mdeps ; i++)
- {
- if ( p_sup_feature->mdep[i].mdep_id == p_acb->mdl_cfg[mdl_cfg_idx].local_mdep_id)
- {
- local_mdep_id_found = true;
- *p_mdep_cfg_idx =i;
- *p_mdl_cfg_idx = mdl_cfg_idx;
- break;
- }
- }
+ if (mdl_cfg_found) {
+ num_mdeps = p_sup_feature->num_of_mdeps;
+ for (i = 0; i < num_mdeps; i++) {
+ if (p_sup_feature->mdep[i].mdep_id ==
+ p_acb->mdl_cfg[mdl_cfg_idx].local_mdep_id) {
+ local_mdep_id_found = true;
+ *p_mdep_cfg_idx = i;
+ *p_mdl_cfg_idx = mdl_cfg_idx;
+ break;
+ }
}
+ }
#if (BTA_HL_DEBUG == TRUE)
- if (!local_mdep_id_found)
- {
- APPL_TRACE_DEBUG("local_mdep_id not found");
- }
+ if (!local_mdep_id_found) {
+ APPL_TRACE_DEBUG("local_mdep_id not found");
+ }
#endif
-
- if (local_mdep_id_found)
- {
- if (!bta_hl_find_mdl_idx(app_idx,mcl_idx, p_reconnect->mdl_id, &in_use_mdl_idx))
- {
- status= true;
- }
- else
- {
- APPL_TRACE_ERROR("mdl_id=%d is curreltly in use",p_reconnect->mdl_id);
- }
+ if (local_mdep_id_found) {
+ if (!bta_hl_find_mdl_idx(app_idx, mcl_idx, p_reconnect->mdl_id,
+ &in_use_mdl_idx)) {
+ status = true;
+ } else {
+ APPL_TRACE_ERROR("mdl_id=%d is curreltly in use", p_reconnect->mdl_id);
}
+ }
#if (BTA_HL_DEBUG == TRUE)
- if (!status)
- {
- APPL_TRACE_DEBUG("Reconnect validation failed local_mdep_id found=%d mdl_cfg_idx found=%d in_use_mdl_idx=%d ",
- local_mdep_id_found, mdl_cfg_found, in_use_mdl_idx);
- }
+ if (!status) {
+ APPL_TRACE_DEBUG(
+ "Reconnect validation failed local_mdep_id found=%d mdl_cfg_idx "
+ "found=%d in_use_mdl_idx=%d ",
+ local_mdep_id_found, mdl_cfg_found, in_use_mdl_idx);
+ }
#endif
- return status;
+ return status;
}
/*******************************************************************************
@@ -1992,33 +1772,26 @@
* false not found
*
******************************************************************************/
-bool bta_hl_find_avail_mcl_idx(uint8_t app_idx, uint8_t *p_mcl_idx)
-{
- bool found=false;
- uint8_t i;
+bool bta_hl_find_avail_mcl_idx(uint8_t app_idx, uint8_t* p_mcl_idx) {
+ bool found = false;
+ uint8_t i;
- for (i=0; i < BTA_HL_NUM_MCLS ; i ++)
- {
- if (!bta_hl_cb.acb[app_idx].mcb[i].in_use)
- {
- found = true;
- *p_mcl_idx = i;
- break;
- }
+ for (i = 0; i < BTA_HL_NUM_MCLS; i++) {
+ if (!bta_hl_cb.acb[app_idx].mcb[i].in_use) {
+ found = true;
+ *p_mcl_idx = i;
+ break;
}
+ }
#if (BTA_HL_DEBUG == TRUE)
- if (!found)
- {
- APPL_TRACE_DEBUG("bta_hl_find_avail_mcl_idx found=%d idx=%d",
- found, i);
- }
+ if (!found) {
+ APPL_TRACE_DEBUG("bta_hl_find_avail_mcl_idx found=%d idx=%d", found, i);
+ }
#endif
- return found;
+ return found;
}
-
-
/*******************************************************************************
*
* Function bta_hl_find_avail_mdl_idx
@@ -2030,31 +1803,26 @@
*
******************************************************************************/
bool bta_hl_find_avail_mdl_idx(uint8_t app_idx, uint8_t mcl_idx,
- uint8_t *p_mdl_idx)
-{
- tBTA_HL_MCL_CB *p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
- bool found=false;
- uint8_t i;
+ uint8_t* p_mdl_idx) {
+ tBTA_HL_MCL_CB* p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
+ bool found = false;
+ uint8_t i;
- for (i=0; i < BTA_HL_NUM_MDLS_PER_MCL ; i ++)
- {
- if (!p_mcb->mdl[i].in_use)
- {
- memset((void *)&p_mcb->mdl[i],0, sizeof(tBTA_HL_MDL_CB));
- found = true;
- *p_mdl_idx = i;
- break;
- }
+ for (i = 0; i < BTA_HL_NUM_MDLS_PER_MCL; i++) {
+ if (!p_mcb->mdl[i].in_use) {
+ memset((void*)&p_mcb->mdl[i], 0, sizeof(tBTA_HL_MDL_CB));
+ found = true;
+ *p_mdl_idx = i;
+ break;
}
+ }
#if (BTA_HL_DEBUG == TRUE)
- if (!found)
- {
- APPL_TRACE_DEBUG("bta_hl_find_avail_mdl_idx found=%d idx=%d",
- found, i);
- }
+ if (!found) {
+ APPL_TRACE_DEBUG("bta_hl_find_avail_mdl_idx found=%d idx=%d", found, i);
+ }
#endif
- return found;
+ return found;
}
/*******************************************************************************
@@ -2066,35 +1834,28 @@
* Returns bool - true the app_id is a duplicate ID
* false not a duplicate ID
******************************************************************************/
-bool bta_hl_is_a_duplicate_id(uint8_t app_id)
-{
- bool is_duplicate=false;
- uint8_t i;
+bool bta_hl_is_a_duplicate_id(uint8_t app_id) {
+ bool is_duplicate = false;
+ uint8_t i;
- for (i=0; i < BTA_HL_NUM_APPS ; i ++)
- {
- if (bta_hl_cb.acb[i].in_use &&
- (bta_hl_cb.acb[i].app_id == app_id))
- {
- is_duplicate = true;
+ for (i = 0; i < BTA_HL_NUM_APPS; i++) {
+ if (bta_hl_cb.acb[i].in_use && (bta_hl_cb.acb[i].app_id == app_id)) {
+ is_duplicate = true;
- break;
- }
+ break;
}
+ }
#if (BTA_HL_DEBUG == TRUE)
- if (is_duplicate)
- {
-
- APPL_TRACE_DEBUG("bta_hl_is_a_duplicate_id app_id=%d is_duplicate=%d",
- app_id, is_duplicate);
- }
+ if (is_duplicate) {
+ APPL_TRACE_DEBUG("bta_hl_is_a_duplicate_id app_id=%d is_duplicate=%d",
+ app_id, is_duplicate);
+ }
#endif
- return is_duplicate;
+ return is_duplicate;
}
-
/*******************************************************************************
*
* Function bta_hl_find_avail_app_idx
@@ -2105,29 +1866,24 @@
* false not found
*
******************************************************************************/
-bool bta_hl_find_avail_app_idx(uint8_t *p_idx)
-{
- bool found=false;
- uint8_t i;
+bool bta_hl_find_avail_app_idx(uint8_t* p_idx) {
+ bool found = false;
+ uint8_t i;
- for (i=0; i < BTA_HL_NUM_APPS ; i ++)
- {
- if (!bta_hl_cb.acb[i].in_use)
- {
- found = true;
- *p_idx = i;
- break;
- }
+ for (i = 0; i < BTA_HL_NUM_APPS; i++) {
+ if (!bta_hl_cb.acb[i].in_use) {
+ found = true;
+ *p_idx = i;
+ break;
}
+ }
#if (BTA_HL_DEBUG == TRUE)
- if (!found)
- {
- APPL_TRACE_DEBUG("bta_hl_find_avail_app_idx found=%d app_idx=%d",
- found, i);
- }
+ if (!found) {
+ APPL_TRACE_DEBUG("bta_hl_find_avail_app_idx found=%d app_idx=%d", found, i);
+ }
#endif
- return found;
+ return found;
}
/*******************************************************************************
@@ -2139,158 +1895,125 @@
* Returns tBTA_HL_STATUS -registration status
*
******************************************************************************/
-tBTA_HL_STATUS bta_hl_app_update(uint8_t app_id, bool is_register)
-{
- tBTA_HL_STATUS status = BTA_HL_STATUS_OK;
- tBTA_HL_APP_CB *p_acb = BTA_HL_GET_APP_CB_PTR(0);
- tMCA_CS mca_cs;
- uint8_t i, mdep_idx, num_of_mdeps;
- uint8_t mdep_counter = 0;
-
+tBTA_HL_STATUS bta_hl_app_update(uint8_t app_id, bool is_register) {
+ tBTA_HL_STATUS status = BTA_HL_STATUS_OK;
+ tBTA_HL_APP_CB* p_acb = BTA_HL_GET_APP_CB_PTR(0);
+ tMCA_CS mca_cs;
+ uint8_t i, mdep_idx, num_of_mdeps;
+ uint8_t mdep_counter = 0;
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hl_app_update app_id=%d", app_id);
+ APPL_TRACE_DEBUG("bta_hl_app_update app_id=%d", app_id);
#endif
- if (is_register)
- {
- if ((status == BTA_HL_STATUS_OK) &&
- bta_hl_co_get_num_of_mdep(app_id, &num_of_mdeps))
- {
- for (i=0; i < num_of_mdeps; i++)
- {
- mca_cs.type = MCA_TDEP_DATA;
- mca_cs.max_mdl = BTA_HL_NUM_MDLS_PER_MDEP;
- mca_cs.p_data_cback = bta_hl_mcap_data_cback;
- /* Find the first available mdep index, and create a MDL Endpoint */
- // make a function later if needed
- for (mdep_idx = 1; mdep_idx < BTA_HL_NUM_MDEPS; mdep_idx++)
- {
- if ( p_acb->sup_feature.mdep[mdep_idx].mdep_id == 0)
- {
- break; /* We found an available index */
- }
- else
- {
- mdep_counter++;
- }
- }
- /* If no available MDEPs, return error */
- if (mdep_idx == BTA_HL_NUM_MDEPS)
- {
- APPL_TRACE_ERROR("bta_hl_app_update: Out of MDEP IDs");
- status = BTA_HL_STATUS_MCAP_REG_FAIL;
- break;
- }
- if (MCA_CreateDep((tMCA_HANDLE)p_acb->app_handle,
- &(p_acb->sup_feature.mdep[mdep_idx].mdep_id), &mca_cs) == MCA_SUCCESS)
- {
- if (bta_hl_co_get_mdep_config(app_id,
- mdep_idx,
- mdep_counter,
- p_acb->sup_feature.mdep[mdep_idx].mdep_id,
- &p_acb->sup_feature.mdep[mdep_idx].mdep_cfg))
- {
- p_acb->sup_feature.mdep[mdep_idx].ori_app_id = app_id;
- APPL_TRACE_DEBUG("mdep idx %d id %d ori_app_id %d num data type %d",mdep_idx,
- p_acb->sup_feature.mdep[mdep_idx].mdep_id,
- p_acb->sup_feature.mdep[mdep_idx].ori_app_id,
- p_acb->sup_feature.mdep[mdep_idx].mdep_cfg.num_of_mdep_data_types);
- if (p_acb->sup_feature.mdep[mdep_idx].mdep_cfg.mdep_role ==
- BTA_HL_MDEP_ROLE_SOURCE)
- {
- p_acb->sup_feature.app_role_mask |= BTA_HL_MDEP_ROLE_MASK_SOURCE;
- }
- else if (p_acb->sup_feature.mdep[mdep_idx].mdep_cfg.mdep_role ==
- BTA_HL_MDEP_ROLE_SINK)
- {
- p_acb->sup_feature.app_role_mask |= BTA_HL_MDEP_ROLE_MASK_SINK;
- }
- else
- {
- APPL_TRACE_ERROR("bta_hl_app_registration: Invalid Role %d",
- p_acb->sup_feature.mdep[mdep_idx].mdep_cfg.mdep_role);
- status = BTA_HL_STATUS_MDEP_CO_FAIL;
- break;
- }
- }
- else
- {
- APPL_TRACE_ERROR("bta_hl_app_registration: Cfg callout failed");
- status = BTA_HL_STATUS_MDEP_CO_FAIL;
- break;
- }
- }
- else
- {
- APPL_TRACE_ERROR("bta_hl_app_registration: MCA_CreateDep failed");
- status = BTA_HL_STATUS_MCAP_REG_FAIL;
- break;
- }
-
- }
- p_acb->sup_feature.num_of_mdeps += num_of_mdeps;
- APPL_TRACE_DEBUG("num_of_mdeps %d", p_acb->sup_feature.num_of_mdeps);
-
- if ((status == BTA_HL_STATUS_OK) &&
- (p_acb->sup_feature.app_role_mask == BTA_HL_MDEP_ROLE_MASK_SOURCE))
- {
- p_acb->sup_feature.advertize_source_sdp =
- bta_hl_co_advrtise_source_sdp(app_id);
- }
-
- if ((status == BTA_HL_STATUS_OK)&&
- (!bta_hl_co_get_echo_config(app_id, &p_acb->sup_feature.echo_cfg)))
- {
- status = BTA_HL_STATUS_ECHO_CO_FAIL;
- }
-
- if ((status == BTA_HL_STATUS_OK)&&
- (!bta_hl_co_load_mdl_config(app_id, BTA_HL_NUM_MDL_CFGS, &p_acb->mdl_cfg[0])))
- {
- status = BTA_HL_STATUS_MDL_CFG_CO_FAIL;
- }
+ if (is_register) {
+ if ((status == BTA_HL_STATUS_OK) &&
+ bta_hl_co_get_num_of_mdep(app_id, &num_of_mdeps)) {
+ for (i = 0; i < num_of_mdeps; i++) {
+ mca_cs.type = MCA_TDEP_DATA;
+ mca_cs.max_mdl = BTA_HL_NUM_MDLS_PER_MDEP;
+ mca_cs.p_data_cback = bta_hl_mcap_data_cback;
+ /* Find the first available mdep index, and create a MDL Endpoint */
+ // make a function later if needed
+ for (mdep_idx = 1; mdep_idx < BTA_HL_NUM_MDEPS; mdep_idx++) {
+ if (p_acb->sup_feature.mdep[mdep_idx].mdep_id == 0) {
+ break; /* We found an available index */
+ } else {
+ mdep_counter++;
+ }
}
- else
- {
+ /* If no available MDEPs, return error */
+ if (mdep_idx == BTA_HL_NUM_MDEPS) {
+ APPL_TRACE_ERROR("bta_hl_app_update: Out of MDEP IDs");
+ status = BTA_HL_STATUS_MCAP_REG_FAIL;
+ break;
+ }
+ if (MCA_CreateDep((tMCA_HANDLE)p_acb->app_handle,
+ &(p_acb->sup_feature.mdep[mdep_idx].mdep_id),
+ &mca_cs) == MCA_SUCCESS) {
+ if (bta_hl_co_get_mdep_config(
+ app_id, mdep_idx, mdep_counter,
+ p_acb->sup_feature.mdep[mdep_idx].mdep_id,
+ &p_acb->sup_feature.mdep[mdep_idx].mdep_cfg)) {
+ p_acb->sup_feature.mdep[mdep_idx].ori_app_id = app_id;
+ APPL_TRACE_DEBUG("mdep idx %d id %d ori_app_id %d num data type %d",
+ mdep_idx,
+ p_acb->sup_feature.mdep[mdep_idx].mdep_id,
+ p_acb->sup_feature.mdep[mdep_idx].ori_app_id,
+ p_acb->sup_feature.mdep[mdep_idx]
+ .mdep_cfg.num_of_mdep_data_types);
+ if (p_acb->sup_feature.mdep[mdep_idx].mdep_cfg.mdep_role ==
+ BTA_HL_MDEP_ROLE_SOURCE) {
+ p_acb->sup_feature.app_role_mask |= BTA_HL_MDEP_ROLE_MASK_SOURCE;
+ } else if (p_acb->sup_feature.mdep[mdep_idx].mdep_cfg.mdep_role ==
+ BTA_HL_MDEP_ROLE_SINK) {
+ p_acb->sup_feature.app_role_mask |= BTA_HL_MDEP_ROLE_MASK_SINK;
+ } else {
+ APPL_TRACE_ERROR(
+ "bta_hl_app_registration: Invalid Role %d",
+ p_acb->sup_feature.mdep[mdep_idx].mdep_cfg.mdep_role);
+ status = BTA_HL_STATUS_MDEP_CO_FAIL;
+ break;
+ }
+ } else {
+ APPL_TRACE_ERROR("bta_hl_app_registration: Cfg callout failed");
status = BTA_HL_STATUS_MDEP_CO_FAIL;
+ break;
+ }
+ } else {
+ APPL_TRACE_ERROR("bta_hl_app_registration: MCA_CreateDep failed");
+ status = BTA_HL_STATUS_MCAP_REG_FAIL;
+ break;
}
+ }
+ p_acb->sup_feature.num_of_mdeps += num_of_mdeps;
+ APPL_TRACE_DEBUG("num_of_mdeps %d", p_acb->sup_feature.num_of_mdeps);
+
+ if ((status == BTA_HL_STATUS_OK) &&
+ (p_acb->sup_feature.app_role_mask == BTA_HL_MDEP_ROLE_MASK_SOURCE)) {
+ p_acb->sup_feature.advertize_source_sdp =
+ bta_hl_co_advrtise_source_sdp(app_id);
+ }
+
+ if ((status == BTA_HL_STATUS_OK) &&
+ (!bta_hl_co_get_echo_config(app_id, &p_acb->sup_feature.echo_cfg))) {
+ status = BTA_HL_STATUS_ECHO_CO_FAIL;
+ }
+
+ if ((status == BTA_HL_STATUS_OK) &&
+ (!bta_hl_co_load_mdl_config(app_id, BTA_HL_NUM_MDL_CFGS,
+ &p_acb->mdl_cfg[0]))) {
+ status = BTA_HL_STATUS_MDL_CFG_CO_FAIL;
+ }
+ } else {
+ status = BTA_HL_STATUS_MDEP_CO_FAIL;
}
- else
- {
- for (i=1; i<BTA_HL_NUM_MDEPS; i++)
- {
- if (p_acb->sup_feature.mdep[i].ori_app_id == app_id)
- {
- APPL_TRACE_DEBUG("Found index %", i);
+ } else {
+ for (i = 1; i < BTA_HL_NUM_MDEPS; i++) {
+ if (p_acb->sup_feature.mdep[i].ori_app_id == app_id) {
+ APPL_TRACE_DEBUG("Found index %", i);
-
- if (MCA_DeleteDep((tMCA_HANDLE)p_acb->app_handle,
- (p_acb->sup_feature.mdep[i].mdep_id)) != MCA_SUCCESS)
- {
- APPL_TRACE_ERROR("Error deregistering");
- status = BTA_HL_STATUS_MCAP_REG_FAIL;
- return status;
- }
- memset(&p_acb->sup_feature.mdep[i], 0, sizeof(tBTA_HL_MDEP));
- }
+ if (MCA_DeleteDep((tMCA_HANDLE)p_acb->app_handle,
+ (p_acb->sup_feature.mdep[i].mdep_id)) !=
+ MCA_SUCCESS) {
+ APPL_TRACE_ERROR("Error deregistering");
+ status = BTA_HL_STATUS_MCAP_REG_FAIL;
+ return status;
}
-
-
+ memset(&p_acb->sup_feature.mdep[i], 0, sizeof(tBTA_HL_MDEP));
+ }
}
+ }
- if (status == BTA_HL_STATUS_OK)
- {
- /* Register/Update MDEP(s) in SDP Record */
- status = bta_hl_sdp_update(app_id);
- }
- /* else do cleanup */
+ if (status == BTA_HL_STATUS_OK) {
+ /* Register/Update MDEP(s) in SDP Record */
+ status = bta_hl_sdp_update(app_id);
+ }
+ /* else do cleanup */
-
- return status;
+ return status;
}
-
/*******************************************************************************
*
* Function bta_hl_app_registration
@@ -2300,138 +2023,112 @@
* Returns tBTA_HL_STATUS -registration status
*
******************************************************************************/
-tBTA_HL_STATUS bta_hl_app_registration(uint8_t app_idx)
-{
- tBTA_HL_STATUS status = BTA_HL_STATUS_OK;
- tBTA_HL_APP_CB *p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
- tMCA_REG reg;
- tMCA_CS mca_cs;
- uint8_t i, num_of_mdeps;
- uint8_t mdep_counter = 0;
+tBTA_HL_STATUS bta_hl_app_registration(uint8_t app_idx) {
+ tBTA_HL_STATUS status = BTA_HL_STATUS_OK;
+ tBTA_HL_APP_CB* p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
+ tMCA_REG reg;
+ tMCA_CS mca_cs;
+ uint8_t i, num_of_mdeps;
+ uint8_t mdep_counter = 0;
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hl_app_registration app_idx=%d", app_idx);
+ APPL_TRACE_DEBUG("bta_hl_app_registration app_idx=%d", app_idx);
#endif
- reg.ctrl_psm = p_acb->ctrl_psm;
- reg.data_psm = p_acb->data_psm;
- reg.sec_mask = p_acb->sec_mask;
- reg.rsp_tout = BTA_HL_MCAP_RSP_TOUT;
+ reg.ctrl_psm = p_acb->ctrl_psm;
+ reg.data_psm = p_acb->data_psm;
+ reg.sec_mask = p_acb->sec_mask;
+ reg.rsp_tout = BTA_HL_MCAP_RSP_TOUT;
- if ( (p_acb->app_handle = (tBTA_HL_APP_HANDLE) MCA_Register(®, bta_hl_mcap_ctrl_cback))!=0)
- {
- mca_cs.type = MCA_TDEP_ECHO;
+ if ((p_acb->app_handle = (tBTA_HL_APP_HANDLE)MCA_Register(
+ ®, bta_hl_mcap_ctrl_cback)) != 0) {
+ mca_cs.type = MCA_TDEP_ECHO;
+ mca_cs.max_mdl = BTA_HL_NUM_MDLS_PER_MDEP;
+ mca_cs.p_data_cback = bta_hl_mcap_data_cback;
+
+ if (MCA_CreateDep((tMCA_HANDLE)p_acb->app_handle,
+ &(p_acb->sup_feature.mdep[0].mdep_id),
+ &mca_cs) == MCA_SUCCESS) {
+ if (p_acb->sup_feature.mdep[0].mdep_id != BTA_HL_ECHO_TEST_MDEP_ID) {
+ status = BTA_HL_STATUS_MCAP_REG_FAIL;
+ APPL_TRACE_ERROR("BAD MDEP ID for echo test mdep_id=%d",
+ p_acb->sup_feature.mdep[0].mdep_id);
+ }
+ } else {
+ status = BTA_HL_STATUS_MCAP_REG_FAIL;
+ APPL_TRACE_ERROR("MCA_CreateDep for echo test(mdep_id=0) failed");
+ }
+
+ if ((status == BTA_HL_STATUS_OK) &&
+ bta_hl_co_get_num_of_mdep(p_acb->app_id, &num_of_mdeps)) {
+ p_acb->sup_feature.num_of_mdeps = num_of_mdeps + 1;
+
+ for (i = 1; i < p_acb->sup_feature.num_of_mdeps; i++) {
+ mca_cs.type = MCA_TDEP_DATA;
mca_cs.max_mdl = BTA_HL_NUM_MDLS_PER_MDEP;
mca_cs.p_data_cback = bta_hl_mcap_data_cback;
if (MCA_CreateDep((tMCA_HANDLE)p_acb->app_handle,
- &(p_acb->sup_feature.mdep[0].mdep_id),
- &mca_cs) == MCA_SUCCESS)
- {
- if (p_acb->sup_feature.mdep[0].mdep_id != BTA_HL_ECHO_TEST_MDEP_ID)
- {
- status = BTA_HL_STATUS_MCAP_REG_FAIL;
- APPL_TRACE_ERROR("BAD MDEP ID for echo test mdep_id=%d",
- p_acb->sup_feature.mdep[0].mdep_id );
+ &(p_acb->sup_feature.mdep[i].mdep_id),
+ &mca_cs) == MCA_SUCCESS) {
+ if (bta_hl_co_get_mdep_config(p_acb->app_id, i, mdep_counter,
+ p_acb->sup_feature.mdep[i].mdep_id,
+ &p_acb->sup_feature.mdep[i].mdep_cfg)) {
+ if (p_acb->sup_feature.mdep[i].mdep_cfg.mdep_role ==
+ BTA_HL_MDEP_ROLE_SOURCE) {
+ p_acb->sup_feature.app_role_mask |= BTA_HL_MDEP_ROLE_MASK_SOURCE;
+ } else if (p_acb->sup_feature.mdep[i].mdep_cfg.mdep_role ==
+ BTA_HL_MDEP_ROLE_SINK) {
+ p_acb->sup_feature.app_role_mask |= BTA_HL_MDEP_ROLE_MASK_SINK;
+ } else {
+ status = BTA_HL_STATUS_MDEP_CO_FAIL;
+ break;
}
- }
- else
- {
- status = BTA_HL_STATUS_MCAP_REG_FAIL;
- APPL_TRACE_ERROR("MCA_CreateDep for echo test(mdep_id=0) failed");
- }
-
-
- if ((status == BTA_HL_STATUS_OK) &&
- bta_hl_co_get_num_of_mdep(p_acb->app_id, &num_of_mdeps))
- {
- p_acb->sup_feature.num_of_mdeps = num_of_mdeps+1;
-
- for (i=1; i<p_acb->sup_feature.num_of_mdeps; i++)
- {
- mca_cs.type = MCA_TDEP_DATA;
- mca_cs.max_mdl = BTA_HL_NUM_MDLS_PER_MDEP;
- mca_cs.p_data_cback = bta_hl_mcap_data_cback;
-
- if (MCA_CreateDep((tMCA_HANDLE)p_acb->app_handle,
- &(p_acb->sup_feature.mdep[i].mdep_id), &mca_cs) == MCA_SUCCESS)
- {
- if (bta_hl_co_get_mdep_config(p_acb->app_id,
- i,mdep_counter,
- p_acb->sup_feature.mdep[i].mdep_id,
- &p_acb->sup_feature.mdep[i].mdep_cfg))
- {
- if (p_acb->sup_feature.mdep[i].mdep_cfg.mdep_role == BTA_HL_MDEP_ROLE_SOURCE)
- {
- p_acb->sup_feature.app_role_mask |= BTA_HL_MDEP_ROLE_MASK_SOURCE;
- }
- else if (p_acb->sup_feature.mdep[i].mdep_cfg.mdep_role == BTA_HL_MDEP_ROLE_SINK)
- {
- p_acb->sup_feature.app_role_mask |= BTA_HL_MDEP_ROLE_MASK_SINK;
- }
- else
- {
- status = BTA_HL_STATUS_MDEP_CO_FAIL;
- break;
- }
- p_acb->sup_feature.mdep[i].ori_app_id = p_acb->app_id;
- APPL_TRACE_DEBUG("index %d ori_app_id %d", i,
- p_acb->sup_feature.mdep[i].ori_app_id);
- }
- else
- {
- status = BTA_HL_STATUS_MDEP_CO_FAIL;
- break;
- }
- }
- else
- {
- status = BTA_HL_STATUS_MCAP_REG_FAIL;
- break;
- }
- }
-
-
-
- if ((status == BTA_HL_STATUS_OK) &&
- (p_acb->sup_feature.app_role_mask == BTA_HL_MDEP_ROLE_MASK_SOURCE))
- {
- /* this is a source only applciation */
- p_acb->sup_feature.advertize_source_sdp =
- bta_hl_co_advrtise_source_sdp(p_acb->app_id);
- }
-
- if ((status == BTA_HL_STATUS_OK)&&
- (!bta_hl_co_get_echo_config(p_acb->app_id, &p_acb->sup_feature.echo_cfg)))
- {
- status = BTA_HL_STATUS_ECHO_CO_FAIL;
- }
-
- if ((status == BTA_HL_STATUS_OK)&&
- (!bta_hl_co_load_mdl_config(p_acb->app_id, BTA_HL_NUM_MDL_CFGS, &p_acb->mdl_cfg[0])))
- {
- status = BTA_HL_STATUS_MDL_CFG_CO_FAIL;
- }
- }
- else
- {
+ p_acb->sup_feature.mdep[i].ori_app_id = p_acb->app_id;
+ APPL_TRACE_DEBUG("index %d ori_app_id %d", i,
+ p_acb->sup_feature.mdep[i].ori_app_id);
+ } else {
status = BTA_HL_STATUS_MDEP_CO_FAIL;
+ break;
+ }
+ } else {
+ status = BTA_HL_STATUS_MCAP_REG_FAIL;
+ break;
}
- }
- else
- {
- status = BTA_HL_STATUS_MCAP_REG_FAIL;
- }
+ }
- if (status == BTA_HL_STATUS_OK)
- {
- status = bta_hl_sdp_register(app_idx);
- }
+ if ((status == BTA_HL_STATUS_OK) &&
+ (p_acb->sup_feature.app_role_mask == BTA_HL_MDEP_ROLE_MASK_SOURCE)) {
+ /* this is a source only applciation */
+ p_acb->sup_feature.advertize_source_sdp =
+ bta_hl_co_advrtise_source_sdp(p_acb->app_id);
+ }
- return status;
+ if ((status == BTA_HL_STATUS_OK) &&
+ (!bta_hl_co_get_echo_config(p_acb->app_id,
+ &p_acb->sup_feature.echo_cfg))) {
+ status = BTA_HL_STATUS_ECHO_CO_FAIL;
+ }
+
+ if ((status == BTA_HL_STATUS_OK) &&
+ (!bta_hl_co_load_mdl_config(p_acb->app_id, BTA_HL_NUM_MDL_CFGS,
+ &p_acb->mdl_cfg[0]))) {
+ status = BTA_HL_STATUS_MDL_CFG_CO_FAIL;
+ }
+ } else {
+ status = BTA_HL_STATUS_MDEP_CO_FAIL;
+ }
+ } else {
+ status = BTA_HL_STATUS_MCAP_REG_FAIL;
+ }
+
+ if (status == BTA_HL_STATUS_OK) {
+ status = bta_hl_sdp_register(app_idx);
+ }
+
+ return status;
}
-
/*******************************************************************************
*
* Function bta_hl_discard_data
@@ -2441,27 +2138,24 @@
* Returns void
*
******************************************************************************/
-void bta_hl_discard_data(uint16_t event, tBTA_HL_DATA *p_data)
-{
-
+void bta_hl_discard_data(uint16_t event, tBTA_HL_DATA* p_data) {
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_ERROR("BTA HL Discard event=%s",bta_hl_evt_code(event));
+ APPL_TRACE_ERROR("BTA HL Discard event=%s", bta_hl_evt_code(event));
#endif
- switch (event)
- {
- case BTA_HL_API_SEND_DATA_EVT:
- break;
+ switch (event) {
+ case BTA_HL_API_SEND_DATA_EVT:
+ break;
- case BTA_HL_MCA_RCV_DATA_EVT:
- osi_free_and_reset((void **)&p_data->mca_rcv_data_evt.p_pkt);
- break;
+ case BTA_HL_MCA_RCV_DATA_EVT:
+ osi_free_and_reset((void**)&p_data->mca_rcv_data_evt.p_pkt);
+ break;
- default:
- /*Nothing to free*/
- break;
- }
+ default:
+ /*Nothing to free*/
+ break;
+ }
}
/*******************************************************************************
@@ -2473,67 +2167,60 @@
* Returns void
*
******************************************************************************/
-void bta_hl_save_mdl_cfg(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx )
-{
- tBTA_HL_APP_CB *p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
- tBTA_HL_MCL_CB *p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
- tBTA_HL_MDL_CB *p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
- uint8_t mdl_cfg_idx;
- tBTA_HL_MDL_ID mdl_id;
- bool found=true;
- tBTA_HL_MDL_CFG mdl_cfg;
- tBTA_HL_MDEP *p_mdep_cfg;
- tBTA_HL_L2CAP_CFG_INFO l2cap_cfg;
- uint8_t time_val = 0;
- mdl_id = p_dcb->mdl_id;
- if (!bta_hl_find_mdl_cfg_idx(app_idx, mcl_idx, mdl_id, &mdl_cfg_idx))
- {
- if (!bta_hl_find_avail_mdl_cfg_idx(app_idx, mcl_idx, &mdl_cfg_idx))
- {
- APPL_TRACE_ERROR("No space to save the MDL config");
- found= false; /*no space available*/
- }
+void bta_hl_save_mdl_cfg(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx) {
+ tBTA_HL_APP_CB* p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
+ tBTA_HL_MCL_CB* p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
+ tBTA_HL_MDL_CB* p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
+ uint8_t mdl_cfg_idx;
+ tBTA_HL_MDL_ID mdl_id;
+ bool found = true;
+ tBTA_HL_MDL_CFG mdl_cfg;
+ tBTA_HL_MDEP* p_mdep_cfg;
+ tBTA_HL_L2CAP_CFG_INFO l2cap_cfg;
+ uint8_t time_val = 0;
+ mdl_id = p_dcb->mdl_id;
+ if (!bta_hl_find_mdl_cfg_idx(app_idx, mcl_idx, mdl_id, &mdl_cfg_idx)) {
+ if (!bta_hl_find_avail_mdl_cfg_idx(app_idx, mcl_idx, &mdl_cfg_idx)) {
+ APPL_TRACE_ERROR("No space to save the MDL config");
+ found = false; /*no space available*/
}
+ }
- if (found)
- {
- bta_hl_get_l2cap_cfg(p_dcb->mdl_handle, &l2cap_cfg);
- if (!bta_hl_get_cur_time(app_idx, &time_val ))
- {
- bta_hl_compact_mdl_cfg_time(app_idx,p_dcb->local_mdep_id);
- bta_hl_get_cur_time(app_idx, &time_val);
- }
- mdl_cfg.active = true;
- mdl_cfg.time = time_val;
- mdl_cfg.mdl_id = p_dcb->mdl_id;
- mdl_cfg.dch_mode = p_dcb->dch_mode;
- mdl_cfg.mtu = l2cap_cfg.mtu;
- mdl_cfg.fcs = l2cap_cfg.fcs;
-
- bdcpy(mdl_cfg.peer_bd_addr, p_mcb->bd_addr);
- mdl_cfg.local_mdep_id= p_dcb->local_mdep_id;
- p_mdep_cfg = &p_acb->sup_feature.mdep[p_dcb->local_mdep_cfg_idx];
- mdl_cfg.local_mdep_role= p_mdep_cfg->mdep_cfg.mdep_role;
- memcpy(&p_acb->mdl_cfg[mdl_cfg_idx], &mdl_cfg, sizeof(tBTA_HL_MDL_CFG));
- bta_hl_co_save_mdl(mdl_cfg.local_mdep_id, mdl_cfg_idx, &mdl_cfg);
+ if (found) {
+ bta_hl_get_l2cap_cfg(p_dcb->mdl_handle, &l2cap_cfg);
+ if (!bta_hl_get_cur_time(app_idx, &time_val)) {
+ bta_hl_compact_mdl_cfg_time(app_idx, p_dcb->local_mdep_id);
+ bta_hl_get_cur_time(app_idx, &time_val);
}
+ mdl_cfg.active = true;
+ mdl_cfg.time = time_val;
+ mdl_cfg.mdl_id = p_dcb->mdl_id;
+ mdl_cfg.dch_mode = p_dcb->dch_mode;
+ mdl_cfg.mtu = l2cap_cfg.mtu;
+ mdl_cfg.fcs = l2cap_cfg.fcs;
+
+ bdcpy(mdl_cfg.peer_bd_addr, p_mcb->bd_addr);
+ mdl_cfg.local_mdep_id = p_dcb->local_mdep_id;
+ p_mdep_cfg = &p_acb->sup_feature.mdep[p_dcb->local_mdep_cfg_idx];
+ mdl_cfg.local_mdep_role = p_mdep_cfg->mdep_cfg.mdep_role;
+ memcpy(&p_acb->mdl_cfg[mdl_cfg_idx], &mdl_cfg, sizeof(tBTA_HL_MDL_CFG));
+ bta_hl_co_save_mdl(mdl_cfg.local_mdep_id, mdl_cfg_idx, &mdl_cfg);
+ }
#if (BTA_HL_DEBUG == TRUE)
- if (found)
- {
- if (p_dcb->mtu != l2cap_cfg.mtu)
- {
- APPL_TRACE_WARNING("MCAP and L2CAP peer mtu size out of sync from MCAP mtu=%d from l2cap mtu=%d",
- p_dcb->mtu, l2cap_cfg.mtu);
- }
- APPL_TRACE_DEBUG("bta_hl_save_mdl_cfg saved=%d", found);
- APPL_TRACE_DEBUG("Saved. L2cap cfg mdl_id=%d mtu=%d fcs=%d dch_mode=%d",
- mdl_cfg.mdl_id, mdl_cfg.mtu, mdl_cfg.fcs, mdl_cfg.dch_mode);
+ if (found) {
+ if (p_dcb->mtu != l2cap_cfg.mtu) {
+ APPL_TRACE_WARNING(
+ "MCAP and L2CAP peer mtu size out of sync from MCAP mtu=%d from "
+ "l2cap mtu=%d",
+ p_dcb->mtu, l2cap_cfg.mtu);
}
+ APPL_TRACE_DEBUG("bta_hl_save_mdl_cfg saved=%d", found);
+ APPL_TRACE_DEBUG("Saved. L2cap cfg mdl_id=%d mtu=%d fcs=%d dch_mode=%d",
+ mdl_cfg.mdl_id, mdl_cfg.mtu, mdl_cfg.fcs,
+ mdl_cfg.dch_mode);
+ }
#endif
-
-
-
}
/*******************************************************************************
@@ -2544,87 +2231,76 @@
*
* Returns void
******************************************************************************/
-void bta_hl_set_dch_chan_cfg(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,tBTA_HL_DATA *p_data)
-{
- tBTA_HL_APP_CB *p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
- tBTA_HL_MDL_CB *p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
- uint8_t l2cap_mode = L2CAP_FCR_ERTM_MODE;
- tBTA_HL_SUP_FEATURE *p_sup_feature= &p_acb->sup_feature;
- uint8_t local_mdep_cfg_idx = p_dcb->local_mdep_cfg_idx;
+void bta_hl_set_dch_chan_cfg(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx,
+ tBTA_HL_DATA* p_data) {
+ tBTA_HL_APP_CB* p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
+ tBTA_HL_MDL_CB* p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
+ uint8_t l2cap_mode = L2CAP_FCR_ERTM_MODE;
+ tBTA_HL_SUP_FEATURE* p_sup_feature = &p_acb->sup_feature;
+ uint8_t local_mdep_cfg_idx = p_dcb->local_mdep_cfg_idx;
- switch (p_dcb->dch_oper)
- {
- case BTA_HL_DCH_OP_LOCAL_RECONNECT:
- case BTA_HL_DCH_OP_REMOTE_RECONNECT:
- if (p_dcb->dch_mode == BTA_HL_DCH_MODE_STREAMING)
- l2cap_mode = L2CAP_FCR_STREAM_MODE;
- break;
- case BTA_HL_DCH_OP_LOCAL_OPEN:
- if (p_data->mca_evt.mca_data.create_cfm.cfg == BTA_HL_DCH_CFG_STREAMING)
- l2cap_mode = L2CAP_FCR_STREAM_MODE;
- break;
- case BTA_HL_DCH_OP_REMOTE_OPEN:
- if (p_dcb->local_cfg == BTA_HL_DCH_CFG_STREAMING )
- l2cap_mode = L2CAP_FCR_STREAM_MODE;
- break;
- default:
- APPL_TRACE_ERROR("Invalid dch oper=%d for set dch chan cfg", p_dcb->dch_oper);
- break;
- }
- p_dcb->chnl_cfg.fcr_opt.mode = l2cap_mode;
- p_dcb->chnl_cfg.fcr_opt.mps = bta_hl_set_mps(p_dcb->max_rx_apdu_size);
- p_dcb->chnl_cfg.fcr_opt.tx_win_sz = bta_hl_set_tx_win_size(p_dcb->max_rx_apdu_size,
- p_dcb->chnl_cfg.fcr_opt.mps);
- p_dcb->chnl_cfg.fcr_opt.max_transmit= BTA_HL_L2C_MAX_TRANSMIT;
- p_dcb->chnl_cfg.fcr_opt.rtrans_tout = BTA_HL_L2C_RTRANS_TOUT;
- p_dcb->chnl_cfg.fcr_opt.mon_tout = BTA_HL_L2C_MON_TOUT;
+ switch (p_dcb->dch_oper) {
+ case BTA_HL_DCH_OP_LOCAL_RECONNECT:
+ case BTA_HL_DCH_OP_REMOTE_RECONNECT:
+ if (p_dcb->dch_mode == BTA_HL_DCH_MODE_STREAMING)
+ l2cap_mode = L2CAP_FCR_STREAM_MODE;
+ break;
+ case BTA_HL_DCH_OP_LOCAL_OPEN:
+ if (p_data->mca_evt.mca_data.create_cfm.cfg == BTA_HL_DCH_CFG_STREAMING)
+ l2cap_mode = L2CAP_FCR_STREAM_MODE;
+ break;
+ case BTA_HL_DCH_OP_REMOTE_OPEN:
+ if (p_dcb->local_cfg == BTA_HL_DCH_CFG_STREAMING)
+ l2cap_mode = L2CAP_FCR_STREAM_MODE;
+ break;
+ default:
+ APPL_TRACE_ERROR("Invalid dch oper=%d for set dch chan cfg",
+ p_dcb->dch_oper);
+ break;
+ }
+ p_dcb->chnl_cfg.fcr_opt.mode = l2cap_mode;
+ p_dcb->chnl_cfg.fcr_opt.mps = bta_hl_set_mps(p_dcb->max_rx_apdu_size);
+ p_dcb->chnl_cfg.fcr_opt.tx_win_sz = bta_hl_set_tx_win_size(
+ p_dcb->max_rx_apdu_size, p_dcb->chnl_cfg.fcr_opt.mps);
+ p_dcb->chnl_cfg.fcr_opt.max_transmit = BTA_HL_L2C_MAX_TRANSMIT;
+ p_dcb->chnl_cfg.fcr_opt.rtrans_tout = BTA_HL_L2C_RTRANS_TOUT;
+ p_dcb->chnl_cfg.fcr_opt.mon_tout = BTA_HL_L2C_MON_TOUT;
- p_dcb->chnl_cfg.user_rx_buf_size = bta_hl_set_user_rx_buf_size(p_dcb->max_rx_apdu_size);
- p_dcb->chnl_cfg.user_tx_buf_size = bta_hl_set_user_tx_buf_size(p_dcb->max_tx_apdu_size);
- p_dcb->chnl_cfg.fcr_rx_buf_size = L2CAP_INVALID_ERM_BUF_SIZE;
- p_dcb->chnl_cfg.fcr_tx_buf_size = L2CAP_INVALID_ERM_BUF_SIZE;
- p_dcb->chnl_cfg.data_mtu = p_dcb->max_rx_apdu_size;
+ p_dcb->chnl_cfg.user_rx_buf_size =
+ bta_hl_set_user_rx_buf_size(p_dcb->max_rx_apdu_size);
+ p_dcb->chnl_cfg.user_tx_buf_size =
+ bta_hl_set_user_tx_buf_size(p_dcb->max_tx_apdu_size);
+ p_dcb->chnl_cfg.fcr_rx_buf_size = L2CAP_INVALID_ERM_BUF_SIZE;
+ p_dcb->chnl_cfg.fcr_tx_buf_size = L2CAP_INVALID_ERM_BUF_SIZE;
+ p_dcb->chnl_cfg.data_mtu = p_dcb->max_rx_apdu_size;
- p_dcb->chnl_cfg.fcs = BTA_HL_MCA_NO_FCS;
- if (local_mdep_cfg_idx != BTA_HL_ECHO_TEST_MDEP_CFG_IDX)
- {
- if (p_sup_feature->mdep[local_mdep_cfg_idx].mdep_cfg.mdep_role ==
- BTA_HL_MDEP_ROLE_SOURCE)
- {
- p_dcb->chnl_cfg.fcs = BTA_HL_DEFAULT_SOURCE_FCS;
- }
+ p_dcb->chnl_cfg.fcs = BTA_HL_MCA_NO_FCS;
+ if (local_mdep_cfg_idx != BTA_HL_ECHO_TEST_MDEP_CFG_IDX) {
+ if (p_sup_feature->mdep[local_mdep_cfg_idx].mdep_cfg.mdep_role ==
+ BTA_HL_MDEP_ROLE_SOURCE) {
+ p_dcb->chnl_cfg.fcs = BTA_HL_DEFAULT_SOURCE_FCS;
}
- else
- {
- p_dcb->chnl_cfg.fcs = BTA_HL_MCA_USE_FCS;
- }
+ } else {
+ p_dcb->chnl_cfg.fcs = BTA_HL_MCA_USE_FCS;
+ }
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("L2CAP Params l2cap_mode[3-ERTM 4-STREAM]=%d", l2cap_mode);
- APPL_TRACE_DEBUG("Use FCS =%s mtu=%d", ((p_dcb->chnl_cfg.fcs & 1)?"YES":"NO"),
- p_dcb->chnl_cfg.data_mtu);
- APPL_TRACE_DEBUG("tx_win_sz=%d, max_transmit=%d, rtrans_tout=%d, mon_tout=%d, mps=%d",
- p_dcb->chnl_cfg.fcr_opt.tx_win_sz,
- p_dcb->chnl_cfg.fcr_opt.max_transmit,
- p_dcb->chnl_cfg.fcr_opt.rtrans_tout,
- p_dcb->chnl_cfg.fcr_opt.mon_tout,
- p_dcb->chnl_cfg.fcr_opt.mps);
+ APPL_TRACE_DEBUG("L2CAP Params l2cap_mode[3-ERTM 4-STREAM]=%d", l2cap_mode);
+ APPL_TRACE_DEBUG("Use FCS =%s mtu=%d",
+ ((p_dcb->chnl_cfg.fcs & 1) ? "YES" : "NO"),
+ p_dcb->chnl_cfg.data_mtu);
+ APPL_TRACE_DEBUG(
+ "tx_win_sz=%d, max_transmit=%d, rtrans_tout=%d, mon_tout=%d, mps=%d",
+ p_dcb->chnl_cfg.fcr_opt.tx_win_sz, p_dcb->chnl_cfg.fcr_opt.max_transmit,
+ p_dcb->chnl_cfg.fcr_opt.rtrans_tout, p_dcb->chnl_cfg.fcr_opt.mon_tout,
+ p_dcb->chnl_cfg.fcr_opt.mps);
- APPL_TRACE_DEBUG("USER rx_buf_size=%d, tx_buf_size=%d, FCR rx_buf_size=%d, tx_buf_size=%d",
- p_dcb->chnl_cfg.user_rx_buf_size,
- p_dcb->chnl_cfg.user_tx_buf_size,
- p_dcb->chnl_cfg.fcr_rx_buf_size,
- p_dcb->chnl_cfg.fcr_tx_buf_size);
+ APPL_TRACE_DEBUG(
+ "USER rx_buf_size=%d, tx_buf_size=%d, FCR rx_buf_size=%d, tx_buf_size=%d",
+ p_dcb->chnl_cfg.user_rx_buf_size, p_dcb->chnl_cfg.user_tx_buf_size,
+ p_dcb->chnl_cfg.fcr_rx_buf_size, p_dcb->chnl_cfg.fcr_tx_buf_size);
#endif
-
-
-
-
-
-
-
-
}
/*******************************************************************************
@@ -2635,68 +2311,54 @@
*
* Returns bool - true - operation is successful
******************************************************************************/
-bool bta_hl_get_l2cap_cfg(tBTA_HL_MDL_HANDLE mdl_hnd, tBTA_HL_L2CAP_CFG_INFO *p_cfg)
-{
- bool success = false;
- uint16_t lcid;
- tL2CAP_CFG_INFO *p_our_cfg;
- tL2CAP_CH_CFG_BITS our_cfg_bits;
- tL2CAP_CFG_INFO *p_peer_cfg;
- tL2CAP_CH_CFG_BITS peer_cfg_bits;
+bool bta_hl_get_l2cap_cfg(tBTA_HL_MDL_HANDLE mdl_hnd,
+ tBTA_HL_L2CAP_CFG_INFO* p_cfg) {
+ bool success = false;
+ uint16_t lcid;
+ tL2CAP_CFG_INFO* p_our_cfg;
+ tL2CAP_CH_CFG_BITS our_cfg_bits;
+ tL2CAP_CFG_INFO* p_peer_cfg;
+ tL2CAP_CH_CFG_BITS peer_cfg_bits;
- lcid = MCA_GetL2CapChannel((tMCA_DL) mdl_hnd);
- if ( lcid &&
- L2CA_GetCurrentConfig(lcid, &p_our_cfg, &our_cfg_bits, &p_peer_cfg,
- &peer_cfg_bits))
- {
- p_cfg->fcs = BTA_HL_MCA_NO_FCS;
- if (our_cfg_bits & L2CAP_CH_CFG_MASK_FCS)
- {
- p_cfg->fcs |= p_our_cfg->fcs;
- }
- else
- {
- p_cfg->fcs = BTA_HL_MCA_USE_FCS;
- }
-
- if (p_cfg->fcs != BTA_HL_MCA_USE_FCS )
- {
- if (peer_cfg_bits & L2CAP_CH_CFG_MASK_FCS)
- {
- p_cfg->fcs |= p_peer_cfg->fcs;
- }
- else
- {
- p_cfg->fcs = BTA_HL_MCA_USE_FCS;
- }
- }
-
- p_cfg->mtu =0;
- if (peer_cfg_bits & L2CAP_CH_CFG_MASK_MTU)
- {
- p_cfg->mtu = p_peer_cfg->mtu;
- }
- else
- {
- p_cfg->mtu = L2CAP_DEFAULT_MTU;
- }
- success = true;
+ lcid = MCA_GetL2CapChannel((tMCA_DL)mdl_hnd);
+ if (lcid && L2CA_GetCurrentConfig(lcid, &p_our_cfg, &our_cfg_bits,
+ &p_peer_cfg, &peer_cfg_bits)) {
+ p_cfg->fcs = BTA_HL_MCA_NO_FCS;
+ if (our_cfg_bits & L2CAP_CH_CFG_MASK_FCS) {
+ p_cfg->fcs |= p_our_cfg->fcs;
+ } else {
+ p_cfg->fcs = BTA_HL_MCA_USE_FCS;
}
- else
- {
+
+ if (p_cfg->fcs != BTA_HL_MCA_USE_FCS) {
+ if (peer_cfg_bits & L2CAP_CH_CFG_MASK_FCS) {
+ p_cfg->fcs |= p_peer_cfg->fcs;
+ } else {
+ p_cfg->fcs = BTA_HL_MCA_USE_FCS;
+ }
+ }
+
+ p_cfg->mtu = 0;
+ if (peer_cfg_bits & L2CAP_CH_CFG_MASK_MTU) {
+ p_cfg->mtu = p_peer_cfg->mtu;
+ } else {
p_cfg->mtu = L2CAP_DEFAULT_MTU;
- p_cfg->fcs = BTA_HL_L2C_NO_FCS;
}
+ success = true;
+ } else {
+ p_cfg->mtu = L2CAP_DEFAULT_MTU;
+ p_cfg->fcs = BTA_HL_L2C_NO_FCS;
+ }
#if (BTA_HL_DEBUG == TRUE)
- if (!success)
- {
- APPL_TRACE_DEBUG("bta_hl_get_l2cap_cfg success=%d mdl=%d lcid=%d", success, mdl_hnd, lcid);
- APPL_TRACE_DEBUG("l2cap mtu=%d fcs=%d", p_cfg->mtu, p_cfg->fcs);
- }
+ if (!success) {
+ APPL_TRACE_DEBUG("bta_hl_get_l2cap_cfg success=%d mdl=%d lcid=%d", success,
+ mdl_hnd, lcid);
+ APPL_TRACE_DEBUG("l2cap mtu=%d fcs=%d", p_cfg->mtu, p_cfg->fcs);
+ }
#endif
- return success;
+ return success;
}
/*******************************************************************************
@@ -2707,133 +2369,129 @@
*
* Returns bool - true - validation is successful
******************************************************************************/
-bool bta_hl_validate_chan_cfg(uint8_t app_idx, uint8_t mcl_idx, uint8_t mdl_idx)
-{
- tBTA_HL_APP_CB *p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
- tBTA_HL_MDL_CB *p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
- bool success = false;
- uint8_t mdl_cfg_idx = 0;
- tBTA_HL_L2CAP_CFG_INFO l2cap_cfg;
- bool get_l2cap_result, get_mdl_result;
+bool bta_hl_validate_chan_cfg(uint8_t app_idx, uint8_t mcl_idx,
+ uint8_t mdl_idx) {
+ tBTA_HL_APP_CB* p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
+ tBTA_HL_MDL_CB* p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
+ bool success = false;
+ uint8_t mdl_cfg_idx = 0;
+ tBTA_HL_L2CAP_CFG_INFO l2cap_cfg;
+ bool get_l2cap_result, get_mdl_result;
- get_l2cap_result = bta_hl_get_l2cap_cfg(p_dcb->mdl_handle, &l2cap_cfg);
- get_mdl_result = bta_hl_find_mdl_cfg_idx(app_idx, mcl_idx, p_dcb->mdl_id, &mdl_cfg_idx);
+ get_l2cap_result = bta_hl_get_l2cap_cfg(p_dcb->mdl_handle, &l2cap_cfg);
+ get_mdl_result =
+ bta_hl_find_mdl_cfg_idx(app_idx, mcl_idx, p_dcb->mdl_id, &mdl_cfg_idx);
- if (get_l2cap_result && get_mdl_result)
- {
- if ((p_acb->mdl_cfg[mdl_cfg_idx].mtu <= l2cap_cfg.mtu) &&
- (p_acb->mdl_cfg[mdl_cfg_idx].fcs == l2cap_cfg.fcs) &&
- (p_acb->mdl_cfg[mdl_cfg_idx].dch_mode == p_dcb->dch_mode))
- {
- success = true;
- }
+ if (get_l2cap_result && get_mdl_result) {
+ if ((p_acb->mdl_cfg[mdl_cfg_idx].mtu <= l2cap_cfg.mtu) &&
+ (p_acb->mdl_cfg[mdl_cfg_idx].fcs == l2cap_cfg.fcs) &&
+ (p_acb->mdl_cfg[mdl_cfg_idx].dch_mode == p_dcb->dch_mode)) {
+ success = true;
}
-
+ }
#if (BTA_HL_DEBUG == TRUE)
- if (p_dcb->mtu != l2cap_cfg.mtu)
- {
- APPL_TRACE_WARNING("MCAP and L2CAP peer mtu size out of sync from MCAP mtu=%d from l2cap mtu=%d",
- p_dcb->mtu, l2cap_cfg.mtu);
- }
+ if (p_dcb->mtu != l2cap_cfg.mtu) {
+ APPL_TRACE_WARNING(
+ "MCAP and L2CAP peer mtu size out of sync from MCAP mtu=%d from l2cap "
+ "mtu=%d",
+ p_dcb->mtu, l2cap_cfg.mtu);
+ }
- if (!success)
- {
- APPL_TRACE_DEBUG("bta_hl_validate_chan_cfg success=%d app_idx=%d mcl_idx=%d mdl_idx=%d",success, app_idx, mcl_idx, mdl_idx);
- APPL_TRACE_DEBUG("Cur. L2cap cfg mtu=%d fcs=%d dch_mode=%d", l2cap_cfg.mtu, l2cap_cfg.fcs, p_dcb->dch_mode);
- APPL_TRACE_DEBUG("From saved: L2cap cfg mtu=%d fcs=%d dch_mode=%d", p_acb->mdl_cfg[mdl_cfg_idx].mtu,
- p_acb->mdl_cfg[mdl_cfg_idx].fcs , p_acb->mdl_cfg[mdl_cfg_idx].dch_mode);
- }
+ if (!success) {
+ APPL_TRACE_DEBUG(
+ "bta_hl_validate_chan_cfg success=%d app_idx=%d mcl_idx=%d mdl_idx=%d",
+ success, app_idx, mcl_idx, mdl_idx);
+ APPL_TRACE_DEBUG("Cur. L2cap cfg mtu=%d fcs=%d dch_mode=%d", l2cap_cfg.mtu,
+ l2cap_cfg.fcs, p_dcb->dch_mode);
+ APPL_TRACE_DEBUG("From saved: L2cap cfg mtu=%d fcs=%d dch_mode=%d",
+ p_acb->mdl_cfg[mdl_cfg_idx].mtu,
+ p_acb->mdl_cfg[mdl_cfg_idx].fcs,
+ p_acb->mdl_cfg[mdl_cfg_idx].dch_mode);
+ }
#endif
- return success;
+ return success;
}
-
/*******************************************************************************
*
* Function bta_hl_is_cong_on
*
- * Description This function checks whether the congestion condition is on or not
+ * Description This function checks whether the congestion condition is on or
+ *not
*
* Returns bool - true DCH is congested
* false not congested
*
******************************************************************************/
-bool bta_hl_is_cong_on(uint8_t app_id, BD_ADDR bd_addr, tBTA_HL_MDL_ID mdl_id)
+bool bta_hl_is_cong_on(uint8_t app_id, BD_ADDR bd_addr, tBTA_HL_MDL_ID mdl_id)
{
- tBTA_HL_MDL_CB *p_dcb;
- uint8_t app_idx = 0, mcl_idx, mdl_idx;
- bool cong_status = true;
+ tBTA_HL_MDL_CB* p_dcb;
+ uint8_t app_idx = 0, mcl_idx, mdl_idx;
+ bool cong_status = true;
- if (bta_hl_find_app_idx(app_id, &app_idx))
- {
- if (bta_hl_find_mcl_idx(app_idx, bd_addr, &mcl_idx ))
- {
- if (bta_hl_find_mdl_idx(app_idx, mcl_idx, mdl_id, &mdl_idx ))
- {
- p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
- cong_status = p_dcb->cong;
- }
- }
+ if (bta_hl_find_app_idx(app_id, &app_idx)) {
+ if (bta_hl_find_mcl_idx(app_idx, bd_addr, &mcl_idx)) {
+ if (bta_hl_find_mdl_idx(app_idx, mcl_idx, mdl_id, &mdl_idx)) {
+ p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
+ cong_status = p_dcb->cong;
+ }
}
+ }
- return cong_status;
+ return cong_status;
}
/*******************************************************************************
*
* Function bta_hl_check_cch_close
*
- * Description This function checks whether there is a pending CCH close request
+ * Description This function checks whether there is a pending CCH close
+ *request
* or not
*
* Returns void
******************************************************************************/
-void bta_hl_check_cch_close(uint8_t app_idx, uint8_t mcl_idx, tBTA_HL_DATA *p_data, bool check_dch_setup )
-{
- tBTA_HL_MCL_CB *p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
- tBTA_HL_MDL_CB *p_dcb;
- uint8_t mdl_idx;
+void bta_hl_check_cch_close(uint8_t app_idx, uint8_t mcl_idx,
+ tBTA_HL_DATA* p_data, bool check_dch_setup) {
+ tBTA_HL_MCL_CB* p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
+ tBTA_HL_MDL_CB* p_dcb;
+ uint8_t mdl_idx;
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hl_check_cch_close cch_close_dch_oper=%d",p_mcb->cch_close_dch_oper );
+ APPL_TRACE_DEBUG("bta_hl_check_cch_close cch_close_dch_oper=%d",
+ p_mcb->cch_close_dch_oper);
#endif
- if (p_mcb->cch_oper == BTA_HL_CCH_OP_LOCAL_CLOSE)
- {
- if (check_dch_setup && bta_hl_find_dch_setup_mdl_idx(app_idx, mcl_idx, &mdl_idx))
- {
- p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
- if (!p_mcb->rsp_tout)
- {
- p_mcb->cch_close_dch_oper = BTA_HL_CCH_CLOSE_OP_DCH_ABORT;
+ if (p_mcb->cch_oper == BTA_HL_CCH_OP_LOCAL_CLOSE) {
+ if (check_dch_setup &&
+ bta_hl_find_dch_setup_mdl_idx(app_idx, mcl_idx, &mdl_idx)) {
+ p_dcb = BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx);
+ if (!p_mcb->rsp_tout) {
+ p_mcb->cch_close_dch_oper = BTA_HL_CCH_CLOSE_OP_DCH_ABORT;
- if (!p_dcb->abort_oper)
- {
- p_dcb->abort_oper |= BTA_HL_ABORT_CCH_CLOSE_MASK;
- bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_ABORT_EVT, p_data);
- }
- }
- else
- {
- p_mcb->cch_close_dch_oper = BTA_HL_CCH_CLOSE_OP_DCH_CLOSE;
- bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_CLOSE_CMPL_EVT, p_data);
- }
+ if (!p_dcb->abort_oper) {
+ p_dcb->abort_oper |= BTA_HL_ABORT_CCH_CLOSE_MASK;
+ bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_ABORT_EVT,
+ p_data);
}
- else if (bta_hl_find_an_active_mdl_idx(app_idx, mcl_idx,&mdl_idx))
- {
- p_mcb->cch_close_dch_oper = BTA_HL_CCH_CLOSE_OP_DCH_CLOSE;
- bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_CLOSE_EVT, p_data);
- }
- else
- {
- p_mcb->cch_close_dch_oper = BTA_HL_CCH_CLOSE_OP_DCH_NONE;
- bta_hl_cch_sm_execute(app_idx, mcl_idx, BTA_HL_CCH_CLOSE_EVT, p_data);
- }
+ } else {
+ p_mcb->cch_close_dch_oper = BTA_HL_CCH_CLOSE_OP_DCH_CLOSE;
+ bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx,
+ BTA_HL_DCH_CLOSE_CMPL_EVT, p_data);
+ }
+ } else if (bta_hl_find_an_active_mdl_idx(app_idx, mcl_idx, &mdl_idx)) {
+ p_mcb->cch_close_dch_oper = BTA_HL_CCH_CLOSE_OP_DCH_CLOSE;
+ bta_hl_dch_sm_execute(app_idx, mcl_idx, mdl_idx, BTA_HL_DCH_CLOSE_EVT,
+ p_data);
+ } else {
+ p_mcb->cch_close_dch_oper = BTA_HL_CCH_CLOSE_OP_DCH_NONE;
+ bta_hl_cch_sm_execute(app_idx, mcl_idx, BTA_HL_CCH_CLOSE_EVT, p_data);
}
+ }
}
/*******************************************************************************
@@ -2845,31 +2503,28 @@
* Returns void
*
******************************************************************************/
-void bta_hl_clean_app(uint8_t app_idx)
-{
- tBTA_HL_APP_CB *p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
- int i, num_act_apps=0;
+void bta_hl_clean_app(uint8_t app_idx) {
+ tBTA_HL_APP_CB* p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
+ int i, num_act_apps = 0;
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hl_clean_app");
+ APPL_TRACE_DEBUG("bta_hl_clean_app");
#endif
- MCA_Deregister((tMCA_HANDLE)p_acb->app_handle);
+ MCA_Deregister((tMCA_HANDLE)p_acb->app_handle);
- if (p_acb->sdp_handle) SDP_DeleteRecord(p_acb->sdp_handle);
+ if (p_acb->sdp_handle) SDP_DeleteRecord(p_acb->sdp_handle);
- memset((void *) p_acb, 0, sizeof(tBTA_HL_APP_CB));
+ memset((void*)p_acb, 0, sizeof(tBTA_HL_APP_CB));
- /* check any application is still active */
- for (i=0; i < BTA_HL_NUM_APPS ; i ++)
- {
- p_acb = BTA_HL_GET_APP_CB_PTR(i);
- if (p_acb->in_use) num_act_apps++;
- }
+ /* check any application is still active */
+ for (i = 0; i < BTA_HL_NUM_APPS; i++) {
+ p_acb = BTA_HL_GET_APP_CB_PTR(i);
+ if (p_acb->in_use) num_act_apps++;
+ }
- if (!num_act_apps)
- {
- bta_sys_remove_uuid(UUID_SERVCLASS_HDP_PROFILE);
- }
+ if (!num_act_apps) {
+ bta_sys_remove_uuid(UUID_SERVCLASS_HDP_PROFILE);
+ }
}
/*******************************************************************************
@@ -2881,45 +2536,39 @@
*
* Returns void
******************************************************************************/
-void bta_hl_check_deregistration(uint8_t app_idx, tBTA_HL_DATA *p_data )
-{
- tBTA_HL_APP_CB *p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
- tBTA_HL_MCL_CB *p_mcb;
- uint8_t mcl_idx;
- tBTA_HL evt_data;
+void bta_hl_check_deregistration(uint8_t app_idx, tBTA_HL_DATA* p_data) {
+ tBTA_HL_APP_CB* p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
+ tBTA_HL_MCL_CB* p_mcb;
+ uint8_t mcl_idx;
+ tBTA_HL evt_data;
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hl_check_deregistration");
+ APPL_TRACE_DEBUG("bta_hl_check_deregistration");
#endif
- if (p_acb->deregistering)
- {
- if (bta_hl_find_an_in_use_mcl_idx(app_idx, &mcl_idx))
- {
- p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
- if (p_mcb->cch_oper != BTA_HL_CCH_OP_LOCAL_CLOSE)
- {
- if (p_mcb->cch_state == BTA_HL_CCH_OPENING_ST)
- p_mcb->force_close_local_cch_opening = true;
- p_mcb->cch_oper = BTA_HL_CCH_OP_LOCAL_CLOSE;
- APPL_TRACE_DEBUG("p_mcb->force_close_local_cch_opening=%d", p_mcb->force_close_local_cch_opening );
- bta_hl_check_cch_close(app_idx,mcl_idx,p_data, true);
- }
- }
- else
- {
- /* all cchs are closed */
- evt_data.dereg_cfm.app_handle = p_acb->app_handle;
- evt_data.dereg_cfm.app_id = p_data->api_dereg.app_id;
- evt_data.dereg_cfm.status = BTA_HL_STATUS_OK;
- p_acb->p_cback(BTA_HL_DEREGISTER_CFM_EVT, (tBTA_HL *) &evt_data );
- bta_hl_clean_app(app_idx);
- bta_hl_check_disable(p_data);
- }
+ if (p_acb->deregistering) {
+ if (bta_hl_find_an_in_use_mcl_idx(app_idx, &mcl_idx)) {
+ p_mcb = BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx);
+ if (p_mcb->cch_oper != BTA_HL_CCH_OP_LOCAL_CLOSE) {
+ if (p_mcb->cch_state == BTA_HL_CCH_OPENING_ST)
+ p_mcb->force_close_local_cch_opening = true;
+ p_mcb->cch_oper = BTA_HL_CCH_OP_LOCAL_CLOSE;
+ APPL_TRACE_DEBUG("p_mcb->force_close_local_cch_opening=%d",
+ p_mcb->force_close_local_cch_opening);
+ bta_hl_check_cch_close(app_idx, mcl_idx, p_data, true);
+ }
+ } else {
+ /* all cchs are closed */
+ evt_data.dereg_cfm.app_handle = p_acb->app_handle;
+ evt_data.dereg_cfm.app_id = p_data->api_dereg.app_id;
+ evt_data.dereg_cfm.status = BTA_HL_STATUS_OK;
+ p_acb->p_cback(BTA_HL_DEREGISTER_CFM_EVT, (tBTA_HL*)&evt_data);
+ bta_hl_clean_app(app_idx);
+ bta_hl_check_disable(p_data);
}
+ }
}
-
/*******************************************************************************
*
* Function bta_hl_check_disable
@@ -2930,37 +2579,33 @@
* Returns void
*
******************************************************************************/
-void bta_hl_check_disable(tBTA_HL_DATA *p_data )
-{
- tBTA_HL_CB *p_cb= &bta_hl_cb;
- tBTA_HL_APP_CB *p_acb;
- uint8_t app_idx;
- tBTA_HL_CTRL evt_data;
+void bta_hl_check_disable(tBTA_HL_DATA* p_data) {
+ tBTA_HL_CB* p_cb = &bta_hl_cb;
+ tBTA_HL_APP_CB* p_acb;
+ uint8_t app_idx;
+ tBTA_HL_CTRL evt_data;
#if (BTA_HL_DEBUG == TRUE)
- APPL_TRACE_DEBUG("bta_hl_check_disable");
+ APPL_TRACE_DEBUG("bta_hl_check_disable");
#endif
- if (bta_hl_cb.disabling)
- {
- if (bta_hl_find_an_in_use_app_idx(&app_idx))
- {
- p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
- if (!p_acb->deregistering)
- {
- p_acb->deregistering = true;
- bta_hl_check_deregistration(app_idx, p_data);
- }
- }
- else
- {
- /* all apps are deregistered */
- bta_sys_deregister(BTA_ID_HL);
- evt_data.disable_cfm.status = BTA_HL_STATUS_OK;
- if (p_cb->p_ctrl_cback) p_cb->p_ctrl_cback(BTA_HL_CTRL_DISABLE_CFM_EVT, (tBTA_HL_CTRL *) &evt_data);
- memset((void *) p_cb, 0, sizeof(tBTA_HL_CB));
- }
+ if (bta_hl_cb.disabling) {
+ if (bta_hl_find_an_in_use_app_idx(&app_idx)) {
+ p_acb = BTA_HL_GET_APP_CB_PTR(app_idx);
+ if (!p_acb->deregistering) {
+ p_acb->deregistering = true;
+ bta_hl_check_deregistration(app_idx, p_data);
+ }
+ } else {
+ /* all apps are deregistered */
+ bta_sys_deregister(BTA_ID_HL);
+ evt_data.disable_cfm.status = BTA_HL_STATUS_OK;
+ if (p_cb->p_ctrl_cback)
+ p_cb->p_ctrl_cback(BTA_HL_CTRL_DISABLE_CFM_EVT,
+ (tBTA_HL_CTRL*)&evt_data);
+ memset((void*)p_cb, 0, sizeof(tBTA_HL_CB));
}
+ }
}
/*******************************************************************************
@@ -2972,14 +2617,12 @@
* Returns None
*
******************************************************************************/
-void bta_hl_build_abort_cfm(tBTA_HL *p_evt_data,
- tBTA_HL_APP_HANDLE app_handle,
- tBTA_HL_MCL_HANDLE mcl_handle,
- tBTA_HL_STATUS status)
-{
- p_evt_data->dch_abort_cfm.status = status;
- p_evt_data->dch_abort_cfm.mcl_handle = mcl_handle;
- p_evt_data->dch_abort_cfm.app_handle = app_handle;
+void bta_hl_build_abort_cfm(tBTA_HL* p_evt_data, tBTA_HL_APP_HANDLE app_handle,
+ tBTA_HL_MCL_HANDLE mcl_handle,
+ tBTA_HL_STATUS status) {
+ p_evt_data->dch_abort_cfm.status = status;
+ p_evt_data->dch_abort_cfm.mcl_handle = mcl_handle;
+ p_evt_data->dch_abort_cfm.app_handle = app_handle;
}
/*******************************************************************************
@@ -2991,12 +2634,10 @@
* Returns None
*
******************************************************************************/
-void bta_hl_build_abort_ind(tBTA_HL *p_evt_data,
- tBTA_HL_APP_HANDLE app_handle,
- tBTA_HL_MCL_HANDLE mcl_handle)
-{
- p_evt_data->dch_abort_ind.mcl_handle = mcl_handle;
- p_evt_data->dch_abort_ind.app_handle = app_handle;
+void bta_hl_build_abort_ind(tBTA_HL* p_evt_data, tBTA_HL_APP_HANDLE app_handle,
+ tBTA_HL_MCL_HANDLE mcl_handle) {
+ p_evt_data->dch_abort_ind.mcl_handle = mcl_handle;
+ p_evt_data->dch_abort_ind.app_handle = app_handle;
}
/*******************************************************************************
*
@@ -3007,16 +2648,15 @@
* Returns None
*
******************************************************************************/
-void bta_hl_build_dch_close_cfm(tBTA_HL *p_evt_data,
- tBTA_HL_APP_HANDLE app_handle,
- tBTA_HL_MCL_HANDLE mcl_handle,
- tBTA_HL_MDL_HANDLE mdl_handle,
- tBTA_HL_STATUS status)
-{
- p_evt_data->dch_close_cfm.status = status;
- p_evt_data->dch_close_cfm.mdl_handle = mdl_handle;
- p_evt_data->dch_close_cfm.mcl_handle = mcl_handle;
- p_evt_data->dch_close_cfm.app_handle = app_handle;
+void bta_hl_build_dch_close_cfm(tBTA_HL* p_evt_data,
+ tBTA_HL_APP_HANDLE app_handle,
+ tBTA_HL_MCL_HANDLE mcl_handle,
+ tBTA_HL_MDL_HANDLE mdl_handle,
+ tBTA_HL_STATUS status) {
+ p_evt_data->dch_close_cfm.status = status;
+ p_evt_data->dch_close_cfm.mdl_handle = mdl_handle;
+ p_evt_data->dch_close_cfm.mcl_handle = mcl_handle;
+ p_evt_data->dch_close_cfm.app_handle = app_handle;
}
/*******************************************************************************
@@ -3028,16 +2668,15 @@
* Returns None
*
******************************************************************************/
-void bta_hl_build_dch_close_ind(tBTA_HL *p_evt_data,
- tBTA_HL_APP_HANDLE app_handle,
- tBTA_HL_MCL_HANDLE mcl_handle,
- tBTA_HL_MDL_HANDLE mdl_handle,
- bool intentional)
-{
- p_evt_data->dch_close_ind.mdl_handle = mdl_handle;
- p_evt_data->dch_close_ind.mcl_handle = mcl_handle;
- p_evt_data->dch_close_ind.app_handle = app_handle;
- p_evt_data->dch_close_ind.intentional = intentional;
+void bta_hl_build_dch_close_ind(tBTA_HL* p_evt_data,
+ tBTA_HL_APP_HANDLE app_handle,
+ tBTA_HL_MCL_HANDLE mcl_handle,
+ tBTA_HL_MDL_HANDLE mdl_handle,
+ bool intentional) {
+ p_evt_data->dch_close_ind.mdl_handle = mdl_handle;
+ p_evt_data->dch_close_ind.mcl_handle = mcl_handle;
+ p_evt_data->dch_close_ind.app_handle = app_handle;
+ p_evt_data->dch_close_ind.intentional = intentional;
}
/*******************************************************************************
@@ -3049,17 +2688,15 @@
* Returns None
*
******************************************************************************/
-void bta_hl_build_send_data_cfm(tBTA_HL *p_evt_data,
- tBTA_HL_APP_HANDLE app_handle,
- tBTA_HL_MCL_HANDLE mcl_handle,
- tBTA_HL_MDL_HANDLE mdl_handle,
- tBTA_HL_STATUS status )
-{
-
- p_evt_data->dch_send_data_cfm.mdl_handle = mdl_handle;
- p_evt_data->dch_send_data_cfm.mcl_handle = mcl_handle;
- p_evt_data->dch_send_data_cfm.app_handle = app_handle;
- p_evt_data->dch_send_data_cfm.status = status;
+void bta_hl_build_send_data_cfm(tBTA_HL* p_evt_data,
+ tBTA_HL_APP_HANDLE app_handle,
+ tBTA_HL_MCL_HANDLE mcl_handle,
+ tBTA_HL_MDL_HANDLE mdl_handle,
+ tBTA_HL_STATUS status) {
+ p_evt_data->dch_send_data_cfm.mdl_handle = mdl_handle;
+ p_evt_data->dch_send_data_cfm.mcl_handle = mcl_handle;
+ p_evt_data->dch_send_data_cfm.app_handle = app_handle;
+ p_evt_data->dch_send_data_cfm.status = status;
}
/*******************************************************************************
@@ -3071,17 +2708,15 @@
* Returns None
*
******************************************************************************/
-void bta_hl_build_rcv_data_ind(tBTA_HL *p_evt_data,
- tBTA_HL_APP_HANDLE app_handle,
- tBTA_HL_MCL_HANDLE mcl_handle,
- tBTA_HL_MDL_HANDLE mdl_handle)
-{
- p_evt_data->dch_rcv_data_ind.mdl_handle = mdl_handle;
- p_evt_data->dch_rcv_data_ind.mcl_handle = mcl_handle;
- p_evt_data->dch_rcv_data_ind.app_handle = app_handle;
+void bta_hl_build_rcv_data_ind(tBTA_HL* p_evt_data,
+ tBTA_HL_APP_HANDLE app_handle,
+ tBTA_HL_MCL_HANDLE mcl_handle,
+ tBTA_HL_MDL_HANDLE mdl_handle) {
+ p_evt_data->dch_rcv_data_ind.mdl_handle = mdl_handle;
+ p_evt_data->dch_rcv_data_ind.mcl_handle = mcl_handle;
+ p_evt_data->dch_rcv_data_ind.app_handle = app_handle;
}
-
/*******************************************************************************
*
* Function bta_hl_build_cch_open_cfm
@@ -3091,19 +2726,16 @@
* Returns None
*
******************************************************************************/
-void bta_hl_build_cch_open_cfm(tBTA_HL *p_evt_data,
- uint8_t app_id,
- tBTA_HL_APP_HANDLE app_handle,
- tBTA_HL_MCL_HANDLE mcl_handle,
- BD_ADDR bd_addr,
- tBTA_HL_STATUS status )
-{
- p_evt_data->cch_open_cfm.app_id = app_id;
- p_evt_data->cch_open_cfm.app_handle = app_handle;
- p_evt_data->cch_open_cfm.mcl_handle = mcl_handle;
- bdcpy(p_evt_data->cch_open_cfm.bd_addr, bd_addr);
- p_evt_data->cch_open_cfm.status = status;
- APPL_TRACE_DEBUG("bta_hl_build_cch_open_cfm: status=%d",status);
+void bta_hl_build_cch_open_cfm(tBTA_HL* p_evt_data, uint8_t app_id,
+ tBTA_HL_APP_HANDLE app_handle,
+ tBTA_HL_MCL_HANDLE mcl_handle, BD_ADDR bd_addr,
+ tBTA_HL_STATUS status) {
+ p_evt_data->cch_open_cfm.app_id = app_id;
+ p_evt_data->cch_open_cfm.app_handle = app_handle;
+ p_evt_data->cch_open_cfm.mcl_handle = mcl_handle;
+ bdcpy(p_evt_data->cch_open_cfm.bd_addr, bd_addr);
+ p_evt_data->cch_open_cfm.status = status;
+ APPL_TRACE_DEBUG("bta_hl_build_cch_open_cfm: status=%d", status);
}
/*******************************************************************************
@@ -3115,14 +2747,12 @@
* Returns None
*
******************************************************************************/
-void bta_hl_build_cch_open_ind(tBTA_HL *p_evt_data, tBTA_HL_APP_HANDLE app_handle,
- tBTA_HL_MCL_HANDLE mcl_handle,
- BD_ADDR bd_addr )
-{
-
- p_evt_data->cch_open_ind.app_handle = app_handle;
- p_evt_data->cch_open_ind.mcl_handle = mcl_handle;
- bdcpy(p_evt_data->cch_open_ind.bd_addr, bd_addr);
+void bta_hl_build_cch_open_ind(tBTA_HL* p_evt_data,
+ tBTA_HL_APP_HANDLE app_handle,
+ tBTA_HL_MCL_HANDLE mcl_handle, BD_ADDR bd_addr) {
+ p_evt_data->cch_open_ind.app_handle = app_handle;
+ p_evt_data->cch_open_ind.mcl_handle = mcl_handle;
+ bdcpy(p_evt_data->cch_open_ind.bd_addr, bd_addr);
}
/*******************************************************************************
@@ -3134,17 +2764,15 @@
* Returns None
*
******************************************************************************/
-void bta_hl_build_cch_close_cfm(tBTA_HL *p_evt_data,
- tBTA_HL_APP_HANDLE app_handle,
- tBTA_HL_MCL_HANDLE mcl_handle,
- tBTA_HL_STATUS status )
-{
- p_evt_data->cch_close_cfm.mcl_handle = mcl_handle;
- p_evt_data->cch_close_cfm.app_handle = app_handle;
- p_evt_data->cch_close_cfm.status = status;
+void bta_hl_build_cch_close_cfm(tBTA_HL* p_evt_data,
+ tBTA_HL_APP_HANDLE app_handle,
+ tBTA_HL_MCL_HANDLE mcl_handle,
+ tBTA_HL_STATUS status) {
+ p_evt_data->cch_close_cfm.mcl_handle = mcl_handle;
+ p_evt_data->cch_close_cfm.app_handle = app_handle;
+ p_evt_data->cch_close_cfm.status = status;
}
-
/*******************************************************************************
*
* Function bta_hl_build_cch_close_ind
@@ -3154,14 +2782,13 @@
* Returns None
*
******************************************************************************/
-void bta_hl_build_cch_close_ind(tBTA_HL *p_evt_data,
- tBTA_HL_APP_HANDLE app_handle,
- tBTA_HL_MCL_HANDLE mcl_handle,
- bool intentional)
-{
- p_evt_data->cch_close_ind.mcl_handle = mcl_handle;
- p_evt_data->cch_close_ind.app_handle = app_handle;
- p_evt_data->cch_close_ind.intentional = intentional;
+void bta_hl_build_cch_close_ind(tBTA_HL* p_evt_data,
+ tBTA_HL_APP_HANDLE app_handle,
+ tBTA_HL_MCL_HANDLE mcl_handle,
+ bool intentional) {
+ p_evt_data->cch_close_ind.mcl_handle = mcl_handle;
+ p_evt_data->cch_close_ind.app_handle = app_handle;
+ p_evt_data->cch_close_ind.intentional = intentional;
}
/*******************************************************************************
@@ -3173,30 +2800,27 @@
* Returns None
*
******************************************************************************/
-void bta_hl_build_dch_open_cfm(tBTA_HL *p_evt_data,
- tBTA_HL_APP_HANDLE app_handle,
- tBTA_HL_MCL_HANDLE mcl_handle,
- tBTA_HL_MDL_HANDLE mdl_handle,
- tBTA_HL_MDEP_ID local_mdep_id,
- tBTA_HL_MDL_ID mdl_id,
- tBTA_HL_DCH_MODE dch_mode,
- bool first_reliable,
- uint16_t mtu,
- tBTA_HL_STATUS status)
+void bta_hl_build_dch_open_cfm(tBTA_HL* p_evt_data,
+ tBTA_HL_APP_HANDLE app_handle,
+ tBTA_HL_MCL_HANDLE mcl_handle,
+ tBTA_HL_MDL_HANDLE mdl_handle,
+ tBTA_HL_MDEP_ID local_mdep_id,
+ tBTA_HL_MDL_ID mdl_id, tBTA_HL_DCH_MODE dch_mode,
+ bool first_reliable, uint16_t mtu,
+ tBTA_HL_STATUS status)
{
- p_evt_data->dch_open_cfm.mdl_handle = mdl_handle;
- p_evt_data->dch_open_cfm.mcl_handle = mcl_handle;
- p_evt_data->dch_open_cfm.app_handle = app_handle;
- p_evt_data->dch_open_cfm.local_mdep_id = local_mdep_id;
- p_evt_data->dch_open_cfm.mdl_id = mdl_id;
- p_evt_data->dch_open_cfm.dch_mode = dch_mode;
- p_evt_data->dch_open_cfm.first_reliable = first_reliable;
- p_evt_data->dch_open_cfm.mtu = mtu;
- p_evt_data->dch_open_cfm.status = status;
+ p_evt_data->dch_open_cfm.mdl_handle = mdl_handle;
+ p_evt_data->dch_open_cfm.mcl_handle = mcl_handle;
+ p_evt_data->dch_open_cfm.app_handle = app_handle;
+ p_evt_data->dch_open_cfm.local_mdep_id = local_mdep_id;
+ p_evt_data->dch_open_cfm.mdl_id = mdl_id;
+ p_evt_data->dch_open_cfm.dch_mode = dch_mode;
+ p_evt_data->dch_open_cfm.first_reliable = first_reliable;
+ p_evt_data->dch_open_cfm.mtu = mtu;
+ p_evt_data->dch_open_cfm.status = status;
}
-
/*******************************************************************************
*
* Function bta_hl_build_sdp_query_cfm
@@ -3206,24 +2830,20 @@
* Returns None
*
******************************************************************************/
-void bta_hl_build_sdp_query_cfm(tBTA_HL *p_evt_data,
- uint8_t app_id,
- tBTA_HL_APP_HANDLE app_handle,
- BD_ADDR bd_addr,
- tBTA_HL_SDP *p_sdp,
- tBTA_HL_STATUS status)
+void bta_hl_build_sdp_query_cfm(tBTA_HL* p_evt_data, uint8_t app_id,
+ tBTA_HL_APP_HANDLE app_handle, BD_ADDR bd_addr,
+ tBTA_HL_SDP* p_sdp, tBTA_HL_STATUS status)
{
- APPL_TRACE_DEBUG("bta_hl_build_sdp_query_cfm: app_id = %d, app_handle=%d",
- app_id,app_handle);
- p_evt_data->sdp_query_cfm.app_id = app_id;
- p_evt_data->sdp_query_cfm.app_handle = app_handle;
- bdcpy(p_evt_data->sdp_query_cfm.bd_addr, bd_addr);
- p_evt_data->sdp_query_cfm.p_sdp = p_sdp;
- p_evt_data->sdp_query_cfm.status = status;
+ APPL_TRACE_DEBUG("bta_hl_build_sdp_query_cfm: app_id = %d, app_handle=%d",
+ app_id, app_handle);
+ p_evt_data->sdp_query_cfm.app_id = app_id;
+ p_evt_data->sdp_query_cfm.app_handle = app_handle;
+ bdcpy(p_evt_data->sdp_query_cfm.bd_addr, bd_addr);
+ p_evt_data->sdp_query_cfm.p_sdp = p_sdp;
+ p_evt_data->sdp_query_cfm.status = status;
}
-
/*******************************************************************************
*
* Function bta_hl_build_delete_mdl_cfm
@@ -3233,17 +2853,16 @@
* Returns None
*
******************************************************************************/
-void bta_hl_build_delete_mdl_cfm(tBTA_HL *p_evt_data,
- tBTA_HL_APP_HANDLE app_handle,
- tBTA_HL_MCL_HANDLE mcl_handle,
- tBTA_HL_MDL_ID mdl_id,
- tBTA_HL_STATUS status)
+void bta_hl_build_delete_mdl_cfm(tBTA_HL* p_evt_data,
+ tBTA_HL_APP_HANDLE app_handle,
+ tBTA_HL_MCL_HANDLE mcl_handle,
+ tBTA_HL_MDL_ID mdl_id, tBTA_HL_STATUS status)
{
- p_evt_data->delete_mdl_cfm.mcl_handle = mcl_handle;
- p_evt_data->delete_mdl_cfm.app_handle = app_handle;
- p_evt_data->delete_mdl_cfm.mdl_id = mdl_id;
- p_evt_data->delete_mdl_cfm.status = status;
+ p_evt_data->delete_mdl_cfm.mcl_handle = mcl_handle;
+ p_evt_data->delete_mdl_cfm.app_handle = app_handle;
+ p_evt_data->delete_mdl_cfm.mdl_id = mdl_id;
+ p_evt_data->delete_mdl_cfm.status = status;
}
/*******************************************************************************
@@ -3255,17 +2874,15 @@
* Returns None
*
******************************************************************************/
-void bta_hl_build_echo_test_cfm(tBTA_HL *p_evt_data,
- tBTA_HL_APP_HANDLE app_handle,
- tBTA_HL_MCL_HANDLE mcl_handle,
- tBTA_HL_STATUS status )
-{
- p_evt_data->echo_test_cfm.mcl_handle = mcl_handle;
- p_evt_data->echo_test_cfm.app_handle = app_handle;
- p_evt_data->echo_test_cfm.status = status;
+void bta_hl_build_echo_test_cfm(tBTA_HL* p_evt_data,
+ tBTA_HL_APP_HANDLE app_handle,
+ tBTA_HL_MCL_HANDLE mcl_handle,
+ tBTA_HL_STATUS status) {
+ p_evt_data->echo_test_cfm.mcl_handle = mcl_handle;
+ p_evt_data->echo_test_cfm.app_handle = app_handle;
+ p_evt_data->echo_test_cfm.status = status;
}
-
/*****************************************************************************
* Debug Functions
****************************************************************************/
@@ -3280,64 +2897,62 @@
* Returns char * - status string pointer
*
******************************************************************************/
-const char *bta_hl_status_code(tBTA_HL_STATUS status)
-{
- switch (status)
- {
- case BTA_HL_STATUS_OK:
- return "BTA_HL_STATUS_OK";
- case BTA_HL_STATUS_FAIL:
- return "BTA_HL_STATUS_FAIL";
- case BTA_HL_STATUS_ABORTED:
- return "BTA_HL_STATUS_ABORTED";
- case BTA_HL_STATUS_NO_RESOURCE:
- return "BTA_HL_STATUS_NO_RESOURCE";
- case BTA_HL_STATUS_LAST_ITEM:
- return "BTA_HL_STATUS_LAST_ITEM";
- case BTA_HL_STATUS_DUPLICATE_APP_ID:
- return "BTA_HL_STATUS_DUPLICATE_APP_ID";
- case BTA_HL_STATUS_INVALID_APP_HANDLE:
- return "BTA_HL_STATUS_INVALID_APP_HANDLE";
- case BTA_HL_STATUS_INVALID_MCL_HANDLE:
- return "BTA_HL_STATUS_INVALID_MCL_HANDLE";
- case BTA_HL_STATUS_MCAP_REG_FAIL:
- return "BTA_HL_STATUS_MCAP_REG_FAIL";
- case BTA_HL_STATUS_MDEP_CO_FAIL:
- return "BTA_HL_STATUS_MDEP_CO_FAIL";
- case BTA_HL_STATUS_ECHO_CO_FAIL:
- return "BTA_HL_STATUS_ECHO_CO_FAIL";
- case BTA_HL_STATUS_MDL_CFG_CO_FAIL:
- return "BTA_HL_STATUS_MDL_CFG_CO_FAIL";
- case BTA_HL_STATUS_SDP_NO_RESOURCE:
- return "BTA_HL_STATUS_SDP_NO_RESOURCE";
- case BTA_HL_STATUS_SDP_FAIL:
- return "BTA_HL_STATUS_SDP_FAIL";
- case BTA_HL_STATUS_NO_CCH:
- return "BTA_HL_STATUS_NO_CCH";
- case BTA_HL_STATUS_NO_MCL:
- return "BTA_HL_STATUS_NO_MCL";
+const char* bta_hl_status_code(tBTA_HL_STATUS status) {
+ switch (status) {
+ case BTA_HL_STATUS_OK:
+ return "BTA_HL_STATUS_OK";
+ case BTA_HL_STATUS_FAIL:
+ return "BTA_HL_STATUS_FAIL";
+ case BTA_HL_STATUS_ABORTED:
+ return "BTA_HL_STATUS_ABORTED";
+ case BTA_HL_STATUS_NO_RESOURCE:
+ return "BTA_HL_STATUS_NO_RESOURCE";
+ case BTA_HL_STATUS_LAST_ITEM:
+ return "BTA_HL_STATUS_LAST_ITEM";
+ case BTA_HL_STATUS_DUPLICATE_APP_ID:
+ return "BTA_HL_STATUS_DUPLICATE_APP_ID";
+ case BTA_HL_STATUS_INVALID_APP_HANDLE:
+ return "BTA_HL_STATUS_INVALID_APP_HANDLE";
+ case BTA_HL_STATUS_INVALID_MCL_HANDLE:
+ return "BTA_HL_STATUS_INVALID_MCL_HANDLE";
+ case BTA_HL_STATUS_MCAP_REG_FAIL:
+ return "BTA_HL_STATUS_MCAP_REG_FAIL";
+ case BTA_HL_STATUS_MDEP_CO_FAIL:
+ return "BTA_HL_STATUS_MDEP_CO_FAIL";
+ case BTA_HL_STATUS_ECHO_CO_FAIL:
+ return "BTA_HL_STATUS_ECHO_CO_FAIL";
+ case BTA_HL_STATUS_MDL_CFG_CO_FAIL:
+ return "BTA_HL_STATUS_MDL_CFG_CO_FAIL";
+ case BTA_HL_STATUS_SDP_NO_RESOURCE:
+ return "BTA_HL_STATUS_SDP_NO_RESOURCE";
+ case BTA_HL_STATUS_SDP_FAIL:
+ return "BTA_HL_STATUS_SDP_FAIL";
+ case BTA_HL_STATUS_NO_CCH:
+ return "BTA_HL_STATUS_NO_CCH";
+ case BTA_HL_STATUS_NO_MCL:
+ return "BTA_HL_STATUS_NO_MCL";
- case BTA_HL_STATUS_NO_FIRST_RELIABLE:
- return "BTA_HL_STATUS_NO_FIRST_RELIABLE";
- case BTA_HL_STATUS_INVALID_DCH_CFG:
- return "BTA_HL_STATUS_INVALID_DCH_CFG";
- case BTA_HL_STATUS_INVALID_BD_ADDR:
- return "BTA_HL_STATUS_INVALID_BD_ADDR";
- case BTA_HL_STATUS_INVALID_RECONNECT_CFG:
- return "BTA_HL_STATUS_INVALID_RECONNECT_CFG";
- case BTA_HL_STATUS_ECHO_TEST_BUSY:
- return "BTA_HL_STATUS_ECHO_TEST_BUSY";
- case BTA_HL_STATUS_INVALID_LOCAL_MDEP_ID:
- return "BTA_HL_STATUS_INVALID_LOCAL_MDEP_ID";
- case BTA_HL_STATUS_INVALID_MDL_ID:
- return "BTA_HL_STATUS_INVALID_MDL_ID";
- case BTA_HL_STATUS_NO_MDL_ID_FOUND:
- return "BTA_HL_STATUS_NO_MDL_ID_FOUND";
- case BTA_HL_STATUS_DCH_BUSY:
- return "BTA_HL_STATUS_DCH_BUSY";
- default:
- return "Unknown status code";
- }
+ case BTA_HL_STATUS_NO_FIRST_RELIABLE:
+ return "BTA_HL_STATUS_NO_FIRST_RELIABLE";
+ case BTA_HL_STATUS_INVALID_DCH_CFG:
+ return "BTA_HL_STATUS_INVALID_DCH_CFG";
+ case BTA_HL_STATUS_INVALID_BD_ADDR:
+ return "BTA_HL_STATUS_INVALID_BD_ADDR";
+ case BTA_HL_STATUS_INVALID_RECONNECT_CFG:
+ return "BTA_HL_STATUS_INVALID_RECONNECT_CFG";
+ case BTA_HL_STATUS_ECHO_TEST_BUSY:
+ return "BTA_HL_STATUS_ECHO_TEST_BUSY";
+ case BTA_HL_STATUS_INVALID_LOCAL_MDEP_ID:
+ return "BTA_HL_STATUS_INVALID_LOCAL_MDEP_ID";
+ case BTA_HL_STATUS_INVALID_MDL_ID:
+ return "BTA_HL_STATUS_INVALID_MDL_ID";
+ case BTA_HL_STATUS_NO_MDL_ID_FOUND:
+ return "BTA_HL_STATUS_NO_MDL_ID_FOUND";
+ case BTA_HL_STATUS_DCH_BUSY:
+ return "BTA_HL_STATUS_DCH_BUSY";
+ default:
+ return "Unknown status code";
+ }
}
/*******************************************************************************
*
@@ -3348,135 +2963,125 @@
* Returns string pointer for the associated event name
*
******************************************************************************/
-const char *bta_hl_evt_code(tBTA_HL_INT_EVT evt_code)
-{
- switch (evt_code)
- {
- case BTA_HL_CCH_OPEN_EVT:
- return "BTA_HL_CCH_OPEN_EVT";
- case BTA_HL_CCH_SDP_OK_EVT:
- return "BTA_HL_CCH_SDP_OK_EVT";
- case BTA_HL_CCH_SDP_FAIL_EVT:
- return "BTA_HL_CCH_SDP_FAIL_EVT";
- case BTA_HL_MCA_CONNECT_IND_EVT:
- return "BTA_HL_MCA_CONNECT_IND_EVT";
- case BTA_HL_MCA_DISCONNECT_IND_EVT:
- return "BTA_HL_MCA_DISCONNECT_IND_EVT";
+const char* bta_hl_evt_code(tBTA_HL_INT_EVT evt_code) {
+ switch (evt_code) {
+ case BTA_HL_CCH_OPEN_EVT:
+ return "BTA_HL_CCH_OPEN_EVT";
+ case BTA_HL_CCH_SDP_OK_EVT:
+ return "BTA_HL_CCH_SDP_OK_EVT";
+ case BTA_HL_CCH_SDP_FAIL_EVT:
+ return "BTA_HL_CCH_SDP_FAIL_EVT";
+ case BTA_HL_MCA_CONNECT_IND_EVT:
+ return "BTA_HL_MCA_CONNECT_IND_EVT";
+ case BTA_HL_MCA_DISCONNECT_IND_EVT:
+ return "BTA_HL_MCA_DISCONNECT_IND_EVT";
- case BTA_HL_CCH_CLOSE_EVT:
- return "BTA_HL_CCH_CLOSE_EVT";
- case BTA_HL_CCH_CLOSE_CMPL_EVT:
- return "BTA_HL_CCH_CLOSE_CMPL_EVT";
- case BTA_HL_DCH_OPEN_EVT:
- return "BTA_HL_DCH_OPEN_EVT";
- case BTA_HL_MCA_CREATE_IND_EVT:
- return "BTA_HL_MCA_CREATE_IND_EVT";
- case BTA_HL_MCA_CREATE_CFM_EVT:
- return "BTA_HL_MCA_CREATE_CFM_EVT";
- case BTA_HL_MCA_OPEN_IND_EVT:
- return "BTA_HL_MCA_OPEN_IND_EVT";
- case BTA_HL_MCA_OPEN_CFM_EVT:
- return "BTA_HL_MCA_OPEN_CFM_EVT";
- case BTA_HL_DCH_CLOSE_EVT:
- return "BTA_HL_DCH_CLOSE_EVT";
- case BTA_HL_MCA_CLOSE_IND_EVT:
- return "BTA_HL_MCA_CLOSE_IND_EVT";
- case BTA_HL_MCA_CLOSE_CFM_EVT:
- return "BTA_HL_MCA_CLOSE_CFM_EVT";
- case BTA_HL_API_SEND_DATA_EVT:
- return "BTA_HL_API_SEND_DATA_EVT";
- case BTA_HL_MCA_RCV_DATA_EVT:
- return "BTA_HL_MCA_RCV_DATA_EVT";
- case BTA_HL_DCH_CLOSE_CMPL_EVT:
- return "BTA_HL_DCH_CLOSE_CMPL_EVT";
+ case BTA_HL_CCH_CLOSE_EVT:
+ return "BTA_HL_CCH_CLOSE_EVT";
+ case BTA_HL_CCH_CLOSE_CMPL_EVT:
+ return "BTA_HL_CCH_CLOSE_CMPL_EVT";
+ case BTA_HL_DCH_OPEN_EVT:
+ return "BTA_HL_DCH_OPEN_EVT";
+ case BTA_HL_MCA_CREATE_IND_EVT:
+ return "BTA_HL_MCA_CREATE_IND_EVT";
+ case BTA_HL_MCA_CREATE_CFM_EVT:
+ return "BTA_HL_MCA_CREATE_CFM_EVT";
+ case BTA_HL_MCA_OPEN_IND_EVT:
+ return "BTA_HL_MCA_OPEN_IND_EVT";
+ case BTA_HL_MCA_OPEN_CFM_EVT:
+ return "BTA_HL_MCA_OPEN_CFM_EVT";
+ case BTA_HL_DCH_CLOSE_EVT:
+ return "BTA_HL_DCH_CLOSE_EVT";
+ case BTA_HL_MCA_CLOSE_IND_EVT:
+ return "BTA_HL_MCA_CLOSE_IND_EVT";
+ case BTA_HL_MCA_CLOSE_CFM_EVT:
+ return "BTA_HL_MCA_CLOSE_CFM_EVT";
+ case BTA_HL_API_SEND_DATA_EVT:
+ return "BTA_HL_API_SEND_DATA_EVT";
+ case BTA_HL_MCA_RCV_DATA_EVT:
+ return "BTA_HL_MCA_RCV_DATA_EVT";
+ case BTA_HL_DCH_CLOSE_CMPL_EVT:
+ return "BTA_HL_DCH_CLOSE_CMPL_EVT";
- case BTA_HL_API_ENABLE_EVT:
- return "BTA_HL_API_ENABLE_EVT";
- case BTA_HL_API_DISABLE_EVT:
- return "BTA_HL_API_DISABLE_EVT";
- case BTA_HL_API_UPDATE_EVT:
- return "BTA_HL_API_UPDATE_EVT";
- case BTA_HL_API_REGISTER_EVT:
- return "BTA_HL_API_REGISTER_EVT";
- case BTA_HL_API_DEREGISTER_EVT:
- return "BTA_HL_API_DEREGISTER_EVT";
+ case BTA_HL_API_ENABLE_EVT:
+ return "BTA_HL_API_ENABLE_EVT";
+ case BTA_HL_API_DISABLE_EVT:
+ return "BTA_HL_API_DISABLE_EVT";
+ case BTA_HL_API_UPDATE_EVT:
+ return "BTA_HL_API_UPDATE_EVT";
+ case BTA_HL_API_REGISTER_EVT:
+ return "BTA_HL_API_REGISTER_EVT";
+ case BTA_HL_API_DEREGISTER_EVT:
+ return "BTA_HL_API_DEREGISTER_EVT";
- case BTA_HL_API_CCH_OPEN_EVT:
- return "BTA_HL_API_CCH_OPEN_EVT";
+ case BTA_HL_API_CCH_OPEN_EVT:
+ return "BTA_HL_API_CCH_OPEN_EVT";
- case BTA_HL_API_CCH_CLOSE_EVT:
- return "BTA_HL_API_CCH_CLOSE_EVT";
- case BTA_HL_API_DCH_OPEN_EVT:
- return "BTA_HL_API_DCH_OPEN_EVT";
+ case BTA_HL_API_CCH_CLOSE_EVT:
+ return "BTA_HL_API_CCH_CLOSE_EVT";
+ case BTA_HL_API_DCH_OPEN_EVT:
+ return "BTA_HL_API_DCH_OPEN_EVT";
- case BTA_HL_API_DCH_RECONNECT_EVT:
- return "BTA_HL_API_DCH_RECONNECT_EVT";
- case BTA_HL_API_DCH_CLOSE_EVT:
- return "BTA_HL_API_DCH_CLOSE_EVT";
- case BTA_HL_API_DELETE_MDL_EVT:
- return "BTA_HL_API_DELETE_MDL_EVT";
- case BTA_HL_API_DCH_ABORT_EVT:
- return "BTA_HL_API_DCH_ABORT_EVT";
+ case BTA_HL_API_DCH_RECONNECT_EVT:
+ return "BTA_HL_API_DCH_RECONNECT_EVT";
+ case BTA_HL_API_DCH_CLOSE_EVT:
+ return "BTA_HL_API_DCH_CLOSE_EVT";
+ case BTA_HL_API_DELETE_MDL_EVT:
+ return "BTA_HL_API_DELETE_MDL_EVT";
+ case BTA_HL_API_DCH_ABORT_EVT:
+ return "BTA_HL_API_DCH_ABORT_EVT";
- case BTA_HL_DCH_RECONNECT_EVT:
- return "BTA_HL_DCH_RECONNECT_EVT";
- case BTA_HL_DCH_SDP_INIT_EVT:
- return "BTA_HL_DCH_SDP_INIT_EVT";
- case BTA_HL_DCH_SDP_FAIL_EVT:
- return "BTA_HL_DCH_SDP_FAIL_EVT";
- case BTA_HL_API_DCH_ECHO_TEST_EVT:
- return "BTA_HL_API_DCH_ECHO_TEST_EVT";
- case BTA_HL_DCH_CLOSE_ECHO_TEST_EVT:
- return "BTA_HL_DCH_CLOSE_ECHO_TEST_EVT";
- case BTA_HL_MCA_RECONNECT_IND_EVT:
- return "BTA_HL_MCA_RECONNECT_IND_EVT";
- case BTA_HL_MCA_RECONNECT_CFM_EVT:
- return "BTA_HL_MCA_RECONNECT_CFM_EVT";
- case BTA_HL_API_DCH_CREATE_RSP_EVT:
- return "BTA_HL_API_DCH_CREATE_RSP_EVT";
- case BTA_HL_DCH_ABORT_EVT:
- return "BTA_HL_DCH_ABORT_EVT";
- case BTA_HL_MCA_ABORT_IND_EVT:
- return "BTA_HL_MCA_ABORT_IND_EVT";
- case BTA_HL_MCA_ABORT_CFM_EVT:
- return "BTA_HL_MCA_ABORT_CFM_EVT";
- case BTA_HL_MCA_DELETE_IND_EVT:
- return "BTA_HL_MCA_DELETE_IND_EVT";
- case BTA_HL_MCA_DELETE_CFM_EVT:
- return "BTA_HL_MCA_DELETE_CFM_EVT";
- case BTA_HL_MCA_CONG_CHG_EVT:
- return "BTA_HL_MCA_CONG_CHG_EVT";
- case BTA_HL_CI_GET_TX_DATA_EVT:
- return "BTA_HL_CI_GET_TX_DATA_EVT";
- case BTA_HL_CI_PUT_RX_DATA_EVT:
- return "BTA_HL_CI_PUT_RX_DATA_EVT";
- case BTA_HL_CI_GET_ECHO_DATA_EVT:
- return "BTA_HL_CI_GET_ECHO_DATA_EVT";
- case BTA_HL_DCH_ECHO_TEST_EVT:
- return "BTA_HL_DCH_ECHO_TEST_EVT";
- case BTA_HL_CI_PUT_ECHO_DATA_EVT:
- return "BTA_HL_CI_PUT_ECHO_DATA_EVT";
- case BTA_HL_API_SDP_QUERY_EVT:
- return "BTA_HL_API_SDP_QUERY_EVT";
- case BTA_HL_SDP_QUERY_OK_EVT:
- return "BTA_HL_SDP_QUERY_OK_EVT";
- case BTA_HL_SDP_QUERY_FAIL_EVT:
- return "BTA_HL_SDP_QUERY_FAIL_EVT";
- case BTA_HL_MCA_RSP_TOUT_IND_EVT:
- return "BTA_HL_MCA_RSP_TOUT_IND_EVT";
+ case BTA_HL_DCH_RECONNECT_EVT:
+ return "BTA_HL_DCH_RECONNECT_EVT";
+ case BTA_HL_DCH_SDP_INIT_EVT:
+ return "BTA_HL_DCH_SDP_INIT_EVT";
+ case BTA_HL_DCH_SDP_FAIL_EVT:
+ return "BTA_HL_DCH_SDP_FAIL_EVT";
+ case BTA_HL_API_DCH_ECHO_TEST_EVT:
+ return "BTA_HL_API_DCH_ECHO_TEST_EVT";
+ case BTA_HL_DCH_CLOSE_ECHO_TEST_EVT:
+ return "BTA_HL_DCH_CLOSE_ECHO_TEST_EVT";
+ case BTA_HL_MCA_RECONNECT_IND_EVT:
+ return "BTA_HL_MCA_RECONNECT_IND_EVT";
+ case BTA_HL_MCA_RECONNECT_CFM_EVT:
+ return "BTA_HL_MCA_RECONNECT_CFM_EVT";
+ case BTA_HL_API_DCH_CREATE_RSP_EVT:
+ return "BTA_HL_API_DCH_CREATE_RSP_EVT";
+ case BTA_HL_DCH_ABORT_EVT:
+ return "BTA_HL_DCH_ABORT_EVT";
+ case BTA_HL_MCA_ABORT_IND_EVT:
+ return "BTA_HL_MCA_ABORT_IND_EVT";
+ case BTA_HL_MCA_ABORT_CFM_EVT:
+ return "BTA_HL_MCA_ABORT_CFM_EVT";
+ case BTA_HL_MCA_DELETE_IND_EVT:
+ return "BTA_HL_MCA_DELETE_IND_EVT";
+ case BTA_HL_MCA_DELETE_CFM_EVT:
+ return "BTA_HL_MCA_DELETE_CFM_EVT";
+ case BTA_HL_MCA_CONG_CHG_EVT:
+ return "BTA_HL_MCA_CONG_CHG_EVT";
+ case BTA_HL_CI_GET_TX_DATA_EVT:
+ return "BTA_HL_CI_GET_TX_DATA_EVT";
+ case BTA_HL_CI_PUT_RX_DATA_EVT:
+ return "BTA_HL_CI_PUT_RX_DATA_EVT";
+ case BTA_HL_CI_GET_ECHO_DATA_EVT:
+ return "BTA_HL_CI_GET_ECHO_DATA_EVT";
+ case BTA_HL_DCH_ECHO_TEST_EVT:
+ return "BTA_HL_DCH_ECHO_TEST_EVT";
+ case BTA_HL_CI_PUT_ECHO_DATA_EVT:
+ return "BTA_HL_CI_PUT_ECHO_DATA_EVT";
+ case BTA_HL_API_SDP_QUERY_EVT:
+ return "BTA_HL_API_SDP_QUERY_EVT";
+ case BTA_HL_SDP_QUERY_OK_EVT:
+ return "BTA_HL_SDP_QUERY_OK_EVT";
+ case BTA_HL_SDP_QUERY_FAIL_EVT:
+ return "BTA_HL_SDP_QUERY_FAIL_EVT";
+ case BTA_HL_MCA_RSP_TOUT_IND_EVT:
+ return "BTA_HL_MCA_RSP_TOUT_IND_EVT";
- default:
- return "Unknown HL event code";
- }
+ default:
+ return "Unknown HL event code";
+ }
}
#endif /* Debug Functions */
-#endif // HL_INCLUDED
-
-
-
-
-
-
-
-
+#endif // HL_INCLUDED
diff --git a/bta/include/bta_ag_api.h b/bta/include/bta_ag_api.h
index c5e51cf..7088536 100644
--- a/bta/include/bta_ag_api.h
+++ b/bta/include/bta_ag_api.h
@@ -34,69 +34,72 @@
/*****************************************************************************
* Constants and data types
****************************************************************************/
-#define HFP_VERSION_1_1 0x0101
-#define HFP_VERSION_1_5 0x0105
-#define HFP_VERSION_1_6 0x0106
-#define HFP_VERSION_1_7 0x0107
+#define HFP_VERSION_1_1 0x0101
+#define HFP_VERSION_1_5 0x0105
+#define HFP_VERSION_1_6 0x0106
+#define HFP_VERSION_1_7 0x0107
-#define HSP_VERSION_1_0 0x0100
-#define HSP_VERSION_1_2 0x0102
+#define HSP_VERSION_1_0 0x0100
+#define HSP_VERSION_1_2 0x0102
/* Note, if you change the default version here, please also change the one in
* bta_hs_api.h, they are meant to be the same.
*/
#ifndef BTA_HFP_VERSION
-#define BTA_HFP_VERSION HFP_VERSION_1_7
+#define BTA_HFP_VERSION HFP_VERSION_1_7
#endif
/* AG feature masks */
-#define BTA_AG_FEAT_3WAY 0x00000001 /* Three-way calling */
-#define BTA_AG_FEAT_ECNR 0x00000002 /* Echo cancellation and/or noise reduction */
-#define BTA_AG_FEAT_VREC 0x00000004 /* Voice recognition */
-#define BTA_AG_FEAT_INBAND 0x00000008 /* In-band ring tone */
-#define BTA_AG_FEAT_VTAG 0x00000010 /* Attach a phone number to a voice tag */
-#define BTA_AG_FEAT_REJECT 0x00000020 /* Ability to reject incoming call */
-#define BTA_AG_FEAT_ECS 0x00000040 /* Enhanced Call Status */
-#define BTA_AG_FEAT_ECC 0x00000080 /* Enhanced Call Control */
-#define BTA_AG_FEAT_EXTERR 0x00000100 /* Extended error codes */
-#define BTA_AG_FEAT_CODEC 0x00000200 /* Codec Negotiation */
+#define BTA_AG_FEAT_3WAY 0x00000001 /* Three-way calling */
+#define BTA_AG_FEAT_ECNR \
+ 0x00000002 /* Echo cancellation and/or noise reduction */
+#define BTA_AG_FEAT_VREC 0x00000004 /* Voice recognition */
+#define BTA_AG_FEAT_INBAND 0x00000008 /* In-band ring tone */
+#define BTA_AG_FEAT_VTAG 0x00000010 /* Attach a phone number to a voice tag */
+#define BTA_AG_FEAT_REJECT 0x00000020 /* Ability to reject incoming call */
+#define BTA_AG_FEAT_ECS 0x00000040 /* Enhanced Call Status */
+#define BTA_AG_FEAT_ECC 0x00000080 /* Enhanced Call Control */
+#define BTA_AG_FEAT_EXTERR 0x00000100 /* Extended error codes */
+#define BTA_AG_FEAT_CODEC 0x00000200 /* Codec Negotiation */
-#define HFP_1_6_FEAT_MASK 0x000003FF /* Valid feature bit mask for HFP 1.6 (and below) */
+#define HFP_1_6_FEAT_MASK \
+ 0x000003FF /* Valid feature bit mask for HFP 1.6 (and below) */
/* HFP 1.7+ */
-#define BTA_AG_FEAT_HF_IND 0x00000400 /* HF Indicators */
-#define BTA_AG_FEAT_ESCO 0x00000800 /* eSCO S4 (and T2) setting supported */
-
+#define BTA_AG_FEAT_HF_IND 0x00000400 /* HF Indicators */
+#define BTA_AG_FEAT_ESCO 0x00000800 /* eSCO S4 (and T2) setting supported */
/* Proprietary features: using 31 ~ 16 bits */
-#define BTA_AG_FEAT_BTRH 0x00010000 /* CCAP incoming call hold */
-#define BTA_AG_FEAT_UNAT 0x00020000 /* Pass unknown AT commands to application */
-#define BTA_AG_FEAT_NOSCO 0x00040000 /* No SCO control performed by BTA AG */
-#define BTA_AG_FEAT_NO_ESCO 0x00080000 /* Do not allow or use eSCO */
-#define BTA_AG_FEAT_VOIP 0x00100000 /* VoIP call */
+#define BTA_AG_FEAT_BTRH 0x00010000 /* CCAP incoming call hold */
+#define BTA_AG_FEAT_UNAT \
+ 0x00020000 /* Pass unknown AT commands to application */
+#define BTA_AG_FEAT_NOSCO 0x00040000 /* No SCO control performed by BTA AG */
+#define BTA_AG_FEAT_NO_ESCO 0x00080000 /* Do not allow or use eSCO */
+#define BTA_AG_FEAT_VOIP 0x00100000 /* VoIP call */
typedef uint32_t tBTA_AG_FEAT;
/* AG parse mode */
-#define BTA_AG_PARSE 0 /* Perform AT command parsing in AG */
-#define BTA_AG_PASS_THROUGH 1 /* Pass data directly to phone's AT command interpreter */
+#define BTA_AG_PARSE 0 /* Perform AT command parsing in AG */
+#define BTA_AG_PASS_THROUGH \
+ 1 /* Pass data directly to phone's AT command interpreter */
typedef uint8_t tBTA_AG_PARSE_MODE;
/* AG open status */
-#define BTA_AG_SUCCESS 0 /* Connection successfully opened */
-#define BTA_AG_FAIL_SDP 1 /* Open failed due to SDP */
-#define BTA_AG_FAIL_RFCOMM 2 /* Open failed due to RFCOMM */
-#define BTA_AG_FAIL_RESOURCES 3 /* out of resources failure */
+#define BTA_AG_SUCCESS 0 /* Connection successfully opened */
+#define BTA_AG_FAIL_SDP 1 /* Open failed due to SDP */
+#define BTA_AG_FAIL_RFCOMM 2 /* Open failed due to RFCOMM */
+#define BTA_AG_FAIL_RESOURCES 3 /* out of resources failure */
/* Status to disallow passing AT Events after BTIF */
-#define BTA_AG_DISALLOW_AT 5
+#define BTA_AG_DISALLOW_AT 5
typedef uint8_t tBTA_AG_STATUS;
/* handle values used with BTA_AgResult */
-#define BTA_AG_HANDLE_NONE 0
-#define BTA_AG_HANDLE_ALL 0xFFFF
+#define BTA_AG_HANDLE_NONE 0
+#define BTA_AG_HANDLE_ALL 0xFFFF
/* It is safe to use the same value as BTA_AG_HANDLE_ALL
* HANDLE_ALL is used for delivering indication
* SCO_NO_CHANGE is used for changing sco behavior
@@ -109,336 +112,342 @@
1 for Enhanced Safety Status
2 for Battery Level Status */
#ifndef BTA_AG_NUM_LOCAL_HF_IND
-#define BTA_AG_NUM_LOCAL_HF_IND 2
+#define BTA_AG_NUM_LOCAL_HF_IND 2
#endif
-
-
#define BTA_AG_HANDLE_SCO_NO_CHANGE 0xFFFF
/* AG result codes used with BTA_AgResult */
-#define BTA_AG_SPK_RES 0 /* Update speaker volume */
-#define BTA_AG_MIC_RES 1 /* Update microphone volume */
-#define BTA_AG_INBAND_RING_RES 2 /* Update inband ring state */
-#define BTA_AG_CIND_RES 3 /* Send indicator response for AT+CIND */
-#define BTA_AG_BINP_RES 4 /* Send phone number for voice tag for AT+BINP */
-#define BTA_AG_IND_RES 5 /* Update an indicator value */
-#define BTA_AG_BVRA_RES 6 /* Update voice recognition state */
-#define BTA_AG_CNUM_RES 7 /* Send subscriber number response for AT+CNUM */
-#define BTA_AG_BTRH_RES 8 /* Send CCAP incoming call hold */
-#define BTA_AG_CLCC_RES 9 /* Query list of calls */
-#define BTA_AG_COPS_RES 10 /* Read network operator */
-#define BTA_AG_IN_CALL_RES 11 /* Indicate incoming phone call */
-#define BTA_AG_IN_CALL_CONN_RES 12 /* Incoming phone call connected */
-#define BTA_AG_CALL_WAIT_RES 13 /* Call waiting notification */
-#define BTA_AG_OUT_CALL_ORIG_RES 14 /* Outgoing phone call origination */
-#define BTA_AG_OUT_CALL_ALERT_RES 15 /* Outgoing phone call alerting remote party */
-#define BTA_AG_OUT_CALL_CONN_RES 16 /* Outgoing phone call connected */
-#define BTA_AG_CALL_CANCEL_RES 17 /* Incoming/outgoing 3-way canceled before connected */
-#define BTA_AG_END_CALL_RES 18 /* End call */
-#define BTA_AG_IN_CALL_HELD_RES 19 /* Incoming call held */
-#define BTA_AG_UNAT_RES 20 /* Response to unknown AT command event */
-#define BTA_AG_MULTI_CALL_RES 21 /* SLC at three way call */
-#define BTA_AG_BIND_RES 22 /* Activate/Deactivate HF indicator */
+#define BTA_AG_SPK_RES 0 /* Update speaker volume */
+#define BTA_AG_MIC_RES 1 /* Update microphone volume */
+#define BTA_AG_INBAND_RING_RES 2 /* Update inband ring state */
+#define BTA_AG_CIND_RES 3 /* Send indicator response for AT+CIND */
+#define BTA_AG_BINP_RES 4 /* Send phone number for voice tag for AT+BINP */
+#define BTA_AG_IND_RES 5 /* Update an indicator value */
+#define BTA_AG_BVRA_RES 6 /* Update voice recognition state */
+#define BTA_AG_CNUM_RES 7 /* Send subscriber number response for AT+CNUM */
+#define BTA_AG_BTRH_RES 8 /* Send CCAP incoming call hold */
+#define BTA_AG_CLCC_RES 9 /* Query list of calls */
+#define BTA_AG_COPS_RES 10 /* Read network operator */
+#define BTA_AG_IN_CALL_RES 11 /* Indicate incoming phone call */
+#define BTA_AG_IN_CALL_CONN_RES 12 /* Incoming phone call connected */
+#define BTA_AG_CALL_WAIT_RES 13 /* Call waiting notification */
+#define BTA_AG_OUT_CALL_ORIG_RES 14 /* Outgoing phone call origination */
+#define BTA_AG_OUT_CALL_ALERT_RES \
+ 15 /* Outgoing phone call alerting remote party */
+#define BTA_AG_OUT_CALL_CONN_RES 16 /* Outgoing phone call connected */
+#define BTA_AG_CALL_CANCEL_RES \
+ 17 /* Incoming/outgoing 3-way canceled before connected */
+#define BTA_AG_END_CALL_RES 18 /* End call */
+#define BTA_AG_IN_CALL_HELD_RES 19 /* Incoming call held */
+#define BTA_AG_UNAT_RES 20 /* Response to unknown AT command event */
+#define BTA_AG_MULTI_CALL_RES 21 /* SLC at three way call */
+#define BTA_AG_BIND_RES 22 /* Activate/Deactivate HF indicator */
typedef uint8_t tBTA_AG_RES;
/* HFP peer features */
-#define BTA_AG_PEER_FEAT_ECNR 0x0001 /* Echo cancellation and/or noise reduction */
-#define BTA_AG_PEER_FEAT_3WAY 0x0002 /* Call waiting and three-way calling */
-#define BTA_AG_PEER_FEAT_CLI 0x0004 /* Caller ID presentation capability */
-#define BTA_AG_PEER_FEAT_VREC 0x0008 /* Voice recognition activation */
-#define BTA_AG_PEER_FEAT_VOL 0x0010 /* Remote volume control */
-#define BTA_AG_PEER_FEAT_ECS 0x0020 /* Enhanced Call Status */
-#define BTA_AG_PEER_FEAT_ECC 0x0040 /* Enhanced Call Control */
-#define BTA_AG_PEER_FEAT_CODEC 0x0080 /* Codec Negotiation */
-#define BTA_AG_PEER_FEAT_HF_IND 0x0100 /* HF Indicators */
-#define BTA_AG_PEER_FEAT_ESCO 0x0200 /* eSCO S4 (and T2) setting supported */
+#define BTA_AG_PEER_FEAT_ECNR \
+ 0x0001 /* Echo cancellation and/or noise reduction */
+#define BTA_AG_PEER_FEAT_3WAY 0x0002 /* Call waiting and three-way calling */
+#define BTA_AG_PEER_FEAT_CLI 0x0004 /* Caller ID presentation capability */
+#define BTA_AG_PEER_FEAT_VREC 0x0008 /* Voice recognition activation */
+#define BTA_AG_PEER_FEAT_VOL 0x0010 /* Remote volume control */
+#define BTA_AG_PEER_FEAT_ECS 0x0020 /* Enhanced Call Status */
+#define BTA_AG_PEER_FEAT_ECC 0x0040 /* Enhanced Call Control */
+#define BTA_AG_PEER_FEAT_CODEC 0x0080 /* Codec Negotiation */
+#define BTA_AG_PEER_FEAT_HF_IND 0x0100 /* HF Indicators */
+#define BTA_AG_PEER_FEAT_ESCO 0x0200 /* eSCO S4 (and T2) setting supported */
/* Proprietary features: using bits after 12 */
-#define BTA_AG_PEER_FEAT_UNAT 0x1000 /* Pass unknown AT command responses to application */
-#define BTA_AG_PEER_FEAT_VOIP 0x2000 /* VoIP call */
+#define BTA_AG_PEER_FEAT_UNAT \
+ 0x1000 /* Pass unknown AT command responses to application */
+#define BTA_AG_PEER_FEAT_VOIP 0x2000 /* VoIP call */
typedef uint16_t tBTA_AG_PEER_FEAT;
/* HFP peer supported codec masks */
// TODO(google) This should use common definitions
// in hci/include/hci_audio.h
-#define BTA_AG_CODEC_NONE BTM_SCO_CODEC_NONE
-#define BTA_AG_CODEC_CVSD BTM_SCO_CODEC_CVSD /* CVSD */
-#define BTA_AG_CODEC_MSBC BTM_SCO_CODEC_MSBC /* mSBC */
+#define BTA_AG_CODEC_NONE BTM_SCO_CODEC_NONE
+#define BTA_AG_CODEC_CVSD BTM_SCO_CODEC_CVSD /* CVSD */
+#define BTA_AG_CODEC_MSBC BTM_SCO_CODEC_MSBC /* mSBC */
typedef uint16_t tBTA_AG_PEER_CODEC;
/* HFP errcode - Set when BTA_AG_OK_ERROR is returned in 'ok_flag' */
-#define BTA_AG_ERR_PHONE_FAILURE 0 /* Phone Failure */
-#define BTA_AG_ERR_NO_CONN_PHONE 1 /* No connection to phone */
-#define BTA_AG_ERR_OP_NOT_ALLOWED 3 /* Operation not allowed */
-#define BTA_AG_ERR_OP_NOT_SUPPORTED 4 /* Operation not supported */
-#define BTA_AG_ERR_PHSIM_PIN_REQ 5 /* PH-SIM PIN required */
-#define BTA_AG_ERR_SIM_NOT_INSERTED 10 /* SIM not inserted */
-#define BTA_AG_ERR_SIM_PIN_REQ 11 /* SIM PIN required */
-#define BTA_AG_ERR_SIM_PUK_REQ 12 /* SIM PUK required */
-#define BTA_AG_ERR_SIM_FAILURE 13 /* SIM failure */
-#define BTA_AG_ERR_SIM_BUSY 14 /* SIM busy */
-#define BTA_AG_ERR_INCORRECT_PWD 16 /* Incorrect password */
-#define BTA_AG_ERR_SIM_PIN2_REQ 17 /* SIM PIN2 required */
-#define BTA_AG_ERR_SIM_PUK2_REQ 18 /* SIM PUK2 required */
-#define BTA_AG_ERR_MEMORY_FULL 20 /* Memory full */
-#define BTA_AG_ERR_INVALID_INDEX 21 /* Invalid index */
-#define BTA_AG_ERR_MEMORY_FAILURE 23 /* Memory failure */
-#define BTA_AG_ERR_TEXT_TOO_LONG 24 /* Text string too long */
-#define BTA_AG_ERR_INV_CHAR_IN_TSTR 25 /* Invalid characters in text string */
-#define BTA_AG_ERR_DSTR_TOO_LONG 26 /* Dial string too long */
-#define BTA_AG_ERR_INV_CHAR_IN_DSTR 27 /* Invalid characters in dial string */
-#define BTA_AG_ERR_NO_NETWORK_SERV 30 /* No network service */
-#define BTA_AG_ERR_NETWORK_TIME_OUT 31 /* Network timeout */
-#define BTA_AG_ERR_NO_NET_EMG_ONLY 32 /* Network not allowed - emergency service only */
-#define BTA_AG_ERR_VOIP_CS_CALLS 33 /* AG cannot create simultaneous VoIP and CS calls */
-#define BTA_AG_ERR_NOT_FOR_VOIP 34 /* Not supported on this call type(VoIP) */
-#define BTA_AG_ERR_SIP_RESP_CODE 35 /* SIP 3 digit response code */
+#define BTA_AG_ERR_PHONE_FAILURE 0 /* Phone Failure */
+#define BTA_AG_ERR_NO_CONN_PHONE 1 /* No connection to phone */
+#define BTA_AG_ERR_OP_NOT_ALLOWED 3 /* Operation not allowed */
+#define BTA_AG_ERR_OP_NOT_SUPPORTED 4 /* Operation not supported */
+#define BTA_AG_ERR_PHSIM_PIN_REQ 5 /* PH-SIM PIN required */
+#define BTA_AG_ERR_SIM_NOT_INSERTED 10 /* SIM not inserted */
+#define BTA_AG_ERR_SIM_PIN_REQ 11 /* SIM PIN required */
+#define BTA_AG_ERR_SIM_PUK_REQ 12 /* SIM PUK required */
+#define BTA_AG_ERR_SIM_FAILURE 13 /* SIM failure */
+#define BTA_AG_ERR_SIM_BUSY 14 /* SIM busy */
+#define BTA_AG_ERR_INCORRECT_PWD 16 /* Incorrect password */
+#define BTA_AG_ERR_SIM_PIN2_REQ 17 /* SIM PIN2 required */
+#define BTA_AG_ERR_SIM_PUK2_REQ 18 /* SIM PUK2 required */
+#define BTA_AG_ERR_MEMORY_FULL 20 /* Memory full */
+#define BTA_AG_ERR_INVALID_INDEX 21 /* Invalid index */
+#define BTA_AG_ERR_MEMORY_FAILURE 23 /* Memory failure */
+#define BTA_AG_ERR_TEXT_TOO_LONG 24 /* Text string too long */
+#define BTA_AG_ERR_INV_CHAR_IN_TSTR 25 /* Invalid characters in text string */
+#define BTA_AG_ERR_DSTR_TOO_LONG 26 /* Dial string too long */
+#define BTA_AG_ERR_INV_CHAR_IN_DSTR 27 /* Invalid characters in dial string */
+#define BTA_AG_ERR_NO_NETWORK_SERV 30 /* No network service */
+#define BTA_AG_ERR_NETWORK_TIME_OUT 31 /* Network timeout */
+#define BTA_AG_ERR_NO_NET_EMG_ONLY \
+ 32 /* Network not allowed - emergency service only */
+#define BTA_AG_ERR_VOIP_CS_CALLS \
+ 33 /* AG cannot create simultaneous VoIP and CS calls */
+#define BTA_AG_ERR_NOT_FOR_VOIP 34 /* Not supported on this call type(VoIP) */
+#define BTA_AG_ERR_SIP_RESP_CODE 35 /* SIP 3 digit response code */
-#if 0 /* Not Used in Bluetooth HFP 1.5 Specification */
-#define BTA_AG_ERR_PHADAP_LNK_RES 2 /* Phone-adapter link reserved */
-#define BTA_AG_ERR_PHFSIM_PIN_REQ 6 /* PH-FSIM PIN required */
-#define BTA_AG_ERR_PHFSIM_PUK_REQ 7 /* PH-FSIM PUK required */
-#define BTA_AG_ERR_SIM_WRONG 15 /* SIM wrong */
-#define BTA_AG_ERR_NOT_FOUND 22 /* Not found */
-#define BTA_AG_ERR_NETWORK_TIMEOUT 31 /* Network timeout */
-#define BTA_AG_ERR_NET_PIN_REQ 40 /* Network personalization PIN required */
-#define BTA_AG_ERR_NET_PUK_REQ 41 /* Network personalization PUK required */
-#define BTA_AG_ERR_SUBSET_PIN_REQ 42 /* Network subset personalization PIN required */
-#define BTA_AG_ERR_SUBSET_PUK_REQ 43 /* Network subset personalization PUK required */
-#define BTA_AG_ERR_SERVPRO_PIN_REQ 44 /* Service provider personalization PIN required */
-#define BTA_AG_ERR_SERVPRO_PUK_REQ 45 /* Service provider personalization PUK required */
-#define BTA_AG_ERR_CORP_PIN_REQ 46 /* Corporate personalization PIN required */
-#define BTA_AG_ERR_CORP_PUK_REQ 47 /* Corporate personalization PUK required */
-#define BTA_AG_ERR_UNKNOWN 100 /* Unknown error */
+#if 0 /* Not Used in Bluetooth HFP 1.5 Specification */
+#define BTA_AG_ERR_PHADAP_LNK_RES 2 /* Phone-adapter link reserved */
+#define BTA_AG_ERR_PHFSIM_PIN_REQ 6 /* PH-FSIM PIN required */
+#define BTA_AG_ERR_PHFSIM_PUK_REQ 7 /* PH-FSIM PUK required */
+#define BTA_AG_ERR_SIM_WRONG 15 /* SIM wrong */
+#define BTA_AG_ERR_NOT_FOUND 22 /* Not found */
+#define BTA_AG_ERR_NETWORK_TIMEOUT 31 /* Network timeout */
+#define BTA_AG_ERR_NET_PIN_REQ 40 /* Network personalization PIN required */
+#define BTA_AG_ERR_NET_PUK_REQ 41 /* Network personalization PUK required */
+#define BTA_AG_ERR_SUBSET_PIN_REQ \
+ 42 /* Network subset personalization PIN required */
+#define BTA_AG_ERR_SUBSET_PUK_REQ \
+ 43 /* Network subset personalization PUK required */
+#define BTA_AG_ERR_SERVPRO_PIN_REQ \
+ 44 /* Service provider personalization PIN required */
+#define BTA_AG_ERR_SERVPRO_PUK_REQ \
+ 45 /* Service provider personalization PUK required */
+#define BTA_AG_ERR_CORP_PIN_REQ \
+ 46 /* Corporate personalization PIN required \
+ */
+#define BTA_AG_ERR_CORP_PUK_REQ \
+ 47 /* Corporate personalization PUK required \
+ */
+#define BTA_AG_ERR_UNKNOWN 100 /* Unknown error */
/* GPRS-related errors */
-#define BTA_AG_ERR_ILL_MS 103 /* Illegal MS (#3) */
-#define BTA_AG_ERR_ILL_ME 106 /* Illegal ME (#6) */
-#define BTA_AG_ERR_GPRS_NOT_ALLOWED 107 /* GPRS services not allowed (#7) */
-#define BTA_AG_ERR_PLMN_NOT_ALLOWED 111 /* PLMN services not allowed (#11) */
-#define BTA_AG_ERR_LOC_NOT_ALLOWED 112 /* Location area not allowed (#12) */
-#define BTA_AG_ERR_ROAM_NOT_ALLOWED 113 /* Roaming not allowed in this location area (#13) */
+#define BTA_AG_ERR_ILL_MS 103 /* Illegal MS (#3) */
+#define BTA_AG_ERR_ILL_ME 106 /* Illegal ME (#6) */
+#define BTA_AG_ERR_GPRS_NOT_ALLOWED 107 /* GPRS services not allowed (#7) */
+#define BTA_AG_ERR_PLMN_NOT_ALLOWED 111 /* PLMN services not allowed (#11) */
+#define BTA_AG_ERR_LOC_NOT_ALLOWED 112 /* Location area not allowed (#12) */
+#define BTA_AG_ERR_ROAM_NOT_ALLOWED \
+ 113 /* Roaming not allowed in this location area (#13) */
/* Errors related to a failure to Activate a Context */
-#define BTA_AG_ERR_OPT_NOT_SUPP 132 /* Service option not supported (#32) */
-#define BTA_AG_ERR_OPT_NOT_SUBSCR 133 /* Requested service option not subscribed (#33) */
-#define BTA_AG_ERR_OPT_OUT_OF_ORDER 134 /* Service option temporarily out of order (#34) */
-#define BTA_AG_ERR_PDP_AUTH_FAILURE 149 /* PDP authentication failure */
+#define BTA_AG_ERR_OPT_NOT_SUPP 132 /* Service option not supported (#32) */
+#define BTA_AG_ERR_OPT_NOT_SUBSCR \
+ 133 /* Requested service option not subscribed (#33) */
+#define BTA_AG_ERR_OPT_OUT_OF_ORDER \
+ 134 /* Service option temporarily out of order (#34) */
+#define BTA_AG_ERR_PDP_AUTH_FAILURE 149 /* PDP authentication failure */
/* Other GPRS errors */
-#define BTA_AG_ERR_INV_MOBILE_CLASS 150 /* Invalid mobile class */
-#define BTA_AG_ERR_UNSPEC_GPRS_ERR 148 /* Unspecified GPRS error */
-#endif /* Unused error codes */
-
+#define BTA_AG_ERR_INV_MOBILE_CLASS 150 /* Invalid mobile class */
+#define BTA_AG_ERR_UNSPEC_GPRS_ERR 148 /* Unspecified GPRS error */
+#endif /* Unused error codes */
/* HFP result data 'ok_flag' */
-#define BTA_AG_OK_CONTINUE 0 /* Send out response (more responses coming) */
-#define BTA_AG_OK_DONE 1 /* Send out response followed by OK (finished) */
-#define BTA_AG_OK_ERROR 2 /* Error response */
+#define BTA_AG_OK_CONTINUE 0 /* Send out response (more responses coming) */
+#define BTA_AG_OK_DONE 1 /* Send out response followed by OK (finished) */
+#define BTA_AG_OK_ERROR 2 /* Error response */
/* BTRH values */
-#define BTA_AG_BTRH_SET_HOLD 0 /* Put incoming call on hold */
-#define BTA_AG_BTRH_SET_ACC 1 /* Accept incoming call on hold */
-#define BTA_AG_BTRH_SET_REJ 2 /* Reject incoming call on hold */
-#define BTA_AG_BTRH_READ 3 /* Read the current value */
-#define BTA_AG_BTRH_NO_RESP 4 /* Not in RH States (reply to read) */
+#define BTA_AG_BTRH_SET_HOLD 0 /* Put incoming call on hold */
+#define BTA_AG_BTRH_SET_ACC 1 /* Accept incoming call on hold */
+#define BTA_AG_BTRH_SET_REJ 2 /* Reject incoming call on hold */
+#define BTA_AG_BTRH_READ 3 /* Read the current value */
+#define BTA_AG_BTRH_NO_RESP 4 /* Not in RH States (reply to read) */
/* ASCII character string of arguments to the AT command or result */
#ifndef BTA_AG_AT_MAX_LEN
-#define BTA_AG_AT_MAX_LEN 256
+#define BTA_AG_AT_MAX_LEN 256
#endif
/* data associated with BTA_AG_IND_RES */
-typedef struct
-{
- uint16_t id;
- uint16_t value;
- bool on_demand;
+typedef struct {
+ uint16_t id;
+ uint16_t value;
+ bool on_demand;
} tBTA_AG_IND;
/* data type for BTA_AgResult() */
-typedef struct
-{
- char str[BTA_AG_AT_MAX_LEN+1];
- tBTA_AG_IND ind;
- uint16_t num;
- uint16_t audio_handle;
- uint16_t errcode; /* Valid only if 'ok_flag' is set to BTA_AG_OK_ERROR */
- uint8_t ok_flag; /* Indicates if response is finished, and if error occurred */
- bool state;
+typedef struct {
+ char str[BTA_AG_AT_MAX_LEN + 1];
+ tBTA_AG_IND ind;
+ uint16_t num;
+ uint16_t audio_handle;
+ uint16_t errcode; /* Valid only if 'ok_flag' is set to BTA_AG_OK_ERROR */
+ uint8_t
+ ok_flag; /* Indicates if response is finished, and if error occurred */
+ bool state;
} tBTA_AG_RES_DATA;
/* AG callback events */
-#define BTA_AG_ENABLE_EVT 0 /* AG enabled */
-#define BTA_AG_REGISTER_EVT 1 /* AG registered */
-#define BTA_AG_OPEN_EVT 2 /* AG connection open */
-#define BTA_AG_CLOSE_EVT 3 /* AG connection closed */
-#define BTA_AG_CONN_EVT 4 /* Service level connection opened */
-#define BTA_AG_AUDIO_OPEN_EVT 5 /* Audio connection open */
-#define BTA_AG_AUDIO_CLOSE_EVT 6 /* Audio connection closed */
-#define BTA_AG_SPK_EVT 7 /* Speaker volume changed */
-#define BTA_AG_MIC_EVT 8 /* Microphone volume changed */
-#define BTA_AG_AT_CKPD_EVT 9 /* CKPD from the HS */
-#define BTA_AG_DISABLE_EVT 30 /* AG disabled */
+#define BTA_AG_ENABLE_EVT 0 /* AG enabled */
+#define BTA_AG_REGISTER_EVT 1 /* AG registered */
+#define BTA_AG_OPEN_EVT 2 /* AG connection open */
+#define BTA_AG_CLOSE_EVT 3 /* AG connection closed */
+#define BTA_AG_CONN_EVT 4 /* Service level connection opened */
+#define BTA_AG_AUDIO_OPEN_EVT 5 /* Audio connection open */
+#define BTA_AG_AUDIO_CLOSE_EVT 6 /* Audio connection closed */
+#define BTA_AG_SPK_EVT 7 /* Speaker volume changed */
+#define BTA_AG_MIC_EVT 8 /* Microphone volume changed */
+#define BTA_AG_AT_CKPD_EVT 9 /* CKPD from the HS */
+#define BTA_AG_DISABLE_EVT 30 /* AG disabled */
#if (BTM_WBS_INCLUDED == TRUE)
-#define BTA_AG_WBS_EVT 31 /* SCO codec info */
+#define BTA_AG_WBS_EVT 31 /* SCO codec info */
#endif
/* Values below are for HFP only */
-#define BTA_AG_AT_A_EVT 10 /* Answer a call */
-#define BTA_AG_AT_D_EVT 11 /* Place a call using number or memory dial */
-#define BTA_AG_AT_CHLD_EVT 12 /* Call hold */
-#define BTA_AG_AT_CHUP_EVT 13 /* Hang up a call */
-#define BTA_AG_AT_CIND_EVT 14 /* Read indicator settings */
-#define BTA_AG_AT_VTS_EVT 15 /* Transmit DTMF tone */
-#define BTA_AG_AT_BINP_EVT 16 /* Retrieve number from voice tag */
-#define BTA_AG_AT_BLDN_EVT 17 /* Place call to last dialed number */
-#define BTA_AG_AT_BVRA_EVT 18 /* Enable/disable voice recognition */
-#define BTA_AG_AT_NREC_EVT 19 /* Disable echo canceling */
-#define BTA_AG_AT_CNUM_EVT 20 /* Retrieve subscriber number */
-#define BTA_AG_AT_BTRH_EVT 21 /* CCAP-style incoming call hold */
-#define BTA_AG_AT_CLCC_EVT 22 /* Query list of current calls */
-#define BTA_AG_AT_COPS_EVT 23 /* Query list of current calls */
-#define BTA_AG_AT_UNAT_EVT 24 /* Unknown AT command */
-#define BTA_AG_AT_CBC_EVT 25 /* Battery Level report from HF */
-#define BTA_AG_AT_BAC_EVT 26 /* avablable codec */
-#define BTA_AG_AT_BCS_EVT 27 /* Codec select */
-#define BTA_AG_AT_BIND_EVT 28 /* HF indicator */
-#define BTA_AG_AT_BIEV_EVT 29 /* HF indicator updates from peer */
+#define BTA_AG_AT_A_EVT 10 /* Answer a call */
+#define BTA_AG_AT_D_EVT 11 /* Place a call using number or memory dial */
+#define BTA_AG_AT_CHLD_EVT 12 /* Call hold */
+#define BTA_AG_AT_CHUP_EVT 13 /* Hang up a call */
+#define BTA_AG_AT_CIND_EVT 14 /* Read indicator settings */
+#define BTA_AG_AT_VTS_EVT 15 /* Transmit DTMF tone */
+#define BTA_AG_AT_BINP_EVT 16 /* Retrieve number from voice tag */
+#define BTA_AG_AT_BLDN_EVT 17 /* Place call to last dialed number */
+#define BTA_AG_AT_BVRA_EVT 18 /* Enable/disable voice recognition */
+#define BTA_AG_AT_NREC_EVT 19 /* Disable echo canceling */
+#define BTA_AG_AT_CNUM_EVT 20 /* Retrieve subscriber number */
+#define BTA_AG_AT_BTRH_EVT 21 /* CCAP-style incoming call hold */
+#define BTA_AG_AT_CLCC_EVT 22 /* Query list of current calls */
+#define BTA_AG_AT_COPS_EVT 23 /* Query list of current calls */
+#define BTA_AG_AT_UNAT_EVT 24 /* Unknown AT command */
+#define BTA_AG_AT_CBC_EVT 25 /* Battery Level report from HF */
+#define BTA_AG_AT_BAC_EVT 26 /* avablable codec */
+#define BTA_AG_AT_BCS_EVT 27 /* Codec select */
+#define BTA_AG_AT_BIND_EVT 28 /* HF indicator */
+#define BTA_AG_AT_BIEV_EVT 29 /* HF indicator updates from peer */
typedef uint8_t tBTA_AG_EVT;
/* data associated with most non-AT events */
-typedef struct
-{
- uint16_t handle;
- uint8_t app_id;
- tBTA_AG_STATUS status;
+typedef struct {
+ uint16_t handle;
+ uint8_t app_id;
+ tBTA_AG_STATUS status;
} tBTA_AG_HDR;
/* data associated with BTA_AG_REGISTER_EVT */
-typedef struct
-{
- tBTA_AG_HDR hdr;
- tBTA_AG_STATUS status;
+typedef struct {
+ tBTA_AG_HDR hdr;
+ tBTA_AG_STATUS status;
} tBTA_AG_REGISTER;
/* data associated with BTA_AG_OPEN_EVT */
-typedef struct
-{
- tBTA_AG_HDR hdr;
- BD_ADDR bd_addr;
- tBTA_SERVICE_ID service_id;
- tBTA_AG_STATUS status;
+typedef struct {
+ tBTA_AG_HDR hdr;
+ BD_ADDR bd_addr;
+ tBTA_SERVICE_ID service_id;
+ tBTA_AG_STATUS status;
} tBTA_AG_OPEN;
/* data associated with BTA_AG_CLOSE_EVT */
-typedef struct
-{
- tBTA_AG_HDR hdr;
- BD_ADDR bd_addr;
+typedef struct {
+ tBTA_AG_HDR hdr;
+ BD_ADDR bd_addr;
} tBTA_AG_CLOSE;
/* data associated with BTA_AG_CONN_EVT */
-typedef struct
-{
- tBTA_AG_HDR hdr;
- tBTA_AG_PEER_FEAT peer_feat;
- BD_ADDR bd_addr;
- tBTA_AG_PEER_CODEC peer_codec;
+typedef struct {
+ tBTA_AG_HDR hdr;
+ tBTA_AG_PEER_FEAT peer_feat;
+ BD_ADDR bd_addr;
+ tBTA_AG_PEER_CODEC peer_codec;
} tBTA_AG_CONN;
/* data associated with AT command event */
-typedef struct
-{
- tBTA_AG_HDR hdr;
- BD_ADDR bd_addr;
- char str[BTA_AG_AT_MAX_LEN+1];
- uint16_t num;
- uint8_t idx; /* call number used by CLCC and CHLD */
- uint16_t lidx; /* long index, ex, HF indicator */
+typedef struct {
+ tBTA_AG_HDR hdr;
+ BD_ADDR bd_addr;
+ char str[BTA_AG_AT_MAX_LEN + 1];
+ uint16_t num;
+ uint8_t idx; /* call number used by CLCC and CHLD */
+ uint16_t lidx; /* long index, ex, HF indicator */
} tBTA_AG_VAL;
/* union of data associated with AG callback */
-typedef union
-{
- tBTA_AG_HDR hdr;
- tBTA_AG_REGISTER reg;
- tBTA_AG_OPEN open;
- tBTA_AG_CLOSE close;
- tBTA_AG_CONN conn;
- tBTA_AG_VAL val;
+typedef union {
+ tBTA_AG_HDR hdr;
+ tBTA_AG_REGISTER reg;
+ tBTA_AG_OPEN open;
+ tBTA_AG_CLOSE close;
+ tBTA_AG_CONN conn;
+ tBTA_AG_VAL val;
} tBTA_AG;
/* AG callback */
-typedef void (tBTA_AG_CBACK)(tBTA_AG_EVT event, tBTA_AG *p_data);
+typedef void(tBTA_AG_CBACK)(tBTA_AG_EVT event, tBTA_AG* p_data);
/* indicator constants HFP 1.1 and later */
-#define BTA_AG_IND_CALL 1 /* position of call indicator */
-#define BTA_AG_IND_CALLSETUP 2 /* position of callsetup indicator */
-#define BTA_AG_IND_SERVICE 3 /* position of service indicator */
+#define BTA_AG_IND_CALL 1 /* position of call indicator */
+#define BTA_AG_IND_CALLSETUP 2 /* position of callsetup indicator */
+#define BTA_AG_IND_SERVICE 3 /* position of service indicator */
/* indicator constants HFP 1.5 and later */
-#define BTA_AG_IND_SIGNAL 4 /* position of signal strength indicator */
-#define BTA_AG_IND_ROAM 5 /* position of roaming indicator */
-#define BTA_AG_IND_BATTCHG 6 /* position of battery charge indicator */
-#define BTA_AG_IND_CALLHELD 7 /* position of callheld indicator */
-#define BTA_AG_IND_BEARER 8 /* position of bearer indicator */
+#define BTA_AG_IND_SIGNAL 4 /* position of signal strength indicator */
+#define BTA_AG_IND_ROAM 5 /* position of roaming indicator */
+#define BTA_AG_IND_BATTCHG 6 /* position of battery charge indicator */
+#define BTA_AG_IND_CALLHELD 7 /* position of callheld indicator */
+#define BTA_AG_IND_BEARER 8 /* position of bearer indicator */
/* call indicator values */
-#define BTA_AG_CALL_INACTIVE 0 /* Phone call inactive */
-#define BTA_AG_CALL_ACTIVE 1 /* Phone call active */
+#define BTA_AG_CALL_INACTIVE 0 /* Phone call inactive */
+#define BTA_AG_CALL_ACTIVE 1 /* Phone call active */
/* callsetup indicator values */
-#define BTA_AG_CALLSETUP_NONE 0 /* Not currently in call set up */
-#define BTA_AG_CALLSETUP_INCOMING 1 /* Incoming call process ongoing */
-#define BTA_AG_CALLSETUP_OUTGOING 2 /* Outgoing call set up is ongoing */
-#define BTA_AG_CALLSETUP_ALERTING 3 /* Remote party being alerted in an outgoing call */
+#define BTA_AG_CALLSETUP_NONE 0 /* Not currently in call set up */
+#define BTA_AG_CALLSETUP_INCOMING 1 /* Incoming call process ongoing */
+#define BTA_AG_CALLSETUP_OUTGOING 2 /* Outgoing call set up is ongoing */
+#define BTA_AG_CALLSETUP_ALERTING \
+ 3 /* Remote party being alerted in an outgoing call */
/* service indicator values */
-#define BTA_AG_SERVICE_NONE 0 /* Neither CS nor VoIP service is available */
-#define BTA_AG_SERVICE_CS 1 /* Only CS service is available */
-#define BTA_AG_SERVICE_VOIP 2 /* Only VoIP service is available */
-#define BTA_AG_SERVICE_CS_VOIP 3 /* Both CS and VoIP services available */
+#define BTA_AG_SERVICE_NONE 0 /* Neither CS nor VoIP service is available */
+#define BTA_AG_SERVICE_CS 1 /* Only CS service is available */
+#define BTA_AG_SERVICE_VOIP 2 /* Only VoIP service is available */
+#define BTA_AG_SERVICE_CS_VOIP \
+ 3 /* Both CS and VoIP services available */
/* callheld indicator values */
-#define BTA_AG_CALLHELD_INACTIVE 0 /* No held calls */
-#define BTA_AG_CALLHELD_ACTIVE 1 /* Call held and call active */
-#define BTA_AG_CALLHELD_NOACTIVE 2 /* Call held and no call active */
+#define BTA_AG_CALLHELD_INACTIVE 0 /* No held calls */
+#define BTA_AG_CALLHELD_ACTIVE 1 /* Call held and call active */
+#define BTA_AG_CALLHELD_NOACTIVE 2 /* Call held and no call active */
/* signal strength indicator values */
-#define BTA_AG_ROAMING_INACTIVE 0 /* Phone call inactive */
-#define BTA_AG_ROAMING_ACTIVE 1 /* Phone call active */
+#define BTA_AG_ROAMING_INACTIVE 0 /* Phone call inactive */
+#define BTA_AG_ROAMING_ACTIVE 1 /* Phone call active */
/* bearer indicator values */
-#define BTA_AG_BEARER_WLAN 0 /* WLAN */
-#define BTA_AG_BEARER_BLUETOOTH 1 /* Bluetooth */
-#define BTA_AG_BEARER_WIRED 2 /* Wired */
-#define BTA_AG_BEARER_2G3G 3 /* 2G 3G */
-#define BTA_AG_BEARER_WIMAX 4 /* WIMAX */
-#define BTA_AG_BEARER_RES1 5 /* Reserved */
-#define BTA_AG_BEARER_RES2 6 /* Reserved */
-#define BTA_AG_BEARER_RES3 7 /* Reserved */
+#define BTA_AG_BEARER_WLAN 0 /* WLAN */
+#define BTA_AG_BEARER_BLUETOOTH 1 /* Bluetooth */
+#define BTA_AG_BEARER_WIRED 2 /* Wired */
+#define BTA_AG_BEARER_2G3G 3 /* 2G 3G */
+#define BTA_AG_BEARER_WIMAX 4 /* WIMAX */
+#define BTA_AG_BEARER_RES1 5 /* Reserved */
+#define BTA_AG_BEARER_RES2 6 /* Reserved */
+#define BTA_AG_BEARER_RES3 7 /* Reserved */
/* type for HF indicator */
-typedef struct
-{
- uint16_t ind_id;
- bool is_supported;
- bool is_enable;
- uint32_t ind_min_val;
- uint32_t ind_max_val;
+typedef struct {
+ uint16_t ind_id;
+ bool is_supported;
+ bool is_enable;
+ uint32_t ind_min_val;
+ uint32_t ind_max_val;
} tBTA_AG_HF_IND;
/* AG configuration structure */
-typedef struct
-{
- const char *cind_info;
- const char *bind_info;
- uint8_t num_local_hf_ind;
- int32_t conn_tout;
- uint16_t sco_pkt_types;
- const char *chld_val_ecc;
- const char *chld_val;
+typedef struct {
+ const char* cind_info;
+ const char* bind_info;
+ uint8_t num_local_hf_ind;
+ int32_t conn_tout;
+ uint16_t sco_pkt_types;
+ const char* chld_val_ecc;
+ const char* chld_val;
} tBTA_AG_CFG;
/*****************************************************************************
@@ -458,7 +467,7 @@
* Returns BTA_SUCCESS if OK, BTA_FAILURE otherwise.
*
******************************************************************************/
-tBTA_STATUS BTA_AgEnable(tBTA_AG_PARSE_MODE parse_mode, tBTA_AG_CBACK *p_cback);
+tBTA_STATUS BTA_AgEnable(tBTA_AG_PARSE_MODE parse_mode, tBTA_AG_CBACK* p_cback);
/*******************************************************************************
*
@@ -483,7 +492,8 @@
*
******************************************************************************/
void BTA_AgRegister(tBTA_SERVICE_MASK services, tBTA_SEC sec_mask,
- tBTA_AG_FEAT features, const char *p_service_names[], uint8_t app_id);
+ tBTA_AG_FEAT features, const char* p_service_names[],
+ uint8_t app_id);
/*******************************************************************************
*
@@ -510,7 +520,8 @@
* Returns void
*
******************************************************************************/
-void BTA_AgOpen(uint16_t handle, BD_ADDR bd_addr, tBTA_SEC sec_mask, tBTA_SERVICE_MASK services);
+void BTA_AgOpen(uint16_t handle, BD_ADDR bd_addr, tBTA_SEC sec_mask,
+ tBTA_SERVICE_MASK services);
/*******************************************************************************
*
@@ -563,7 +574,8 @@
* Returns void
*
******************************************************************************/
-void BTA_AgResult(uint16_t handle, tBTA_AG_RES result, tBTA_AG_RES_DATA *p_data);
+void BTA_AgResult(uint16_t handle, tBTA_AG_RES result,
+ tBTA_AG_RES_DATA* p_data);
/*******************************************************************************
*
diff --git a/bta/include/bta_ag_ci.h b/bta/include/bta_ag_ci.h
index 4b3a602..984625a 100644
--- a/bta/include/bta_ag_ci.h
+++ b/bta/include/bta_ag_ci.h
@@ -30,8 +30,7 @@
* Function Declarations
****************************************************************************/
#ifdef __cplusplus
-extern "C"
-{
+extern "C" {
#endif
/*******************************************************************************
@@ -45,7 +44,7 @@
* Returns void
*
******************************************************************************/
-extern void bta_ag_ci_rx_write(uint16_t handle, char *p_data, uint16_t len);
+extern void bta_ag_ci_rx_write(uint16_t handle, char* p_data, uint16_t len);
/******************************************************************************
*
@@ -70,7 +69,7 @@
* Returns void
*
*****************************************************************************/
-extern void bta_ag_ci_wbs_command (uint16_t handle, char *p_data, uint16_t len);
+extern void bta_ag_ci_wbs_command(uint16_t handle, char* p_data, uint16_t len);
#ifdef __cplusplus
}
diff --git a/bta/include/bta_ag_co.h b/bta/include/bta_ag_co.h
index e744150..336019d 100644
--- a/bta/include/bta_ag_co.h
+++ b/bta/include/bta_ag_co.h
@@ -50,13 +50,16 @@
*
* Function bta_ag_co_audio_state
*
- * Description This function is called by the AG before the audio connection
+ * Description This function is called by the AG before the audio
+ *connection
* is brought up, after it comes up, and after it goes down.
*
* Parameters handle - handle of the AG instance
* state - Audio state
- * codec - if WBS support is compiled in, codec to going to be used is provided
- * and when in SCO_STATE_SETUP, BTM_I2SPCMConfig() must be called with
+ * codec - if WBS support is compiled in, codec to going to be
+ *used is provided
+ * and when in SCO_STATE_SETUP, BTM_I2SPCMConfig() must be
+ *called with
* the correct platform parameters.
* in the other states codec type should not be ignored
*
@@ -64,18 +67,20 @@
*
******************************************************************************/
#if (BTM_WBS_INCLUDED == TRUE)
-extern void bta_ag_co_audio_state(uint16_t handle, uint8_t app_id, uint8_t state,
- tBTA_AG_PEER_CODEC codec);
+extern void bta_ag_co_audio_state(uint16_t handle, uint8_t app_id,
+ uint8_t state, tBTA_AG_PEER_CODEC codec);
#else
-extern void bta_ag_co_audio_state(uint16_t handle, uint8_t app_id, uint8_t state);
+extern void bta_ag_co_audio_state(uint16_t handle, uint8_t app_id,
+ uint8_t state);
#endif
/*******************************************************************************
*
* Function bta_ag_co_data_open
*
- * Description This function is executed by AG when a service level connection
+ * Description This function is executed by AG when a service level
+ *connection
* is opened. The phone can use this function to set
* up data paths or perform any required initialization or
* set up particular to the connected service.
@@ -111,7 +116,7 @@
* Returns void
*
******************************************************************************/
-extern void bta_ag_co_tx_write(uint16_t handle, uint8_t *p_data, uint16_t len);
+extern void bta_ag_co_tx_write(uint16_t handle, uint8_t* p_data, uint16_t len);
#ifdef __cplusplus
}
diff --git a/bta/include/bta_api.h b/bta/include/bta_api.h
index c6bcecf..a583d70 100644
--- a/bta/include/bta_api.h
+++ b/bta/include/bta_api.h
@@ -42,310 +42,328 @@
****************************************************************************/
/* Status Return Value */
-#define BTA_SUCCESS 0 /* Successful operation. */
-#define BTA_FAILURE 1 /* Generic failure. */
-#define BTA_PENDING 2 /* API cannot be completed right now */
-#define BTA_BUSY 3
-#define BTA_NO_RESOURCES 4
-#define BTA_WRONG_MODE 5
+#define BTA_SUCCESS 0 /* Successful operation. */
+#define BTA_FAILURE 1 /* Generic failure. */
+#define BTA_PENDING 2 /* API cannot be completed right now */
+#define BTA_BUSY 3
+#define BTA_NO_RESOURCES 4
+#define BTA_WRONG_MODE 5
typedef uint8_t tBTA_STATUS;
/*
* Service ID
*
- * NOTES: When you add a new Service ID for BTA AND require to change the value of BTA_MAX_SERVICE_ID,
- * make sure that the correct security ID of the new service from Security service definitions (btm_api.h)
- * should be added to bta_service_id_to_btm_srv_id_lkup_tbl table in bta_dm_act.c.
+ * NOTES: When you add a new Service ID for BTA AND require to change the value
+ * of BTA_MAX_SERVICE_ID,
+ * make sure that the correct security ID of the new service from
+ * Security service definitions (btm_api.h)
+ * should be added to bta_service_id_to_btm_srv_id_lkup_tbl table in
+ * bta_dm_act.c.
*/
-#define BTA_RES_SERVICE_ID 0 /* Reserved */
-#define BTA_SPP_SERVICE_ID 1 /* Serial port profile. */
-#define BTA_DUN_SERVICE_ID 2 /* Dial-up networking profile. */
-#define BTA_A2DP_SOURCE_SERVICE_ID 3 /* A2DP Source profile. */
-#define BTA_LAP_SERVICE_ID 4 /* LAN access profile. */
-#define BTA_HSP_SERVICE_ID 5 /* Headset profile. */
-#define BTA_HFP_SERVICE_ID 6 /* Hands-free profile. */
-#define BTA_OPP_SERVICE_ID 7 /* Object push */
-#define BTA_FTP_SERVICE_ID 8 /* File transfer */
-#define BTA_CTP_SERVICE_ID 9 /* Cordless Terminal */
-#define BTA_ICP_SERVICE_ID 10 /* Intercom Terminal */
-#define BTA_SYNC_SERVICE_ID 11 /* Synchronization */
-#define BTA_BPP_SERVICE_ID 12 /* Basic printing profile */
-#define BTA_BIP_SERVICE_ID 13 /* Basic Imaging profile */
-#define BTA_PANU_SERVICE_ID 14 /* PAN User */
-#define BTA_NAP_SERVICE_ID 15 /* PAN Network access point */
-#define BTA_GN_SERVICE_ID 16 /* PAN Group Ad-hoc networks */
-#define BTA_SAP_SERVICE_ID 17 /* SIM Access profile */
-#define BTA_A2DP_SINK_SERVICE_ID 18 /* A2DP Sink */
-#define BTA_AVRCP_SERVICE_ID 19 /* A/V remote control */
-#define BTA_HID_SERVICE_ID 20 /* HID */
-#define BTA_VDP_SERVICE_ID 21 /* Video distribution */
-#define BTA_PBAP_SERVICE_ID 22 /* PhoneBook Access Server*/
-#define BTA_HSP_HS_SERVICE_ID 23 /* HFP HS role */
-#define BTA_HFP_HS_SERVICE_ID 24 /* HSP HS role */
-#define BTA_MAP_SERVICE_ID 25 /* Message Access Profile */
-#define BTA_MN_SERVICE_ID 26 /* Message Notification Service */
-#define BTA_HDP_SERVICE_ID 27 /* Health Device Profile */
-#define BTA_PCE_SERVICE_ID 28 /* PhoneBook Access Client*/
-#define BTA_SDP_SERVICE_ID 29 /* SDP Search*/
+#define BTA_RES_SERVICE_ID 0 /* Reserved */
+#define BTA_SPP_SERVICE_ID 1 /* Serial port profile. */
+#define BTA_DUN_SERVICE_ID 2 /* Dial-up networking profile. */
+#define BTA_A2DP_SOURCE_SERVICE_ID 3 /* A2DP Source profile. */
+#define BTA_LAP_SERVICE_ID 4 /* LAN access profile. */
+#define BTA_HSP_SERVICE_ID 5 /* Headset profile. */
+#define BTA_HFP_SERVICE_ID 6 /* Hands-free profile. */
+#define BTA_OPP_SERVICE_ID 7 /* Object push */
+#define BTA_FTP_SERVICE_ID 8 /* File transfer */
+#define BTA_CTP_SERVICE_ID 9 /* Cordless Terminal */
+#define BTA_ICP_SERVICE_ID 10 /* Intercom Terminal */
+#define BTA_SYNC_SERVICE_ID 11 /* Synchronization */
+#define BTA_BPP_SERVICE_ID 12 /* Basic printing profile */
+#define BTA_BIP_SERVICE_ID 13 /* Basic Imaging profile */
+#define BTA_PANU_SERVICE_ID 14 /* PAN User */
+#define BTA_NAP_SERVICE_ID 15 /* PAN Network access point */
+#define BTA_GN_SERVICE_ID 16 /* PAN Group Ad-hoc networks */
+#define BTA_SAP_SERVICE_ID 17 /* SIM Access profile */
+#define BTA_A2DP_SINK_SERVICE_ID 18 /* A2DP Sink */
+#define BTA_AVRCP_SERVICE_ID 19 /* A/V remote control */
+#define BTA_HID_SERVICE_ID 20 /* HID */
+#define BTA_VDP_SERVICE_ID 21 /* Video distribution */
+#define BTA_PBAP_SERVICE_ID 22 /* PhoneBook Access Server*/
+#define BTA_HSP_HS_SERVICE_ID 23 /* HFP HS role */
+#define BTA_HFP_HS_SERVICE_ID 24 /* HSP HS role */
+#define BTA_MAP_SERVICE_ID 25 /* Message Access Profile */
+#define BTA_MN_SERVICE_ID 26 /* Message Notification Service */
+#define BTA_HDP_SERVICE_ID 27 /* Health Device Profile */
+#define BTA_PCE_SERVICE_ID 28 /* PhoneBook Access Client*/
+#define BTA_SDP_SERVICE_ID 29 /* SDP Search*/
#if (BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE)
/* BLE profile service ID */
-#define BTA_BLE_SERVICE_ID 30 /* GATT profile */
+#define BTA_BLE_SERVICE_ID 30 /* GATT profile */
-#define BTA_USER_SERVICE_ID 31 /* User requested UUID */
+#define BTA_USER_SERVICE_ID 31 /* User requested UUID */
-#define BTA_MAX_SERVICE_ID 32
+#define BTA_MAX_SERVICE_ID 32
#else
-#define BTA_USER_SERVICE_ID 30 /* User requested UUID */
-#define BTA_MAX_SERVICE_ID 31
+#define BTA_USER_SERVICE_ID 30 /* User requested UUID */
+#define BTA_MAX_SERVICE_ID 31
#endif
/* service IDs (BTM_SEC_SERVICE_FIRST_EMPTY + 1) to (BTM_SEC_MAX_SERVICES - 1)
* are used by BTA JV */
-#define BTA_FIRST_JV_SERVICE_ID (BTM_SEC_SERVICE_FIRST_EMPTY + 1)
-#define BTA_LAST_JV_SERVICE_ID (BTM_SEC_MAX_SERVICES - 1)
+#define BTA_FIRST_JV_SERVICE_ID (BTM_SEC_SERVICE_FIRST_EMPTY + 1)
+#define BTA_LAST_JV_SERVICE_ID (BTM_SEC_MAX_SERVICES - 1)
typedef uint8_t tBTA_SERVICE_ID;
/* Service ID Mask */
-#define BTA_RES_SERVICE_MASK 0x00000001 /* Reserved */
-#define BTA_SPP_SERVICE_MASK 0x00000002 /* Serial port profile. */
-#define BTA_DUN_SERVICE_MASK 0x00000004 /* Dial-up networking profile. */
-#define BTA_FAX_SERVICE_MASK 0x00000008 /* Fax profile. */
-#define BTA_LAP_SERVICE_MASK 0x00000010 /* LAN access profile. */
-#define BTA_HSP_SERVICE_MASK 0x00000020 /* HSP AG role. */
-#define BTA_HFP_SERVICE_MASK 0x00000040 /* HFP AG role */
-#define BTA_OPP_SERVICE_MASK 0x00000080 /* Object push */
-#define BTA_FTP_SERVICE_MASK 0x00000100 /* File transfer */
-#define BTA_CTP_SERVICE_MASK 0x00000200 /* Cordless Terminal */
-#define BTA_ICP_SERVICE_MASK 0x00000400 /* Intercom Terminal */
-#define BTA_SYNC_SERVICE_MASK 0x00000800 /* Synchronization */
-#define BTA_BPP_SERVICE_MASK 0x00001000 /* Print server */
-#define BTA_BIP_SERVICE_MASK 0x00002000 /* Basic Imaging */
-#define BTA_PANU_SERVICE_MASK 0x00004000 /* PAN User */
-#define BTA_NAP_SERVICE_MASK 0x00008000 /* PAN Network access point */
-#define BTA_GN_SERVICE_MASK 0x00010000 /* PAN Group Ad-hoc networks */
-#define BTA_SAP_SERVICE_MASK 0x00020000 /* PAN Group Ad-hoc networks */
-#define BTA_A2DP_SERVICE_MASK 0x00040000 /* Advanced audio distribution */
-#define BTA_AVRCP_SERVICE_MASK 0x00080000 /* A/V remote control */
-#define BTA_HID_SERVICE_MASK 0x00100000 /* HID */
-#define BTA_VDP_SERVICE_MASK 0x00200000 /* Video distribution */
-#define BTA_PBAP_SERVICE_MASK 0x00400000 /* Phone Book Server */
-#define BTA_HSP_HS_SERVICE_MASK 0x00800000 /* HFP HS role */
-#define BTA_HFP_HS_SERVICE_MASK 0x01000000 /* HSP HS role */
-#define BTA_MAS_SERVICE_MASK 0x02000000 /* Message Access Profile */
-#define BTA_MN_SERVICE_MASK 0x04000000 /* Message Notification Profile */
-#define BTA_HL_SERVICE_MASK 0x08000000 /* Health Device Profile */
-#define BTA_PCE_SERVICE_MASK 0x10000000 /* Phone Book Client */
+#define BTA_RES_SERVICE_MASK 0x00000001 /* Reserved */
+#define BTA_SPP_SERVICE_MASK 0x00000002 /* Serial port profile. */
+#define BTA_DUN_SERVICE_MASK 0x00000004 /* Dial-up networking profile. */
+#define BTA_FAX_SERVICE_MASK 0x00000008 /* Fax profile. */
+#define BTA_LAP_SERVICE_MASK 0x00000010 /* LAN access profile. */
+#define BTA_HSP_SERVICE_MASK 0x00000020 /* HSP AG role. */
+#define BTA_HFP_SERVICE_MASK 0x00000040 /* HFP AG role */
+#define BTA_OPP_SERVICE_MASK 0x00000080 /* Object push */
+#define BTA_FTP_SERVICE_MASK 0x00000100 /* File transfer */
+#define BTA_CTP_SERVICE_MASK 0x00000200 /* Cordless Terminal */
+#define BTA_ICP_SERVICE_MASK 0x00000400 /* Intercom Terminal */
+#define BTA_SYNC_SERVICE_MASK 0x00000800 /* Synchronization */
+#define BTA_BPP_SERVICE_MASK 0x00001000 /* Print server */
+#define BTA_BIP_SERVICE_MASK 0x00002000 /* Basic Imaging */
+#define BTA_PANU_SERVICE_MASK 0x00004000 /* PAN User */
+#define BTA_NAP_SERVICE_MASK 0x00008000 /* PAN Network access point */
+#define BTA_GN_SERVICE_MASK 0x00010000 /* PAN Group Ad-hoc networks */
+#define BTA_SAP_SERVICE_MASK 0x00020000 /* PAN Group Ad-hoc networks */
+#define BTA_A2DP_SERVICE_MASK 0x00040000 /* Advanced audio distribution */
+#define BTA_AVRCP_SERVICE_MASK 0x00080000 /* A/V remote control */
+#define BTA_HID_SERVICE_MASK 0x00100000 /* HID */
+#define BTA_VDP_SERVICE_MASK 0x00200000 /* Video distribution */
+#define BTA_PBAP_SERVICE_MASK 0x00400000 /* Phone Book Server */
+#define BTA_HSP_HS_SERVICE_MASK 0x00800000 /* HFP HS role */
+#define BTA_HFP_HS_SERVICE_MASK 0x01000000 /* HSP HS role */
+#define BTA_MAS_SERVICE_MASK 0x02000000 /* Message Access Profile */
+#define BTA_MN_SERVICE_MASK 0x04000000 /* Message Notification Profile */
+#define BTA_HL_SERVICE_MASK 0x08000000 /* Health Device Profile */
+#define BTA_PCE_SERVICE_MASK 0x10000000 /* Phone Book Client */
#if (BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE)
-#define BTA_BLE_SERVICE_MASK 0x20000000 /* GATT based service */
-#define BTA_USER_SERVICE_MASK 0x40000000 /* Message Notification Profile */
+#define BTA_BLE_SERVICE_MASK 0x20000000 /* GATT based service */
+#define BTA_USER_SERVICE_MASK 0x40000000 /* Message Notification Profile */
#else
-#define BTA_USER_SERVICE_MASK 0x20000000 /* Message Notification Profile */
+#define BTA_USER_SERVICE_MASK 0x20000000 /* Message Notification Profile */
#endif
#if (BLE_INCLUDED == TRUE && BTA_GATT_INCLUDED == TRUE)
-#define BTA_ALL_SERVICE_MASK 0x3FFFFFFF /* All services supported by BTA. */
+#define BTA_ALL_SERVICE_MASK 0x3FFFFFFF /* All services supported by BTA. */
#else
-#define BTA_ALL_SERVICE_MASK 0x1FFFFFFF /* All services supported by BTA. */
+#define BTA_ALL_SERVICE_MASK 0x1FFFFFFF /* All services supported by BTA. */
#endif
typedef uint32_t tBTA_SERVICE_MASK;
/* extended service mask, including mask with one or more GATT UUID */
-typedef struct
-{
- tBTA_SERVICE_MASK srvc_mask;
- uint8_t num_uuid;
- tBT_UUID *p_uuid;
-}tBTA_SERVICE_MASK_EXT;
+typedef struct {
+ tBTA_SERVICE_MASK srvc_mask;
+ uint8_t num_uuid;
+ tBT_UUID* p_uuid;
+} tBTA_SERVICE_MASK_EXT;
/* Security Setting Mask */
-#define BTA_SEC_NONE BTM_SEC_NONE /* No security. */
-#define BTA_SEC_AUTHORIZE (BTM_SEC_IN_AUTHORIZE ) /* Authorization required (only needed for out going connection )*/
-#define BTA_SEC_AUTHENTICATE (BTM_SEC_IN_AUTHENTICATE | BTM_SEC_OUT_AUTHENTICATE) /* Authentication required. */
-#define BTA_SEC_ENCRYPT (BTM_SEC_IN_ENCRYPT | BTM_SEC_OUT_ENCRYPT) /* Encryption required. */
-#define BTA_SEC_MODE4_LEVEL4 (BTM_SEC_MODE4_LEVEL4) /* Mode 4 level 4 service, i.e. incoming/outgoing MITM and P-256 encryption */
-#define BTA_SEC_MITM (BTM_SEC_IN_MITM | BTM_SEC_OUT_MITM) /* Man-In-The_Middle protection */
-#define BTA_SEC_IN_16_DIGITS (BTM_SEC_IN_MIN_16_DIGIT_PIN) /* Min 16 digit for pin code */
+#define BTA_SEC_NONE BTM_SEC_NONE /* No security. */
+#define BTA_SEC_AUTHORIZE \
+ (BTM_SEC_IN_AUTHORIZE) /* Authorization required (only needed for out \
+ going connection )*/
+#define BTA_SEC_AUTHENTICATE \
+ (BTM_SEC_IN_AUTHENTICATE | \
+ BTM_SEC_OUT_AUTHENTICATE) /* Authentication required. */
+#define BTA_SEC_ENCRYPT \
+ (BTM_SEC_IN_ENCRYPT | BTM_SEC_OUT_ENCRYPT) /* Encryption required. */
+#define BTA_SEC_MODE4_LEVEL4 \
+ (BTM_SEC_MODE4_LEVEL4) /* Mode 4 level 4 service, i.e. incoming/outgoing \
+ MITM and P-256 encryption */
+#define BTA_SEC_MITM \
+ (BTM_SEC_IN_MITM | BTM_SEC_OUT_MITM) /* Man-In-The_Middle protection */
+#define BTA_SEC_IN_16_DIGITS \
+ (BTM_SEC_IN_MIN_16_DIGIT_PIN) /* Min 16 digit for pin code */
typedef uint16_t tBTA_SEC;
-/* Ignore for Discoverable, Connectable, Pairable and Connectable Paired only device modes */
-#define BTA_DM_IGNORE 0x00FF
+/* Ignore for Discoverable, Connectable, Pairable and Connectable Paired only
+ * device modes */
+#define BTA_DM_IGNORE 0x00FF
/* Ignore for Discoverable, Connectable only for LE modes */
-#define BTA_DM_LE_IGNORE 0xFF00
+#define BTA_DM_LE_IGNORE 0xFF00
-#define BTA_APP_ID_PAN_MULTI 0xFE /* app id for pan multiple connection */
-#define BTA_ALL_APP_ID 0xFF
+#define BTA_APP_ID_PAN_MULTI 0xFE /* app id for pan multiple connection */
+#define BTA_ALL_APP_ID 0xFF
/* Discoverable Modes */
-#define BTA_DM_NON_DISC BTM_NON_DISCOVERABLE /* Device is not discoverable. */
-#define BTA_DM_GENERAL_DISC BTM_GENERAL_DISCOVERABLE /* General discoverable. */
+#define BTA_DM_NON_DISC BTM_NON_DISCOVERABLE /* Device is not discoverable. */
+#define BTA_DM_GENERAL_DISC \
+ BTM_GENERAL_DISCOVERABLE /* General discoverable. \
+ */
#if (BLE_INCLUDED == TRUE)
-#define BTA_DM_BLE_NON_DISCOVERABLE BTM_BLE_NON_DISCOVERABLE /* Device is not LE discoverable */
-#define BTA_DM_BLE_GENERAL_DISCOVERABLE BTM_BLE_GENERAL_DISCOVERABLE /* Device is LE General discoverable */
-#define BTA_DM_BLE_LIMITED_DISCOVERABLE BTM_BLE_LIMITED_DISCOVERABLE /* Device is LE Limited discoverable */
+#define BTA_DM_BLE_NON_DISCOVERABLE \
+ BTM_BLE_NON_DISCOVERABLE /* Device is not LE discoverable */
+#define BTA_DM_BLE_GENERAL_DISCOVERABLE \
+ BTM_BLE_GENERAL_DISCOVERABLE /* Device is LE General discoverable */
+#define BTA_DM_BLE_LIMITED_DISCOVERABLE \
+ BTM_BLE_LIMITED_DISCOVERABLE /* Device is LE Limited discoverable */
#endif
-typedef uint16_t tBTA_DM_DISC; /* this discoverability mode is a bit mask among BR mode and LE mode */
+typedef uint16_t
+ tBTA_DM_DISC; /* this discoverability mode is a bit mask among BR mode and
+ LE mode */
/* Connectable Modes */
-#define BTA_DM_NON_CONN BTM_NON_CONNECTABLE /* Device is not connectable. */
-#define BTA_DM_CONN BTM_CONNECTABLE /* Device is connectable. */
+#define BTA_DM_NON_CONN BTM_NON_CONNECTABLE /* Device is not connectable. */
+#define BTA_DM_CONN BTM_CONNECTABLE /* Device is connectable. */
#if (BLE_INCLUDED == TRUE)
-#define BTA_DM_BLE_NON_CONNECTABLE BTM_BLE_NON_CONNECTABLE /* Device is LE non-connectable. */
-#define BTA_DM_BLE_CONNECTABLE BTM_BLE_CONNECTABLE /* Device is LE connectable. */
+#define BTA_DM_BLE_NON_CONNECTABLE \
+ BTM_BLE_NON_CONNECTABLE /* Device is LE non-connectable. */
+#define BTA_DM_BLE_CONNECTABLE \
+ BTM_BLE_CONNECTABLE /* Device is LE connectable. */
#endif
typedef uint16_t tBTA_DM_CONN;
-#define BTA_TRANSPORT_UNKNOWN 0
-#define BTA_TRANSPORT_BR_EDR BT_TRANSPORT_BR_EDR
-#define BTA_TRANSPORT_LE BT_TRANSPORT_LE
+#define BTA_TRANSPORT_UNKNOWN 0
+#define BTA_TRANSPORT_BR_EDR BT_TRANSPORT_BR_EDR
+#define BTA_TRANSPORT_LE BT_TRANSPORT_LE
typedef tBT_TRANSPORT tBTA_TRANSPORT;
/* Pairable Modes */
-#define BTA_DM_PAIRABLE 1
-#define BTA_DM_NON_PAIRABLE 0
+#define BTA_DM_PAIRABLE 1
+#define BTA_DM_NON_PAIRABLE 0
/* Connectable Paired Only Mode */
-#define BTA_DM_CONN_ALL 0
-#define BTA_DM_CONN_PAIRED 1
+#define BTA_DM_CONN_ALL 0
+#define BTA_DM_CONN_PAIRED 1
/* Inquiry Modes */
-#define BTA_DM_INQUIRY_NONE BTM_INQUIRY_NONE /*No BR inquiry. */
-#define BTA_DM_GENERAL_INQUIRY BTM_GENERAL_INQUIRY /* Perform general inquiry. */
-#define BTA_DM_LIMITED_INQUIRY BTM_LIMITED_INQUIRY /* Perform limited inquiry. */
+#define BTA_DM_INQUIRY_NONE BTM_INQUIRY_NONE /*No BR inquiry. */
+#define BTA_DM_GENERAL_INQUIRY \
+ BTM_GENERAL_INQUIRY /* Perform general inquiry. */
+#define BTA_DM_LIMITED_INQUIRY \
+ BTM_LIMITED_INQUIRY /* Perform limited inquiry. */
#if (BLE_INCLUDED == TRUE)
-#define BTA_BLE_INQUIRY_NONE BTM_BLE_INQUIRY_NONE
-#define BTA_BLE_GENERAL_INQUIRY BTM_BLE_GENERAL_INQUIRY /* Perform LE general inquiry. */
-#define BTA_BLE_LIMITED_INQUIRY BTM_BLE_LIMITED_INQUIRY /* Perform LE limited inquiry. */
+#define BTA_BLE_INQUIRY_NONE BTM_BLE_INQUIRY_NONE
+#define BTA_BLE_GENERAL_INQUIRY \
+ BTM_BLE_GENERAL_INQUIRY /* Perform LE general inquiry. */
+#define BTA_BLE_LIMITED_INQUIRY \
+ BTM_BLE_LIMITED_INQUIRY /* Perform LE limited inquiry. */
#endif
typedef uint8_t tBTA_DM_INQ_MODE;
/* Inquiry Filter Type */
-#define BTA_DM_INQ_CLR BTM_CLR_INQUIRY_FILTER /* Clear inquiry filter. */
-#define BTA_DM_INQ_DEV_CLASS BTM_FILTER_COND_DEVICE_CLASS /* Filter on device class. */
-#define BTA_DM_INQ_BD_ADDR BTM_FILTER_COND_BD_ADDR /* Filter on a specific BD address. */
+#define BTA_DM_INQ_CLR BTM_CLR_INQUIRY_FILTER /* Clear inquiry filter. */
+#define BTA_DM_INQ_DEV_CLASS \
+ BTM_FILTER_COND_DEVICE_CLASS /* Filter on device class. */
+#define BTA_DM_INQ_BD_ADDR \
+ BTM_FILTER_COND_BD_ADDR /* Filter on a specific BD address. */
typedef uint8_t tBTA_DM_INQ_FILT;
/* Authorize Response */
-#define BTA_DM_AUTH_PERM 0 /* Authorized for future connections to the service */
-#define BTA_DM_AUTH_TEMP 1 /* Authorized for current connection only */
-#define BTA_DM_NOT_AUTH 2 /* Not authorized for the service */
+#define BTA_DM_AUTH_PERM \
+ 0 /* Authorized for future connections to the service */
+#define BTA_DM_AUTH_TEMP 1 /* Authorized for current connection only */
+#define BTA_DM_NOT_AUTH 2 /* Not authorized for the service */
typedef uint8_t tBTA_AUTH_RESP;
/* M/S preferred roles */
-#define BTA_ANY_ROLE 0x00
-#define BTA_MASTER_ROLE_PREF 0x01
-#define BTA_MASTER_ROLE_ONLY 0x02
-#define BTA_SLAVE_ROLE_ONLY 0x03 /* Used for PANU only, skip role switch to master */
+#define BTA_ANY_ROLE 0x00
+#define BTA_MASTER_ROLE_PREF 0x01
+#define BTA_MASTER_ROLE_ONLY 0x02
+#define BTA_SLAVE_ROLE_ONLY \
+ 0x03 /* Used for PANU only, skip role switch to master */
typedef uint8_t tBTA_PREF_ROLES;
-enum
-{
+enum {
- BTA_DM_NO_SCATTERNET, /* Device doesn't support scatternet, it might
- support "role switch during connection" for
- an incoming connection, when it already has
- another connection in master role */
- BTA_DM_PARTIAL_SCATTERNET, /* Device supports partial scatternet. It can have
- simulateous connection in Master and Slave roles
- for short period of time */
- BTA_DM_FULL_SCATTERNET /* Device can have simultaneous connection in master
- and slave roles */
+ BTA_DM_NO_SCATTERNET, /* Device doesn't support scatternet, it might
+ support "role switch during connection" for
+ an incoming connection, when it already has
+ another connection in master role */
+ BTA_DM_PARTIAL_SCATTERNET, /* Device supports partial scatternet. It can have
+ simulateous connection in Master and Slave roles
+ for short period of time */
+ BTA_DM_FULL_SCATTERNET /* Device can have simultaneous connection in master
+ and slave roles */
};
-
/* Inquiry filter device class condition */
-typedef struct
-{
- DEV_CLASS dev_class; /* device class of interest */
- DEV_CLASS dev_class_mask; /* mask to determine the bits of device class of interest */
+typedef struct {
+ DEV_CLASS dev_class; /* device class of interest */
+ DEV_CLASS dev_class_mask; /* mask to determine the bits of device class of
+ interest */
} tBTA_DM_COD_COND;
-
/* Inquiry Filter Condition */
-typedef union
-{
- BD_ADDR bd_addr; /* BD address of device to filter. */
- tBTA_DM_COD_COND dev_class_cond; /* Device class filter condition */
+typedef union {
+ BD_ADDR bd_addr; /* BD address of device to filter. */
+ tBTA_DM_COD_COND dev_class_cond; /* Device class filter condition */
} tBTA_DM_INQ_COND;
/* Inquiry Parameters */
-typedef struct
-{
- tBTA_DM_INQ_MODE mode; /* Inquiry mode, limited or general. */
- uint8_t duration; /* Inquiry duration in 1.28 sec units. */
- uint8_t max_resps; /* Maximum inquiry responses. Set to zero for unlimited responses. */
- bool report_dup; /* report duplicated inquiry response with higher RSSI value */
- tBTA_DM_INQ_FILT filter_type; /* Filter condition type. */
- tBTA_DM_INQ_COND filter_cond; /* Filter condition data. */
+typedef struct {
+ tBTA_DM_INQ_MODE mode; /* Inquiry mode, limited or general. */
+ uint8_t duration; /* Inquiry duration in 1.28 sec units. */
+ uint8_t max_resps; /* Maximum inquiry responses. Set to zero for unlimited
+ responses. */
+ bool report_dup; /* report duplicated inquiry response with higher RSSI value
+ */
+ tBTA_DM_INQ_FILT filter_type; /* Filter condition type. */
+ tBTA_DM_INQ_COND filter_cond; /* Filter condition data. */
#if (BTA_HOST_INTERLEAVE_SEARCH == TRUE)
- uint8_t intl_duration[4];/*duration array storing the interleave scan's time portions*/
+ uint8_t intl_duration
+ [4]; /*duration array storing the interleave scan's time portions*/
#endif
} tBTA_DM_INQ;
-typedef struct
-{
- uint8_t bta_dm_eir_min_name_len; /* minimum length of local name when it is shortened */
+typedef struct {
+ uint8_t bta_dm_eir_min_name_len; /* minimum length of local name when it is
+ shortened */
#if (BTA_EIR_CANNED_UUID_LIST == TRUE)
- uint8_t bta_dm_eir_uuid16_len; /* length of 16-bit UUIDs */
- uint8_t *bta_dm_eir_uuid16; /* 16-bit UUIDs */
+ uint8_t bta_dm_eir_uuid16_len; /* length of 16-bit UUIDs */
+ uint8_t* bta_dm_eir_uuid16; /* 16-bit UUIDs */
#else
- uint32_t uuid_mask[BTM_EIR_SERVICE_ARRAY_SIZE]; /* mask of UUID list in EIR */
+ uint32_t uuid_mask[BTM_EIR_SERVICE_ARRAY_SIZE]; /* mask of UUID list in EIR */
#endif
- int8_t *bta_dm_eir_inq_tx_power; /* Inquiry TX power */
- uint8_t bta_dm_eir_flag_len; /* length of flags in bytes */
- uint8_t *bta_dm_eir_flags; /* flags for EIR */
- uint8_t bta_dm_eir_manufac_spec_len; /* length of manufacturer specific in bytes */
- uint8_t *bta_dm_eir_manufac_spec; /* manufacturer specific */
- uint8_t bta_dm_eir_additional_len; /* length of additional data in bytes */
- uint8_t *bta_dm_eir_additional; /* additional data */
+ int8_t* bta_dm_eir_inq_tx_power; /* Inquiry TX power */
+ uint8_t bta_dm_eir_flag_len; /* length of flags in bytes */
+ uint8_t* bta_dm_eir_flags; /* flags for EIR */
+ uint8_t bta_dm_eir_manufac_spec_len; /* length of manufacturer specific in
+ bytes */
+ uint8_t* bta_dm_eir_manufac_spec; /* manufacturer specific */
+ uint8_t bta_dm_eir_additional_len; /* length of additional data in bytes */
+ uint8_t* bta_dm_eir_additional; /* additional data */
} tBTA_DM_EIR_CONF;
#if (BLE_INCLUDED == TRUE)
/* advertising filter policy */
-typedef tBTM_BLE_AFP tBTA_BLE_AFP;
+typedef tBTM_BLE_AFP tBTA_BLE_AFP;
-enum
-{
- BTA_BLE_BATCH_SCAN_MODE_PASS = 1,
- BTA_BLE_BATCH_SCAN_MODE_ACTI = 2,
- BTA_BLE_BATCH_SCAN_MODE_PASS_ACTI = 3
+enum {
+ BTA_BLE_BATCH_SCAN_MODE_PASS = 1,
+ BTA_BLE_BATCH_SCAN_MODE_ACTI = 2,
+ BTA_BLE_BATCH_SCAN_MODE_PASS_ACTI = 3
};
typedef uint8_t tBTA_BLE_BATCH_SCAN_MODE;
-enum
-{
- BTA_BLE_DISCARD_OLD_ITEMS=0,
- BTA_BLE_DISCARD_LOWER_RSSI_ITEMS=1
-};
+enum { BTA_BLE_DISCARD_OLD_ITEMS = 0, BTA_BLE_DISCARD_LOWER_RSSI_ITEMS = 1 };
typedef uint8_t tBTA_BLE_DISCARD_RULE;
-enum
-{
- BTA_BLE_ADV_SEEN_FIRST_TIME=0,
- BTA_BLE_ADV_TRACKING_TIMEOUT=1
-};
+enum { BTA_BLE_ADV_SEEN_FIRST_TIME = 0, BTA_BLE_ADV_TRACKING_TIMEOUT = 1 };
typedef uint8_t tBTA_BLE_ADV_CHANGE_REASON;
-enum
-{
- BTA_BLE_BATCH_SCAN_ENB_EVT = 1,
- BTA_BLE_BATCH_SCAN_CFG_STRG_EVT = 2,
- BTA_BLE_BATCH_SCAN_DATA_EVT = 3,
- BTA_BLE_BATCH_SCAN_THRES_EVT = 4,
- BTA_BLE_BATCH_SCAN_PARAM_EVT = 5,
- BTA_BLE_BATCH_SCAN_DIS_EVT = 6
+enum {
+ BTA_BLE_BATCH_SCAN_ENB_EVT = 1,
+ BTA_BLE_BATCH_SCAN_CFG_STRG_EVT = 2,
+ BTA_BLE_BATCH_SCAN_DATA_EVT = 3,
+ BTA_BLE_BATCH_SCAN_THRES_EVT = 4,
+ BTA_BLE_BATCH_SCAN_PARAM_EVT = 5,
+ BTA_BLE_BATCH_SCAN_DIS_EVT = 6
};
typedef tBTM_BLE_BATCH_SCAN_EVT tBTA_BLE_BATCH_SCAN_EVT;
@@ -354,106 +372,105 @@
/* BLE customer specific feature function type definitions */
/* data type used on customer specific feature for RSSI monitoring */
-#define BTA_BLE_RSSI_ALERT_HI 0
-#define BTA_BLE_RSSI_ALERT_RANGE 1
-#define BTA_BLE_RSSI_ALERT_LO 2
+#define BTA_BLE_RSSI_ALERT_HI 0
+#define BTA_BLE_RSSI_ALERT_RANGE 1
+#define BTA_BLE_RSSI_ALERT_LO 2
typedef uint8_t tBTA_DM_BLE_RSSI_ALERT_TYPE;
-#define BTA_BLE_RSSI_ALERT_NONE BTM_BLE_RSSI_ALERT_NONE /* (0) */
-#define BTA_BLE_RSSI_ALERT_HI_BIT BTM_BLE_RSSI_ALERT_HI_BIT /* (1) */
-#define BTA_BLE_RSSI_ALERT_RANGE_BIT BTM_BLE_RSSI_ALERT_RANGE_BIT /* (1 << 1) */
-#define BTA_BLE_RSSI_ALERT_LO_BIT BTM_BLE_RSSI_ALERT_LO_BIT /* (1 << 2) */
-typedef uint8_t tBTA_DM_BLE_RSSI_ALERT_MASK;
+#define BTA_BLE_RSSI_ALERT_NONE BTM_BLE_RSSI_ALERT_NONE /* (0) */
+#define BTA_BLE_RSSI_ALERT_HI_BIT BTM_BLE_RSSI_ALERT_HI_BIT /* (1) */
+#define BTA_BLE_RSSI_ALERT_RANGE_BIT \
+ BTM_BLE_RSSI_ALERT_RANGE_BIT /* (1 << 1) */
+#define BTA_BLE_RSSI_ALERT_LO_BIT BTM_BLE_RSSI_ALERT_LO_BIT /* (1 << 2) */
+typedef uint8_t tBTA_DM_BLE_RSSI_ALERT_MASK;
-
-typedef void (tBTA_DM_BLE_RSSI_CBACK) (BD_ADDR bd_addr, tBTA_DM_BLE_RSSI_ALERT_TYPE alert_type, int8_t rssi);
+typedef void(tBTA_DM_BLE_RSSI_CBACK)(BD_ADDR bd_addr,
+ tBTA_DM_BLE_RSSI_ALERT_TYPE alert_type,
+ int8_t rssi);
/* max number of filter spot for different filter type */
-#define BTA_DM_BLE_MAX_UUID_FILTER BTM_BLE_MAX_UUID_FILTER /* 8 */
-#define BTA_DM_BLE_MAX_ADDR_FILTER BTM_BLE_MAX_ADDR_FILTER /* 8 */
-#define BTA_DM_BLE_PF_STR_COND_MAX BTM_BLE_PF_STR_COND_MAX /* 4 apply to manu data , or local name */
-#define BTA_DM_BLE_PF_STR_LEN_MAX BTM_BLE_PF_STR_LEN_MAX /* match for first 20 bytes */
+#define BTA_DM_BLE_MAX_UUID_FILTER BTM_BLE_MAX_UUID_FILTER /* 8 */
+#define BTA_DM_BLE_MAX_ADDR_FILTER BTM_BLE_MAX_ADDR_FILTER /* 8 */
+#define BTA_DM_BLE_PF_STR_COND_MAX \
+ BTM_BLE_PF_STR_COND_MAX /* 4 apply to manu data , or local name */
+#define BTA_DM_BLE_PF_STR_LEN_MAX \
+ BTM_BLE_PF_STR_LEN_MAX /* match for first 20 bytes */
-#define BTA_DM_BLE_PF_LOGIC_OR 0
-#define BTA_DM_BLE_PF_LOGIC_AND 1
+#define BTA_DM_BLE_PF_LOGIC_OR 0
+#define BTA_DM_BLE_PF_LOGIC_AND 1
typedef uint8_t tBTA_DM_BLE_PF_LOGIC_TYPE;
-enum
-{
- BTA_DM_BLE_SCAN_COND_ADD,
- BTA_DM_BLE_SCAN_COND_DELETE,
- BTA_DM_BLE_SCAN_COND_CLEAR = 2
+enum {
+ BTA_DM_BLE_SCAN_COND_ADD,
+ BTA_DM_BLE_SCAN_COND_DELETE,
+ BTA_DM_BLE_SCAN_COND_CLEAR = 2
};
typedef uint8_t tBTA_DM_BLE_SCAN_COND_OP;
/* ADV payload filtering vendor specific call event */
-enum
-{
- BTA_BLE_SCAN_PF_ENABLE_EVT = 7,
- BTA_BLE_SCAN_PF_COND_EVT
-};
+enum { BTA_BLE_SCAN_PF_ENABLE_EVT = 7, BTA_BLE_SCAN_PF_COND_EVT };
/* filter selection bit index */
-#define BTA_DM_BLE_PF_ADDR_FILTER BTM_BLE_PF_ADDR_FILTER
-#define BTA_DM_BLE_PF_SRVC_DATA BTM_BLE_PF_SRVC_DATA
-#define BTA_DM_BLE_PF_SRVC_UUID BTM_BLE_PF_SRVC_UUID
-#define BTA_DM_BLE_PF_SRVC_SOL_UUID BTM_BLE_PF_SRVC_SOL_UUID
-#define BTA_DM_BLE_PF_LOCAL_NAME BTM_BLE_PF_LOCAL_NAME
-#define BTA_DM_BLE_PF_MANU_DATA BTM_BLE_PF_MANU_DATA
-#define BTA_DM_BLE_PF_SRVC_DATA_PATTERN BTM_BLE_PF_SRVC_DATA_PATTERN
-#define BTA_DM_BLE_PF_TYPE_ALL BTM_BLE_PF_TYPE_ALL
-#define BTA_DM_BLE_PF_TYPE_MAX BTM_BLE_PF_TYPE_MAX
-typedef uint8_t tBTA_DM_BLE_PF_COND_TYPE;
+#define BTA_DM_BLE_PF_ADDR_FILTER BTM_BLE_PF_ADDR_FILTER
+#define BTA_DM_BLE_PF_SRVC_DATA BTM_BLE_PF_SRVC_DATA
+#define BTA_DM_BLE_PF_SRVC_UUID BTM_BLE_PF_SRVC_UUID
+#define BTA_DM_BLE_PF_SRVC_SOL_UUID BTM_BLE_PF_SRVC_SOL_UUID
+#define BTA_DM_BLE_PF_LOCAL_NAME BTM_BLE_PF_LOCAL_NAME
+#define BTA_DM_BLE_PF_MANU_DATA BTM_BLE_PF_MANU_DATA
+#define BTA_DM_BLE_PF_SRVC_DATA_PATTERN BTM_BLE_PF_SRVC_DATA_PATTERN
+#define BTA_DM_BLE_PF_TYPE_ALL BTM_BLE_PF_TYPE_ALL
+#define BTA_DM_BLE_PF_TYPE_MAX BTM_BLE_PF_TYPE_MAX
+typedef uint8_t tBTA_DM_BLE_PF_COND_TYPE;
-typedef union
-{
- uint16_t uuid16_mask;
- uint32_t uuid32_mask;
- uint8_t uuid128_mask[LEN_UUID_128];
-}tBTA_DM_BLE_PF_COND_MASK;
+typedef union {
+ uint16_t uuid16_mask;
+ uint32_t uuid32_mask;
+ uint8_t uuid128_mask[LEN_UUID_128];
+} tBTA_DM_BLE_PF_COND_MASK;
-typedef struct
-{
- tBLE_BD_ADDR *p_target_addr; /* target address, if NULL, generic UUID filter */
- tBT_UUID uuid; /* UUID condition */
- tBTA_DM_BLE_PF_LOGIC_TYPE cond_logic; /* AND/OR */
- tBTA_DM_BLE_PF_COND_MASK *p_uuid_mask; /* UUID condition mask, if NULL, match exact as UUID condition */
-}tBTA_DM_BLE_PF_UUID_COND;
+typedef struct {
+ tBLE_BD_ADDR*
+ p_target_addr; /* target address, if NULL, generic UUID filter */
+ tBT_UUID uuid; /* UUID condition */
+ tBTA_DM_BLE_PF_LOGIC_TYPE cond_logic; /* AND/OR */
+ tBTA_DM_BLE_PF_COND_MASK*
+ p_uuid_mask; /* UUID condition mask, if NULL, match exact as UUID
+ condition */
+} tBTA_DM_BLE_PF_UUID_COND;
-typedef struct
-{
- uint8_t data_len; /* <= 20 bytes */
- uint8_t *p_data;
-}tBTA_DM_BLE_PF_LOCAL_NAME_COND;
+typedef struct {
+ uint8_t data_len; /* <= 20 bytes */
+ uint8_t* p_data;
+} tBTA_DM_BLE_PF_LOCAL_NAME_COND;
-typedef struct
-{
- uint16_t company_id; /* company ID */
- uint8_t data_len; /* <= 20 bytes */
- uint8_t *p_pattern;
- uint16_t company_id_mask; /* UUID value mask */
- uint8_t *p_pattern_mask; /* Manufacturer data matching mask, same length
- as data pattern, set to all 0xff, match exact data */
-}tBTA_DM_BLE_PF_MANU_COND;
+typedef struct {
+ uint16_t company_id; /* company ID */
+ uint8_t data_len; /* <= 20 bytes */
+ uint8_t* p_pattern;
+ uint16_t company_id_mask; /* UUID value mask */
+ uint8_t*
+ p_pattern_mask; /* Manufacturer data matching mask, same length
+ as data pattern, set to all 0xff, match exact data */
+} tBTA_DM_BLE_PF_MANU_COND;
-typedef struct
-{
- uint16_t uuid; /* service ID */
- uint8_t data_len; /* <= 20 bytes */
- uint8_t *p_pattern;
- uint8_t *p_pattern_mask; /* Service data matching mask, same length
- as data pattern, set to all 0xff, match exact data */
-}tBTA_DM_BLE_PF_SRVC_PATTERN_COND;
+typedef struct {
+ uint16_t uuid; /* service ID */
+ uint8_t data_len; /* <= 20 bytes */
+ uint8_t* p_pattern;
+ uint8_t*
+ p_pattern_mask; /* Service data matching mask, same length
+ as data pattern, set to all 0xff, match exact data */
+} tBTA_DM_BLE_PF_SRVC_PATTERN_COND;
-typedef union
-{
- tBLE_BD_ADDR target_addr;
- tBTA_DM_BLE_PF_LOCAL_NAME_COND local_name; /* lcoal name filtering */
- tBTA_DM_BLE_PF_MANU_COND manu_data; /* manufactuer data filtering */
- tBTA_DM_BLE_PF_UUID_COND srvc_uuid; /* service UUID filtering */
- tBTA_DM_BLE_PF_UUID_COND solicitate_uuid; /* solicitated service UUID filtering */
- tBTA_DM_BLE_PF_SRVC_PATTERN_COND srvc_data; /* service data pattern */
-}tBTA_DM_BLE_PF_COND_PARAM;
+typedef union {
+ tBLE_BD_ADDR target_addr;
+ tBTA_DM_BLE_PF_LOCAL_NAME_COND local_name; /* lcoal name filtering */
+ tBTA_DM_BLE_PF_MANU_COND manu_data; /* manufactuer data filtering */
+ tBTA_DM_BLE_PF_UUID_COND srvc_uuid; /* service UUID filtering */
+ tBTA_DM_BLE_PF_UUID_COND
+ solicitate_uuid; /* solicitated service UUID filtering */
+ tBTA_DM_BLE_PF_SRVC_PATTERN_COND srvc_data; /* service data pattern */
+} tBTA_DM_BLE_PF_COND_PARAM;
typedef uint8_t tBTA_DM_BLE_PF_FILT_INDEX;
typedef uint8_t tBTA_DM_BLE_PF_AVBL_SPACE;
@@ -461,512 +478,537 @@
typedef int8_t tBTA_DM_RSSI_VALUE;
typedef uint8_t tBTA_DM_LINK_QUALITY_VALUE;
-
typedef uint8_t tBTA_SIG_STRENGTH_MASK;
-
/* Security Callback Events */
-#define BTA_DM_ENABLE_EVT 0 /* Enable Event */
-#define BTA_DM_DISABLE_EVT 1 /* Disable Event */
-#define BTA_DM_PIN_REQ_EVT 2 /* PIN request. */
-#define BTA_DM_AUTH_CMPL_EVT 3 /* Authentication complete indication. */
-#define BTA_DM_AUTHORIZE_EVT 4 /* Authorization request. */
-#define BTA_DM_LINK_UP_EVT 5 /* Connection UP event */
-#define BTA_DM_LINK_DOWN_EVT 6 /* Connection DOWN event */
-#define BTA_DM_SIG_STRENGTH_EVT 7 /* Signal strength for bluetooth connection */
-#define BTA_DM_BUSY_LEVEL_EVT 8 /* System busy level */
-#define BTA_DM_BOND_CANCEL_CMPL_EVT 9 /* Bond cancel complete indication */
-#define BTA_DM_SP_CFM_REQ_EVT 10 /* Simple Pairing User Confirmation request. */
-#define BTA_DM_SP_KEY_NOTIF_EVT 11 /* Simple Pairing Passkey Notification */
-#define BTA_DM_SP_RMT_OOB_EVT 12 /* Simple Pairing Remote OOB Data request. */
-#define BTA_DM_SP_KEYPRESS_EVT 13 /* Key press notification event. */
-#define BTA_DM_ROLE_CHG_EVT 14 /* Role Change event. */
-#define BTA_DM_BLE_KEY_EVT 15 /* BLE SMP key event for peer device keys */
-#define BTA_DM_BLE_SEC_REQ_EVT 16 /* BLE SMP security request */
-#define BTA_DM_BLE_PASSKEY_NOTIF_EVT 17 /* SMP passkey notification event */
-#define BTA_DM_BLE_PASSKEY_REQ_EVT 18 /* SMP passkey request event */
-#define BTA_DM_BLE_OOB_REQ_EVT 19 /* SMP OOB request event */
-#define BTA_DM_BLE_LOCAL_IR_EVT 20 /* BLE local IR event */
-#define BTA_DM_BLE_LOCAL_ER_EVT 21 /* BLE local ER event */
-#define BTA_DM_BLE_NC_REQ_EVT 22 /* SMP Numeric Comparison request event */
-#define BTA_DM_SP_RMT_OOB_EXT_EVT 23 /* Simple Pairing Remote OOB Extended Data request. */
-#define BTA_DM_BLE_AUTH_CMPL_EVT 24 /* BLE Auth complete */
-#define BTA_DM_DEV_UNPAIRED_EVT 25
-#define BTA_DM_HW_ERROR_EVT 26 /* BT Chip H/W error */
-#define BTA_DM_LE_FEATURES_READ 27 /* Cotroller specific LE features are read */
-#define BTA_DM_ENER_INFO_READ 28 /* Energy info read */
-#define BTA_DM_BLE_SC_OOB_REQ_EVT 29 /* SMP SC OOB request event */
+#define BTA_DM_ENABLE_EVT 0 /* Enable Event */
+#define BTA_DM_DISABLE_EVT 1 /* Disable Event */
+#define BTA_DM_PIN_REQ_EVT 2 /* PIN request. */
+#define BTA_DM_AUTH_CMPL_EVT 3 /* Authentication complete indication. */
+#define BTA_DM_AUTHORIZE_EVT 4 /* Authorization request. */
+#define BTA_DM_LINK_UP_EVT 5 /* Connection UP event */
+#define BTA_DM_LINK_DOWN_EVT 6 /* Connection DOWN event */
+#define BTA_DM_SIG_STRENGTH_EVT \
+ 7 /* Signal strength for bluetooth connection \
+ */
+#define BTA_DM_BUSY_LEVEL_EVT 8 /* System busy level */
+#define BTA_DM_BOND_CANCEL_CMPL_EVT 9 /* Bond cancel complete indication */
+#define BTA_DM_SP_CFM_REQ_EVT \
+ 10 /* Simple Pairing User Confirmation request. \
+ */
+#define BTA_DM_SP_KEY_NOTIF_EVT 11 /* Simple Pairing Passkey Notification */
+#define BTA_DM_SP_RMT_OOB_EVT 12 /* Simple Pairing Remote OOB Data request. */
+#define BTA_DM_SP_KEYPRESS_EVT 13 /* Key press notification event. */
+#define BTA_DM_ROLE_CHG_EVT 14 /* Role Change event. */
+#define BTA_DM_BLE_KEY_EVT 15 /* BLE SMP key event for peer device keys */
+#define BTA_DM_BLE_SEC_REQ_EVT 16 /* BLE SMP security request */
+#define BTA_DM_BLE_PASSKEY_NOTIF_EVT 17 /* SMP passkey notification event */
+#define BTA_DM_BLE_PASSKEY_REQ_EVT 18 /* SMP passkey request event */
+#define BTA_DM_BLE_OOB_REQ_EVT 19 /* SMP OOB request event */
+#define BTA_DM_BLE_LOCAL_IR_EVT 20 /* BLE local IR event */
+#define BTA_DM_BLE_LOCAL_ER_EVT 21 /* BLE local ER event */
+#define BTA_DM_BLE_NC_REQ_EVT 22 /* SMP Numeric Comparison request event */
+#define BTA_DM_SP_RMT_OOB_EXT_EVT \
+ 23 /* Simple Pairing Remote OOB Extended Data request. */
+#define BTA_DM_BLE_AUTH_CMPL_EVT 24 /* BLE Auth complete */
+#define BTA_DM_DEV_UNPAIRED_EVT 25
+#define BTA_DM_HW_ERROR_EVT 26 /* BT Chip H/W error */
+#define BTA_DM_LE_FEATURES_READ \
+ 27 /* Cotroller specific LE features are read \
+ */
+#define BTA_DM_ENER_INFO_READ 28 /* Energy info read */
+#define BTA_DM_BLE_SC_OOB_REQ_EVT 29 /* SMP SC OOB request event */
typedef uint8_t tBTA_DM_SEC_EVT;
/* Structure associated with BTA_DM_ENABLE_EVT */
-typedef struct
-{
- tBTA_STATUS status;
-} tBTA_DM_ENABLE;
+typedef struct { tBTA_STATUS status; } tBTA_DM_ENABLE;
/* Structure associated with BTA_DM_PIN_REQ_EVT */
-typedef struct
-{
- /* Note: First 3 data members must be, bd_addr, dev_class, and bd_name in order */
- BD_ADDR bd_addr; /* BD address peer device. */
- DEV_CLASS dev_class; /* Class of Device */
- BD_NAME bd_name; /* Name of peer device. */
- bool min_16_digit; /* true if the pin returned must be at least 16 digits */
+typedef struct {
+ /* Note: First 3 data members must be, bd_addr, dev_class, and bd_name in
+ * order */
+ BD_ADDR bd_addr; /* BD address peer device. */
+ DEV_CLASS dev_class; /* Class of Device */
+ BD_NAME bd_name; /* Name of peer device. */
+ bool min_16_digit; /* true if the pin returned must be at least 16 digits */
} tBTA_DM_PIN_REQ;
/* BLE related definition */
-#define BTA_DM_AUTH_FAIL_BASE (HCI_ERR_MAX_ERR + 10)
+#define BTA_DM_AUTH_FAIL_BASE (HCI_ERR_MAX_ERR + 10)
-/* Converts SMP error codes defined in smp_api.h to SMP auth fail reasons below. */
-#define BTA_DM_AUTH_CONVERT_SMP_CODE(x) (BTA_DM_AUTH_FAIL_BASE + (x))
+/* Converts SMP error codes defined in smp_api.h to SMP auth fail reasons below.
+ */
+#define BTA_DM_AUTH_CONVERT_SMP_CODE(x) (BTA_DM_AUTH_FAIL_BASE + (x))
-#define BTA_DM_AUTH_SMP_PASSKEY_FAIL (BTA_DM_AUTH_FAIL_BASE + SMP_PASSKEY_ENTRY_FAIL)
-#define BTA_DM_AUTH_SMP_OOB_FAIL (BTA_DM_AUTH_FAIL_BASE + SMP_OOB_FAIL)
-#define BTA_DM_AUTH_SMP_PAIR_AUTH_FAIL (BTA_DM_AUTH_FAIL_BASE + SMP_PAIR_AUTH_FAIL)
-#define BTA_DM_AUTH_SMP_CONFIRM_VALUE_FAIL (BTA_DM_AUTH_FAIL_BASE + SMP_CONFIRM_VALUE_ERR)
-#define BTA_DM_AUTH_SMP_PAIR_NOT_SUPPORT (BTA_DM_AUTH_FAIL_BASE + SMP_PAIR_NOT_SUPPORT)
-#define BTA_DM_AUTH_SMP_ENC_KEY_SIZE (BTA_DM_AUTH_FAIL_BASE + SMP_ENC_KEY_SIZE)
-#define BTA_DM_AUTH_SMP_INVALID_CMD (BTA_DM_AUTH_FAIL_BASE + SMP_INVALID_CMD)
-#define BTA_DM_AUTH_SMP_UNKNOWN_ERR (BTA_DM_AUTH_FAIL_BASE + SMP_PAIR_FAIL_UNKNOWN)
-#define BTA_DM_AUTH_SMP_REPEATED_ATTEMPT (BTA_DM_AUTH_FAIL_BASE + SMP_REPEATED_ATTEMPTS)
-#define BTA_DM_AUTH_SMP_INVALID_PARAMETERS (BTA_DM_AUTH_FAIL_BASE + SMP_INVALID_PARAMETERS)
-#define BTA_DM_AUTH_SMP_INTERNAL_ERR (BTA_DM_AUTH_FAIL_BASE + SMP_PAIR_INTERNAL_ERR)
-#define BTA_DM_AUTH_SMP_UNKNOWN_IO (BTA_DM_AUTH_FAIL_BASE + SMP_UNKNOWN_IO_CAP)
-#define BTA_DM_AUTH_SMP_INIT_FAIL (BTA_DM_AUTH_FAIL_BASE + SMP_INIT_FAIL)
-#define BTA_DM_AUTH_SMP_CONFIRM_FAIL (BTA_DM_AUTH_FAIL_BASE + SMP_CONFIRM_FAIL)
-#define BTA_DM_AUTH_SMP_BUSY (BTA_DM_AUTH_FAIL_BASE + SMP_BUSY)
-#define BTA_DM_AUTH_SMP_ENC_FAIL (BTA_DM_AUTH_FAIL_BASE + SMP_ENC_FAIL)
-#define BTA_DM_AUTH_SMP_RSP_TIMEOUT (BTA_DM_AUTH_FAIL_BASE + SMP_RSP_TIMEOUT)
-#define BTA_DM_AUTH_SMP_CONN_TOUT (BTA_DM_AUTH_FAIL_BASE + SMP_CONN_TOUT)
+#define BTA_DM_AUTH_SMP_PASSKEY_FAIL \
+ (BTA_DM_AUTH_FAIL_BASE + SMP_PASSKEY_ENTRY_FAIL)
+#define BTA_DM_AUTH_SMP_OOB_FAIL (BTA_DM_AUTH_FAIL_BASE + SMP_OOB_FAIL)
+#define BTA_DM_AUTH_SMP_PAIR_AUTH_FAIL \
+ (BTA_DM_AUTH_FAIL_BASE + SMP_PAIR_AUTH_FAIL)
+#define BTA_DM_AUTH_SMP_CONFIRM_VALUE_FAIL \
+ (BTA_DM_AUTH_FAIL_BASE + SMP_CONFIRM_VALUE_ERR)
+#define BTA_DM_AUTH_SMP_PAIR_NOT_SUPPORT \
+ (BTA_DM_AUTH_FAIL_BASE + SMP_PAIR_NOT_SUPPORT)
+#define BTA_DM_AUTH_SMP_ENC_KEY_SIZE (BTA_DM_AUTH_FAIL_BASE + SMP_ENC_KEY_SIZE)
+#define BTA_DM_AUTH_SMP_INVALID_CMD (BTA_DM_AUTH_FAIL_BASE + SMP_INVALID_CMD)
+#define BTA_DM_AUTH_SMP_UNKNOWN_ERR \
+ (BTA_DM_AUTH_FAIL_BASE + SMP_PAIR_FAIL_UNKNOWN)
+#define BTA_DM_AUTH_SMP_REPEATED_ATTEMPT \
+ (BTA_DM_AUTH_FAIL_BASE + SMP_REPEATED_ATTEMPTS)
+#define BTA_DM_AUTH_SMP_INVALID_PARAMETERS \
+ (BTA_DM_AUTH_FAIL_BASE + SMP_INVALID_PARAMETERS)
+#define BTA_DM_AUTH_SMP_INTERNAL_ERR \
+ (BTA_DM_AUTH_FAIL_BASE + SMP_PAIR_INTERNAL_ERR)
+#define BTA_DM_AUTH_SMP_UNKNOWN_IO (BTA_DM_AUTH_FAIL_BASE + SMP_UNKNOWN_IO_CAP)
+#define BTA_DM_AUTH_SMP_INIT_FAIL (BTA_DM_AUTH_FAIL_BASE + SMP_INIT_FAIL)
+#define BTA_DM_AUTH_SMP_CONFIRM_FAIL (BTA_DM_AUTH_FAIL_BASE + SMP_CONFIRM_FAIL)
+#define BTA_DM_AUTH_SMP_BUSY (BTA_DM_AUTH_FAIL_BASE + SMP_BUSY)
+#define BTA_DM_AUTH_SMP_ENC_FAIL (BTA_DM_AUTH_FAIL_BASE + SMP_ENC_FAIL)
+#define BTA_DM_AUTH_SMP_RSP_TIMEOUT (BTA_DM_AUTH_FAIL_BASE + SMP_RSP_TIMEOUT)
+#define BTA_DM_AUTH_SMP_CONN_TOUT (BTA_DM_AUTH_FAIL_BASE + SMP_CONN_TOUT)
/* connection parameter boundary value and dummy value */
-#define BTA_DM_BLE_SCAN_INT_MIN BTM_BLE_SCAN_INT_MIN
-#define BTA_DM_BLE_SCAN_INT_MAX BTM_BLE_SCAN_INT_MAX
-#define BTA_DM_BLE_SCAN_WIN_MIN BTM_BLE_SCAN_WIN_MIN
-#define BTA_DM_BLE_SCAN_WIN_MAX BTM_BLE_SCAN_WIN_MAX
-#define BTA_DM_BLE_CONN_INT_MIN BTM_BLE_CONN_INT_MIN
-#define BTA_DM_BLE_CONN_INT_MAX BTM_BLE_CONN_INT_MAX
-#define BTA_DM_BLE_CONN_LATENCY_MAX BTM_BLE_CONN_LATENCY_MAX
-#define BTA_DM_BLE_CONN_SUP_TOUT_MIN BTM_BLE_CONN_SUP_TOUT_MIN
-#define BTA_DM_BLE_CONN_SUP_TOUT_MAX BTM_BLE_CONN_SUP_TOUT_MAX
-#define BTA_DM_BLE_CONN_PARAM_UNDEF BTM_BLE_CONN_PARAM_UNDEF /* use this value when a specific value not to be overwritten */
+#define BTA_DM_BLE_SCAN_INT_MIN BTM_BLE_SCAN_INT_MIN
+#define BTA_DM_BLE_SCAN_INT_MAX BTM_BLE_SCAN_INT_MAX
+#define BTA_DM_BLE_SCAN_WIN_MIN BTM_BLE_SCAN_WIN_MIN
+#define BTA_DM_BLE_SCAN_WIN_MAX BTM_BLE_SCAN_WIN_MAX
+#define BTA_DM_BLE_CONN_INT_MIN BTM_BLE_CONN_INT_MIN
+#define BTA_DM_BLE_CONN_INT_MAX BTM_BLE_CONN_INT_MAX
+#define BTA_DM_BLE_CONN_LATENCY_MAX BTM_BLE_CONN_LATENCY_MAX
+#define BTA_DM_BLE_CONN_SUP_TOUT_MIN BTM_BLE_CONN_SUP_TOUT_MIN
+#define BTA_DM_BLE_CONN_SUP_TOUT_MAX BTM_BLE_CONN_SUP_TOUT_MAX
+#define BTA_DM_BLE_CONN_PARAM_UNDEF \
+ BTM_BLE_CONN_PARAM_UNDEF /* use this value when a specific value not to be \
+ overwritten */
-
-#define BTA_LE_KEY_PENC BTM_LE_KEY_PENC /* encryption information of peer device */
-#define BTA_LE_KEY_PID BTM_LE_KEY_PID /* identity key of the peer device */
-#define BTA_LE_KEY_PCSRK BTM_LE_KEY_PCSRK /* peer SRK */
-#define BTA_LE_KEY_LENC BTM_LE_KEY_LENC /* master role security information:div */
-#define BTA_LE_KEY_LID BTM_LE_KEY_LID /* master device ID key */
-#define BTA_LE_KEY_LCSRK BTM_LE_KEY_LCSRK /* local CSRK has been deliver to peer */
+#define BTA_LE_KEY_PENC \
+ BTM_LE_KEY_PENC /* encryption information of peer device */
+#define BTA_LE_KEY_PID BTM_LE_KEY_PID /* identity key of the peer device */
+#define BTA_LE_KEY_PCSRK BTM_LE_KEY_PCSRK /* peer SRK */
+#define BTA_LE_KEY_LENC \
+ BTM_LE_KEY_LENC /* master role security information:div */
+#define BTA_LE_KEY_LID BTM_LE_KEY_LID /* master device ID key */
+#define BTA_LE_KEY_LCSRK \
+ BTM_LE_KEY_LCSRK /* local CSRK has been deliver to peer */
typedef uint8_t tBTA_LE_KEY_TYPE; /* can be used as a bit mask */
-
-typedef tBTM_LE_PENC_KEYS tBTA_LE_PENC_KEYS ;
+typedef tBTM_LE_PENC_KEYS tBTA_LE_PENC_KEYS;
typedef tBTM_LE_PCSRK_KEYS tBTA_LE_PCSRK_KEYS;
-typedef tBTM_LE_LENC_KEYS tBTA_LE_LENC_KEYS ;
-typedef tBTM_LE_LCSRK_KEYS tBTA_LE_LCSRK_KEYS ;
-typedef tBTM_LE_PID_KEYS tBTA_LE_PID_KEYS ;
+typedef tBTM_LE_LENC_KEYS tBTA_LE_LENC_KEYS;
+typedef tBTM_LE_LCSRK_KEYS tBTA_LE_LCSRK_KEYS;
+typedef tBTM_LE_PID_KEYS tBTA_LE_PID_KEYS;
-typedef union
-{
- tBTA_LE_PENC_KEYS penc_key; /* received peer encryption key */
- tBTA_LE_PCSRK_KEYS psrk_key; /* received peer device SRK */
- tBTA_LE_PID_KEYS pid_key; /* peer device ID key */
- tBTA_LE_LENC_KEYS lenc_key; /* local encryption reproduction keys LTK = = d1(ER,DIV,0)*/
- tBTA_LE_LCSRK_KEYS lcsrk_key; /* local device CSRK = d1(ER,DIV,1)*/
- tBTA_LE_PID_KEYS lid_key; /* local device ID key for the particular remote */
-}tBTA_LE_KEY_VALUE;
+typedef union {
+ tBTA_LE_PENC_KEYS penc_key; /* received peer encryption key */
+ tBTA_LE_PCSRK_KEYS psrk_key; /* received peer device SRK */
+ tBTA_LE_PID_KEYS pid_key; /* peer device ID key */
+ tBTA_LE_LENC_KEYS
+ lenc_key; /* local encryption reproduction keys LTK = = d1(ER,DIV,0)*/
+ tBTA_LE_LCSRK_KEYS lcsrk_key; /* local device CSRK = d1(ER,DIV,1)*/
+ tBTA_LE_PID_KEYS lid_key; /* local device ID key for the particular remote */
+} tBTA_LE_KEY_VALUE;
-#define BTA_BLE_LOCAL_KEY_TYPE_ID 1
-#define BTA_BLE_LOCAL_KEY_TYPE_ER 2
+#define BTA_BLE_LOCAL_KEY_TYPE_ID 1
+#define BTA_BLE_LOCAL_KEY_TYPE_ER 2
typedef uint8_t tBTA_DM_BLE_LOCAL_KEY_MASK;
-typedef struct
-{
- BT_OCTET16 ir;
- BT_OCTET16 irk;
- BT_OCTET16 dhk;
-}tBTA_BLE_LOCAL_ID_KEYS;
+typedef struct {
+ BT_OCTET16 ir;
+ BT_OCTET16 irk;
+ BT_OCTET16 dhk;
+} tBTA_BLE_LOCAL_ID_KEYS;
-#define BTA_DM_SEC_GRANTED BTA_SUCCESS
-#define BTA_DM_SEC_PAIR_NOT_SPT BTA_DM_AUTH_SMP_PAIR_NOT_SUPPORT
-#define BTA_DM_SEC_REP_ATTEMPTS BTA_DM_AUTH_SMP_REPEATED_ATTEMPT
+#define BTA_DM_SEC_GRANTED BTA_SUCCESS
+#define BTA_DM_SEC_PAIR_NOT_SPT BTA_DM_AUTH_SMP_PAIR_NOT_SUPPORT
+#define BTA_DM_SEC_REP_ATTEMPTS BTA_DM_AUTH_SMP_REPEATED_ATTEMPT
typedef uint8_t tBTA_DM_BLE_SEC_GRANT;
-
-#define BTA_DM_BLE_ONN_NONE BTM_BLE_CONN_NONE
-#define BTA_DM_BLE_CONN_AUTO BTM_BLE_CONN_AUTO
-#define BTA_DM_BLE_CONN_SELECTIVE BTM_BLE_CONN_SELECTIVE
+#define BTA_DM_BLE_ONN_NONE BTM_BLE_CONN_NONE
+#define BTA_DM_BLE_CONN_AUTO BTM_BLE_CONN_AUTO
+#define BTA_DM_BLE_CONN_SELECTIVE BTM_BLE_CONN_SELECTIVE
typedef uint8_t tBTA_DM_BLE_CONN_TYPE;
-typedef bool (tBTA_DM_BLE_SEL_CBACK)(BD_ADDR random_bda, uint8_t *p_remote_name);
+typedef bool(tBTA_DM_BLE_SEL_CBACK)(BD_ADDR random_bda, uint8_t* p_remote_name);
/* Structure associated with BTA_DM_BLE_SEC_REQ_EVT */
-typedef struct
-{
- BD_ADDR bd_addr; /* peer address */
- BD_NAME bd_name; /* peer device name */
+typedef struct {
+ BD_ADDR bd_addr; /* peer address */
+ BD_NAME bd_name; /* peer device name */
} tBTA_DM_BLE_SEC_REQ;
-typedef struct
-{
- BD_ADDR bd_addr; /* peer address */
- tBTM_LE_KEY_TYPE key_type;
- tBTM_LE_KEY_VALUE *p_key_value;
-}tBTA_DM_BLE_KEY;
+typedef struct {
+ BD_ADDR bd_addr; /* peer address */
+ tBTM_LE_KEY_TYPE key_type;
+ tBTM_LE_KEY_VALUE* p_key_value;
+} tBTA_DM_BLE_KEY;
/* Structure associated with BTA_DM_AUTH_CMPL_EVT */
-typedef struct
-{
- BD_ADDR bd_addr; /* BD address peer device. */
- BD_NAME bd_name; /* Name of peer device. */
- bool key_present; /* Valid link key value in key element */
- LINK_KEY key; /* Link key associated with peer device. */
- uint8_t key_type; /* The type of Link Key */
- bool success; /* true of authentication succeeded, false if failed. */
- uint8_t fail_reason; /* The HCI reason/error code for when success=false */
- tBLE_ADDR_TYPE addr_type; /* Peer device address type */
- tBT_DEVICE_TYPE dev_type;
+typedef struct {
+ BD_ADDR bd_addr; /* BD address peer device. */
+ BD_NAME bd_name; /* Name of peer device. */
+ bool key_present; /* Valid link key value in key element */
+ LINK_KEY key; /* Link key associated with peer device. */
+ uint8_t key_type; /* The type of Link Key */
+ bool success; /* true of authentication succeeded, false if failed. */
+ uint8_t fail_reason; /* The HCI reason/error code for when success=false */
+ tBLE_ADDR_TYPE addr_type; /* Peer device address type */
+ tBT_DEVICE_TYPE dev_type;
} tBTA_DM_AUTH_CMPL;
-
/* Structure associated with BTA_DM_AUTHORIZE_EVT */
-typedef struct
-{
- BD_ADDR bd_addr; /* BD address peer device. */
- BD_NAME bd_name; /* Name of peer device. */
- tBTA_SERVICE_ID service; /* Service ID to authorize. */
- DEV_CLASS dev_class;
+typedef struct {
+ BD_ADDR bd_addr; /* BD address peer device. */
+ BD_NAME bd_name; /* Name of peer device. */
+ tBTA_SERVICE_ID service; /* Service ID to authorize. */
+ DEV_CLASS dev_class;
} tBTA_DM_AUTHORIZE;
/* Structure associated with BTA_DM_LINK_UP_EVT */
-typedef struct
-{
- BD_ADDR bd_addr; /* BD address peer device. */
+typedef struct {
+ BD_ADDR bd_addr; /* BD address peer device. */
#if (BLE_INCLUDED == TRUE)
- tBTA_TRANSPORT link_type;
+ tBTA_TRANSPORT link_type;
#endif
} tBTA_DM_LINK_UP;
/* Structure associated with BTA_DM_LINK_DOWN_EVT */
-typedef struct
-{
- BD_ADDR bd_addr; /* BD address peer device. */
- uint8_t status; /* connection open/closed */
- bool is_removed; /* true if device is removed when link is down */
+typedef struct {
+ BD_ADDR bd_addr; /* BD address peer device. */
+ uint8_t status; /* connection open/closed */
+ bool is_removed; /* true if device is removed when link is down */
#if (BLE_INCLUDED == TRUE)
- tBTA_TRANSPORT link_type;
+ tBTA_TRANSPORT link_type;
#endif
} tBTA_DM_LINK_DOWN;
/* Structure associated with BTA_DM_ROLE_CHG_EVT */
-typedef struct
-{
- BD_ADDR bd_addr; /* BD address peer device. */
- uint8_t new_role; /* the new connection role */
+typedef struct {
+ BD_ADDR bd_addr; /* BD address peer device. */
+ uint8_t new_role; /* the new connection role */
} tBTA_DM_ROLE_CHG;
/* Structure associated with BTA_DM_BUSY_LEVEL_EVT */
-typedef struct
-{
- uint8_t level; /* when paging or inquiring, level is 10.
- Otherwise, the number of ACL links */
- uint8_t level_flags; /* indicates individual flags */
+typedef struct {
+ uint8_t level; /* when paging or inquiring, level is 10.
+ Otherwise, the number of ACL links */
+ uint8_t level_flags; /* indicates individual flags */
} tBTA_DM_BUSY_LEVEL;
-#define BTA_IO_CAP_OUT BTM_IO_CAP_OUT /* 0 DisplayOnly */
-#define BTA_IO_CAP_IO BTM_IO_CAP_IO /* 1 DisplayYesNo */
-#define BTA_IO_CAP_IN BTM_IO_CAP_IN /* 2 KeyboardOnly */
-#define BTA_IO_CAP_NONE BTM_IO_CAP_NONE /* 3 NoInputNoOutput */
+#define BTA_IO_CAP_OUT BTM_IO_CAP_OUT /* 0 DisplayOnly */
+#define BTA_IO_CAP_IO BTM_IO_CAP_IO /* 1 DisplayYesNo */
+#define BTA_IO_CAP_IN BTM_IO_CAP_IN /* 2 KeyboardOnly */
+#define BTA_IO_CAP_NONE BTM_IO_CAP_NONE /* 3 NoInputNoOutput */
#if (BLE_INCLUDED == TRUE && SMP_INCLUDED == TRUE)
-#define BTA_IO_CAP_KBDISP BTM_IO_CAP_KBDISP /* 4 Keyboard display */
+#define BTA_IO_CAP_KBDISP BTM_IO_CAP_KBDISP /* 4 Keyboard display */
#endif
-typedef tBTM_IO_CAP tBTA_IO_CAP;
+typedef tBTM_IO_CAP tBTA_IO_CAP;
-#define BTA_AUTH_SP_NO BTM_AUTH_SP_NO /* 0 MITM Protection Not Required - Single Profile/non-bonding
- Numeric comparison with automatic accept allowed */
-#define BTA_AUTH_SP_YES BTM_AUTH_SP_YES /* 1 MITM Protection Required - Single Profile/non-bonding
- Use IO Capabilities to determine authentication procedure */
-#define BTA_AUTH_AP_NO BTM_AUTH_AP_NO /* 2 MITM Protection Not Required - All Profiles/dedicated bonding
- Numeric comparison with automatic accept allowed */
-#define BTA_AUTH_AP_YES BTM_AUTH_AP_YES /* 3 MITM Protection Required - All Profiles/dedicated bonding
- Use IO Capabilities to determine authentication procedure */
-#define BTA_AUTH_SPGB_NO BTM_AUTH_SPGB_NO /* 4 MITM Protection Not Required - Single Profiles/general bonding
- Numeric comparison with automatic accept allowed */
-#define BTA_AUTH_SPGB_YES BTM_AUTH_SPGB_YES /* 5 MITM Protection Required - Single Profiles/general bonding
- Use IO Capabilities to determine authentication procedure */
-typedef tBTM_AUTH_REQ tBTA_AUTH_REQ;
+#define BTA_AUTH_SP_NO \
+ BTM_AUTH_SP_NO /* 0 MITM Protection Not Required - Single \
+ Profile/non-bonding \
+ Numeric comparison with automatic accept allowed */
+#define BTA_AUTH_SP_YES \
+ BTM_AUTH_SP_YES /* 1 MITM Protection Required - Single Profile/non-bonding \
+ Use IO Capabilities to determine authentication procedure \
+ */
+#define BTA_AUTH_AP_NO \
+ BTM_AUTH_AP_NO /* 2 MITM Protection Not Required - All Profiles/dedicated \
+ bonding \
+ Numeric comparison with automatic accept allowed */
+#define BTA_AUTH_AP_YES \
+ BTM_AUTH_AP_YES /* 3 MITM Protection Required - All Profiles/dedicated \
+ bonding \
+ Use IO Capabilities to determine authentication procedure \
+ */
+#define BTA_AUTH_SPGB_NO \
+ BTM_AUTH_SPGB_NO /* 4 MITM Protection Not Required - Single Profiles/general \
+ bonding \
+ Numeric comparison with automatic accept allowed */
+#define BTA_AUTH_SPGB_YES \
+ BTM_AUTH_SPGB_YES /* 5 MITM Protection Required - Single Profiles/general \
+ bonding \
+ Use IO Capabilities to determine authentication \
+ procedure */
+typedef tBTM_AUTH_REQ tBTA_AUTH_REQ;
-#define BTA_AUTH_DD_BOND BTM_AUTH_DD_BOND /* 2 this bit is set for dedicated bonding */
-#define BTA_AUTH_GEN_BOND BTM_AUTH_SPGB_NO /* 4 this bit is set for general bonding */
-#define BTA_AUTH_BONDS BTM_AUTH_BONDS /* 6 the general/dedicated bonding bits */
+#define BTA_AUTH_DD_BOND \
+ BTM_AUTH_DD_BOND /* 2 this bit is set for dedicated bonding */
+#define BTA_AUTH_GEN_BOND \
+ BTM_AUTH_SPGB_NO /* 4 this bit is set for general bonding */
+#define BTA_AUTH_BONDS \
+ BTM_AUTH_BONDS /* 6 the general/dedicated bonding bits */
-#define BTA_LE_AUTH_NO_BOND BTM_LE_AUTH_REQ_NO_BOND /* 0*/
-#define BTA_LE_AUTH_BOND BTM_LE_AUTH_REQ_BOND /* 1 << 0 */
-#define BTA_LE_AUTH_REQ_MITM BTM_LE_AUTH_REQ_MITM /* 1 << 2 */
+#define BTA_LE_AUTH_NO_BOND BTM_LE_AUTH_REQ_NO_BOND /* 0*/
+#define BTA_LE_AUTH_BOND BTM_LE_AUTH_REQ_BOND /* 1 << 0 */
+#define BTA_LE_AUTH_REQ_MITM BTM_LE_AUTH_REQ_MITM /* 1 << 2 */
-#define BTA_LE_AUTH_REQ_SC_ONLY BTM_LE_AUTH_REQ_SC_ONLY /* 1 << 3 */
-#define BTA_LE_AUTH_REQ_SC_BOND BTM_LE_AUTH_REQ_SC_BOND /* 1001 */
-#define BTA_LE_AUTH_REQ_SC_MITM BTM_LE_AUTH_REQ_SC_MITM /* 1100 */
-#define BTA_LE_AUTH_REQ_SC_MITM_BOND BTM_LE_AUTH_REQ_SC_MITM_BOND /* 1101 */
-typedef tBTM_LE_AUTH_REQ tBTA_LE_AUTH_REQ; /* combination of the above bit pattern */
+#define BTA_LE_AUTH_REQ_SC_ONLY BTM_LE_AUTH_REQ_SC_ONLY /* 1 << 3 */
+#define BTA_LE_AUTH_REQ_SC_BOND BTM_LE_AUTH_REQ_SC_BOND /* 1001 */
+#define BTA_LE_AUTH_REQ_SC_MITM BTM_LE_AUTH_REQ_SC_MITM /* 1100 */
+#define BTA_LE_AUTH_REQ_SC_MITM_BOND BTM_LE_AUTH_REQ_SC_MITM_BOND /* 1101 */
+typedef tBTM_LE_AUTH_REQ
+ tBTA_LE_AUTH_REQ; /* combination of the above bit pattern */
-#define BTA_OOB_NONE BTM_OOB_NONE
-#define BTA_OOB_PRESENT BTM_OOB_PRESENT
-#define BTA_OOB_UNKNOWN BTM_OOB_UNKNOWN
+#define BTA_OOB_NONE BTM_OOB_NONE
+#define BTA_OOB_PRESENT BTM_OOB_PRESENT
+#define BTA_OOB_UNKNOWN BTM_OOB_UNKNOWN
-typedef tBTM_OOB_DATA tBTA_OOB_DATA;
+typedef tBTM_OOB_DATA tBTA_OOB_DATA;
/* Structure associated with BTA_DM_SP_CFM_REQ_EVT */
-typedef struct
-{
- /* Note: First 3 data members must be, bd_addr, dev_class, and bd_name in order */
- BD_ADDR bd_addr; /* peer address */
- DEV_CLASS dev_class; /* peer CoD */
- BD_NAME bd_name; /* peer device name */
- uint32_t num_val; /* the numeric value for comparison. If just_works, do not show this number to UI */
- bool just_works; /* true, if "Just Works" association model */
- tBTA_AUTH_REQ loc_auth_req; /* Authentication required for local device */
- tBTA_AUTH_REQ rmt_auth_req; /* Authentication required for peer device */
- tBTA_IO_CAP loc_io_caps; /* IO Capabilities of local device */
- tBTA_AUTH_REQ rmt_io_caps; /* IO Capabilities of remote device */
+typedef struct {
+ /* Note: First 3 data members must be, bd_addr, dev_class, and bd_name in
+ * order */
+ BD_ADDR bd_addr; /* peer address */
+ DEV_CLASS dev_class; /* peer CoD */
+ BD_NAME bd_name; /* peer device name */
+ uint32_t num_val; /* the numeric value for comparison. If just_works, do not
+ show this number to UI */
+ bool just_works; /* true, if "Just Works" association model */
+ tBTA_AUTH_REQ loc_auth_req; /* Authentication required for local device */
+ tBTA_AUTH_REQ rmt_auth_req; /* Authentication required for peer device */
+ tBTA_IO_CAP loc_io_caps; /* IO Capabilities of local device */
+ tBTA_AUTH_REQ rmt_io_caps; /* IO Capabilities of remote device */
} tBTA_DM_SP_CFM_REQ;
-enum
-{
- BTA_SP_KEY_STARTED, /* passkey entry started */
- BTA_SP_KEY_ENTERED, /* passkey digit entered */
- BTA_SP_KEY_ERASED, /* passkey digit erased */
- BTA_SP_KEY_CLEARED, /* passkey cleared */
- BTA_SP_KEY_COMPLT /* passkey entry completed */
+enum {
+ BTA_SP_KEY_STARTED, /* passkey entry started */
+ BTA_SP_KEY_ENTERED, /* passkey digit entered */
+ BTA_SP_KEY_ERASED, /* passkey digit erased */
+ BTA_SP_KEY_CLEARED, /* passkey cleared */
+ BTA_SP_KEY_COMPLT /* passkey entry completed */
};
-typedef uint8_t tBTA_SP_KEY_TYPE;
+typedef uint8_t tBTA_SP_KEY_TYPE;
/* Structure associated with BTA_DM_SP_KEYPRESS_EVT */
-typedef struct
-{
- BD_ADDR bd_addr; /* peer address */
- tBTA_SP_KEY_TYPE notif_type;
-}tBTA_DM_SP_KEY_PRESS;
+typedef struct {
+ BD_ADDR bd_addr; /* peer address */
+ tBTA_SP_KEY_TYPE notif_type;
+} tBTA_DM_SP_KEY_PRESS;
/* Structure associated with BTA_DM_SP_KEY_NOTIF_EVT */
-typedef struct
-{
- /* Note: First 3 data members must be, bd_addr, dev_class, and bd_name in order */
- BD_ADDR bd_addr; /* peer address */
- DEV_CLASS dev_class; /* peer CoD */
- BD_NAME bd_name; /* peer device name */
- uint32_t passkey; /* the numeric value for comparison. If just_works, do not show this number to UI */
+typedef struct {
+ /* Note: First 3 data members must be, bd_addr, dev_class, and bd_name in
+ * order */
+ BD_ADDR bd_addr; /* peer address */
+ DEV_CLASS dev_class; /* peer CoD */
+ BD_NAME bd_name; /* peer device name */
+ uint32_t passkey; /* the numeric value for comparison. If just_works, do not
+ show this number to UI */
} tBTA_DM_SP_KEY_NOTIF;
/* Structure associated with BTA_DM_SP_RMT_OOB_EVT */
-typedef struct
-{
- /* Note: First 3 data members must be, bd_addr, dev_class, and bd_name in order */
- BD_ADDR bd_addr; /* peer address */
- DEV_CLASS dev_class; /* peer CoD */
- BD_NAME bd_name; /* peer device name */
+typedef struct {
+ /* Note: First 3 data members must be, bd_addr, dev_class, and bd_name in
+ * order */
+ BD_ADDR bd_addr; /* peer address */
+ DEV_CLASS dev_class; /* peer CoD */
+ BD_NAME bd_name; /* peer device name */
} tBTA_DM_SP_RMT_OOB;
/* Structure associated with BTA_DM_BOND_CANCEL_CMPL_EVT */
-typedef struct
-{
- tBTA_STATUS result; /* true of bond cancel succeeded, false if failed. */
+typedef struct {
+ tBTA_STATUS result; /* true of bond cancel succeeded, false if failed. */
} tBTA_DM_BOND_CANCEL_CMPL;
/* Union of all security callback structures */
-typedef union
-{
- tBTA_DM_ENABLE enable; /* BTA enabled */
- tBTA_DM_PIN_REQ pin_req; /* PIN request. */
- tBTA_DM_AUTH_CMPL auth_cmpl; /* Authentication complete indication. */
- tBTA_DM_AUTHORIZE authorize; /* Authorization request. */
- tBTA_DM_LINK_UP link_up; /* ACL connection down event */
- tBTA_DM_LINK_DOWN link_down; /* ACL connection down event */
- tBTA_DM_BUSY_LEVEL busy_level; /* System busy level */
- tBTA_DM_SP_CFM_REQ cfm_req; /* user confirm request */
- tBTA_DM_SP_KEY_NOTIF key_notif; /* passkey notification */
- tBTA_DM_SP_RMT_OOB rmt_oob; /* remote oob */
- tBTA_DM_BOND_CANCEL_CMPL bond_cancel_cmpl; /* Bond Cancel Complete indication */
- tBTA_DM_SP_KEY_PRESS key_press; /* key press notification event */
- tBTA_DM_ROLE_CHG role_chg; /* role change event */
- tBTA_DM_BLE_SEC_REQ ble_req; /* BLE SMP related request */
- tBTA_DM_BLE_KEY ble_key; /* BLE SMP keys used when pairing */
- tBTA_BLE_LOCAL_ID_KEYS ble_id_keys; /* IR event */
- BT_OCTET16 ble_er; /* ER event data */
+typedef union {
+ tBTA_DM_ENABLE enable; /* BTA enabled */
+ tBTA_DM_PIN_REQ pin_req; /* PIN request. */
+ tBTA_DM_AUTH_CMPL auth_cmpl; /* Authentication complete indication. */
+ tBTA_DM_AUTHORIZE authorize; /* Authorization request. */
+ tBTA_DM_LINK_UP link_up; /* ACL connection down event */
+ tBTA_DM_LINK_DOWN link_down; /* ACL connection down event */
+ tBTA_DM_BUSY_LEVEL busy_level; /* System busy level */
+ tBTA_DM_SP_CFM_REQ cfm_req; /* user confirm request */
+ tBTA_DM_SP_KEY_NOTIF key_notif; /* passkey notification */
+ tBTA_DM_SP_RMT_OOB rmt_oob; /* remote oob */
+ tBTA_DM_BOND_CANCEL_CMPL
+ bond_cancel_cmpl; /* Bond Cancel Complete indication */
+ tBTA_DM_SP_KEY_PRESS key_press; /* key press notification event */
+ tBTA_DM_ROLE_CHG role_chg; /* role change event */
+ tBTA_DM_BLE_SEC_REQ ble_req; /* BLE SMP related request */
+ tBTA_DM_BLE_KEY ble_key; /* BLE SMP keys used when pairing */
+ tBTA_BLE_LOCAL_ID_KEYS ble_id_keys; /* IR event */
+ BT_OCTET16 ble_er; /* ER event data */
} tBTA_DM_SEC;
/* Security callback */
-typedef void (tBTA_DM_SEC_CBACK)(tBTA_DM_SEC_EVT event, tBTA_DM_SEC *p_data);
+typedef void(tBTA_DM_SEC_CBACK)(tBTA_DM_SEC_EVT event, tBTA_DM_SEC* p_data);
typedef uint32_t tBTA_DM_BLE_REF_VALUE;
-#define BTA_DM_BLE_PF_ENABLE_EVT BTM_BLE_PF_ENABLE
-#define BTA_DM_BLE_PF_CONFIG_EVT BTM_BLE_PF_CONFIG
+#define BTA_DM_BLE_PF_ENABLE_EVT BTM_BLE_PF_ENABLE
+#define BTA_DM_BLE_PF_CONFIG_EVT BTM_BLE_PF_CONFIG
typedef uint8_t tBTA_DM_BLE_PF_EVT;
-#define BTA_DM_BLE_PF_ENABLE 1
-#define BTA_DM_BLE_PF_CONFIG 2
+#define BTA_DM_BLE_PF_ENABLE 1
+#define BTA_DM_BLE_PF_CONFIG 2
typedef uint8_t tBTA_DM_BLE_PF_ACTION;
/* Config callback */
-typedef void (tBTA_DM_BLE_PF_CFG_CBACK) (tBTA_DM_BLE_PF_ACTION action,
- tBTA_DM_BLE_PF_COND_TYPE cfg_cond,
- tBTA_DM_BLE_PF_AVBL_SPACE avbl_space, tBTA_STATUS status,
- tBTA_DM_BLE_REF_VALUE ref_value);
+typedef void(tBTA_DM_BLE_PF_CFG_CBACK)(tBTA_DM_BLE_PF_ACTION action,
+ tBTA_DM_BLE_PF_COND_TYPE cfg_cond,
+ tBTA_DM_BLE_PF_AVBL_SPACE avbl_space,
+ tBTA_STATUS status,
+ tBTA_DM_BLE_REF_VALUE ref_value);
/* Param callback */
-typedef void (tBTA_DM_BLE_PF_PARAM_CBACK) (uint8_t action_type, tBTA_DM_BLE_PF_AVBL_SPACE avbl_space,
- tBTA_DM_BLE_REF_VALUE ref_value, tBTA_STATUS status);
+typedef void(tBTA_DM_BLE_PF_PARAM_CBACK)(uint8_t action_type,
+ tBTA_DM_BLE_PF_AVBL_SPACE avbl_space,
+ tBTA_DM_BLE_REF_VALUE ref_value,
+ tBTA_STATUS status);
/* Status callback */
-typedef void (tBTA_DM_BLE_PF_STATUS_CBACK) (uint8_t action, tBTA_STATUS status,
- tBTA_DM_BLE_REF_VALUE ref_value);
+typedef void(tBTA_DM_BLE_PF_STATUS_CBACK)(uint8_t action, tBTA_STATUS status,
+ tBTA_DM_BLE_REF_VALUE ref_value);
-
-#define BTA_DM_BLE_PF_BRDCAST_ADDR_FILT 1
+#define BTA_DM_BLE_PF_BRDCAST_ADDR_FILT 1
#define BTA_DM_BLE_PF_SERV_DATA_CHG_FILT 2
-#define BTA_DM_BLE_PF_SERV_UUID 4
-#define BTA_DM_BLE_PF_SERV_SOLC_UUID 8
-#define BTA_DM_BLE_PF_LOC_NAME_CHECK 16
-#define BTA_DM_BLE_PF_MANUF_NAME_CHECK 32
-#define BTA_DM_BLE_PF_SERV_DATA_CHECK 64
+#define BTA_DM_BLE_PF_SERV_UUID 4
+#define BTA_DM_BLE_PF_SERV_SOLC_UUID 8
+#define BTA_DM_BLE_PF_LOC_NAME_CHECK 16
+#define BTA_DM_BLE_PF_MANUF_NAME_CHECK 32
+#define BTA_DM_BLE_PF_SERV_DATA_CHECK 64
typedef uint16_t tBTA_DM_BLE_PF_FEAT_SEL;
-#define BTA_DM_BLE_PF_LIST_LOGIC_OR 1
-#define BTA_DM_BLE_PF_LIST_LOGIC_AND 2
+#define BTA_DM_BLE_PF_LIST_LOGIC_OR 1
+#define BTA_DM_BLE_PF_LIST_LOGIC_AND 2
typedef uint16_t tBTA_DM_BLE_PF_LIST_LOGIC_TYPE;
-#define BTA_DM_BLE_PF_FILT_LOGIC_OR 0
-#define BTA_DM_BLE_PF_FILT_LOGIC_AND 1
+#define BTA_DM_BLE_PF_FILT_LOGIC_OR 0
+#define BTA_DM_BLE_PF_FILT_LOGIC_AND 1
typedef uint16_t tBTA_DM_BLE_PF_FILT_LOGIC_TYPE;
-typedef uint8_t tBTA_DM_BLE_PF_RSSI_THRESHOLD;
-typedef uint8_t tBTA_DM_BLE_PF_DELIVERY_MODE;
+typedef uint8_t tBTA_DM_BLE_PF_RSSI_THRESHOLD;
+typedef uint8_t tBTA_DM_BLE_PF_DELIVERY_MODE;
typedef uint16_t tBTA_DM_BLE_PF_TIMEOUT;
-typedef uint8_t tBTA_DM_BLE_PF_TIMEOUT_CNT;
+typedef uint8_t tBTA_DM_BLE_PF_TIMEOUT_CNT;
typedef uint16_t tBTA_DM_BLE_PF_ADV_TRACK_ENTRIES;
-typedef struct
-{
- tBTA_DM_BLE_PF_FEAT_SEL feat_seln;
- tBTA_DM_BLE_PF_LIST_LOGIC_TYPE list_logic_type;
- tBTA_DM_BLE_PF_FILT_LOGIC_TYPE filt_logic_type;
- tBTA_DM_BLE_PF_RSSI_THRESHOLD rssi_high_thres;
- tBTA_DM_BLE_PF_RSSI_THRESHOLD rssi_low_thres;
- tBTA_DM_BLE_PF_DELIVERY_MODE dely_mode;
- tBTA_DM_BLE_PF_TIMEOUT found_timeout;
- tBTA_DM_BLE_PF_TIMEOUT lost_timeout;
- tBTA_DM_BLE_PF_TIMEOUT_CNT found_timeout_cnt;
- tBTA_DM_BLE_PF_ADV_TRACK_ENTRIES num_of_tracking_entries;
+typedef struct {
+ tBTA_DM_BLE_PF_FEAT_SEL feat_seln;
+ tBTA_DM_BLE_PF_LIST_LOGIC_TYPE list_logic_type;
+ tBTA_DM_BLE_PF_FILT_LOGIC_TYPE filt_logic_type;
+ tBTA_DM_BLE_PF_RSSI_THRESHOLD rssi_high_thres;
+ tBTA_DM_BLE_PF_RSSI_THRESHOLD rssi_low_thres;
+ tBTA_DM_BLE_PF_DELIVERY_MODE dely_mode;
+ tBTA_DM_BLE_PF_TIMEOUT found_timeout;
+ tBTA_DM_BLE_PF_TIMEOUT lost_timeout;
+ tBTA_DM_BLE_PF_TIMEOUT_CNT found_timeout_cnt;
+ tBTA_DM_BLE_PF_ADV_TRACK_ENTRIES num_of_tracking_entries;
} tBTA_DM_BLE_PF_FILT_PARAMS;
/* Search callback events */
-#define BTA_DM_INQ_RES_EVT 0 /* Inquiry result for a peer device. */
-#define BTA_DM_INQ_CMPL_EVT 1 /* Inquiry complete. */
-#define BTA_DM_DISC_RES_EVT 2 /* Discovery result for a peer device. */
-#define BTA_DM_DISC_BLE_RES_EVT 3 /* Discovery result for BLE GATT based servoce on a peer device. */
-#define BTA_DM_DISC_CMPL_EVT 4 /* Discovery complete. */
-#define BTA_DM_DI_DISC_CMPL_EVT 5 /* Discovery complete. */
-#define BTA_DM_SEARCH_CANCEL_CMPL_EVT 6 /* Search cancelled */
+#define BTA_DM_INQ_RES_EVT 0 /* Inquiry result for a peer device. */
+#define BTA_DM_INQ_CMPL_EVT 1 /* Inquiry complete. */
+#define BTA_DM_DISC_RES_EVT 2 /* Discovery result for a peer device. */
+#define BTA_DM_DISC_BLE_RES_EVT \
+ 3 /* Discovery result for BLE GATT based servoce on a peer device. */
+#define BTA_DM_DISC_CMPL_EVT 4 /* Discovery complete. */
+#define BTA_DM_DI_DISC_CMPL_EVT 5 /* Discovery complete. */
+#define BTA_DM_SEARCH_CANCEL_CMPL_EVT 6 /* Search cancelled */
typedef uint8_t tBTA_DM_SEARCH_EVT;
-#define BTA_DM_INQ_RES_IGNORE_RSSI BTM_INQ_RES_IGNORE_RSSI /* 0x7f RSSI value not supplied (ignore it) */
+#define BTA_DM_INQ_RES_IGNORE_RSSI \
+ BTM_INQ_RES_IGNORE_RSSI /* 0x7f RSSI value not supplied (ignore it) */
/* Structure associated with BTA_DM_INQ_RES_EVT */
-typedef struct
-{
- BD_ADDR bd_addr; /* BD address peer device. */
- DEV_CLASS dev_class; /* Device class of peer device. */
- bool remt_name_not_required; /* Application sets this flag if it already knows the name of the device */
- /* If the device name is known to application BTA skips the remote name request */
- bool is_limited; /* true, if the limited inquiry bit is set in the CoD */
- int8_t rssi; /* The rssi value */
- uint8_t *p_eir; /* received EIR */
+typedef struct {
+ BD_ADDR bd_addr; /* BD address peer device. */
+ DEV_CLASS dev_class; /* Device class of peer device. */
+ bool remt_name_not_required; /* Application sets this flag if it already knows
+ the name of the device */
+ /* If the device name is known to application BTA skips the remote name
+ * request */
+ bool is_limited; /* true, if the limited inquiry bit is set in the CoD */
+ int8_t rssi; /* The rssi value */
+ uint8_t* p_eir; /* received EIR */
#if (BLE_INCLUDED == TRUE)
- uint8_t inq_result_type;
- uint8_t ble_addr_type;
- tBTM_BLE_EVT_TYPE ble_evt_type;
- tBT_DEVICE_TYPE device_type;
- uint8_t flag;
+ uint8_t inq_result_type;
+ uint8_t ble_addr_type;
+ tBTM_BLE_EVT_TYPE ble_evt_type;
+ tBT_DEVICE_TYPE device_type;
+ uint8_t flag;
#endif
} tBTA_DM_INQ_RES;
/* Structure associated with BTA_DM_INQ_CMPL_EVT */
-typedef struct
-{
- uint8_t num_resps; /* Number of inquiry responses. */
+typedef struct {
+ uint8_t num_resps; /* Number of inquiry responses. */
} tBTA_DM_INQ_CMPL;
/* Structure associated with BTA_DM_DI_DISC_CMPL_EVT */
-typedef struct
-{
- BD_ADDR bd_addr; /* BD address peer device. */
- uint8_t num_record; /* Number of DI record */
- tBTA_STATUS result;
+typedef struct {
+ BD_ADDR bd_addr; /* BD address peer device. */
+ uint8_t num_record; /* Number of DI record */
+ tBTA_STATUS result;
} tBTA_DM_DI_DISC_CMPL;
/* Structure associated with BTA_DM_DISC_RES_EVT */
-typedef struct
-{
- BD_ADDR bd_addr; /* BD address peer device. */
- BD_NAME bd_name; /* Name of peer device. */
- tBTA_SERVICE_MASK services; /* Services found on peer device. */
- uint8_t * p_raw_data; /* Raw data for discovery DB */
- uint32_t raw_data_size; /* size of raw data */
- tBT_DEVICE_TYPE device_type; /* device type in case it is BLE device */
- uint32_t num_uuids;
- uint8_t *p_uuid_list;
- tBTA_STATUS result;
+typedef struct {
+ BD_ADDR bd_addr; /* BD address peer device. */
+ BD_NAME bd_name; /* Name of peer device. */
+ tBTA_SERVICE_MASK services; /* Services found on peer device. */
+ uint8_t* p_raw_data; /* Raw data for discovery DB */
+ uint32_t raw_data_size; /* size of raw data */
+ tBT_DEVICE_TYPE device_type; /* device type in case it is BLE device */
+ uint32_t num_uuids;
+ uint8_t* p_uuid_list;
+ tBTA_STATUS result;
} tBTA_DM_DISC_RES;
/* Structure associated with tBTA_DM_DISC_BLE_RES */
-typedef struct
-{
- BD_ADDR bd_addr; /* BD address peer device. */
- BD_NAME bd_name; /* Name of peer device. */
- tBT_UUID service; /* GATT based Services UUID found on peer device. */
+typedef struct {
+ BD_ADDR bd_addr; /* BD address peer device. */
+ BD_NAME bd_name; /* Name of peer device. */
+ tBT_UUID service; /* GATT based Services UUID found on peer device. */
} tBTA_DM_DISC_BLE_RES;
-
/* Union of all search callback structures */
-typedef union
-{
- tBTA_DM_INQ_RES inq_res; /* Inquiry result for a peer device. */
- tBTA_DM_INQ_CMPL inq_cmpl; /* Inquiry complete. */
- tBTA_DM_DISC_RES disc_res; /* Discovery result for a peer device. */
- tBTA_DM_DISC_BLE_RES disc_ble_res; /* discovery result for GATT based service */
- tBTA_DM_DI_DISC_CMPL di_disc; /* DI discovery result for a peer device */
+typedef union {
+ tBTA_DM_INQ_RES inq_res; /* Inquiry result for a peer device. */
+ tBTA_DM_INQ_CMPL inq_cmpl; /* Inquiry complete. */
+ tBTA_DM_DISC_RES disc_res; /* Discovery result for a peer device. */
+ tBTA_DM_DISC_BLE_RES
+ disc_ble_res; /* discovery result for GATT based service */
+ tBTA_DM_DI_DISC_CMPL di_disc; /* DI discovery result for a peer device */
} tBTA_DM_SEARCH;
/* Search callback */
-typedef void (tBTA_DM_SEARCH_CBACK)(tBTA_DM_SEARCH_EVT event, tBTA_DM_SEARCH *p_data);
+typedef void(tBTA_DM_SEARCH_CBACK)(tBTA_DM_SEARCH_EVT event,
+ tBTA_DM_SEARCH* p_data);
/* Execute call back */
-typedef void (tBTA_DM_EXEC_CBACK) (void * p_param);
+typedef void(tBTA_DM_EXEC_CBACK)(void* p_param);
/* Encryption callback*/
-typedef void (tBTA_DM_ENCRYPT_CBACK) (BD_ADDR bd_addr, tBTA_TRANSPORT transport, tBTA_STATUS result);
+typedef void(tBTA_DM_ENCRYPT_CBACK)(BD_ADDR bd_addr, tBTA_TRANSPORT transport,
+ tBTA_STATUS result);
-#define BTA_DM_BLE_SEC_NONE BTM_BLE_SEC_NONE
-#define BTA_DM_BLE_SEC_ENCRYPT BTM_BLE_SEC_ENCRYPT
-#define BTA_DM_BLE_SEC_NO_MITM BTM_BLE_SEC_ENCRYPT_NO_MITM
-#define BTA_DM_BLE_SEC_MITM BTM_BLE_SEC_ENCRYPT_MITM
-typedef tBTM_BLE_SEC_ACT tBTA_DM_BLE_SEC_ACT;
+#define BTA_DM_BLE_SEC_NONE BTM_BLE_SEC_NONE
+#define BTA_DM_BLE_SEC_ENCRYPT BTM_BLE_SEC_ENCRYPT
+#define BTA_DM_BLE_SEC_NO_MITM BTM_BLE_SEC_ENCRYPT_NO_MITM
+#define BTA_DM_BLE_SEC_MITM BTM_BLE_SEC_ENCRYPT_MITM
+typedef tBTM_BLE_SEC_ACT tBTA_DM_BLE_SEC_ACT;
#if (BLE_INCLUDED == TRUE)
-typedef tBTM_BLE_TX_TIME_MS tBTA_DM_BLE_TX_TIME_MS;
-typedef tBTM_BLE_RX_TIME_MS tBTA_DM_BLE_RX_TIME_MS;
-typedef tBTM_BLE_IDLE_TIME_MS tBTA_DM_BLE_IDLE_TIME_MS;
-typedef tBTM_BLE_ENERGY_USED tBTA_DM_BLE_ENERGY_USED;
+typedef tBTM_BLE_TX_TIME_MS tBTA_DM_BLE_TX_TIME_MS;
+typedef tBTM_BLE_RX_TIME_MS tBTA_DM_BLE_RX_TIME_MS;
+typedef tBTM_BLE_IDLE_TIME_MS tBTA_DM_BLE_IDLE_TIME_MS;
+typedef tBTM_BLE_ENERGY_USED tBTA_DM_BLE_ENERGY_USED;
-#define BTA_DM_CONTRL_UNKNOWN 0 /* Unknown state */
-#define BTA_DM_CONTRL_ACTIVE 1 /* ACL link on, SCO link ongoing, sniff mode */
-#define BTA_DM_CONTRL_SCAN 2 /* Scan state - paging/inquiry/trying to connect*/
-#define BTA_DM_CONTRL_IDLE 3 /* Idle state - page scan, LE advt, inquiry scan */
+#define BTA_DM_CONTRL_UNKNOWN 0 /* Unknown state */
+#define BTA_DM_CONTRL_ACTIVE 1 /* ACL link on, SCO link ongoing, sniff mode */
+#define BTA_DM_CONTRL_SCAN \
+ 2 /* Scan state - paging/inquiry/trying to \
+ connect*/
+#define BTA_DM_CONTRL_IDLE \
+ 3 /* Idle state - page scan, LE advt, inquiry scan \
+ */
typedef uint8_t tBTA_DM_CONTRL_STATE;
@@ -977,92 +1019,98 @@
typedef tBTM_BLE_TRACK_ADV_DATA tBTA_DM_BLE_TRACK_ADV_DATA;
-typedef void (tBTA_BLE_SCAN_THRESHOLD_CBACK)(tBTA_DM_BLE_REF_VALUE ref_value);
+typedef void(tBTA_BLE_SCAN_THRESHOLD_CBACK)(tBTA_DM_BLE_REF_VALUE ref_value);
-typedef void (tBTA_BLE_SCAN_REP_CBACK) (tBTA_DM_BLE_REF_VALUE ref_value, uint8_t report_format,
- uint8_t num_records, uint16_t data_len,
- uint8_t* p_rep_data, tBTA_STATUS status);
+typedef void(tBTA_BLE_SCAN_REP_CBACK)(tBTA_DM_BLE_REF_VALUE ref_value,
+ uint8_t report_format,
+ uint8_t num_records, uint16_t data_len,
+ uint8_t* p_rep_data, tBTA_STATUS status);
-typedef void (tBTA_BLE_SCAN_SETUP_CBACK) (tBTA_BLE_BATCH_SCAN_EVT evt,
- tBTA_DM_BLE_REF_VALUE ref_value,
- tBTA_STATUS status);
+typedef void(tBTA_BLE_SCAN_SETUP_CBACK)(tBTA_BLE_BATCH_SCAN_EVT evt,
+ tBTA_DM_BLE_REF_VALUE ref_value,
+ tBTA_STATUS status);
-typedef void (tBTA_BLE_TRACK_ADV_CMPL_CBACK)(int action, tBTA_STATUS status,
- tBTA_DM_BLE_PF_AVBL_SPACE avbl_space,
- tBTA_DM_BLE_REF_VALUE ref_value);
+typedef void(tBTA_BLE_TRACK_ADV_CMPL_CBACK)(
+ int action, tBTA_STATUS status, tBTA_DM_BLE_PF_AVBL_SPACE avbl_space,
+ tBTA_DM_BLE_REF_VALUE ref_value);
-typedef void (tBTA_BLE_TRACK_ADV_CBACK)(tBTA_DM_BLE_TRACK_ADV_DATA *p_adv_data);
+typedef void(tBTA_BLE_TRACK_ADV_CBACK)(tBTA_DM_BLE_TRACK_ADV_DATA* p_adv_data);
-typedef void (tBTA_BLE_ENERGY_INFO_CBACK)(tBTA_DM_BLE_TX_TIME_MS tx_time,
- tBTA_DM_BLE_RX_TIME_MS rx_time,
- tBTA_DM_BLE_IDLE_TIME_MS idle_time,
- tBTA_DM_BLE_ENERGY_USED energy_used,
- tBTA_DM_CONTRL_STATE ctrl_state,
- tBTA_STATUS status);
+typedef void(tBTA_BLE_ENERGY_INFO_CBACK)(tBTA_DM_BLE_TX_TIME_MS tx_time,
+ tBTA_DM_BLE_RX_TIME_MS rx_time,
+ tBTA_DM_BLE_IDLE_TIME_MS idle_time,
+ tBTA_DM_BLE_ENERGY_USED energy_used,
+ tBTA_DM_CONTRL_STATE ctrl_state,
+ tBTA_STATUS status);
#else
-typedef uint8_t tBTA_DM_BLE_SEC_ACT;
+typedef uint8_t tBTA_DM_BLE_SEC_ACT;
#endif
/* Maximum service name length */
-#define BTA_SERVICE_NAME_LEN 35
-#define BTA_SERVICE_DESP_LEN BTA_SERVICE_NAME_LEN
-#define BTA_PROVIDER_NAME_LEN BTA_SERVICE_NAME_LEN
-
+#define BTA_SERVICE_NAME_LEN 35
+#define BTA_SERVICE_DESP_LEN BTA_SERVICE_NAME_LEN
+#define BTA_PROVIDER_NAME_LEN BTA_SERVICE_NAME_LEN
/* link policy masks */
-#define BTA_DM_LP_SWITCH HCI_ENABLE_MASTER_SLAVE_SWITCH
-#define BTA_DM_LP_HOLD HCI_ENABLE_HOLD_MODE
-#define BTA_DM_LP_SNIFF HCI_ENABLE_SNIFF_MODE
-#define BTA_DM_LP_PARK HCI_ENABLE_PARK_MODE
+#define BTA_DM_LP_SWITCH HCI_ENABLE_MASTER_SLAVE_SWITCH
+#define BTA_DM_LP_HOLD HCI_ENABLE_HOLD_MODE
+#define BTA_DM_LP_SNIFF HCI_ENABLE_SNIFF_MODE
+#define BTA_DM_LP_PARK HCI_ENABLE_PARK_MODE
typedef uint16_t tBTA_DM_LP_MASK;
/* power mode actions */
-#define BTA_DM_PM_NO_ACTION 0x00 /* no change to the current pm setting */
-#define BTA_DM_PM_PARK 0x10 /* prefers park mode */
-#define BTA_DM_PM_SNIFF 0x20 /* prefers sniff mode */
-#define BTA_DM_PM_SNIFF1 0x21 /* prefers sniff1 mode */
-#define BTA_DM_PM_SNIFF2 0x22 /* prefers sniff2 mode */
-#define BTA_DM_PM_SNIFF3 0x23 /* prefers sniff3 mode */
-#define BTA_DM_PM_SNIFF4 0x24 /* prefers sniff4 mode */
-#define BTA_DM_PM_SNIFF5 0x25 /* prefers sniff5 mode */
-#define BTA_DM_PM_SNIFF6 0x26 /* prefers sniff6 mode */
-#define BTA_DM_PM_SNIFF7 0x27 /* prefers sniff7 mode */
-#define BTA_DM_PM_SNIFF_USER0 0x28 /* prefers user-defined sniff0 mode (testtool only) */
-#define BTA_DM_PM_SNIFF_USER1 0x29 /* prefers user-defined sniff1 mode (testtool only) */
-#define BTA_DM_PM_ACTIVE 0x40 /* prefers active mode */
-#define BTA_DM_PM_RETRY 0x80 /* retry power mode based on current settings */
-#define BTA_DM_PM_SUSPEND 0x04 /* prefers suspend mode */
-#define BTA_DM_PM_NO_PREF 0x01 /* service has no prefernce on power mode setting. eg. connection to service got closed */
+#define BTA_DM_PM_NO_ACTION 0x00 /* no change to the current pm setting */
+#define BTA_DM_PM_PARK 0x10 /* prefers park mode */
+#define BTA_DM_PM_SNIFF 0x20 /* prefers sniff mode */
+#define BTA_DM_PM_SNIFF1 0x21 /* prefers sniff1 mode */
+#define BTA_DM_PM_SNIFF2 0x22 /* prefers sniff2 mode */
+#define BTA_DM_PM_SNIFF3 0x23 /* prefers sniff3 mode */
+#define BTA_DM_PM_SNIFF4 0x24 /* prefers sniff4 mode */
+#define BTA_DM_PM_SNIFF5 0x25 /* prefers sniff5 mode */
+#define BTA_DM_PM_SNIFF6 0x26 /* prefers sniff6 mode */
+#define BTA_DM_PM_SNIFF7 0x27 /* prefers sniff7 mode */
+#define BTA_DM_PM_SNIFF_USER0 \
+ 0x28 /* prefers user-defined sniff0 mode (testtool only) */
+#define BTA_DM_PM_SNIFF_USER1 \
+ 0x29 /* prefers user-defined sniff1 mode (testtool only) */
+#define BTA_DM_PM_ACTIVE 0x40 /* prefers active mode */
+#define BTA_DM_PM_RETRY 0x80 /* retry power mode based on current settings */
+#define BTA_DM_PM_SUSPEND 0x04 /* prefers suspend mode */
+#define BTA_DM_PM_NO_PREF \
+ 0x01 /* service has no prefernce on power mode setting. eg. connection to \
+ service got closed */
typedef uint8_t tBTA_DM_PM_ACTION;
/* index to bta_dm_ssr_spec */
-#define BTA_DM_PM_SSR0 0
-#define BTA_DM_PM_SSR1 1 /* BTA_DM_PM_SSR1 will be dedicated for
- HH SSR setting entry, no other profile can use it */
-#define BTA_DM_PM_SSR2 2
-#define BTA_DM_PM_SSR3 3
-#define BTA_DM_PM_SSR4 4
-#define BTA_DM_PM_SSR5 5
-#define BTA_DM_PM_SSR6 6
+#define BTA_DM_PM_SSR0 0
+#define BTA_DM_PM_SSR1 \
+ 1 /* BTA_DM_PM_SSR1 will be dedicated for \
+ HH SSR setting entry, no other profile can use it */
+#define BTA_DM_PM_SSR2 2
+#define BTA_DM_PM_SSR3 3
+#define BTA_DM_PM_SSR4 4
+#define BTA_DM_PM_SSR5 5
+#define BTA_DM_PM_SSR6 6
-#define BTA_DM_PM_NUM_EVTS 9
+#define BTA_DM_PM_NUM_EVTS 9
#ifndef BTA_DM_PM_PARK_IDX
-#define BTA_DM_PM_PARK_IDX 5 /* the actual index to bta_dm_pm_md[] for PARK mode */
+#define BTA_DM_PM_PARK_IDX \
+ 5 /* the actual index to bta_dm_pm_md[] for PARK mode */
#endif
#ifndef BTA_DM_PM_SNIFF_A2DP_IDX
-#define BTA_DM_PM_SNIFF_A2DP_IDX BTA_DM_PM_SNIFF
+#define BTA_DM_PM_SNIFF_A2DP_IDX BTA_DM_PM_SNIFF
#endif
#ifndef BTA_DM_PM_SNIFF_HD_IDLE_IDX
-#define BTA_DM_PM_SNIFF_HD_IDLE_IDX BTA_DM_PM_SNIFF2
+#define BTA_DM_PM_SNIFF_HD_IDLE_IDX BTA_DM_PM_SNIFF2
#endif
#ifndef BTA_DM_PM_SNIFF_SCO_OPEN_IDX
-#define BTA_DM_PM_SNIFF_SCO_OPEN_IDX BTA_DM_PM_SNIFF3
+#define BTA_DM_PM_SNIFF_SCO_OPEN_IDX BTA_DM_PM_SNIFF3
#endif
#ifndef BTA_DM_PM_SNIFF_HD_ACTIVE_IDX
@@ -1081,7 +1129,6 @@
#define BTA_DM_PM_SNIFF_HH_IDLE_IDX BTA_DM_PM_SNIFF2
#endif
-
#ifndef BTA_DM_PM_HH_OPEN_DELAY
#define BTA_DM_PM_HH_OPEN_DELAY 30000
#endif
@@ -1101,103 +1148,102 @@
* must insure that order is maintained.
*/
#ifndef BTA_DM_PM_SNIFF_MAX
-#define BTA_DM_PM_SNIFF_MAX 800
-#define BTA_DM_PM_SNIFF_MIN 400
-#define BTA_DM_PM_SNIFF_ATTEMPT 4
-#define BTA_DM_PM_SNIFF_TIMEOUT 1
+#define BTA_DM_PM_SNIFF_MAX 800
+#define BTA_DM_PM_SNIFF_MIN 400
+#define BTA_DM_PM_SNIFF_ATTEMPT 4
+#define BTA_DM_PM_SNIFF_TIMEOUT 1
#endif
#ifndef BTA_DM_PM_SNIFF1_MAX
-#define BTA_DM_PM_SNIFF1_MAX 400
-#define BTA_DM_PM_SNIFF1_MIN 200
+#define BTA_DM_PM_SNIFF1_MAX 400
+#define BTA_DM_PM_SNIFF1_MIN 200
#define BTA_DM_PM_SNIFF1_ATTEMPT 4
#define BTA_DM_PM_SNIFF1_TIMEOUT 1
#endif
#ifndef BTA_DM_PM_SNIFF2_MAX
-#define BTA_DM_PM_SNIFF2_MAX 180
-#define BTA_DM_PM_SNIFF2_MIN 150
+#define BTA_DM_PM_SNIFF2_MAX 180
+#define BTA_DM_PM_SNIFF2_MIN 150
#define BTA_DM_PM_SNIFF2_ATTEMPT 4
#define BTA_DM_PM_SNIFF2_TIMEOUT 1
#endif
#ifndef BTA_DM_PM_SNIFF3_MAX
-#define BTA_DM_PM_SNIFF3_MAX 150
-#define BTA_DM_PM_SNIFF3_MIN 50
+#define BTA_DM_PM_SNIFF3_MAX 150
+#define BTA_DM_PM_SNIFF3_MIN 50
#define BTA_DM_PM_SNIFF3_ATTEMPT 4
#define BTA_DM_PM_SNIFF3_TIMEOUT 1
#endif
#ifndef BTA_DM_PM_SNIFF4_MAX
-#define BTA_DM_PM_SNIFF4_MAX 54
-#define BTA_DM_PM_SNIFF4_MIN 30
+#define BTA_DM_PM_SNIFF4_MAX 54
+#define BTA_DM_PM_SNIFF4_MIN 30
#define BTA_DM_PM_SNIFF4_ATTEMPT 4
#define BTA_DM_PM_SNIFF4_TIMEOUT 1
#endif
#ifndef BTA_DM_PM_SNIFF5_MAX
-#define BTA_DM_PM_SNIFF5_MAX 36
-#define BTA_DM_PM_SNIFF5_MIN 30
+#define BTA_DM_PM_SNIFF5_MAX 36
+#define BTA_DM_PM_SNIFF5_MIN 30
#define BTA_DM_PM_SNIFF5_ATTEMPT 2
#define BTA_DM_PM_SNIFF5_TIMEOUT 0
#endif
#ifndef BTA_DM_PM_PARK_MAX
-#define BTA_DM_PM_PARK_MAX 800
-#define BTA_DM_PM_PARK_MIN 400
-#define BTA_DM_PM_PARK_ATTEMPT 0
-#define BTA_DM_PM_PARK_TIMEOUT 0
+#define BTA_DM_PM_PARK_MAX 800
+#define BTA_DM_PM_PARK_MIN 400
+#define BTA_DM_PM_PARK_ATTEMPT 0
+#define BTA_DM_PM_PARK_TIMEOUT 0
#endif
-
/* Switch callback events */
-#define BTA_DM_SWITCH_CMPL_EVT 0 /* Completion of the Switch API */
+#define BTA_DM_SWITCH_CMPL_EVT 0 /* Completion of the Switch API */
typedef uint8_t tBTA_DM_SWITCH_EVT;
-typedef void (tBTA_DM_SWITCH_CBACK)(tBTA_DM_SWITCH_EVT event, tBTA_STATUS status);
+typedef void(tBTA_DM_SWITCH_CBACK)(tBTA_DM_SWITCH_EVT event,
+ tBTA_STATUS status);
/* Audio routing out configuration */
-#define BTA_DM_ROUTE_NONE 0x00 /* No Audio output */
-#define BTA_DM_ROUTE_DAC 0x01 /* routing over analog output */
-#define BTA_DM_ROUTE_I2S 0x02 /* routing over digital (I2S) output */
-#define BTA_DM_ROUTE_BT_MONO 0x04 /* routing over SCO */
-#define BTA_DM_ROUTE_BT_STEREO 0x08 /* routing over BT Stereo */
-#define BTA_DM_ROUTE_HOST 0x10 /* routing over Host */
-#define BTA_DM_ROUTE_FMTX 0x20 /* routing over FMTX */
-#define BTA_DM_ROUTE_FMRX 0x40 /* routing over FMRX */
-#define BTA_DM_ROUTE_BTSNK 0x80 /* routing over BT SNK */
+#define BTA_DM_ROUTE_NONE 0x00 /* No Audio output */
+#define BTA_DM_ROUTE_DAC 0x01 /* routing over analog output */
+#define BTA_DM_ROUTE_I2S 0x02 /* routing over digital (I2S) output */
+#define BTA_DM_ROUTE_BT_MONO 0x04 /* routing over SCO */
+#define BTA_DM_ROUTE_BT_STEREO 0x08 /* routing over BT Stereo */
+#define BTA_DM_ROUTE_HOST 0x10 /* routing over Host */
+#define BTA_DM_ROUTE_FMTX 0x20 /* routing over FMTX */
+#define BTA_DM_ROUTE_FMRX 0x40 /* routing over FMRX */
+#define BTA_DM_ROUTE_BTSNK 0x80 /* routing over BT SNK */
typedef uint8_t tBTA_DM_ROUTE_PATH;
-
/* Device Identification (DI) data structure
*/
/* Used to set the DI record */
-typedef tSDP_DI_RECORD tBTA_DI_RECORD;
+typedef tSDP_DI_RECORD tBTA_DI_RECORD;
/* Used to get the DI record */
-typedef tSDP_DI_GET_RECORD tBTA_DI_GET_RECORD;
+typedef tSDP_DI_GET_RECORD tBTA_DI_GET_RECORD;
/* SDP discovery database */
-typedef tSDP_DISCOVERY_DB tBTA_DISCOVERY_DB;
+typedef tSDP_DISCOVERY_DB tBTA_DISCOVERY_DB;
-#ifndef BTA_DI_NUM_MAX
-#define BTA_DI_NUM_MAX 3
+#ifndef BTA_DI_NUM_MAX
+#define BTA_DI_NUM_MAX 3
#endif
/* Device features mask definitions */
-#define BTA_FEATURE_BYTES_PER_PAGE BTM_FEATURE_BYTES_PER_PAGE
-#define BTA_EXT_FEATURES_PAGE_MAX BTM_EXT_FEATURES_PAGE_MAX
+#define BTA_FEATURE_BYTES_PER_PAGE BTM_FEATURE_BYTES_PER_PAGE
+#define BTA_EXT_FEATURES_PAGE_MAX BTM_EXT_FEATURES_PAGE_MAX
/* ACL type
*/
-#define BTA_DM_LINK_TYPE_BR_EDR 0x01
-#define BTA_DM_LINK_TYPE_LE 0x02
-#define BTA_DM_LINK_TYPE_ALL 0xFF
+#define BTA_DM_LINK_TYPE_BR_EDR 0x01
+#define BTA_DM_LINK_TYPE_LE 0x02
+#define BTA_DM_LINK_TYPE_ALL 0xFF
typedef uint8_t tBTA_DM_LINK_TYPE;
-#define IMMEDIATE_DELY_MODE 0x00
-#define ONFOUND_DELY_MODE 0x01
-#define BATCH_DELY_MODE 0x02
-#define ALLOW_ALL_FILTER 0x00
-#define LOWEST_RSSI_VALUE 129
+#define IMMEDIATE_DELY_MODE 0x00
+#define ONFOUND_DELY_MODE 0x01
+#define BATCH_DELY_MODE 0x02
+#define ALLOW_ALL_FILTER 0x00
+#define LOWEST_RSSI_VALUE 129
/*****************************************************************************
* External Function Declarations
@@ -1218,7 +1264,7 @@
* BTA_FAIL if internal failure.
*
******************************************************************************/
-extern tBTA_STATUS BTA_EnableBluetooth(tBTA_DM_SEC_CBACK *p_cback);
+extern tBTA_STATUS BTA_EnableBluetooth(tBTA_DM_SEC_CBACK* p_cback);
/*******************************************************************************
*
@@ -1268,22 +1314,25 @@
* Returns void
*
******************************************************************************/
-extern void BTA_DmSetDeviceName(char *p_name);
+extern void BTA_DmSetDeviceName(char* p_name);
/*******************************************************************************
*
* Function BTA_DmSetVisibility
*
* Description This function sets the Bluetooth connectable,discoverable,
- * pairable and conn paired only modesmodes of the local device.
- * This controls whether other Bluetooth devices can find and connect to
+ * pairable and conn paired only modesmodes of the local
+ *device.
+ * This controls whether other Bluetooth devices can find and
+ *connect to
* the local device.
*
*
* Returns void
*
******************************************************************************/
-extern void BTA_DmSetVisibility(tBTA_DM_DISC disc_mode, tBTA_DM_CONN conn_mode, uint8_t pairable_mode, uint8_t conn_filter);
+extern void BTA_DmSetVisibility(tBTA_DM_DISC disc_mode, tBTA_DM_CONN conn_mode,
+ uint8_t pairable_mode, uint8_t conn_filter);
/*******************************************************************************
*
@@ -1299,8 +1348,8 @@
* Returns void
*
******************************************************************************/
-extern void BTA_DmSearch(tBTA_DM_INQ *p_dm_inq, tBTA_SERVICE_MASK services,
- tBTA_DM_SEARCH_CBACK *p_cback);
+extern void BTA_DmSearch(tBTA_DM_INQ* p_dm_inq, tBTA_SERVICE_MASK services,
+ tBTA_DM_SEARCH_CBACK* p_cback);
/*******************************************************************************
*
@@ -1327,7 +1376,7 @@
*
******************************************************************************/
extern void BTA_DmDiscover(BD_ADDR bd_addr, tBTA_SERVICE_MASK services,
- tBTA_DM_SEARCH_CBACK *p_cback, bool sdp_search);
+ tBTA_DM_SEARCH_CBACK* p_cback, bool sdp_search);
/*******************************************************************************
*
@@ -1340,8 +1389,8 @@
* Returns void
*
******************************************************************************/
-extern void BTA_DmDiscoverUUID(BD_ADDR bd_addr, tSDP_UUID *uuid,
- tBTA_DM_SEARCH_CBACK *p_cback, bool sdp_search);
+extern void BTA_DmDiscoverUUID(BD_ADDR bd_addr, tSDP_UUID* uuid,
+ tBTA_DM_SEARCH_CBACK* p_cback, bool sdp_search);
/*******************************************************************************
*
@@ -1353,7 +1402,8 @@
* BTA_FAILURE if cached name is not available
*
******************************************************************************/
-tBTA_STATUS BTA_DmGetCachedRemoteName(BD_ADDR remote_device, uint8_t **pp_cached_name);
+tBTA_STATUS BTA_DmGetCachedRemoteName(BD_ADDR remote_device,
+ uint8_t** pp_cached_name);
/*******************************************************************************
*
@@ -1374,8 +1424,10 @@
* Function BTA_DmBondByTransport
*
* Description This function initiates a bonding procedure with a peer
- * device by designated transport. The bonding procedure enables
- * authentication and optionally encryption on the Bluetooth link.
+ * device by designated transport. The bonding procedure
+ *enables
+ * authentication and optionally encryption on the Bluetooth
+ *link.
*
*
* Returns void
@@ -1383,7 +1435,6 @@
******************************************************************************/
extern void BTA_DmBondByTransport(BD_ADDR bd_addr, tBTA_TRANSPORT transport);
-
/*******************************************************************************
*
* Function BTA_DmBondCancel
@@ -1411,7 +1462,7 @@
*
******************************************************************************/
extern void BTA_DmPinReply(BD_ADDR bd_addr, bool accept, uint8_t pin_len,
- uint8_t *p_pin);
+ uint8_t* p_pin);
/*******************************************************************************
*
@@ -1482,7 +1533,7 @@
* Returns None
*
******************************************************************************/
-extern void BTA_GetEirService( uint8_t *p_eir, tBTA_SERVICE_MASK *p_services );
+extern void BTA_GetEirService(uint8_t* p_eir, tBTA_SERVICE_MASK* p_services);
/*******************************************************************************
*
@@ -1493,8 +1544,7 @@
* Returns 0 if the device is NOT connected.
*
******************************************************************************/
-extern uint16_t BTA_DmGetConnectionState( const BD_ADDR bd_addr );
-
+extern uint16_t BTA_DmGetConnectionState(const BD_ADDR bd_addr);
/*******************************************************************************
*
@@ -1505,15 +1555,16 @@
* Returns BTA_SUCCESS if record set sucessfully, otherwise error code.
*
******************************************************************************/
-extern tBTA_STATUS BTA_DmSetLocalDiRecord( tBTA_DI_RECORD *p_device_info,
- uint32_t *p_handle );
+extern tBTA_STATUS BTA_DmSetLocalDiRecord(tBTA_DI_RECORD* p_device_info,
+ uint32_t* p_handle);
/*******************************************************************************
*
*
* Function BTA_DmCloseACL
*
- * Description This function force to close an ACL connection and remove the
+ * Description This function force to close an ACL connection and remove
+ the
* device from the security database list of known devices.
*
* Parameters: bd_addr - Address of the peer device
@@ -1524,20 +1575,23 @@
* Returns void.
*
******************************************************************************/
-extern void BTA_DmCloseACL(BD_ADDR bd_addr, bool remove_dev, tBTA_TRANSPORT transport);
+extern void BTA_DmCloseACL(BD_ADDR bd_addr, bool remove_dev,
+ tBTA_TRANSPORT transport);
/*******************************************************************************
*
* Function bta_dmexecutecallback
*
- * Description This function will request BTA to execute a call back in the context of BTU task
+ * Description This function will request BTA to execute a call back in the
+ *context of BTU task
* This API was named in lower case because it is only intended
* for the internal customers(like BTIF).
*
* Returns void
*
******************************************************************************/
-extern void bta_dmexecutecallback (tBTA_DM_EXEC_CBACK* p_callback, void * p_param);
+extern void bta_dmexecutecallback(tBTA_DM_EXEC_CBACK* p_callback,
+ void* p_param);
#if (BTM_SCO_HCI_INCLUDED == TRUE)
/*******************************************************************************
@@ -1554,25 +1608,28 @@
* Returns none
*
******************************************************************************/
-extern void BTA_DmPcmInitSamples (uint32_t src_sps, uint32_t bits, uint32_t n_channels);
+extern void BTA_DmPcmInitSamples(uint32_t src_sps, uint32_t bits,
+ uint32_t n_channels);
/**************************************************************************************
* Function BTA_DmPcmResample
*
- * Description Down sampling utility to convert higher sampling rate into 8K/16bits
+ * Description Down sampling utility to convert higher sampling rate into
+ *8K/16bits
* PCM samples.
*
* Parameters p_src: pointer to the buffer where the original sampling PCM
* are stored.
* in_bytes: Length of the input PCM sample buffer in byte.
- * p_dst: pointer to the buffer which is to be used to store
+ * p_dst: pointer to the buffer which is to be used to
+ *store
* the converted PCM samples.
*
*
* Returns int32_t: number of samples converted.
*
*************************************************************************************/
-extern int32_t BTA_DmPcmResample (void *p_src, uint32_t in_bytes, void *p_dst);
+extern int32_t BTA_DmPcmResample(void* p_src, uint32_t in_bytes, void* p_dst);
#endif
#if (BLE_INCLUDED == TRUE)
@@ -1591,8 +1648,6 @@
******************************************************************************/
extern void BTA_DmBleSecurityGrant(BD_ADDR bd_addr, tBTA_DM_BLE_SEC_GRANT res);
-
-
/*******************************************************************************
*
* Function BTA_DmBleSetBgConnType
@@ -1600,14 +1655,17 @@
* Description This function is called to set BLE connectable mode for a
* peripheral device.
*
- * Parameters bg_conn_type: it can be auto connection, or selective connection.
- * p_select_cback: callback function when selective connection procedure
+ * Parameters bg_conn_type: it can be auto connection, or selective
+ *connection.
+ * p_select_cback: callback function when selective connection
+ *procedure
* is being used.
*
* Returns void
*
******************************************************************************/
-extern void BTA_DmBleSetBgConnType(tBTA_DM_BLE_CONN_TYPE bg_conn_type, tBTA_DM_BLE_SEL_CBACK *p_select_cback);
+extern void BTA_DmBleSetBgConnType(tBTA_DM_BLE_CONN_TYPE bg_conn_type,
+ tBTA_DM_BLE_SEL_CBACK* p_select_cback);
/*******************************************************************************
*
@@ -1623,7 +1681,8 @@
* Returns void
*
******************************************************************************/
-extern void BTA_DmBlePasskeyReply(BD_ADDR bd_addr, bool accept, uint32_t passkey);
+extern void BTA_DmBlePasskeyReply(BD_ADDR bd_addr, bool accept,
+ uint32_t passkey);
/*******************************************************************************
*
@@ -1632,7 +1691,8 @@
* Description Send BLE SMP SC user confirmation reply.
*
* Parameters: bd_addr - BD address of the peer
- * accept - numbers to compare are the same or different.
+ * accept - numbers to compare are the same or
+ *different.
*
* Returns void
*
@@ -1657,7 +1717,6 @@
extern void BTA_DmAddBleDevice(BD_ADDR bd_addr, tBLE_ADDR_TYPE addr_type,
tBT_DEVICE_TYPE dev_type);
-
/*******************************************************************************
*
* Function BTA_DmAddBleKey
@@ -1673,9 +1732,8 @@
* Returns void
*
******************************************************************************/
-extern void BTA_DmAddBleKey (BD_ADDR bd_addr,
- tBTA_LE_KEY_VALUE *p_le_key,
- tBTA_LE_KEY_TYPE key_type);
+extern void BTA_DmAddBleKey(BD_ADDR bd_addr, tBTA_LE_KEY_VALUE* p_le_key,
+ tBTA_LE_KEY_TYPE key_type);
/*******************************************************************************
*
@@ -1695,8 +1753,10 @@
*
******************************************************************************/
extern void BTA_DmSetBlePrefConnParams(const BD_ADDR bd_addr,
- uint16_t min_conn_int, uint16_t max_conn_int,
- uint16_t slave_latency, uint16_t supervision_tout );
+ uint16_t min_conn_int,
+ uint16_t max_conn_int,
+ uint16_t slave_latency,
+ uint16_t supervision_tout);
/*******************************************************************************
*
@@ -1724,21 +1784,25 @@
* scan_interval - scan interval
* scan_window - scan window
* scan_mode - scan mode
- * scan_param_setup_status_cback - Set scan param status callback
+ * scan_param_setup_status_cback - Set scan param status
+ *callback
*
* Returns void
*
******************************************************************************/
-extern void BTA_DmSetBleScanParams(tGATT_IF client_if, uint32_t scan_interval,
- uint32_t scan_window, tBLE_SCAN_MODE scan_mode,
- tBLE_SCAN_PARAM_SETUP_CBACK scan_param_setup_status_cback);
+extern void BTA_DmSetBleScanParams(
+ tGATT_IF client_if, uint32_t scan_interval, uint32_t scan_window,
+ tBLE_SCAN_MODE scan_mode,
+ tBLE_SCAN_PARAM_SETUP_CBACK scan_param_setup_status_cback);
/*******************************************************************************
*
* Function BTA_DmSetBleAdvParams
*
- * Description This function sets the advertising parameters BLE functionality.
- * It is to be called when device act in peripheral or broadcaster
+ * Description This function sets the advertising parameters BLE
+ *functionality.
+ * It is to be called when device act in peripheral or
+ *broadcaster
* role.
*
* Parameters: adv_int_min - adv interval minimum
@@ -1748,19 +1812,22 @@
* Returns void
*
******************************************************************************/
-extern void BTA_DmSetBleAdvParams (uint16_t adv_int_min, uint16_t adv_int_max,
- tBLE_BD_ADDR *p_dir_bda);
+extern void BTA_DmSetBleAdvParams(uint16_t adv_int_min, uint16_t adv_int_max,
+ tBLE_BD_ADDR* p_dir_bda);
/*******************************************************************************
*
* Function BTA_DmSearchExt
*
- * Description This function searches for peer Bluetooth devices. It performs
+ * Description This function searches for peer Bluetooth devices. It
+ *performs
* an inquiry and gets the remote name for devices. Service
* discovery is done if services is non zero
*
* Parameters p_dm_inq: inquiry conditions
- * services: if service is not empty, service discovery will be done.
- * for all GATT based service condition, put num_uuid, and
+ * services: if service is not empty, service discovery will be
+ *done.
+ * for all GATT based service condition, put
+ *num_uuid, and
* p_uuid is the pointer to the list of UUID values.
* p_cback: callback functino when search is completed.
*
@@ -1769,8 +1836,9 @@
* Returns void
*
******************************************************************************/
-extern void BTA_DmSearchExt(tBTA_DM_INQ *p_dm_inq, tBTA_SERVICE_MASK_EXT *p_services,
- tBTA_DM_SEARCH_CBACK *p_cback);
+extern void BTA_DmSearchExt(tBTA_DM_INQ* p_dm_inq,
+ tBTA_SERVICE_MASK_EXT* p_services,
+ tBTA_DM_SEARCH_CBACK* p_cback);
/*******************************************************************************
*
@@ -1787,8 +1855,9 @@
* Returns void
*
******************************************************************************/
-extern void BTA_DmDiscoverExt(BD_ADDR bd_addr, tBTA_SERVICE_MASK_EXT *p_services,
- tBTA_DM_SEARCH_CBACK *p_cback, bool sdp_search);
+extern void BTA_DmDiscoverExt(BD_ADDR bd_addr,
+ tBTA_SERVICE_MASK_EXT* p_services,
+ tBTA_DM_SEARCH_CBACK* p_cback, bool sdp_search);
/*******************************************************************************
*
@@ -1806,8 +1875,10 @@
* Returns void
*
******************************************************************************/
-extern void BTA_DmDiscoverByTransport(BD_ADDR bd_addr, tBTA_SERVICE_MASK_EXT *p_services,
- tBTA_DM_SEARCH_CBACK *p_cback, bool sdp_search,
+extern void BTA_DmDiscoverByTransport(BD_ADDR bd_addr,
+ tBTA_SERVICE_MASK_EXT* p_services,
+ tBTA_DM_SEARCH_CBACK* p_cback,
+ bool sdp_search,
tBTA_TRANSPORT transport);
/*******************************************************************************
@@ -1824,9 +1895,11 @@
* p_callback - Pointer to callback function to indicat the
* link encryption status
* sec_act - This is the security action to indicate
- * what knid of BLE security level is required for
+ * what knid of BLE security level is required
+ *for
* the BLE link if the BLE is supported
- * Note: This parameter is ignored for the BR/EDR link
+ * Note: This parameter is ignored for the
+ *BR/EDR link
* or the BLE is not supported
*
* Returns void
@@ -1834,10 +1907,9 @@
*
******************************************************************************/
extern void BTA_DmSetEncryption(BD_ADDR bd_addr, tBTA_TRANSPORT transport,
- tBTA_DM_ENCRYPT_CBACK *p_callback,
+ tBTA_DM_ENCRYPT_CBACK* p_callback,
tBTA_DM_BLE_SEC_ACT sec_act);
-
/*******************************************************************************
*
* Function BTA_DmBleObserve
@@ -1846,15 +1918,15 @@
* events from a broadcast device.
*
* Parameters start: start or stop observe.
- * duration : Duration of the scan. Continuous scan if 0 is passed
+ * duration : Duration of the scan. Continuous scan if 0 is
+ *passed
* p_results_cb: Callback to be called with scan results
*
* Returns void
*
******************************************************************************/
extern void BTA_DmBleObserve(bool start, uint8_t duration,
- tBTA_DM_SEARCH_CBACK *p_results_cb);
-
+ tBTA_DM_SEARCH_CBACK* p_results_cb);
#endif
@@ -1890,19 +1962,23 @@
*
* Function BTA_DmBleUpdateConnectionParams
*
- * Description Update connection parameters, can only be used when connection is up.
+ * Description Update connection parameters, can only be used when
+ *connection is up.
*
* Parameters: bd_addr - BD address of the peer
- * min_int - minimum connection interval, [0x0004~ 0x4000]
- * max_int - maximum connection interval, [0x0004~ 0x4000]
+ * min_int - minimum connection interval, [0x0004~
+ *0x4000]
+ * max_int - maximum connection interval, [0x0004~
+ *0x4000]
* latency - slave latency [0 ~ 500]
* timeout - supervision timeout [0x000a ~ 0xc80]
*
* Returns void
*
******************************************************************************/
-extern void BTA_DmBleUpdateConnectionParams(const BD_ADDR bd_addr, uint16_t min_int,
- uint16_t max_int, uint16_t latency, uint16_t timeout);
+extern void BTA_DmBleUpdateConnectionParams(const BD_ADDR bd_addr,
+ uint16_t min_int, uint16_t max_int,
+ uint16_t latency, uint16_t timeout);
/*******************************************************************************
*
@@ -1913,7 +1989,8 @@
* Returns void
*
******************************************************************************/
-extern void BTA_DmBleSetDataLength(BD_ADDR remote_device, uint16_t tx_data_length);
+extern void BTA_DmBleSetDataLength(BD_ADDR remote_device,
+ uint16_t tx_data_length);
/*******************************************************************************
*
@@ -1921,10 +1998,14 @@
*
* Description This function is called to set the storage parameters
*
- * Parameters batch_scan_full_max -Max storage space (in %) allocated to full scanning
- * batch_scan_trunc_max -Max storage space (in %) allocated to truncated scanning
- * batch_scan_notify_threshold - Setup notification level based on total space
- * consumed by both pools. Setting it to 0 will disable threshold notification
+ * Parameters batch_scan_full_max -Max storage space (in %) allocated to
+ *full scanning
+ * batch_scan_trunc_max -Max storage space (in %) allocated to
+ *truncated scanning
+ * batch_scan_notify_threshold - Setup notification level based
+ *on total space
+ * consumed by both pools. Setting it to 0 will disable
+ *threshold notification
* p_setup_cback - Setup callback
* p_thres_cback - Threshold callback
* p_rep_cback - Reports callback
@@ -1933,13 +2014,12 @@
* Returns None
*
******************************************************************************/
-extern void BTA_DmBleSetStorageParams(uint8_t batch_scan_full_max,
- uint8_t batch_scan_trunc_max,
- uint8_t batch_scan_notify_threshold,
- tBTA_BLE_SCAN_SETUP_CBACK *p_setup_cback,
- tBTA_BLE_SCAN_THRESHOLD_CBACK *p_thres_cback,
- tBTA_BLE_SCAN_REP_CBACK* p_rep_cback,
- tBTA_DM_BLE_REF_VALUE ref_value);
+extern void BTA_DmBleSetStorageParams(
+ uint8_t batch_scan_full_max, uint8_t batch_scan_trunc_max,
+ uint8_t batch_scan_notify_threshold,
+ tBTA_BLE_SCAN_SETUP_CBACK* p_setup_cback,
+ tBTA_BLE_SCAN_THRESHOLD_CBACK* p_thres_cback,
+ tBTA_BLE_SCAN_REP_CBACK* p_rep_cback, tBTA_DM_BLE_REF_VALUE ref_value);
/*******************************************************************************
*
@@ -1958,10 +2038,11 @@
*
******************************************************************************/
extern void BTA_DmBleEnableBatchScan(tBTA_BLE_BATCH_SCAN_MODE scan_mode,
- uint32_t scan_interval, uint32_t scan_window,
- tBTA_BLE_DISCARD_RULE discard_rule,
- tBLE_ADDR_TYPE addr_type,
- tBTA_DM_BLE_REF_VALUE ref_value);
+ uint32_t scan_interval,
+ uint32_t scan_window,
+ tBTA_BLE_DISCARD_RULE discard_rule,
+ tBLE_ADDR_TYPE addr_type,
+ tBTA_DM_BLE_REF_VALUE ref_value);
/*******************************************************************************
*
@@ -1976,7 +2057,7 @@
*
******************************************************************************/
extern void BTA_DmBleReadScanReports(tBTA_BLE_BATCH_SCAN_MODE scan_type,
- tBTA_DM_BLE_REF_VALUE ref_value);
+ tBTA_DM_BLE_REF_VALUE ref_value);
/*******************************************************************************
*
@@ -1995,7 +2076,8 @@
*
* Function BTA_DmEnableScanFilter
*
- * Description This function is called to enable the adv data payload filter
+ * Description This function is called to enable the adv data payload
+ *filter
*
* Parameters action - enable or disable the APCF feature
* p_cmpl_cback - Command completed callback
@@ -2005,8 +2087,8 @@
*
******************************************************************************/
extern void BTA_DmEnableScanFilter(uint8_t action,
- tBTA_DM_BLE_PF_STATUS_CBACK *p_cmpl_cback,
- tBTA_DM_BLE_REF_VALUE ref_value);
+ tBTA_DM_BLE_PF_STATUS_CBACK* p_cmpl_cback,
+ tBTA_DM_BLE_REF_VALUE ref_value);
/*******************************************************************************
*
@@ -2014,7 +2096,8 @@
*
* Description This function is called to setup the filter params
*
- * Parameters p_target: enable the filter condition on a target device; if NULL
+ * Parameters p_target: enable the filter condition on a target device; if
+ *NULL
* filt_index - Filter index
* p_filt_params -Filter parameters
* ref_value - Reference value
@@ -2025,17 +2108,18 @@
*
******************************************************************************/
extern void BTA_DmBleScanFilterSetup(uint8_t action,
- tBTA_DM_BLE_PF_FILT_INDEX filt_index,
- tBTA_DM_BLE_PF_FILT_PARAMS *p_filt_params,
- tBLE_BD_ADDR *p_target,
- tBTA_DM_BLE_PF_PARAM_CBACK *p_cmpl_cback,
- tBTA_DM_BLE_REF_VALUE ref_value);
+ tBTA_DM_BLE_PF_FILT_INDEX filt_index,
+ tBTA_DM_BLE_PF_FILT_PARAMS* p_filt_params,
+ tBLE_BD_ADDR* p_target,
+ tBTA_DM_BLE_PF_PARAM_CBACK* p_cmpl_cback,
+ tBTA_DM_BLE_REF_VALUE ref_value);
/*******************************************************************************
*
* Function BTA_DmBleCfgFilterCondition
*
- * Description This function is called to configure the adv data payload filter
+ * Description This function is called to configure the adv data payload
+ *filter
* condition.
*
* Parameters action: to read/write/clear
@@ -2049,12 +2133,11 @@
*
******************************************************************************/
extern void BTA_DmBleCfgFilterCondition(tBTA_DM_BLE_SCAN_COND_OP action,
- tBTA_DM_BLE_PF_COND_TYPE cond_type,
- tBTA_DM_BLE_PF_FILT_INDEX filt_index,
- tBTA_DM_BLE_PF_COND_PARAM *p_cond,
- tBTA_DM_BLE_PF_CFG_CBACK *p_cmpl_cback,
- tBTA_DM_BLE_REF_VALUE ref_value);
-
+ tBTA_DM_BLE_PF_COND_TYPE cond_type,
+ tBTA_DM_BLE_PF_FILT_INDEX filt_index,
+ tBTA_DM_BLE_PF_COND_PARAM* p_cond,
+ tBTA_DM_BLE_PF_CFG_CBACK* p_cmpl_cback,
+ tBTA_DM_BLE_REF_VALUE ref_value);
/*******************************************************************************
*
@@ -2068,8 +2151,9 @@
* Returns None
*
******************************************************************************/
-extern void BTA_DmBleTrackAdvertiser(tBTA_DM_BLE_REF_VALUE ref_value,
- tBTA_BLE_TRACK_ADV_CBACK *p_track_adv_cback);
+extern void BTA_DmBleTrackAdvertiser(
+ tBTA_DM_BLE_REF_VALUE ref_value,
+ tBTA_BLE_TRACK_ADV_CBACK* p_track_adv_cback);
/*******************************************************************************
*
@@ -2082,29 +2166,31 @@
* Returns void
*
******************************************************************************/
-extern void BTA_DmBleGetEnergyInfo(tBTA_BLE_ENERGY_INFO_CBACK *p_cmpl_cback);
+extern void BTA_DmBleGetEnergyInfo(tBTA_BLE_ENERGY_INFO_CBACK* p_cmpl_cback);
/*******************************************************************************
*
* Function BTA_BrcmInit
*
- * Description This function initializes Broadcom specific VS handler in BTA
+ * Description This function initializes Broadcom specific VS handler in
+ *BTA
*
* Returns void
*
******************************************************************************/
-extern void BTA_VendorInit (void);
+extern void BTA_VendorInit(void);
/*******************************************************************************
*
* Function BTA_BrcmCleanup
*
- * Description This function frees up Broadcom specific VS specific dynamic memory
+ * Description This function frees up Broadcom specific VS specific dynamic
+ *memory
*
* Returns void
*
******************************************************************************/
-extern void BTA_VendorCleanup (void);
+extern void BTA_VendorCleanup(void);
#endif
diff --git a/bta/include/bta_ar_api.h b/bta/include/bta_ar_api.h
index f19e40f..46bb371 100644
--- a/bta/include/bta_ar_api.h
+++ b/bta/include/bta_ar_api.h
@@ -26,12 +26,12 @@
#ifndef BTA_AR_API_H
#define BTA_AR_API_H
-#include "avdt_api.h"
#include "avct_api.h"
+#include "avdt_api.h"
#include "avrc_api.h"
-#include "sdp_api.h"
#include "bta_av_api.h"
#include "bta_sys.h"
+#include "sdp_api.h"
#ifdef __cplusplus
extern "C" {
@@ -41,7 +41,7 @@
* Constants and data types
****************************************************************************/
/* This event signal to AR user that other profile is connected */
-#define BTA_AR_AVDT_CONN_EVT (AVDT_MAX_EVT + 1)
+#define BTA_AR_AVDT_CONN_EVT (AVDT_MAX_EVT + 1)
/*******************************************************************************
*
@@ -64,7 +64,8 @@
* Returns void
*
******************************************************************************/
-extern void bta_ar_reg_avdt(tAVDT_REG *p_reg, tAVDT_CTRL_CBACK *p_cback, tBTA_SYS_ID sys_id);
+extern void bta_ar_reg_avdt(tAVDT_REG* p_reg, tAVDT_CTRL_CBACK* p_cback,
+ tBTA_SYS_ID sys_id);
/*******************************************************************************
*
@@ -81,7 +82,8 @@
*
* Function bta_ar_avdt_conn
*
- * Description This function is called to let ar know that some AVDTP profile
+ * Description This function is called to let ar know that some AVDTP
+ *profile
* is connected for this sys_id.
* If the other sys modules started a timer for PENDING_EVT,
* the timer can be stopped now.
@@ -100,7 +102,8 @@
* Returns void
*
******************************************************************************/
-extern void bta_ar_reg_avct(uint16_t mtu, uint16_t mtu_br, uint8_t sec_mask, tBTA_SYS_ID sys_id);
+extern void bta_ar_reg_avct(uint16_t mtu, uint16_t mtu_br, uint8_t sec_mask,
+ tBTA_SYS_ID sys_id);
/*******************************************************************************
*
@@ -122,8 +125,8 @@
* Returns void
*
*****************************************************************************/
-extern void bta_ar_reg_avrc(uint16_t service_uuid, const char *p_service_name,
- const char *p_provider_name, uint16_t categories,
+extern void bta_ar_reg_avrc(uint16_t service_uuid, const char* p_service_name,
+ const char* p_provider_name, uint16_t categories,
tBTA_SYS_ID sys_id, bool browse_supported,
uint16_t profile_version);
@@ -131,14 +134,14 @@
*
* Function bta_ar_dereg_avrc
*
- * Description This function is called to de-register/delete an SDP record for AVRCP.
+ * Description This function is called to de-register/delete an SDP record
+ *for AVRCP.
*
* Returns void
*
*****************************************************************************/
extern void bta_ar_dereg_avrc(uint16_t service_uuid, tBTA_SYS_ID sys_id);
-
#ifdef __cplusplus
}
#endif
diff --git a/bta/include/bta_av_api.h b/bta/include/bta_av_api.h
index a3df4c3..af38ac2 100644
--- a/bta/include/bta_av_api.h
+++ b/bta/include/bta_av_api.h
@@ -26,9 +26,9 @@
#ifndef BTA_AV_API_H
#define BTA_AV_API_H
-#include "avrc_api.h"
-#include "avdt_api.h"
#include "a2dp_api.h"
+#include "avdt_api.h"
+#include "avrc_api.h"
#include "bta_api.h"
#ifdef __cplusplus
@@ -38,462 +38,455 @@
/*****************************************************************************
* Constants and data types
****************************************************************************/
-/* Set to TRUE if seperate authorization prompt desired for AVCTP besides A2DP authorization */
+/* Set to TRUE if seperate authorization prompt desired for AVCTP besides A2DP
+ * authorization */
/* Typically FALSE when AVRCP is used in conjunction with A2DP */
#ifndef BTA_AV_WITH_AVCTP_AUTHORIZATION
#define BTA_AV_WITH_AVCTP_AUTHORIZATION FALSE
#endif
/* AV status values */
-#define BTA_AV_SUCCESS 0 /* successful operation */
-#define BTA_AV_FAIL 1 /* generic failure */
-#define BTA_AV_FAIL_SDP 2 /* service not found */
-#define BTA_AV_FAIL_STREAM 3 /* stream connection failed */
-#define BTA_AV_FAIL_RESOURCES 4 /* no resources */
-#define BTA_AV_FAIL_ROLE 5 /* failed due to role management related issues */
-#define BTA_AV_FAIL_GET_CAP 6 /* get capability failed due to no SEP availale on the peer */
+#define BTA_AV_SUCCESS 0 /* successful operation */
+#define BTA_AV_FAIL 1 /* generic failure */
+#define BTA_AV_FAIL_SDP 2 /* service not found */
+#define BTA_AV_FAIL_STREAM 3 /* stream connection failed */
+#define BTA_AV_FAIL_RESOURCES 4 /* no resources */
+#define BTA_AV_FAIL_ROLE 5 /* failed due to role management related issues */
+#define BTA_AV_FAIL_GET_CAP \
+ 6 /* get capability failed due to no SEP availale on the peer */
typedef uint8_t tBTA_AV_STATUS;
/* AV features masks */
-#define BTA_AV_FEAT_RCTG 0x0001 /* remote control target */
-#define BTA_AV_FEAT_RCCT 0x0002 /* remote control controller */
-#define BTA_AV_FEAT_PROTECT 0x0004 /* streaming media contect protection */
-#define BTA_AV_FEAT_VENDOR 0x0008 /* remote control vendor dependent commands */
-#define BTA_AV_FEAT_REPORT 0x0020 /* use reporting service for VDP */
-#define BTA_AV_FEAT_METADATA 0x0040 /* remote control Metadata Transfer command/response */
-#define BTA_AV_FEAT_MULTI_AV 0x0080 /* use multi-av, if controller supports it */
-#define BTA_AV_FEAT_BROWSE 0x0010 /* use browsing channel */
-#define BTA_AV_FEAT_MASTER 0x0100 /* stream only as master role */
-#define BTA_AV_FEAT_ADV_CTRL 0x0200 /* remote control Advanced Control command/response */
-#define BTA_AV_FEAT_DELAY_RPT 0x0400 /* allow delay reporting */
-#define BTA_AV_FEAT_ACP_START 0x0800 /* start stream when 2nd SNK was accepted */
-#define BTA_AV_FEAT_APP_SETTING 0x2000 /* Player app setting support */
+#define BTA_AV_FEAT_RCTG 0x0001 /* remote control target */
+#define BTA_AV_FEAT_RCCT 0x0002 /* remote control controller */
+#define BTA_AV_FEAT_PROTECT 0x0004 /* streaming media contect protection */
+#define BTA_AV_FEAT_VENDOR \
+ 0x0008 /* remote control vendor dependent commands \
+ */
+#define BTA_AV_FEAT_REPORT 0x0020 /* use reporting service for VDP */
+#define BTA_AV_FEAT_METADATA \
+ 0x0040 /* remote control Metadata Transfer command/response */
+#define BTA_AV_FEAT_MULTI_AV \
+ 0x0080 /* use multi-av, if controller supports it */
+#define BTA_AV_FEAT_BROWSE 0x0010 /* use browsing channel */
+#define BTA_AV_FEAT_MASTER 0x0100 /* stream only as master role */
+#define BTA_AV_FEAT_ADV_CTRL \
+ 0x0200 /* remote control Advanced Control command/response */
+#define BTA_AV_FEAT_DELAY_RPT 0x0400 /* allow delay reporting */
+#define BTA_AV_FEAT_ACP_START \
+ 0x0800 /* start stream when 2nd SNK was accepted */
+#define BTA_AV_FEAT_APP_SETTING 0x2000 /* Player app setting support */
/* Internal features */
-#define BTA_AV_FEAT_NO_SCO_SSPD 0x8000 /* Do not suspend av streaming as to AG events(SCO or Call) */
+#define BTA_AV_FEAT_NO_SCO_SSPD \
+ 0x8000 /* Do not suspend av streaming as to AG events(SCO or Call) */
typedef uint16_t tBTA_AV_FEAT;
/* AV channel values */
-#define BTA_AV_CHNL_MSK 0xC0
-#define BTA_AV_CHNL_AUDIO 0x40 /* audio channel */
-#define BTA_AV_CHNL_VIDEO 0x80 /* video channel */
+#define BTA_AV_CHNL_MSK 0xC0
+#define BTA_AV_CHNL_AUDIO 0x40 /* audio channel */
+#define BTA_AV_CHNL_VIDEO 0x80 /* video channel */
typedef uint8_t tBTA_AV_CHNL;
-
-#define BTA_AV_HNDL_MSK 0x3F
+#define BTA_AV_HNDL_MSK 0x3F
typedef uint8_t tBTA_AV_HNDL;
/* handle index to mask */
-#define BTA_AV_HNDL_TO_MSK(h) ((uint8_t)(1 << (h)))
+#define BTA_AV_HNDL_TO_MSK(h) ((uint8_t)(1 << (h)))
/* maximum number of streams created: 1 for audio, 1 for video */
#ifndef BTA_AV_NUM_STRS
-#define BTA_AV_NUM_STRS 2
+#define BTA_AV_NUM_STRS 2
#endif
#ifndef BTA_AV_MAX_A2DP_MTU
- /*#define BTA_AV_MAX_A2DP_MTU 668 //224 (DM5) * 3 - 4(L2CAP header) */
-#define BTA_AV_MAX_A2DP_MTU 1008
+/*#define BTA_AV_MAX_A2DP_MTU 668 //224 (DM5) * 3 - 4(L2CAP header) */
+#define BTA_AV_MAX_A2DP_MTU 1008
#endif
#ifndef BTA_AV_MAX_VDP_MTU
-#define BTA_AV_MAX_VDP_MTU 1008
+#define BTA_AV_MAX_VDP_MTU 1008
#endif
/* operation id list for BTA_AvRemoteCmd */
-#define BTA_AV_RC_SELECT AVRC_ID_SELECT /* select */
-#define BTA_AV_RC_UP AVRC_ID_UP /* up */
-#define BTA_AV_RC_DOWN AVRC_ID_DOWN /* down */
-#define BTA_AV_RC_LEFT AVRC_ID_LEFT /* left */
-#define BTA_AV_RC_RIGHT AVRC_ID_RIGHT /* right */
-#define BTA_AV_RC_RIGHT_UP AVRC_ID_RIGHT_UP /* right-up */
-#define BTA_AV_RC_RIGHT_DOWN AVRC_ID_RIGHT_DOWN /* right-down */
-#define BTA_AV_RC_LEFT_UP AVRC_ID_LEFT_UP /* left-up */
-#define BTA_AV_RC_LEFT_DOWN AVRC_ID_LEFT_DOWN /* left-down */
-#define BTA_AV_RC_ROOT_MENU AVRC_ID_ROOT_MENU /* root menu */
-#define BTA_AV_RC_SETUP_MENU AVRC_ID_SETUP_MENU /* setup menu */
-#define BTA_AV_RC_CONT_MENU AVRC_ID_CONT_MENU /* contents menu */
-#define BTA_AV_RC_FAV_MENU AVRC_ID_FAV_MENU /* favorite menu */
-#define BTA_AV_RC_EXIT AVRC_ID_EXIT /* exit */
-#define BTA_AV_RC_0 AVRC_ID_0 /* 0 */
-#define BTA_AV_RC_1 AVRC_ID_1 /* 1 */
-#define BTA_AV_RC_2 AVRC_ID_2 /* 2 */
-#define BTA_AV_RC_3 AVRC_ID_3 /* 3 */
-#define BTA_AV_RC_4 AVRC_ID_4 /* 4 */
-#define BTA_AV_RC_5 AVRC_ID_5 /* 5 */
-#define BTA_AV_RC_6 AVRC_ID_6 /* 6 */
-#define BTA_AV_RC_7 AVRC_ID_7 /* 7 */
-#define BTA_AV_RC_8 AVRC_ID_8 /* 8 */
-#define BTA_AV_RC_9 AVRC_ID_9 /* 9 */
-#define BTA_AV_RC_DOT AVRC_ID_DOT /* dot */
-#define BTA_AV_RC_ENTER AVRC_ID_ENTER /* enter */
-#define BTA_AV_RC_CLEAR AVRC_ID_CLEAR /* clear */
-#define BTA_AV_RC_CHAN_UP AVRC_ID_CHAN_UP /* channel up */
-#define BTA_AV_RC_CHAN_DOWN AVRC_ID_CHAN_DOWN /* channel down */
-#define BTA_AV_RC_PREV_CHAN AVRC_ID_PREV_CHAN /* previous channel */
-#define BTA_AV_RC_SOUND_SEL AVRC_ID_SOUND_SEL /* sound select */
-#define BTA_AV_RC_INPUT_SEL AVRC_ID_INPUT_SEL /* input select */
-#define BTA_AV_RC_DISP_INFO AVRC_ID_DISP_INFO /* display information */
-#define BTA_AV_RC_HELP AVRC_ID_HELP /* help */
-#define BTA_AV_RC_PAGE_UP AVRC_ID_PAGE_UP /* page up */
-#define BTA_AV_RC_PAGE_DOWN AVRC_ID_PAGE_DOWN /* page down */
-#define BTA_AV_RC_POWER AVRC_ID_POWER /* power */
-#define BTA_AV_RC_VOL_UP AVRC_ID_VOL_UP /* volume up */
-#define BTA_AV_RC_VOL_DOWN AVRC_ID_VOL_DOWN /* volume down */
-#define BTA_AV_RC_MUTE AVRC_ID_MUTE /* mute */
-#define BTA_AV_RC_PLAY AVRC_ID_PLAY /* play */
-#define BTA_AV_RC_STOP AVRC_ID_STOP /* stop */
-#define BTA_AV_RC_PAUSE AVRC_ID_PAUSE /* pause */
-#define BTA_AV_RC_RECORD AVRC_ID_RECORD /* record */
-#define BTA_AV_RC_REWIND AVRC_ID_REWIND /* rewind */
-#define BTA_AV_RC_FAST_FOR AVRC_ID_FAST_FOR /* fast forward */
-#define BTA_AV_RC_EJECT AVRC_ID_EJECT /* eject */
-#define BTA_AV_RC_FORWARD AVRC_ID_FORWARD /* forward */
-#define BTA_AV_RC_BACKWARD AVRC_ID_BACKWARD /* backward */
-#define BTA_AV_RC_ANGLE AVRC_ID_ANGLE /* angle */
-#define BTA_AV_RC_SUBPICT AVRC_ID_SUBPICT /* subpicture */
-#define BTA_AV_RC_F1 AVRC_ID_F1 /* F1 */
-#define BTA_AV_RC_F2 AVRC_ID_F2 /* F2 */
-#define BTA_AV_RC_F3 AVRC_ID_F3 /* F3 */
-#define BTA_AV_RC_F4 AVRC_ID_F4 /* F4 */
-#define BTA_AV_RC_F5 AVRC_ID_F5 /* F5 */
-#define BTA_AV_VENDOR AVRC_ID_VENDOR /* vendor unique */
+#define BTA_AV_RC_SELECT AVRC_ID_SELECT /* select */
+#define BTA_AV_RC_UP AVRC_ID_UP /* up */
+#define BTA_AV_RC_DOWN AVRC_ID_DOWN /* down */
+#define BTA_AV_RC_LEFT AVRC_ID_LEFT /* left */
+#define BTA_AV_RC_RIGHT AVRC_ID_RIGHT /* right */
+#define BTA_AV_RC_RIGHT_UP AVRC_ID_RIGHT_UP /* right-up */
+#define BTA_AV_RC_RIGHT_DOWN AVRC_ID_RIGHT_DOWN /* right-down */
+#define BTA_AV_RC_LEFT_UP AVRC_ID_LEFT_UP /* left-up */
+#define BTA_AV_RC_LEFT_DOWN AVRC_ID_LEFT_DOWN /* left-down */
+#define BTA_AV_RC_ROOT_MENU AVRC_ID_ROOT_MENU /* root menu */
+#define BTA_AV_RC_SETUP_MENU AVRC_ID_SETUP_MENU /* setup menu */
+#define BTA_AV_RC_CONT_MENU AVRC_ID_CONT_MENU /* contents menu */
+#define BTA_AV_RC_FAV_MENU AVRC_ID_FAV_MENU /* favorite menu */
+#define BTA_AV_RC_EXIT AVRC_ID_EXIT /* exit */
+#define BTA_AV_RC_0 AVRC_ID_0 /* 0 */
+#define BTA_AV_RC_1 AVRC_ID_1 /* 1 */
+#define BTA_AV_RC_2 AVRC_ID_2 /* 2 */
+#define BTA_AV_RC_3 AVRC_ID_3 /* 3 */
+#define BTA_AV_RC_4 AVRC_ID_4 /* 4 */
+#define BTA_AV_RC_5 AVRC_ID_5 /* 5 */
+#define BTA_AV_RC_6 AVRC_ID_6 /* 6 */
+#define BTA_AV_RC_7 AVRC_ID_7 /* 7 */
+#define BTA_AV_RC_8 AVRC_ID_8 /* 8 */
+#define BTA_AV_RC_9 AVRC_ID_9 /* 9 */
+#define BTA_AV_RC_DOT AVRC_ID_DOT /* dot */
+#define BTA_AV_RC_ENTER AVRC_ID_ENTER /* enter */
+#define BTA_AV_RC_CLEAR AVRC_ID_CLEAR /* clear */
+#define BTA_AV_RC_CHAN_UP AVRC_ID_CHAN_UP /* channel up */
+#define BTA_AV_RC_CHAN_DOWN AVRC_ID_CHAN_DOWN /* channel down */
+#define BTA_AV_RC_PREV_CHAN AVRC_ID_PREV_CHAN /* previous channel */
+#define BTA_AV_RC_SOUND_SEL AVRC_ID_SOUND_SEL /* sound select */
+#define BTA_AV_RC_INPUT_SEL AVRC_ID_INPUT_SEL /* input select */
+#define BTA_AV_RC_DISP_INFO AVRC_ID_DISP_INFO /* display information */
+#define BTA_AV_RC_HELP AVRC_ID_HELP /* help */
+#define BTA_AV_RC_PAGE_UP AVRC_ID_PAGE_UP /* page up */
+#define BTA_AV_RC_PAGE_DOWN AVRC_ID_PAGE_DOWN /* page down */
+#define BTA_AV_RC_POWER AVRC_ID_POWER /* power */
+#define BTA_AV_RC_VOL_UP AVRC_ID_VOL_UP /* volume up */
+#define BTA_AV_RC_VOL_DOWN AVRC_ID_VOL_DOWN /* volume down */
+#define BTA_AV_RC_MUTE AVRC_ID_MUTE /* mute */
+#define BTA_AV_RC_PLAY AVRC_ID_PLAY /* play */
+#define BTA_AV_RC_STOP AVRC_ID_STOP /* stop */
+#define BTA_AV_RC_PAUSE AVRC_ID_PAUSE /* pause */
+#define BTA_AV_RC_RECORD AVRC_ID_RECORD /* record */
+#define BTA_AV_RC_REWIND AVRC_ID_REWIND /* rewind */
+#define BTA_AV_RC_FAST_FOR AVRC_ID_FAST_FOR /* fast forward */
+#define BTA_AV_RC_EJECT AVRC_ID_EJECT /* eject */
+#define BTA_AV_RC_FORWARD AVRC_ID_FORWARD /* forward */
+#define BTA_AV_RC_BACKWARD AVRC_ID_BACKWARD /* backward */
+#define BTA_AV_RC_ANGLE AVRC_ID_ANGLE /* angle */
+#define BTA_AV_RC_SUBPICT AVRC_ID_SUBPICT /* subpicture */
+#define BTA_AV_RC_F1 AVRC_ID_F1 /* F1 */
+#define BTA_AV_RC_F2 AVRC_ID_F2 /* F2 */
+#define BTA_AV_RC_F3 AVRC_ID_F3 /* F3 */
+#define BTA_AV_RC_F4 AVRC_ID_F4 /* F4 */
+#define BTA_AV_RC_F5 AVRC_ID_F5 /* F5 */
+#define BTA_AV_VENDOR AVRC_ID_VENDOR /* vendor unique */
typedef uint8_t tBTA_AV_RC;
/* state flag for pass through command */
-#define BTA_AV_STATE_PRESS AVRC_STATE_PRESS /* key pressed */
-#define BTA_AV_STATE_RELEASE AVRC_STATE_RELEASE /* key released */
+#define BTA_AV_STATE_PRESS AVRC_STATE_PRESS /* key pressed */
+#define BTA_AV_STATE_RELEASE AVRC_STATE_RELEASE /* key released */
typedef uint8_t tBTA_AV_STATE;
/* command codes for BTA_AvVendorCmd */
-#define BTA_AV_CMD_CTRL AVRC_CMD_CTRL
-#define BTA_AV_CMD_STATUS AVRC_CMD_STATUS
-#define BTA_AV_CMD_SPEC_INQ AVRC_CMD_SPEC_INQ
-#define BTA_AV_CMD_NOTIF AVRC_CMD_NOTIF
-#define BTA_AV_CMD_GEN_INQ AVRC_CMD_GEN_INQ
+#define BTA_AV_CMD_CTRL AVRC_CMD_CTRL
+#define BTA_AV_CMD_STATUS AVRC_CMD_STATUS
+#define BTA_AV_CMD_SPEC_INQ AVRC_CMD_SPEC_INQ
+#define BTA_AV_CMD_NOTIF AVRC_CMD_NOTIF
+#define BTA_AV_CMD_GEN_INQ AVRC_CMD_GEN_INQ
typedef uint8_t tBTA_AV_CMD;
/* response codes for BTA_AvVendorRsp */
-#define BTA_AV_RSP_NOT_IMPL AVRC_RSP_NOT_IMPL
-#define BTA_AV_RSP_ACCEPT AVRC_RSP_ACCEPT
-#define BTA_AV_RSP_REJ AVRC_RSP_REJ
-#define BTA_AV_RSP_IN_TRANS AVRC_RSP_IN_TRANS
-#define BTA_AV_RSP_IMPL_STBL AVRC_RSP_IMPL_STBL
-#define BTA_AV_RSP_CHANGED AVRC_RSP_CHANGED
-#define BTA_AV_RSP_INTERIM AVRC_RSP_INTERIM
+#define BTA_AV_RSP_NOT_IMPL AVRC_RSP_NOT_IMPL
+#define BTA_AV_RSP_ACCEPT AVRC_RSP_ACCEPT
+#define BTA_AV_RSP_REJ AVRC_RSP_REJ
+#define BTA_AV_RSP_IN_TRANS AVRC_RSP_IN_TRANS
+#define BTA_AV_RSP_IMPL_STBL AVRC_RSP_IMPL_STBL
+#define BTA_AV_RSP_CHANGED AVRC_RSP_CHANGED
+#define BTA_AV_RSP_INTERIM AVRC_RSP_INTERIM
typedef uint8_t tBTA_AV_CODE;
/* error codes for BTA_AvProtectRsp */
-#define BTA_AV_ERR_NONE A2DP_SUCCESS /* Success, no error */
-#define BTA_AV_ERR_BAD_STATE AVDT_ERR_BAD_STATE /* Message cannot be processed in this state */
-#define BTA_AV_ERR_RESOURCE AVDT_ERR_RESOURCE /* Insufficient resources */
-#define BTA_AV_ERR_BAD_CP_TYPE A2DP_BAD_CP_TYPE /* The requested Content Protection Type is not supported */
-#define BTA_AV_ERR_BAD_CP_FORMAT A2DP_BAD_CP_FORMAT /* The format of Content Protection Data is not correct */
+#define BTA_AV_ERR_NONE A2DP_SUCCESS /* Success, no error */
+#define BTA_AV_ERR_BAD_STATE \
+ AVDT_ERR_BAD_STATE /* Message cannot be processed in this state */
+#define BTA_AV_ERR_RESOURCE AVDT_ERR_RESOURCE /* Insufficient resources */
+#define BTA_AV_ERR_BAD_CP_TYPE \
+ A2DP_BAD_CP_TYPE /* The requested Content Protection Type is not supported \
+ */
+#define BTA_AV_ERR_BAD_CP_FORMAT \
+ A2DP_BAD_CP_FORMAT /* The format of Content Protection Data is not correct \
+ */
typedef uint8_t tBTA_AV_ERR;
/* AV callback events */
-#define BTA_AV_ENABLE_EVT 0 /* AV enabled */
-#define BTA_AV_REGISTER_EVT 1 /* registered to AVDT */
-#define BTA_AV_OPEN_EVT 2 /* connection opened */
-#define BTA_AV_CLOSE_EVT 3 /* connection closed */
-#define BTA_AV_START_EVT 4 /* stream data transfer started */
-#define BTA_AV_STOP_EVT 5 /* stream data transfer stopped */
-#define BTA_AV_PROTECT_REQ_EVT 6 /* content protection request */
-#define BTA_AV_PROTECT_RSP_EVT 7 /* content protection response */
-#define BTA_AV_RC_OPEN_EVT 8 /* remote control channel open */
-#define BTA_AV_RC_CLOSE_EVT 9 /* remote control channel closed */
-#define BTA_AV_REMOTE_CMD_EVT 10 /* remote control command */
-#define BTA_AV_REMOTE_RSP_EVT 11 /* remote control response */
-#define BTA_AV_VENDOR_CMD_EVT 12 /* vendor dependent remote control command */
-#define BTA_AV_VENDOR_RSP_EVT 13 /* vendor dependent remote control response */
-#define BTA_AV_RECONFIG_EVT 14 /* reconfigure response */
-#define BTA_AV_SUSPEND_EVT 15 /* suspend response */
-#define BTA_AV_PENDING_EVT 16 /* incoming connection pending:
- * signal channel is open and stream is
- * not open after
- * BTA_AV_SIGNALLING_TIMEOUT_MS */
-#define BTA_AV_META_MSG_EVT 17 /* metadata messages */
-#define BTA_AV_REJECT_EVT 18 /* incoming connection rejected */
-#define BTA_AV_RC_FEAT_EVT 19 /* remote control channel peer supported features update */
-#define BTA_AV_SINK_MEDIA_CFG_EVT 20 /* command to configure codec */
-#define BTA_AV_SINK_MEDIA_DATA_EVT 21 /* sending data to Media Task */
-#define BTA_AV_OFFLOAD_START_RSP_EVT 22 /* a2dp offload start response */
-#define BTA_AV_RC_BROWSE_OPEN_EVT 23 /* remote control channel open */
-#define BTA_AV_RC_BROWSE_CLOSE_EVT 24 /* remote control channel closed */
+#define BTA_AV_ENABLE_EVT 0 /* AV enabled */
+#define BTA_AV_REGISTER_EVT 1 /* registered to AVDT */
+#define BTA_AV_OPEN_EVT 2 /* connection opened */
+#define BTA_AV_CLOSE_EVT 3 /* connection closed */
+#define BTA_AV_START_EVT 4 /* stream data transfer started */
+#define BTA_AV_STOP_EVT 5 /* stream data transfer stopped */
+#define BTA_AV_PROTECT_REQ_EVT 6 /* content protection request */
+#define BTA_AV_PROTECT_RSP_EVT 7 /* content protection response */
+#define BTA_AV_RC_OPEN_EVT 8 /* remote control channel open */
+#define BTA_AV_RC_CLOSE_EVT 9 /* remote control channel closed */
+#define BTA_AV_REMOTE_CMD_EVT 10 /* remote control command */
+#define BTA_AV_REMOTE_RSP_EVT 11 /* remote control response */
+#define BTA_AV_VENDOR_CMD_EVT 12 /* vendor dependent remote control command */
+#define BTA_AV_VENDOR_RSP_EVT \
+ 13 /* vendor dependent remote control response \
+ */
+#define BTA_AV_RECONFIG_EVT 14 /* reconfigure response */
+#define BTA_AV_SUSPEND_EVT 15 /* suspend response */
+#define BTA_AV_PENDING_EVT \
+ 16 /* incoming connection pending: \
+ * signal channel is open and stream is \
+ * not open after \
+ * BTA_AV_SIGNALLING_TIMEOUT_MS */
+#define BTA_AV_META_MSG_EVT 17 /* metadata messages */
+#define BTA_AV_REJECT_EVT 18 /* incoming connection rejected */
+#define BTA_AV_RC_FEAT_EVT \
+ 19 /* remote control channel peer supported features update */
+#define BTA_AV_SINK_MEDIA_CFG_EVT 20 /* command to configure codec */
+#define BTA_AV_SINK_MEDIA_DATA_EVT 21 /* sending data to Media Task */
+#define BTA_AV_OFFLOAD_START_RSP_EVT 22 /* a2dp offload start response */
+#define BTA_AV_RC_BROWSE_OPEN_EVT 23 /* remote control channel open */
+#define BTA_AV_RC_BROWSE_CLOSE_EVT 24 /* remote control channel closed */
/* Max BTA event */
-#define BTA_AV_MAX_EVT 25
+#define BTA_AV_MAX_EVT 25
typedef uint8_t tBTA_AV_EVT;
/* Event associated with BTA_AV_ENABLE_EVT */
-typedef struct
-{
- tBTA_AV_FEAT features;
-} tBTA_AV_ENABLE;
+typedef struct { tBTA_AV_FEAT features; } tBTA_AV_ENABLE;
/* Event associated with BTA_AV_REGISTER_EVT */
-typedef struct
-{
- tBTA_AV_CHNL chnl; /* audio/video */
- tBTA_AV_HNDL hndl; /* Handle associated with the stream. */
- uint8_t app_id; /* ID associated with call to BTA_AvRegister() */
- tBTA_AV_STATUS status;
+typedef struct {
+ tBTA_AV_CHNL chnl; /* audio/video */
+ tBTA_AV_HNDL hndl; /* Handle associated with the stream. */
+ uint8_t app_id; /* ID associated with call to BTA_AvRegister() */
+ tBTA_AV_STATUS status;
} tBTA_AV_REGISTER;
/* data associated with BTA_AV_OPEN_EVT */
-#define BTA_AV_EDR_2MBPS 0x01
-#define BTA_AV_EDR_3MBPS 0x02
+#define BTA_AV_EDR_2MBPS 0x01
+#define BTA_AV_EDR_3MBPS 0x02
typedef uint8_t tBTA_AV_EDR;
-typedef struct
-{
- tBTA_AV_CHNL chnl;
- tBTA_AV_HNDL hndl;
- BD_ADDR bd_addr;
- tBTA_AV_STATUS status;
- bool starting;
- tBTA_AV_EDR edr; /* 0, if peer device does not support EDR */
- uint8_t sep; /* sep type of peer device */
+typedef struct {
+ tBTA_AV_CHNL chnl;
+ tBTA_AV_HNDL hndl;
+ BD_ADDR bd_addr;
+ tBTA_AV_STATUS status;
+ bool starting;
+ tBTA_AV_EDR edr; /* 0, if peer device does not support EDR */
+ uint8_t sep; /* sep type of peer device */
} tBTA_AV_OPEN;
/* data associated with BTA_AV_CLOSE_EVT */
-typedef struct
-{
- tBTA_AV_CHNL chnl;
- tBTA_AV_HNDL hndl;
+typedef struct {
+ tBTA_AV_CHNL chnl;
+ tBTA_AV_HNDL hndl;
} tBTA_AV_CLOSE;
/* data associated with BTA_AV_START_EVT */
-typedef struct
-{
- tBTA_AV_CHNL chnl;
- tBTA_AV_HNDL hndl;
- tBTA_AV_STATUS status;
- bool initiator; /* true, if local device initiates the START */
- bool suspending;
+typedef struct {
+ tBTA_AV_CHNL chnl;
+ tBTA_AV_HNDL hndl;
+ tBTA_AV_STATUS status;
+ bool initiator; /* true, if local device initiates the START */
+ bool suspending;
} tBTA_AV_START;
/* data associated with BTA_AV_SUSPEND_EVT */
-typedef struct
-{
- tBTA_AV_CHNL chnl;
- tBTA_AV_HNDL hndl;
- bool initiator; /* true, if local device initiates the SUSPEND */
- tBTA_AV_STATUS status;
+typedef struct {
+ tBTA_AV_CHNL chnl;
+ tBTA_AV_HNDL hndl;
+ bool initiator; /* true, if local device initiates the SUSPEND */
+ tBTA_AV_STATUS status;
} tBTA_AV_SUSPEND;
/* data associated with BTA_AV_RECONFIG_EVT */
-typedef struct
-{
- tBTA_AV_CHNL chnl;
- tBTA_AV_HNDL hndl;
- tBTA_AV_STATUS status;
+typedef struct {
+ tBTA_AV_CHNL chnl;
+ tBTA_AV_HNDL hndl;
+ tBTA_AV_STATUS status;
} tBTA_AV_RECONFIG;
/* data associated with BTA_AV_PROTECT_REQ_EVT */
-typedef struct
-{
- tBTA_AV_CHNL chnl;
- tBTA_AV_HNDL hndl;
- uint8_t *p_data;
- uint16_t len;
+typedef struct {
+ tBTA_AV_CHNL chnl;
+ tBTA_AV_HNDL hndl;
+ uint8_t* p_data;
+ uint16_t len;
} tBTA_AV_PROTECT_REQ;
/* data associated with BTA_AV_PROTECT_RSP_EVT */
-typedef struct
-{
- tBTA_AV_CHNL chnl;
- tBTA_AV_HNDL hndl;
- uint8_t *p_data;
- uint16_t len;
- tBTA_AV_ERR err_code;
+typedef struct {
+ tBTA_AV_CHNL chnl;
+ tBTA_AV_HNDL hndl;
+ uint8_t* p_data;
+ uint16_t len;
+ tBTA_AV_ERR err_code;
} tBTA_AV_PROTECT_RSP;
/* data associated with BTA_AV_RC_OPEN_EVT */
-typedef struct
-{
- uint8_t rc_handle;
- tBTA_AV_FEAT peer_features;
- BD_ADDR peer_addr;
- tBTA_AV_STATUS status;
+typedef struct {
+ uint8_t rc_handle;
+ tBTA_AV_FEAT peer_features;
+ BD_ADDR peer_addr;
+ tBTA_AV_STATUS status;
} tBTA_AV_RC_OPEN;
/* data associated with BTA_AV_RC_CLOSE_EVT */
-typedef struct
-{
- uint8_t rc_handle;
- BD_ADDR peer_addr;
+typedef struct {
+ uint8_t rc_handle;
+ BD_ADDR peer_addr;
} tBTA_AV_RC_CLOSE;
/* data associated with BTA_AV_RC_BROWSE_OPEN_EVT */
-typedef struct
-{
- uint8_t rc_handle;
- BD_ADDR peer_addr;
- tBTA_AV_STATUS status;
+typedef struct {
+ uint8_t rc_handle;
+ BD_ADDR peer_addr;
+ tBTA_AV_STATUS status;
} tBTA_AV_RC_BROWSE_OPEN;
/* data associated with BTA_AV_RC_BROWSE_CLOSE_EVT */
-typedef struct
-{
- uint8_t rc_handle;
- BD_ADDR peer_addr;
+typedef struct {
+ uint8_t rc_handle;
+ BD_ADDR peer_addr;
} tBTA_AV_RC_BROWSE_CLOSE;
/* data associated with BTA_AV_RC_FEAT_EVT */
-typedef struct
-{
- uint8_t rc_handle;
- tBTA_AV_FEAT peer_features;
- BD_ADDR peer_addr;
+typedef struct {
+ uint8_t rc_handle;
+ tBTA_AV_FEAT peer_features;
+ BD_ADDR peer_addr;
} tBTA_AV_RC_FEAT;
/* data associated with BTA_AV_REMOTE_CMD_EVT */
-typedef struct
-{
- uint8_t rc_handle;
- tBTA_AV_RC rc_id;
- tBTA_AV_STATE key_state;
- uint8_t len;
- uint8_t *p_data;
- tAVRC_HDR hdr; /* Message header. */
- uint8_t label;
+typedef struct {
+ uint8_t rc_handle;
+ tBTA_AV_RC rc_id;
+ tBTA_AV_STATE key_state;
+ uint8_t len;
+ uint8_t* p_data;
+ tAVRC_HDR hdr; /* Message header. */
+ uint8_t label;
} tBTA_AV_REMOTE_CMD;
/* data associated with BTA_AV_REMOTE_RSP_EVT */
-typedef struct
-{
- uint8_t rc_handle;
- tBTA_AV_RC rc_id;
- tBTA_AV_STATE key_state;
- uint8_t len;
- uint8_t *p_data;
- tBTA_AV_CODE rsp_code;
- uint8_t label;
+typedef struct {
+ uint8_t rc_handle;
+ tBTA_AV_RC rc_id;
+ tBTA_AV_STATE key_state;
+ uint8_t len;
+ uint8_t* p_data;
+ tBTA_AV_CODE rsp_code;
+ uint8_t label;
} tBTA_AV_REMOTE_RSP;
/* data associated with BTA_AV_VENDOR_CMD_EVT, BTA_AV_VENDOR_RSP_EVT */
-typedef struct
-{
- uint8_t rc_handle;
- uint16_t len; /* Max vendor dependent message is 512 */
- uint8_t label;
- tBTA_AV_CODE code;
- uint32_t company_id;
- uint8_t *p_data;
+typedef struct {
+ uint8_t rc_handle;
+ uint16_t len; /* Max vendor dependent message is 512 */
+ uint8_t label;
+ tBTA_AV_CODE code;
+ uint32_t company_id;
+ uint8_t* p_data;
} tBTA_AV_VENDOR;
/* data associated with BTA_AV_META_MSG_EVT */
-typedef struct
-{
- uint8_t rc_handle;
- uint16_t len;
- uint8_t label;
- tBTA_AV_CODE code;
- uint32_t company_id;
- uint8_t *p_data;
- tAVRC_MSG *p_msg;
+typedef struct {
+ uint8_t rc_handle;
+ uint16_t len;
+ uint8_t label;
+ tBTA_AV_CODE code;
+ uint32_t company_id;
+ uint8_t* p_data;
+ tAVRC_MSG* p_msg;
} tBTA_AV_META_MSG;
/* data associated with BTA_AV_PENDING_EVT */
-typedef struct
-{
- BD_ADDR bd_addr;
-} tBTA_AV_PEND;
+typedef struct { BD_ADDR bd_addr; } tBTA_AV_PEND;
/* data associated with BTA_AV_REJECT_EVT */
-typedef struct
-{
- BD_ADDR bd_addr;
- tBTA_AV_HNDL hndl; /* Handle associated with the stream that rejected the connection. */
+typedef struct {
+ BD_ADDR bd_addr;
+ tBTA_AV_HNDL hndl; /* Handle associated with the stream that rejected the
+ connection. */
} tBTA_AV_REJECT;
-
/* union of data associated with AV callback */
-typedef union
-{
- tBTA_AV_CHNL chnl;
- tBTA_AV_ENABLE enable;
- tBTA_AV_REGISTER registr;
- tBTA_AV_OPEN open;
- tBTA_AV_CLOSE close;
- tBTA_AV_START start;
- tBTA_AV_PROTECT_REQ protect_req;
- tBTA_AV_PROTECT_RSP protect_rsp;
- tBTA_AV_RC_OPEN rc_open;
- tBTA_AV_RC_CLOSE rc_close;
- tBTA_AV_RC_BROWSE_OPEN rc_browse_open;
- tBTA_AV_RC_BROWSE_CLOSE rc_browse_close;
- tBTA_AV_REMOTE_CMD remote_cmd;
- tBTA_AV_REMOTE_RSP remote_rsp;
- tBTA_AV_VENDOR vendor_cmd;
- tBTA_AV_VENDOR vendor_rsp;
- tBTA_AV_RECONFIG reconfig;
- tBTA_AV_SUSPEND suspend;
- tBTA_AV_PEND pend;
- tBTA_AV_META_MSG meta_msg;
- tBTA_AV_REJECT reject;
- tBTA_AV_RC_FEAT rc_feat;
- tBTA_AV_STATUS status;
+typedef union {
+ tBTA_AV_CHNL chnl;
+ tBTA_AV_ENABLE enable;
+ tBTA_AV_REGISTER registr;
+ tBTA_AV_OPEN open;
+ tBTA_AV_CLOSE close;
+ tBTA_AV_START start;
+ tBTA_AV_PROTECT_REQ protect_req;
+ tBTA_AV_PROTECT_RSP protect_rsp;
+ tBTA_AV_RC_OPEN rc_open;
+ tBTA_AV_RC_CLOSE rc_close;
+ tBTA_AV_RC_BROWSE_OPEN rc_browse_open;
+ tBTA_AV_RC_BROWSE_CLOSE rc_browse_close;
+ tBTA_AV_REMOTE_CMD remote_cmd;
+ tBTA_AV_REMOTE_RSP remote_rsp;
+ tBTA_AV_VENDOR vendor_cmd;
+ tBTA_AV_VENDOR vendor_rsp;
+ tBTA_AV_RECONFIG reconfig;
+ tBTA_AV_SUSPEND suspend;
+ tBTA_AV_PEND pend;
+ tBTA_AV_META_MSG meta_msg;
+ tBTA_AV_REJECT reject;
+ tBTA_AV_RC_FEAT rc_feat;
+ tBTA_AV_STATUS status;
} tBTA_AV;
-typedef struct
-{
- uint8_t *codec_info;
- BD_ADDR bd_addr;;
+typedef struct {
+ uint8_t* codec_info;
+ BD_ADDR bd_addr;
+ ;
} tBTA_AVK_CONFIG;
/* union of data associated with AV Media callback */
-typedef union
-{
- BT_HDR *p_data;
- tBTA_AVK_CONFIG avk_config;
+typedef union {
+ BT_HDR* p_data;
+ tBTA_AVK_CONFIG avk_config;
} tBTA_AV_MEDIA;
-
-#define BTA_GROUP_NAVI_MSG_OP_DATA_LEN 5
+#define BTA_GROUP_NAVI_MSG_OP_DATA_LEN 5
/* AV callback */
-typedef void (tBTA_AV_CBACK)(tBTA_AV_EVT event, tBTA_AV *p_data);
-typedef void (tBTA_AV_SINK_DATA_CBACK)(tBTA_AV_EVT event,
- tBTA_AV_MEDIA *p_data);
+typedef void(tBTA_AV_CBACK)(tBTA_AV_EVT event, tBTA_AV* p_data);
+typedef void(tBTA_AV_SINK_DATA_CBACK)(tBTA_AV_EVT event, tBTA_AV_MEDIA* p_data);
/* type for stream state machine action functions */
-typedef void (*tBTA_AV_ACT)(void *p_cb, void *p_data);
+typedef void (*tBTA_AV_ACT)(void* p_cb, void* p_data);
/* type for registering VDP */
-typedef void (tBTA_AV_REG) (tAVDT_CS *p_cs, char *p_service_name, void *p_data);
+typedef void(tBTA_AV_REG)(tAVDT_CS* p_cs, char* p_service_name, void* p_data);
/* AV configuration structure */
-typedef struct
-{
- uint32_t company_id; /* AVRCP Company ID */
- uint16_t avrc_mtu; /* AVRCP MTU at L2CAP for control channel */
- uint16_t avrc_br_mtu; /* AVRCP MTU at L2CAP for browsing channel */
- uint16_t avrc_ct_cat; /* AVRCP controller categories */
- uint16_t avrc_tg_cat; /* AVRCP target categories */
- uint16_t sig_mtu; /* AVDTP signaling channel MTU at L2CAP */
- uint16_t audio_mtu; /* AVDTP audio transport channel MTU at L2CAP */
- const uint16_t *p_audio_flush_to;/* AVDTP audio transport channel flush timeout */
- uint16_t audio_mqs; /* AVDTP audio channel max data queue size */
- uint16_t video_mtu; /* AVDTP video transport channel MTU at L2CAP */
- uint16_t video_flush_to; /* AVDTP video transport channel flush timeout */
- bool avrc_group; /* true, to accept AVRC 1.3 group nevigation command */
- uint8_t num_co_ids; /* company id count in p_meta_co_ids */
- uint8_t num_evt_ids; /* event id count in p_meta_evt_ids */
- tBTA_AV_CODE rc_pass_rsp; /* the default response code for pass through commands */
- const uint32_t *p_meta_co_ids;/* the metadata Get Capabilities response for company id */
- const uint8_t *p_meta_evt_ids;/* the the metadata Get Capabilities response for event id */
- const tBTA_AV_ACT *p_act_tbl;/* the action function table for VDP stream */
- tBTA_AV_REG *p_reg; /* action function to register VDP */
- char avrc_controller_name[BTA_SERVICE_NAME_LEN]; /* Default AVRCP controller name */
- char avrc_target_name[BTA_SERVICE_NAME_LEN]; /* Default AVRCP target name*/
+typedef struct {
+ uint32_t company_id; /* AVRCP Company ID */
+ uint16_t avrc_mtu; /* AVRCP MTU at L2CAP for control channel */
+ uint16_t avrc_br_mtu; /* AVRCP MTU at L2CAP for browsing channel */
+ uint16_t avrc_ct_cat; /* AVRCP controller categories */
+ uint16_t avrc_tg_cat; /* AVRCP target categories */
+ uint16_t sig_mtu; /* AVDTP signaling channel MTU at L2CAP */
+ uint16_t audio_mtu; /* AVDTP audio transport channel MTU at L2CAP */
+ const uint16_t*
+ p_audio_flush_to; /* AVDTP audio transport channel flush timeout */
+ uint16_t audio_mqs; /* AVDTP audio channel max data queue size */
+ uint16_t video_mtu; /* AVDTP video transport channel MTU at L2CAP */
+ uint16_t video_flush_to; /* AVDTP video transport channel flush timeout */
+ bool avrc_group; /* true, to accept AVRC 1.3 group nevigation command */
+ uint8_t num_co_ids; /* company id count in p_meta_co_ids */
+ uint8_t num_evt_ids; /* event id count in p_meta_evt_ids */
+ tBTA_AV_CODE
+ rc_pass_rsp; /* the default response code for pass through commands */
+ const uint32_t*
+ p_meta_co_ids; /* the metadata Get Capabilities response for company id */
+ const uint8_t* p_meta_evt_ids; /* the the metadata Get Capabilities response
+ for event id */
+ const tBTA_AV_ACT* p_act_tbl; /* the action function table for VDP stream */
+ tBTA_AV_REG* p_reg; /* action function to register VDP */
+ char avrc_controller_name[BTA_SERVICE_NAME_LEN]; /* Default AVRCP controller
+ name */
+ char avrc_target_name[BTA_SERVICE_NAME_LEN]; /* Default AVRCP target name*/
} tBTA_AV_CFG;
/*****************************************************************************
@@ -514,7 +507,7 @@
*
******************************************************************************/
void BTA_AvEnable(tBTA_SEC sec_mask, tBTA_AV_FEAT features,
- tBTA_AV_CBACK *p_cback);
+ tBTA_AV_CBACK* p_cback);
/*******************************************************************************
*
@@ -541,8 +534,8 @@
* Returns void
*
******************************************************************************/
-void BTA_AvRegister(tBTA_AV_CHNL chnl, const char *p_service_name,
- uint8_t app_id, tBTA_AV_SINK_DATA_CBACK *p_sink_data_cback,
+void BTA_AvRegister(tBTA_AV_CHNL chnl, const char* p_service_name,
+ uint8_t app_id, tBTA_AV_SINK_DATA_CBACK* p_sink_data_cback,
uint16_t service_uuid);
/*******************************************************************************
@@ -567,8 +560,8 @@
* Returns void
*
******************************************************************************/
-void BTA_AvOpen(BD_ADDR bd_addr, tBTA_AV_HNDL handle,
- bool use_rc, tBTA_SEC sec_mask, uint16_t uuid);
+void BTA_AvOpen(BD_ADDR bd_addr, tBTA_AV_HNDL handle, bool use_rc,
+ tBTA_SEC sec_mask, uint16_t uuid);
/*******************************************************************************
*
@@ -621,7 +614,8 @@
* Function BTA_AvReconfig
*
* Description Reconfigure the audio/video stream.
- * If suspend is true, this function tries the suspend/reconfigure
+ * If suspend is true, this function tries the
+ *suspend/reconfigure
* procedure first.
* If suspend is false or when suspend/reconfigure fails,
* this function closes and re-opens the AVDT connection.
@@ -630,8 +624,8 @@
*
******************************************************************************/
void BTA_AvReconfig(tBTA_AV_HNDL hndl, bool suspend, uint8_t sep_info_idx,
- uint8_t *p_codec_info, uint8_t num_protect,
- const uint8_t *p_protect_info);
+ uint8_t* p_codec_info, uint8_t num_protect,
+ const uint8_t* p_protect_info);
/*******************************************************************************
*
@@ -643,7 +637,7 @@
* Returns void
*
******************************************************************************/
-void BTA_AvProtectReq(tBTA_AV_HNDL hndl, uint8_t *p_data, uint16_t len);
+void BTA_AvProtectReq(tBTA_AV_HNDL hndl, uint8_t* p_data, uint16_t len);
/*******************************************************************************
*
@@ -657,8 +651,8 @@
* Returns void
*
******************************************************************************/
-void BTA_AvProtectRsp(tBTA_AV_HNDL hndl, uint8_t error_code, uint8_t *p_data,
- uint16_t len);
+void BTA_AvProtectRsp(tBTA_AV_HNDL hndl, uint8_t error_code, uint8_t* p_data,
+ uint16_t len);
/*******************************************************************************
*
@@ -671,7 +665,7 @@
*
******************************************************************************/
void BTA_AvRemoteCmd(uint8_t rc_handle, uint8_t label, tBTA_AV_RC rc_id,
- tBTA_AV_STATE key_state);
+ tBTA_AV_STATE key_state);
/*******************************************************************************
*
@@ -684,8 +678,9 @@
* Returns void
*
******************************************************************************/
-void BTA_AvRemoteVendorUniqueCmd(uint8_t rc_handle, uint8_t label, tBTA_AV_STATE key_state,
- uint8_t* p_msg, uint8_t buf_len);
+void BTA_AvRemoteVendorUniqueCmd(uint8_t rc_handle, uint8_t label,
+ tBTA_AV_STATE key_state, uint8_t* p_msg,
+ uint8_t buf_len);
/*******************************************************************************
*
@@ -699,7 +694,7 @@
*
******************************************************************************/
void BTA_AvVendorCmd(uint8_t rc_handle, uint8_t label, tBTA_AV_CODE cmd_code,
- uint8_t *p_data, uint16_t len);
+ uint8_t* p_data, uint16_t len);
/*******************************************************************************
*
@@ -714,8 +709,7 @@
*
******************************************************************************/
void BTA_AvVendorRsp(uint8_t rc_handle, uint8_t label, tBTA_AV_CODE rsp_code,
- uint8_t *p_data, uint16_t len, uint32_t company_id);
-
+ uint8_t* p_data, uint16_t len, uint32_t company_id);
/*******************************************************************************
*
@@ -753,30 +747,35 @@
*
******************************************************************************/
void BTA_AvMetaRsp(uint8_t rc_handle, uint8_t label, tBTA_AV_CODE rsp_code,
- BT_HDR *p_pkt);
+ BT_HDR* p_pkt);
/*******************************************************************************
*
* Function BTA_AvMetaCmd
*
- * Description Send a Metadata/Advanced Control command. The message contained
+ * Description Send a Metadata/Advanced Control command. The message
+*contained
* in p_pkt can be composed with AVRC utility functions.
* This function can only be used if AV is enabled with feature
* BTA_AV_FEAT_METADATA.
- * This message is sent only when the peer supports the TG role.
-*8 The only command makes sense right now is the absolute volume command.
+ * This message is sent only when the peer supports the TG
+*role.
+*8 The only command makes sense right now is the absolute
+*volume command.
*
* Returns void
*
******************************************************************************/
-void BTA_AvMetaCmd(uint8_t rc_handle, uint8_t label, tBTA_AV_CMD cmd_code, BT_HDR *p_pkt);
+void BTA_AvMetaCmd(uint8_t rc_handle, uint8_t label, tBTA_AV_CMD cmd_code,
+ BT_HDR* p_pkt);
/*******************************************************************************
*
* Function BTA_AvOffloadStart
*
* Description Request Starting of A2DP Offload.
- * This function is used to start A2DP offload if vendor lib has
+ * This function is used to start A2DP offload if vendor lib
+ *has
* the feature enabled.
*
* Returns void
@@ -796,7 +795,6 @@
******************************************************************************/
void BTA_AvOffloadStartRsp(tBTA_AV_HNDL hndl, tBTA_AV_STATUS status);
-
#ifdef __cplusplus
}
#endif
diff --git a/bta/include/bta_av_ci.h b/bta/include/bta_av_ci.h
index 099f113..f4b4a37 100644
--- a/bta/include/bta_av_ci.h
+++ b/bta/include/bta_av_ci.h
@@ -30,8 +30,7 @@
* Function Declarations
****************************************************************************/
#ifdef __cplusplus
-extern "C"
-{
+extern "C" {
#endif
/*******************************************************************************
@@ -61,9 +60,9 @@
*
******************************************************************************/
extern void bta_av_ci_setconfig(tBTA_AV_HNDL hndl, uint8_t err_code,
- uint8_t category, uint8_t num_seid, uint8_t *p_seid,
- bool recfg_needed, uint8_t avdt_handle);
-
+ uint8_t category, uint8_t num_seid,
+ uint8_t* p_seid, bool recfg_needed,
+ uint8_t avdt_handle);
#ifdef __cplusplus
}
diff --git a/bta/include/bta_av_co.h b/bta/include/bta_av_co.h
index c4679da..271099e 100644
--- a/bta/include/bta_av_co.h
+++ b/bta/include/bta_av_co.h
@@ -24,8 +24,8 @@
#ifndef BTA_AV_CO_H
#define BTA_AV_CO_H
-#include "l2c_api.h"
#include "bta_av_api.h"
+#include "l2c_api.h"
#ifdef __cplusplus
extern "C" {
@@ -49,7 +49,7 @@
*
******************************************************************************/
bool bta_av_co_audio_init(tA2DP_CODEC_SEP_INDEX codec_sep_index,
- tAVDT_CFG *p_cfg);
+ tAVDT_CFG* p_cfg);
/*******************************************************************************
*
@@ -79,33 +79,34 @@
* Returns Stream codec and content protection configuration info.
*
******************************************************************************/
-tA2DP_STATUS bta_av_co_audio_getconfig(tBTA_AV_HNDL hndl,
- uint8_t *p_codec_info,
- uint8_t *p_sep_info_idx, uint8_t seid,
- uint8_t *p_num_protect,
- uint8_t *p_protect_info);
+tA2DP_STATUS bta_av_co_audio_getconfig(tBTA_AV_HNDL hndl, uint8_t* p_codec_info,
+ uint8_t* p_sep_info_idx, uint8_t seid,
+ uint8_t* p_num_protect,
+ uint8_t* p_protect_info);
/*******************************************************************************
*
* Function bta_av_co_audio_setconfig
*
* Description This callout function is executed by AV to set the
- * codec and content protection configuration of the audio stream.
+ * codec and content protection configuration of the audio
+ *stream.
*
*
* Returns void
*
******************************************************************************/
-void bta_av_co_audio_setconfig(tBTA_AV_HNDL hndl, const uint8_t *p_codec_info,
+void bta_av_co_audio_setconfig(tBTA_AV_HNDL hndl, const uint8_t* p_codec_info,
uint8_t seid, BD_ADDR addr, uint8_t num_protect,
- uint8_t *p_protect_info,uint8_t t_local_sep,
+ uint8_t* p_protect_info, uint8_t t_local_sep,
uint8_t avdt_handle);
/*******************************************************************************
*
* Function bta_av_co_audio_open
*
- * Description This function is called by AV when the audio stream connection
+ * Description This function is called by AV when the audio stream
+ *connection
* is opened.
* BTA-AV maintains the MTU of A2DP streams.
* If this is the 2nd audio stream, mtu is the smaller of the 2
@@ -114,14 +115,15 @@
* Returns void
*
******************************************************************************/
-void bta_av_co_audio_open(tBTA_AV_HNDL hndl, uint8_t *p_codec_info,
+void bta_av_co_audio_open(tBTA_AV_HNDL hndl, uint8_t* p_codec_info,
uint16_t mtu);
/*******************************************************************************
*
* Function bta_av_co_audio_close
*
- * Description This function is called by AV when the audio stream connection
+ * Description This function is called by AV when the audio stream
+ *connection
* is closed.
* BTA-AV maintains the MTU of A2DP streams.
* When one stream is closed and no other audio stream is open,
@@ -144,8 +146,8 @@
* Returns void
*
******************************************************************************/
-void bta_av_co_audio_start(tBTA_AV_HNDL hndl, uint8_t *p_codec_info,
- bool *p_no_rtp_hdr);
+void bta_av_co_audio_start(tBTA_AV_HNDL hndl, uint8_t* p_codec_info,
+ bool* p_no_rtp_hdr);
/*******************************************************************************
*
@@ -171,8 +173,8 @@
* Otherwise, a buffer (BT_HDR*) containing the audio data.
*
******************************************************************************/
-void *bta_av_co_audio_src_data_path(const uint8_t *p_codec_info,
- uint32_t *p_timestamp);
+void* bta_av_co_audio_src_data_path(const uint8_t* p_codec_info,
+ uint32_t* p_timestamp);
/*******************************************************************************
*
@@ -192,7 +194,8 @@
*
* Function bta_av_co_audio_delay
*
- * Description This function is called by AV when the audio stream connection
+ * Description This function is called by AV when the audio stream
+ *connection
* needs to send the initial delay report to the connected SRC.
*
*
diff --git a/bta/include/bta_dm_ci.h b/bta/include/bta_dm_ci.h
index 7ccbfad..7354476 100644
--- a/bta/include/bta_dm_ci.h
+++ b/bta/include/bta_dm_ci.h
@@ -45,7 +45,7 @@
*
******************************************************************************/
extern void bta_dm_ci_io_req(BD_ADDR bd_addr, tBTA_IO_CAP io_cap,
- tBTA_OOB_DATA oob_data, tBTA_AUTH_REQ auth_req);
+ tBTA_OOB_DATA oob_data, tBTA_AUTH_REQ auth_req);
/*******************************************************************************
*
@@ -58,8 +58,8 @@
* Returns void
*
******************************************************************************/
-extern void bta_dm_ci_rmt_oob(bool accept, BD_ADDR bd_addr,
- BT_OCTET16 c, BT_OCTET16 r);
+extern void bta_dm_ci_rmt_oob(bool accept, BD_ADDR bd_addr, BT_OCTET16 c,
+ BT_OCTET16 r);
/*******************************************************************************
*
* Function bta_dm_sco_ci_data_ready
diff --git a/bta/include/bta_dm_co.h b/bta/include/bta_dm_co.h
index e1397fd..1dffd88 100644
--- a/bta/include/bta_dm_co.h
+++ b/bta/include/bta_dm_co.h
@@ -31,28 +31,24 @@
#endif
#ifndef BTA_SCO_OUT_PKT_SIZE
- #define BTA_SCO_OUT_PKT_SIZE BTM_SCO_DATA_SIZE_MAX
+#define BTA_SCO_OUT_PKT_SIZE BTM_SCO_DATA_SIZE_MAX
#endif
-#define BTA_SCO_CODEC_PCM 0 /* used for regular SCO */
-#define BTA_SCO_CODEC_SBC 1 /* used for WBS */
-typedef uint8_t tBTA_SCO_CODEC_TYPE;
+#define BTA_SCO_CODEC_PCM 0 /* used for regular SCO */
+#define BTA_SCO_CODEC_SBC 1 /* used for WBS */
+typedef uint8_t tBTA_SCO_CODEC_TYPE;
-#define BTA_DM_SCO_SAMP_RATE_8K 8000
-#define BTA_DM_SCO_SAMP_RATE_16K 16000
+#define BTA_DM_SCO_SAMP_RATE_8K 8000
+#define BTA_DM_SCO_SAMP_RATE_16K 16000
/* SCO codec information */
-typedef struct
-{
- tBTA_SCO_CODEC_TYPE codec_type;
-}tBTA_CODEC_INFO;
+typedef struct { tBTA_SCO_CODEC_TYPE codec_type; } tBTA_CODEC_INFO;
-#define BTA_DM_SCO_ROUTE_PCM BTM_SCO_ROUTE_PCM
-#define BTA_DM_SCO_ROUTE_HCI BTM_SCO_ROUTE_HCI
+#define BTA_DM_SCO_ROUTE_PCM BTM_SCO_ROUTE_PCM
+#define BTA_DM_SCO_ROUTE_HCI BTM_SCO_ROUTE_HCI
typedef tBTM_SCO_ROUTE_TYPE tBTA_DM_SCO_ROUTE_TYPE;
-
/*****************************************************************************
* Function Declarations
****************************************************************************/
@@ -61,31 +57,35 @@
*
* Function bta_dm_co_io_req
*
- * Description This callout function is executed by DM to get IO capabilities
+ * Description This callout function is executed by DM to get IO
+ *capabilities
* of the local device for the Simple Pairing process
*
* Parameters bd_addr - The peer device
* *p_io_cap - The local Input/Output capabilities
- * *p_oob_data - true, if OOB data is available for the peer device.
+ * *p_oob_data - true, if OOB data is available for the peer
+ *device.
* *p_auth_req - true, if MITM protection is required.
*
* Returns void.
*
******************************************************************************/
-extern void bta_dm_co_io_req(BD_ADDR bd_addr, tBTA_IO_CAP *p_io_cap,
- tBTA_OOB_DATA *p_oob_data, tBTA_AUTH_REQ *p_auth_req,
- bool is_orig);
+extern void bta_dm_co_io_req(BD_ADDR bd_addr, tBTA_IO_CAP* p_io_cap,
+ tBTA_OOB_DATA* p_oob_data,
+ tBTA_AUTH_REQ* p_auth_req, bool is_orig);
/*******************************************************************************
*
* Function bta_dm_co_io_rsp
*
- * Description This callout function is executed by DM to report IO capabilities
+ * Description This callout function is executed by DM to report IO
+ *capabilities
* of the peer device for the Simple Pairing process
*
* Parameters bd_addr - The peer device
* io_cap - The remote Input/Output capabilities
- * oob_data - true, if OOB data is available for the peer device.
+ * oob_data - true, if OOB data is available for the peer
+ *device.
* auth_req - true, if MITM protection is required.
*
* Returns void.
@@ -107,7 +107,7 @@
* Returns void.
*
******************************************************************************/
-extern void bta_dm_co_lk_upgrade(BD_ADDR bd_addr, bool *p_upgrade );
+extern void bta_dm_co_lk_upgrade(BD_ADDR bd_addr, bool* p_upgrade);
/*******************************************************************************
*
@@ -147,7 +147,8 @@
* Function bta_dm_sco_co_init
*
* Description This function can be used by the phone to initialize audio
- * codec or for other initialization purposes before SCO connection
+ * codec or for other initialization purposes before SCO
+ *connection
* is opened.
*
*
@@ -155,8 +156,8 @@
*
******************************************************************************/
extern tBTA_DM_SCO_ROUTE_TYPE bta_dm_sco_co_init(uint32_t rx_bw, uint32_t tx_bw,
- tBTA_CODEC_INFO *p_codec_info, uint8_t app_id);
-
+ tBTA_CODEC_INFO* p_codec_info,
+ uint8_t app_id);
/*******************************************************************************
*
@@ -168,7 +169,8 @@
* Returns void
*
******************************************************************************/
-extern void bta_dm_sco_co_open(uint16_t handle, uint8_t pkt_size, uint16_t event);
+extern void bta_dm_sco_co_open(uint16_t handle, uint8_t pkt_size,
+ uint16_t event);
/*******************************************************************************
*
@@ -191,32 +193,34 @@
* Returns void
*
******************************************************************************/
-extern void bta_dm_sco_co_out_data(BT_HDR **p_buf);
+extern void bta_dm_sco_co_out_data(BT_HDR** p_buf);
/*******************************************************************************
*
* Function bta_dm_sco_co_in_data
*
- * Description This function is called to send incoming SCO data to application.
+ * Description This function is called to send incoming SCO data to
+ *application.
*
* Returns void
*
******************************************************************************/
-extern void bta_dm_sco_co_in_data(BT_HDR *p_buf, tBTM_SCO_DATA_FLAG status);
-
-
+extern void bta_dm_sco_co_in_data(BT_HDR* p_buf, tBTM_SCO_DATA_FLAG status);
/*******************************************************************************
*
* Function bta_dm_co_ble_io_req
*
- * Description This callout function is executed by DM to get BLE IO capabilities
+ * Description This callout function is executed by DM to get BLE IO
+ *capabilities
* before SMP pairing gets going.
*
* Parameters bd_addr - The peer device
* *p_io_cap - The local Input/Output capabilities
- * *p_oob_data - true, if OOB data is available for the peer device.
- * *p_auth_req - Auth request setting (Bonding and MITM required or not)
+ * *p_oob_data - true, if OOB data is available for the peer
+ *device.
+ * *p_auth_req - Auth request setting (Bonding and MITM
+ *required or not)
* *p_max_key_size - max key size local device supported.
* *p_init_key - initiator keys.
* *p_resp_key - responder keys.
@@ -224,19 +228,19 @@
* Returns void.
*
******************************************************************************/
-extern void bta_dm_co_ble_io_req(BD_ADDR bd_addr, tBTA_IO_CAP *p_io_cap,
- tBTA_OOB_DATA *p_oob_data,
- tBTA_LE_AUTH_REQ *p_auth_req,
- uint8_t *p_max_key_size,
- tBTA_LE_KEY_TYPE *p_init_key,
- tBTA_LE_KEY_TYPE *p_resp_key );
-
+extern void bta_dm_co_ble_io_req(BD_ADDR bd_addr, tBTA_IO_CAP* p_io_cap,
+ tBTA_OOB_DATA* p_oob_data,
+ tBTA_LE_AUTH_REQ* p_auth_req,
+ uint8_t* p_max_key_size,
+ tBTA_LE_KEY_TYPE* p_init_key,
+ tBTA_LE_KEY_TYPE* p_resp_key);
/*******************************************************************************
*
* Function bta_dm_co_ble_local_key_reload
*
- * Description This callout function is to load the local BLE keys if available
+ * Description This callout function is to load the local BLE keys if
+ *available
* on the device.
*
* Parameters none
@@ -244,20 +248,24 @@
* Returns void.
*
******************************************************************************/
-extern void bta_dm_co_ble_load_local_keys (tBTA_DM_BLE_LOCAL_KEY_MASK *p_key_mask, BT_OCTET16 er,
- tBTA_BLE_LOCAL_ID_KEYS *p_id_keys);
+extern void bta_dm_co_ble_load_local_keys(
+ tBTA_DM_BLE_LOCAL_KEY_MASK* p_key_mask, BT_OCTET16 er,
+ tBTA_BLE_LOCAL_ID_KEYS* p_id_keys);
/*******************************************************************************
*
* Function bta_dm_co_ble_io_req
*
- * Description This callout function is executed by DM to get BLE IO capabilities
+ * Description This callout function is executed by DM to get BLE IO
+ *capabilities
* before SMP pairing gets going.
*
* Parameters bd_addr - The peer device
* *p_io_cap - The local Input/Output capabilities
- * *p_oob_data - true, if OOB data is available for the peer device.
- * *p_auth_req - Auth request setting (Bonding and MITM required or not)
+ * *p_oob_data - true, if OOB data is available for the peer
+ *device.
+ * *p_auth_req - Auth request setting (Bonding and MITM
+ *required or not)
* *p_max_key_size - max key size local device supported.
* *p_init_key - initiator keys.
* *p_resp_key - responder keys.
@@ -265,12 +273,12 @@
* Returns void.
*
******************************************************************************/
-extern void bta_dm_co_ble_io_req(BD_ADDR bd_addr, tBTA_IO_CAP *p_io_cap,
- tBTA_OOB_DATA *p_oob_data,
- tBTA_LE_AUTH_REQ *p_auth_req,
- uint8_t *p_max_key_size,
- tBTA_LE_KEY_TYPE *p_init_key,
- tBTA_LE_KEY_TYPE *p_resp_key );
+extern void bta_dm_co_ble_io_req(BD_ADDR bd_addr, tBTA_IO_CAP* p_io_cap,
+ tBTA_OOB_DATA* p_oob_data,
+ tBTA_LE_AUTH_REQ* p_auth_req,
+ uint8_t* p_max_key_size,
+ tBTA_LE_KEY_TYPE* p_init_key,
+ tBTA_LE_KEY_TYPE* p_resp_key);
#ifdef __cplusplus
}
diff --git a/bta/include/bta_gatt_api.h b/bta/include/bta_gatt_api.h
index 66ae35e..1be65fd 100644
--- a/bta/include/bta_gatt_api.h
+++ b/bta/include/bta_gatt_api.h
@@ -34,19 +34,18 @@
using std::vector;
-#ifndef BTA_GATT_INCLUDED
+#ifndef BTA_GATT_INCLUDED
#warning BTA_GATT_INCLUDED not defined
-#define BTA_GATT_INCLUDED false
+#define BTA_GATT_INCLUDED false
#endif
#if (BLE_INCLUDED == FALSE && BTA_GATT_INCLUDED == TRUE)
#undef BTA_GATT_INCLUDED
-#define BTA_GATT_INCLUDED false
+#define BTA_GATT_INCLUDED false
#endif
-
-#ifndef BTA_GATT_DEBUG
-#define BTA_GATT_DEBUG false
+#ifndef BTA_GATT_DEBUG
+#define BTA_GATT_DEBUG false
#endif
/*****************************************************************************
@@ -56,380 +55,380 @@
* Common Definitions
**************************/
/* GATT ID */
-typedef struct
-{
- tBT_UUID uuid; /* uuid of the attribute */
- uint8_t inst_id; /* instance ID */
+typedef struct {
+ tBT_UUID uuid; /* uuid of the attribute */
+ uint8_t inst_id; /* instance ID */
} __attribute__((packed)) tBTA_GATT_ID;
/* Success code and error codes */
-#define BTA_GATT_OK GATT_SUCCESS
-#define BTA_GATT_INVALID_HANDLE GATT_INVALID_HANDLE /* 0x0001 */
-#define BTA_GATT_READ_NOT_PERMIT GATT_READ_NOT_PERMIT /* 0x0002 */
-#define BTA_GATT_WRITE_NOT_PERMIT GATT_WRITE_NOT_PERMIT /* 0x0003 */
-#define BTA_GATT_INVALID_PDU GATT_INVALID_PDU /* 0x0004 */
-#define BTA_GATT_INSUF_AUTHENTICATION GATT_INSUF_AUTHENTICATION /* 0x0005 */
-#define BTA_GATT_REQ_NOT_SUPPORTED GATT_REQ_NOT_SUPPORTED /* 0x0006 */
-#define BTA_GATT_INVALID_OFFSET GATT_INVALID_OFFSET /* 0x0007 */
-#define BTA_GATT_INSUF_AUTHORIZATION GATT_INSUF_AUTHORIZATION /* 0x0008 */
-#define BTA_GATT_PREPARE_Q_FULL GATT_PREPARE_Q_FULL /* 0x0009 */
-#define BTA_GATT_NOT_FOUND GATT_NOT_FOUND /* 0x000a */
-#define BTA_GATT_NOT_LONG GATT_NOT_LONG /* 0x000b */
-#define BTA_GATT_INSUF_KEY_SIZE GATT_INSUF_KEY_SIZE /* 0x000c */
-#define BTA_GATT_INVALID_ATTR_LEN GATT_INVALID_ATTR_LEN /* 0x000d */
-#define BTA_GATT_ERR_UNLIKELY GATT_ERR_UNLIKELY /* 0x000e */
-#define BTA_GATT_INSUF_ENCRYPTION GATT_INSUF_ENCRYPTION /* 0x000f */
-#define BTA_GATT_UNSUPPORT_GRP_TYPE GATT_UNSUPPORT_GRP_TYPE /* 0x0010 */
-#define BTA_GATT_INSUF_RESOURCE GATT_INSUF_RESOURCE /* 0x0011 */
+#define BTA_GATT_OK GATT_SUCCESS
+#define BTA_GATT_INVALID_HANDLE GATT_INVALID_HANDLE /* 0x0001 */
+#define BTA_GATT_READ_NOT_PERMIT GATT_READ_NOT_PERMIT /* 0x0002 */
+#define BTA_GATT_WRITE_NOT_PERMIT GATT_WRITE_NOT_PERMIT /* 0x0003 */
+#define BTA_GATT_INVALID_PDU GATT_INVALID_PDU /* 0x0004 */
+#define BTA_GATT_INSUF_AUTHENTICATION GATT_INSUF_AUTHENTICATION /* 0x0005 */
+#define BTA_GATT_REQ_NOT_SUPPORTED GATT_REQ_NOT_SUPPORTED /* 0x0006 */
+#define BTA_GATT_INVALID_OFFSET GATT_INVALID_OFFSET /* 0x0007 */
+#define BTA_GATT_INSUF_AUTHORIZATION GATT_INSUF_AUTHORIZATION /* 0x0008 */
+#define BTA_GATT_PREPARE_Q_FULL GATT_PREPARE_Q_FULL /* 0x0009 */
+#define BTA_GATT_NOT_FOUND GATT_NOT_FOUND /* 0x000a */
+#define BTA_GATT_NOT_LONG GATT_NOT_LONG /* 0x000b */
+#define BTA_GATT_INSUF_KEY_SIZE GATT_INSUF_KEY_SIZE /* 0x000c */
+#define BTA_GATT_INVALID_ATTR_LEN GATT_INVALID_ATTR_LEN /* 0x000d */
+#define BTA_GATT_ERR_UNLIKELY GATT_ERR_UNLIKELY /* 0x000e */
+#define BTA_GATT_INSUF_ENCRYPTION GATT_INSUF_ENCRYPTION /* 0x000f */
+#define BTA_GATT_UNSUPPORT_GRP_TYPE GATT_UNSUPPORT_GRP_TYPE /* 0x0010 */
+#define BTA_GATT_INSUF_RESOURCE GATT_INSUF_RESOURCE /* 0x0011 */
+#define BTA_GATT_NO_RESOURCES GATT_NO_RESOURCES /* 0x80 */
+#define BTA_GATT_INTERNAL_ERROR GATT_INTERNAL_ERROR /* 0x81 */
+#define BTA_GATT_WRONG_STATE GATT_WRONG_STATE /* 0x82 */
+#define BTA_GATT_DB_FULL GATT_DB_FULL /* 0x83 */
+#define BTA_GATT_BUSY GATT_BUSY /* 0x84 */
+#define BTA_GATT_ERROR GATT_ERROR /* 0x85 */
+#define BTA_GATT_CMD_STARTED GATT_CMD_STARTED /* 0x86 */
+#define BTA_GATT_ILLEGAL_PARAMETER GATT_ILLEGAL_PARAMETER /* 0x87 */
+#define BTA_GATT_PENDING GATT_PENDING /* 0x88 */
+#define BTA_GATT_AUTH_FAIL GATT_AUTH_FAIL /* 0x89 */
+#define BTA_GATT_MORE GATT_MORE /* 0x8a */
+#define BTA_GATT_INVALID_CFG GATT_INVALID_CFG /* 0x8b */
+#define BTA_GATT_SERVICE_STARTED GATT_SERVICE_STARTED /* 0x8c */
+#define BTA_GATT_ENCRYPED_MITM GATT_ENCRYPED_MITM /* GATT_SUCCESS */
+#define BTA_GATT_ENCRYPED_NO_MITM GATT_ENCRYPED_NO_MITM /* 0x8d */
+#define BTA_GATT_NOT_ENCRYPTED GATT_NOT_ENCRYPTED /* 0x8e */
+#define BTA_GATT_CONGESTED GATT_CONGESTED /* 0x8f */
-#define BTA_GATT_NO_RESOURCES GATT_NO_RESOURCES /* 0x80 */
-#define BTA_GATT_INTERNAL_ERROR GATT_INTERNAL_ERROR /* 0x81 */
-#define BTA_GATT_WRONG_STATE GATT_WRONG_STATE /* 0x82 */
-#define BTA_GATT_DB_FULL GATT_DB_FULL /* 0x83 */
-#define BTA_GATT_BUSY GATT_BUSY /* 0x84 */
-#define BTA_GATT_ERROR GATT_ERROR /* 0x85 */
-#define BTA_GATT_CMD_STARTED GATT_CMD_STARTED /* 0x86 */
-#define BTA_GATT_ILLEGAL_PARAMETER GATT_ILLEGAL_PARAMETER /* 0x87 */
-#define BTA_GATT_PENDING GATT_PENDING /* 0x88 */
-#define BTA_GATT_AUTH_FAIL GATT_AUTH_FAIL /* 0x89 */
-#define BTA_GATT_MORE GATT_MORE /* 0x8a */
-#define BTA_GATT_INVALID_CFG GATT_INVALID_CFG /* 0x8b */
-#define BTA_GATT_SERVICE_STARTED GATT_SERVICE_STARTED /* 0x8c */
-#define BTA_GATT_ENCRYPED_MITM GATT_ENCRYPED_MITM /* GATT_SUCCESS */
-#define BTA_GATT_ENCRYPED_NO_MITM GATT_ENCRYPED_NO_MITM /* 0x8d */
-#define BTA_GATT_NOT_ENCRYPTED GATT_NOT_ENCRYPTED /* 0x8e */
-#define BTA_GATT_CONGESTED GATT_CONGESTED /* 0x8f */
+#define BTA_GATT_DUP_REG 0x90 /* 0x90 */
+#define BTA_GATT_ALREADY_OPEN 0x91 /* 0x91 */
+#define BTA_GATT_CANCEL 0x92 /* 0x92 */
-#define BTA_GATT_DUP_REG 0x90 /* 0x90 */
-#define BTA_GATT_ALREADY_OPEN 0x91 /* 0x91 */
-#define BTA_GATT_CANCEL 0x92 /* 0x92 */
-
- /* 0xE0 ~ 0xFC reserved for future use */
-#define BTA_GATT_CCC_CFG_ERR GATT_CCC_CFG_ERR /* 0xFD Client Characteristic Configuration Descriptor Improperly Configured */
-#define BTA_GATT_PRC_IN_PROGRESS GATT_PRC_IN_PROGRESS /* 0xFE Procedure Already in progress */
-#define BTA_GATT_OUT_OF_RANGE GATT_OUT_OF_RANGE /* 0xFFAttribute value out of range */
+/* 0xE0 ~ 0xFC reserved for future use */
+#define BTA_GATT_CCC_CFG_ERR \
+ GATT_CCC_CFG_ERR /* 0xFD Client Characteristic Configuration Descriptor \
+ Improperly Configured */
+#define BTA_GATT_PRC_IN_PROGRESS \
+ GATT_PRC_IN_PROGRESS /* 0xFE Procedure Already in progress */
+#define BTA_GATT_OUT_OF_RANGE \
+ GATT_OUT_OF_RANGE /* 0xFFAttribute value out of range */
typedef uint8_t tBTA_GATT_STATUS;
-#define BTA_GATT_INVALID_CONN_ID GATT_INVALID_CONN_ID
-
+#define BTA_GATT_INVALID_CONN_ID GATT_INVALID_CONN_ID
/* Client callback function events */
-#define BTA_GATTC_REG_EVT 0 /* GATT client is registered. */
-#define BTA_GATTC_DEREG_EVT 1 /* GATT client deregistered event */
-#define BTA_GATTC_OPEN_EVT 2 /* GATTC open request status event */
-#define BTA_GATTC_CLOSE_EVT 5 /* GATTC close request status event */
-#define BTA_GATTC_SEARCH_CMPL_EVT 6 /* GATT discovery complete event */
-#define BTA_GATTC_SEARCH_RES_EVT 7 /* GATT discovery result event */
-#define BTA_GATTC_NOTIF_EVT 10 /* GATT attribute notification event */
-#define BTA_GATTC_EXEC_EVT 12 /* execute write complete event */
-#define BTA_GATTC_ACL_EVT 13 /* ACL up event */
-#define BTA_GATTC_CANCEL_OPEN_EVT 14 /* cancel open event */
-#define BTA_GATTC_SRVC_CHG_EVT 15 /* service change event */
-#define BTA_GATTC_ENC_CMPL_CB_EVT 17 /* encryption complete callback event */
-#define BTA_GATTC_CFG_MTU_EVT 18 /* configure MTU complete event */
-#define BTA_GATTC_CONGEST_EVT 24 /* Congestion event */
+#define BTA_GATTC_REG_EVT 0 /* GATT client is registered. */
+#define BTA_GATTC_DEREG_EVT 1 /* GATT client deregistered event */
+#define BTA_GATTC_OPEN_EVT 2 /* GATTC open request status event */
+#define BTA_GATTC_CLOSE_EVT 5 /* GATTC close request status event */
+#define BTA_GATTC_SEARCH_CMPL_EVT 6 /* GATT discovery complete event */
+#define BTA_GATTC_SEARCH_RES_EVT 7 /* GATT discovery result event */
+#define BTA_GATTC_NOTIF_EVT 10 /* GATT attribute notification event */
+#define BTA_GATTC_EXEC_EVT 12 /* execute write complete event */
+#define BTA_GATTC_ACL_EVT 13 /* ACL up event */
+#define BTA_GATTC_CANCEL_OPEN_EVT 14 /* cancel open event */
+#define BTA_GATTC_SRVC_CHG_EVT 15 /* service change event */
+#define BTA_GATTC_ENC_CMPL_CB_EVT 17 /* encryption complete callback event */
+#define BTA_GATTC_CFG_MTU_EVT 18 /* configure MTU complete event */
+#define BTA_GATTC_CONGEST_EVT 24 /* Congestion event */
typedef uint8_t tBTA_GATTC_EVT;
typedef tGATT_IF tBTA_GATTC_IF;
-typedef struct
-{
- uint16_t unit; /* as UUIUD defined by SIG */
- uint16_t descr; /* as UUID as defined by SIG */
- tGATT_FORMAT format;
- int8_t exp;
- uint8_t name_spc; /* The name space of the description */
-}tBTA_GATT_CHAR_PRES;
+typedef struct {
+ uint16_t unit; /* as UUIUD defined by SIG */
+ uint16_t descr; /* as UUID as defined by SIG */
+ tGATT_FORMAT format;
+ int8_t exp;
+ uint8_t name_spc; /* The name space of the description */
+} tBTA_GATT_CHAR_PRES;
-#define BTA_GATT_CLT_CONFIG_NONE GATT_CLT_CONFIG_NONE /* 0x0000 */
-#define BTA_GATT_CLT_CONFIG_NOTIFICATION GATT_CLT_CONFIG_NOTIFICATION /* 0x0001 */
-#define BTA_GATT_CLT_CONFIG_INDICATION GATT_CLT_CONFIG_INDICATION /* 0x0002 */
-typedef uint16_t tBTA_GATT_CLT_CHAR_CONFIG;
+#define BTA_GATT_CLT_CONFIG_NONE GATT_CLT_CONFIG_NONE /* 0x0000 */
+#define BTA_GATT_CLT_CONFIG_NOTIFICATION \
+ GATT_CLT_CONFIG_NOTIFICATION /* 0x0001 */
+#define BTA_GATT_CLT_CONFIG_INDICATION GATT_CLT_CONFIG_INDICATION /* 0x0002 */
+typedef uint16_t tBTA_GATT_CLT_CHAR_CONFIG;
/* characteristic descriptor: server configuration value
*/
-#define BTA_GATT_SVR_CONFIG_NONE GATT_SVR_CONFIG_NONE /* 0x0000 */
-#define BTA_GATT_SVR_CONFIG_BROADCAST GATT_SVR_CONFIG_BROADCAST /* 0x0001 */
-typedef uint16_t tBTA_GATT_SVR_CHAR_CONFIG;
+#define BTA_GATT_SVR_CONFIG_NONE GATT_SVR_CONFIG_NONE /* 0x0000 */
+#define BTA_GATT_SVR_CONFIG_BROADCAST GATT_SVR_CONFIG_BROADCAST /* 0x0001 */
+typedef uint16_t tBTA_GATT_SVR_CHAR_CONFIG;
/* Characteristic Aggregate Format attribute value
*/
-#define BTA_GATT_AGGR_HANDLE_NUM_MAX 10
-typedef struct
-{
- uint8_t num_handle;
- uint16_t handle_list[BTA_GATT_AGGR_HANDLE_NUM_MAX];
+#define BTA_GATT_AGGR_HANDLE_NUM_MAX 10
+typedef struct {
+ uint8_t num_handle;
+ uint16_t handle_list[BTA_GATT_AGGR_HANDLE_NUM_MAX];
} tBTA_GATT_CHAR_AGGRE;
-typedef tGATT_VALID_RANGE tBTA_GATT_VALID_RANGE;
+typedef tGATT_VALID_RANGE tBTA_GATT_VALID_RANGE;
-typedef struct
-{
- uint16_t len;
- uint8_t *p_value;
-}tBTA_GATT_UNFMT;
+typedef struct {
+ uint16_t len;
+ uint8_t* p_value;
+} tBTA_GATT_UNFMT;
-#define BTA_GATT_MAX_ATTR_LEN GATT_MAX_ATTR_LEN
+#define BTA_GATT_MAX_ATTR_LEN GATT_MAX_ATTR_LEN
-#define BTA_GATTC_TYPE_WRITE GATT_WRITE
-#define BTA_GATTC_TYPE_WRITE_NO_RSP GATT_WRITE_NO_RSP
+#define BTA_GATTC_TYPE_WRITE GATT_WRITE
+#define BTA_GATTC_TYPE_WRITE_NO_RSP GATT_WRITE_NO_RSP
typedef uint8_t tBTA_GATTC_WRITE_TYPE;
-#define BTA_GATT_CONN_UNKNOWN 0
-#define BTA_GATT_CONN_L2C_FAILURE GATT_CONN_L2C_FAILURE /* general l2cap resource failure */
-#define BTA_GATT_CONN_TIMEOUT GATT_CONN_TIMEOUT /* 0x08 connection timeout */
-#define BTA_GATT_CONN_TERMINATE_PEER_USER GATT_CONN_TERMINATE_PEER_USER /* 0x13 connection terminate by peer user */
-#define BTA_GATT_CONN_TERMINATE_LOCAL_HOST GATT_CONN_TERMINATE_LOCAL_HOST/* 0x16 connectionterminated by local host */
-#define BTA_GATT_CONN_FAIL_ESTABLISH GATT_CONN_FAIL_ESTABLISH /* 0x03E connection fail to establish */
-#define BTA_GATT_CONN_LMP_TIMEOUT GATT_CONN_LMP_TIMEOUT /* 0x22 connection fail for LMP response tout */
-#define BTA_GATT_CONN_CANCEL GATT_CONN_CANCEL /* 0x0100 L2CAP connection cancelled */
-#define BTA_GATT_CONN_NONE 0x0101 /* 0x0101 no connection to cancel */
+#define BTA_GATT_CONN_UNKNOWN 0
+#define BTA_GATT_CONN_L2C_FAILURE \
+ GATT_CONN_L2C_FAILURE /* general l2cap resource failure */
+#define BTA_GATT_CONN_TIMEOUT GATT_CONN_TIMEOUT /* 0x08 connection timeout */
+#define BTA_GATT_CONN_TERMINATE_PEER_USER \
+ GATT_CONN_TERMINATE_PEER_USER /* 0x13 connection terminate by peer user */
+#define BTA_GATT_CONN_TERMINATE_LOCAL_HOST \
+ GATT_CONN_TERMINATE_LOCAL_HOST /* 0x16 connectionterminated by local host */
+#define BTA_GATT_CONN_FAIL_ESTABLISH \
+ GATT_CONN_FAIL_ESTABLISH /* 0x03E connection fail to establish */
+#define BTA_GATT_CONN_LMP_TIMEOUT \
+ GATT_CONN_LMP_TIMEOUT /* 0x22 connection fail for LMP response tout */
+#define BTA_GATT_CONN_CANCEL \
+ GATT_CONN_CANCEL /* 0x0100 L2CAP connection cancelled */
+#define BTA_GATT_CONN_NONE 0x0101 /* 0x0101 no connection to cancel */
typedef uint16_t tBTA_GATT_REASON;
-#define BTA_GATTC_MULTI_MAX GATT_MAX_READ_MULTI_HANDLES
+#define BTA_GATTC_MULTI_MAX GATT_MAX_READ_MULTI_HANDLES
-typedef struct
-{
- uint8_t num_attr;
- uint16_t handles[BTA_GATTC_MULTI_MAX];
-}tBTA_GATTC_MULTI;
+typedef struct {
+ uint8_t num_attr;
+ uint16_t handles[BTA_GATTC_MULTI_MAX];
+} tBTA_GATTC_MULTI;
-#define BTA_GATT_AUTH_REQ_NONE GATT_AUTH_REQ_NONE
-#define BTA_GATT_AUTH_REQ_NO_MITM GATT_AUTH_REQ_NO_MITM /* unauthenticated encryption */
-#define BTA_GATT_AUTH_REQ_MITM GATT_AUTH_REQ_MITM /* authenticated encryption */
+#define BTA_GATT_AUTH_REQ_NONE GATT_AUTH_REQ_NONE
+#define BTA_GATT_AUTH_REQ_NO_MITM \
+ GATT_AUTH_REQ_NO_MITM /* unauthenticated encryption */
+#define BTA_GATT_AUTH_REQ_MITM \
+ GATT_AUTH_REQ_MITM /* authenticated encryption \
+ */
#define BTA_GATT_AUTH_REQ_SIGNED_NO_MITM GATT_AUTH_REQ_SIGNED_NO_MITM
-#define BTA_GATT_AUTH_REQ_SIGNED_MITM GATT_AUTH_REQ_SIGNED_MITM
+#define BTA_GATT_AUTH_REQ_SIGNED_MITM GATT_AUTH_REQ_SIGNED_MITM
typedef tGATT_AUTH_REQ tBTA_GATT_AUTH_REQ;
-enum
-{
- BTA_GATTC_ATTR_TYPE_INCL_SRVC,
- BTA_GATTC_ATTR_TYPE_CHAR,
- BTA_GATTC_ATTR_TYPE_CHAR_DESCR,
- BTA_GATTC_ATTR_TYPE_SRVC
+enum {
+ BTA_GATTC_ATTR_TYPE_INCL_SRVC,
+ BTA_GATTC_ATTR_TYPE_CHAR,
+ BTA_GATTC_ATTR_TYPE_CHAR_DESCR,
+ BTA_GATTC_ATTR_TYPE_SRVC
};
typedef uint8_t tBTA_GATTC_ATTR_TYPE;
-
-typedef struct
-{
- tBT_UUID uuid;
- uint16_t s_handle;
- uint16_t e_handle; /* used for service only */
- uint8_t attr_type;
- uint8_t id;
- uint8_t prop; /* used when attribute type is characteristic */
- bool is_primary; /* used when attribute type is service */
- uint16_t incl_srvc_handle; /* used when attribute type is included service */
-}tBTA_GATTC_NV_ATTR;
+typedef struct {
+ tBT_UUID uuid;
+ uint16_t s_handle;
+ uint16_t e_handle; /* used for service only */
+ uint8_t attr_type;
+ uint8_t id;
+ uint8_t prop; /* used when attribute type is characteristic */
+ bool is_primary; /* used when attribute type is service */
+ uint16_t incl_srvc_handle; /* used when attribute type is included service */
+} tBTA_GATTC_NV_ATTR;
/* callback data structure */
-typedef struct
-{
- tBTA_GATT_STATUS status;
- tBTA_GATTC_IF client_if;
- tBT_UUID app_uuid;
-}tBTA_GATTC_REG;
+typedef struct {
+ tBTA_GATT_STATUS status;
+ tBTA_GATTC_IF client_if;
+ tBT_UUID app_uuid;
+} tBTA_GATTC_REG;
-typedef struct
-{
- uint16_t conn_id;
- tBTA_GATT_STATUS status;
- uint16_t handle;
- uint16_t len;
- uint8_t value[BTA_GATT_MAX_ATTR_LEN];
-}tBTA_GATTC_READ;
+typedef struct {
+ uint16_t conn_id;
+ tBTA_GATT_STATUS status;
+ uint16_t handle;
+ uint16_t len;
+ uint8_t value[BTA_GATT_MAX_ATTR_LEN];
+} tBTA_GATTC_READ;
-typedef struct
-{
- uint16_t conn_id;
- tBTA_GATT_STATUS status;
- uint16_t handle;
-}tBTA_GATTC_WRITE;
+typedef struct {
+ uint16_t conn_id;
+ tBTA_GATT_STATUS status;
+ uint16_t handle;
+} tBTA_GATTC_WRITE;
-typedef struct
-{
- uint16_t conn_id;
- tBTA_GATT_STATUS status;
-}tBTA_GATTC_EXEC_CMPL;
+typedef struct {
+ uint16_t conn_id;
+ tBTA_GATT_STATUS status;
+} tBTA_GATTC_EXEC_CMPL;
-typedef struct
-{
- uint16_t conn_id;
- tBTA_GATT_STATUS status;
-}tBTA_GATTC_SEARCH_CMPL;
+typedef struct {
+ uint16_t conn_id;
+ tBTA_GATT_STATUS status;
+} tBTA_GATTC_SEARCH_CMPL;
-typedef struct
-{
- uint16_t conn_id;
- tBTA_GATT_ID service_uuid;
-}tBTA_GATTC_SRVC_RES;
+typedef struct {
+ uint16_t conn_id;
+ tBTA_GATT_ID service_uuid;
+} tBTA_GATTC_SRVC_RES;
-typedef struct
-{
- uint16_t conn_id;
- tBTA_GATT_STATUS status;
- uint16_t mtu;
-}tBTA_GATTC_CFG_MTU;
+typedef struct {
+ uint16_t conn_id;
+ tBTA_GATT_STATUS status;
+ uint16_t mtu;
+} tBTA_GATTC_CFG_MTU;
-typedef struct
-{
- tBTA_GATT_STATUS status;
- uint16_t conn_id;
- tBTA_GATTC_IF client_if;
- BD_ADDR remote_bda;
- tBTA_TRANSPORT transport;
- uint16_t mtu;
-}tBTA_GATTC_OPEN;
+typedef struct {
+ tBTA_GATT_STATUS status;
+ uint16_t conn_id;
+ tBTA_GATTC_IF client_if;
+ BD_ADDR remote_bda;
+ tBTA_TRANSPORT transport;
+ uint16_t mtu;
+} tBTA_GATTC_OPEN;
-typedef struct
-{
- tBTA_GATT_STATUS status;
- uint16_t conn_id;
- tBTA_GATTC_IF client_if;
- BD_ADDR remote_bda;
- tBTA_GATT_REASON reason; /* disconnect reason code, not useful when connect event is reported */
-}tBTA_GATTC_CLOSE;
+typedef struct {
+ tBTA_GATT_STATUS status;
+ uint16_t conn_id;
+ tBTA_GATTC_IF client_if;
+ BD_ADDR remote_bda;
+ tBTA_GATT_REASON reason; /* disconnect reason code, not useful when connect
+ event is reported */
+} tBTA_GATTC_CLOSE;
-typedef struct
-{
- uint16_t conn_id;
- BD_ADDR bda;
- uint16_t handle;
- uint16_t len;
- uint8_t value[BTA_GATT_MAX_ATTR_LEN];
- bool is_notify;
-}tBTA_GATTC_NOTIFY;
+typedef struct {
+ uint16_t conn_id;
+ BD_ADDR bda;
+ uint16_t handle;
+ uint16_t len;
+ uint8_t value[BTA_GATT_MAX_ATTR_LEN];
+ bool is_notify;
+} tBTA_GATTC_NOTIFY;
-typedef struct
-{
- uint16_t conn_id;
- bool congested; /* congestion indicator */
-}tBTA_GATTC_CONGEST;
+typedef struct {
+ uint16_t conn_id;
+ bool congested; /* congestion indicator */
+} tBTA_GATTC_CONGEST;
-typedef struct
-{
- tBTA_GATT_STATUS status;
- tBTA_GATTC_IF client_if;
- uint16_t conn_id;
- BD_ADDR remote_bda;
-}tBTA_GATTC_OPEN_CLOSE;
+typedef struct {
+ tBTA_GATT_STATUS status;
+ tBTA_GATTC_IF client_if;
+ uint16_t conn_id;
+ BD_ADDR remote_bda;
+} tBTA_GATTC_OPEN_CLOSE;
-typedef struct
-{
- tBTA_GATTC_IF client_if;
- BD_ADDR remote_bda;
-}tBTA_GATTC_ENC_CMPL_CB;
+typedef struct {
+ tBTA_GATTC_IF client_if;
+ BD_ADDR remote_bda;
+} tBTA_GATTC_ENC_CMPL_CB;
-typedef union
-{
- tBTA_GATT_STATUS status;
+typedef union {
+ tBTA_GATT_STATUS status;
- tBTA_GATTC_SEARCH_CMPL search_cmpl; /* discovery complete */
- tBTA_GATTC_SRVC_RES srvc_res; /* discovery result */
- tBTA_GATTC_REG reg_oper; /* registration data */
- tBTA_GATTC_OPEN open;
- tBTA_GATTC_CLOSE close;
- tBTA_GATTC_READ read; /* read attribute/descriptor data */
- tBTA_GATTC_WRITE write; /* write complete data */
- tBTA_GATTC_EXEC_CMPL exec_cmpl; /* execute complete */
- tBTA_GATTC_NOTIFY notify; /* notification/indication event data */
- tBTA_GATTC_ENC_CMPL_CB enc_cmpl;
- BD_ADDR remote_bda; /* service change event */
- tBTA_GATTC_CFG_MTU cfg_mtu; /* configure MTU operation */
- tBTA_GATTC_CONGEST congest;
+ tBTA_GATTC_SEARCH_CMPL search_cmpl; /* discovery complete */
+ tBTA_GATTC_SRVC_RES srvc_res; /* discovery result */
+ tBTA_GATTC_REG reg_oper; /* registration data */
+ tBTA_GATTC_OPEN open;
+ tBTA_GATTC_CLOSE close;
+ tBTA_GATTC_READ read; /* read attribute/descriptor data */
+ tBTA_GATTC_WRITE write; /* write complete data */
+ tBTA_GATTC_EXEC_CMPL exec_cmpl; /* execute complete */
+ tBTA_GATTC_NOTIFY notify; /* notification/indication event data */
+ tBTA_GATTC_ENC_CMPL_CB enc_cmpl;
+ BD_ADDR remote_bda; /* service change event */
+ tBTA_GATTC_CFG_MTU cfg_mtu; /* configure MTU operation */
+ tBTA_GATTC_CONGEST congest;
} tBTA_GATTC;
/* GATTC enable callback function */
-typedef void (tBTA_GATTC_ENB_CBACK)(tBTA_GATT_STATUS status);
+typedef void(tBTA_GATTC_ENB_CBACK)(tBTA_GATT_STATUS status);
/* Client callback function */
-typedef void (tBTA_GATTC_CBACK)(tBTA_GATTC_EVT event, tBTA_GATTC *p_data);
-
+typedef void(tBTA_GATTC_CBACK)(tBTA_GATTC_EVT event, tBTA_GATTC* p_data);
/* GATT Server Data Structure */
/* Server callback function events */
-#define BTA_GATTS_REG_EVT 0
-#define BTA_GATTS_READ_CHARACTERISTIC_EVT GATTS_REQ_TYPE_READ_CHARACTERISTIC /* 1 */
-#define BTA_GATTS_READ_DESCRIPTOR_EVT GATTS_REQ_TYPE_READ_DESCRIPTOR /* 2 */
-#define BTA_GATTS_WRITE_CHARACTERISTIC_EVT GATTS_REQ_TYPE_WRITE_CHARACTERISTIC /* 3 */
-#define BTA_GATTS_WRITE_DESCRIPTOR_EVT GATTS_REQ_TYPE_WRITE_DESCRIPTOR /* 4 */
-#define BTA_GATTS_EXEC_WRITE_EVT GATTS_REQ_TYPE_WRITE_EXEC /* 5 */
-#define BTA_GATTS_MTU_EVT GATTS_REQ_TYPE_MTU /* 6 */
-#define BTA_GATTS_CONF_EVT GATTS_REQ_TYPE_CONF /* 7 */
-#define BTA_GATTS_DEREG_EVT 8
-#define BTA_GATTS_DELELTE_EVT 11
-#define BTA_GATTS_STOP_EVT 13
-#define BTA_GATTS_CONNECT_EVT 14
-#define BTA_GATTS_DISCONNECT_EVT 15
-#define BTA_GATTS_OPEN_EVT 16
-#define BTA_GATTS_CANCEL_OPEN_EVT 17
-#define BTA_GATTS_CLOSE_EVT 18
-#define BTA_GATTS_CONGEST_EVT 20
+#define BTA_GATTS_REG_EVT 0
+#define BTA_GATTS_READ_CHARACTERISTIC_EVT \
+ GATTS_REQ_TYPE_READ_CHARACTERISTIC /* 1 */
+#define BTA_GATTS_READ_DESCRIPTOR_EVT GATTS_REQ_TYPE_READ_DESCRIPTOR /* 2 */
+#define BTA_GATTS_WRITE_CHARACTERISTIC_EVT \
+ GATTS_REQ_TYPE_WRITE_CHARACTERISTIC /* 3 */
+#define BTA_GATTS_WRITE_DESCRIPTOR_EVT GATTS_REQ_TYPE_WRITE_DESCRIPTOR /* 4 */
+#define BTA_GATTS_EXEC_WRITE_EVT GATTS_REQ_TYPE_WRITE_EXEC /* 5 */
+#define BTA_GATTS_MTU_EVT GATTS_REQ_TYPE_MTU /* 6 */
+#define BTA_GATTS_CONF_EVT GATTS_REQ_TYPE_CONF /* 7 */
+#define BTA_GATTS_DEREG_EVT 8
+#define BTA_GATTS_DELELTE_EVT 11
+#define BTA_GATTS_STOP_EVT 13
+#define BTA_GATTS_CONNECT_EVT 14
+#define BTA_GATTS_DISCONNECT_EVT 15
+#define BTA_GATTS_OPEN_EVT 16
+#define BTA_GATTS_CANCEL_OPEN_EVT 17
+#define BTA_GATTS_CLOSE_EVT 18
+#define BTA_GATTS_CONGEST_EVT 20
-typedef uint8_t tBTA_GATTS_EVT;
+typedef uint8_t tBTA_GATTS_EVT;
typedef tGATT_IF tBTA_GATTS_IF;
/* Attribute permissions
*/
-#define BTA_GATT_PERM_READ GATT_PERM_READ /* bit 0 - 0x0001 */
-#define BTA_GATT_PERM_READ_ENCRYPTED GATT_PERM_READ_ENCRYPTED /* bit 1 - 0x0002 */
-#define BTA_GATT_PERM_READ_ENC_MITM GATT_PERM_READ_ENC_MITM /* bit 2 - 0x0004 */
-#define BTA_GATT_PERM_WRITE GATT_PERM_WRITE /* bit 4 - 0x0010 */
-#define BTA_GATT_PERM_WRITE_ENCRYPTED GATT_PERM_WRITE_ENCRYPTED /* bit 5 - 0x0020 */
-#define BTA_GATT_PERM_WRITE_ENC_MITM GATT_PERM_WRITE_ENC_MITM /* bit 6 - 0x0040 */
-#define BTA_GATT_PERM_WRITE_SIGNED GATT_PERM_WRITE_SIGNED /* bit 7 - 0x0080 */
-#define BTA_GATT_PERM_WRITE_SIGNED_MITM GATT_PERM_WRITE_SIGNED_MITM /* bit 8 - 0x0100 */
+#define BTA_GATT_PERM_READ GATT_PERM_READ /* bit 0 - 0x0001 */
+#define BTA_GATT_PERM_READ_ENCRYPTED \
+ GATT_PERM_READ_ENCRYPTED /* bit 1 - 0x0002 */
+#define BTA_GATT_PERM_READ_ENC_MITM \
+ GATT_PERM_READ_ENC_MITM /* bit 2 - 0x0004 */
+#define BTA_GATT_PERM_WRITE GATT_PERM_WRITE /* bit 4 - 0x0010 */
+#define BTA_GATT_PERM_WRITE_ENCRYPTED \
+ GATT_PERM_WRITE_ENCRYPTED /* bit 5 - 0x0020 */
+#define BTA_GATT_PERM_WRITE_ENC_MITM \
+ GATT_PERM_WRITE_ENC_MITM /* bit 6 - 0x0040 */
+#define BTA_GATT_PERM_WRITE_SIGNED \
+ GATT_PERM_WRITE_SIGNED /* bit 7 - 0x0080 \
+ */
+#define BTA_GATT_PERM_WRITE_SIGNED_MITM \
+ GATT_PERM_WRITE_SIGNED_MITM /* bit 8 - 0x0100 */
typedef uint16_t tBTA_GATT_PERM;
-#define BTA_GATTS_INVALID_APP 0xff
+#define BTA_GATTS_INVALID_APP 0xff
-#define BTA_GATTS_INVALID_IF 0
+#define BTA_GATTS_INVALID_IF 0
/* definition of characteristic properties */
-#define BTA_GATT_CHAR_PROP_BIT_BROADCAST GATT_CHAR_PROP_BIT_BROADCAST /* 0x01 */
-#define BTA_GATT_CHAR_PROP_BIT_READ GATT_CHAR_PROP_BIT_READ /* 0x02 */
-#define BTA_GATT_CHAR_PROP_BIT_WRITE_NR GATT_CHAR_PROP_BIT_WRITE_NR /* 0x04 */
-#define BTA_GATT_CHAR_PROP_BIT_WRITE GATT_CHAR_PROP_BIT_WRITE /* 0x08 */
-#define BTA_GATT_CHAR_PROP_BIT_NOTIFY GATT_CHAR_PROP_BIT_NOTIFY /* 0x10 */
-#define BTA_GATT_CHAR_PROP_BIT_INDICATE GATT_CHAR_PROP_BIT_INDICATE /* 0x20 */
-#define BTA_GATT_CHAR_PROP_BIT_AUTH GATT_CHAR_PROP_BIT_AUTH /* 0x40 */
-#define BTA_GATT_CHAR_PROP_BIT_EXT_PROP GATT_CHAR_PROP_BIT_EXT_PROP /* 0x80 */
+#define BTA_GATT_CHAR_PROP_BIT_BROADCAST \
+ GATT_CHAR_PROP_BIT_BROADCAST /* 0x01 \
+ */
+#define BTA_GATT_CHAR_PROP_BIT_READ GATT_CHAR_PROP_BIT_READ /* 0x02 */
+#define BTA_GATT_CHAR_PROP_BIT_WRITE_NR GATT_CHAR_PROP_BIT_WRITE_NR /* 0x04 */
+#define BTA_GATT_CHAR_PROP_BIT_WRITE GATT_CHAR_PROP_BIT_WRITE /* 0x08 */
+#define BTA_GATT_CHAR_PROP_BIT_NOTIFY GATT_CHAR_PROP_BIT_NOTIFY /* 0x10 */
+#define BTA_GATT_CHAR_PROP_BIT_INDICATE GATT_CHAR_PROP_BIT_INDICATE /* 0x20 */
+#define BTA_GATT_CHAR_PROP_BIT_AUTH GATT_CHAR_PROP_BIT_AUTH /* 0x40 */
+#define BTA_GATT_CHAR_PROP_BIT_EXT_PROP GATT_CHAR_PROP_BIT_EXT_PROP /* 0x80 */
typedef uint8_t tBTA_GATT_CHAR_PROP;
#ifndef BTA_GATTC_CHAR_DESCR_MAX
-#define BTA_GATTC_CHAR_DESCR_MAX 7
+#define BTA_GATTC_CHAR_DESCR_MAX 7
#endif
/*********************** NV callback Data Definitions **********************
*/
-typedef struct
-{
- tBT_UUID app_uuid128;
- tBT_UUID svc_uuid;
- uint16_t svc_inst;
- uint16_t s_handle;
- uint16_t e_handle;
- bool is_primary; /* primary service or secondary */
+typedef struct {
+ tBT_UUID app_uuid128;
+ tBT_UUID svc_uuid;
+ uint16_t svc_inst;
+ uint16_t s_handle;
+ uint16_t e_handle;
+ bool is_primary; /* primary service or secondary */
} tBTA_GATTS_HNDL_RANGE;
-#define BTA_GATTS_SRV_CHG_CMD_ADD_CLIENT GATTS_SRV_CHG_CMD_ADD_CLIENT
-#define BTA_GATTS_SRV_CHG_CMD_UPDATE_CLIENT GATTS_SRV_CHG_CMD_UPDATE_CLIENT
-#define BTA_GATTS_SRV_CHG_CMD_REMOVE_CLIENT GATTS_SRV_CHG_CMD_REMOVE_CLIENT
-#define BTA_GATTS_SRV_CHG_CMD_READ_NUM_CLENTS GATTS_SRV_CHG_CMD_READ_NUM_CLENTS
-#define BTA_GATTS_SRV_CHG_CMD_READ_CLENT GATTS_SRV_CHG_CMD_READ_CLENT
+#define BTA_GATTS_SRV_CHG_CMD_ADD_CLIENT GATTS_SRV_CHG_CMD_ADD_CLIENT
+#define BTA_GATTS_SRV_CHG_CMD_UPDATE_CLIENT GATTS_SRV_CHG_CMD_UPDATE_CLIENT
+#define BTA_GATTS_SRV_CHG_CMD_REMOVE_CLIENT GATTS_SRV_CHG_CMD_REMOVE_CLIENT
+#define BTA_GATTS_SRV_CHG_CMD_READ_NUM_CLENTS GATTS_SRV_CHG_CMD_READ_NUM_CLENTS
+#define BTA_GATTS_SRV_CHG_CMD_READ_CLENT GATTS_SRV_CHG_CMD_READ_CLENT
typedef tGATTS_SRV_CHG_CMD tBTA_GATTS_SRV_CHG_CMD;
-typedef tGATTS_SRV_CHG tBTA_GATTS_SRV_CHG;
+typedef tGATTS_SRV_CHG tBTA_GATTS_SRV_CHG;
typedef tGATTS_SRV_CHG_REQ tBTA_GATTS_SRV_CHG_REQ;
typedef tGATTS_SRV_CHG_RSP tBTA_GATTS_SRV_CHG_RSP;
-#define BTA_GATT_TRANSPORT_LE GATT_TRANSPORT_LE
-#define BTA_GATT_TRANSPORT_BR_EDR GATT_TRANSPORT_BR_EDR
-#define BTA_GATT_TRANSPORT_LE_BR_EDR GATT_TRANSPORT_LE_BR_EDR
+#define BTA_GATT_TRANSPORT_LE GATT_TRANSPORT_LE
+#define BTA_GATT_TRANSPORT_BR_EDR GATT_TRANSPORT_BR_EDR
+#define BTA_GATT_TRANSPORT_LE_BR_EDR GATT_TRANSPORT_LE_BR_EDR
typedef uint8_t tBTA_GATT_TRANSPORT;
/* attribute value */
@@ -439,8 +438,8 @@
typedef tGATTS_RSP tBTA_GATTS_RSP;
/* attribute request data from the client */
-#define BTA_GATT_PREP_WRITE_CANCEL 0x00
-#define BTA_GATT_PREP_WRITE_EXEC 0x01
+#define BTA_GATT_PREP_WRITE_CANCEL 0x00
+#define BTA_GATT_PREP_WRITE_EXEC 0x01
typedef tGATT_EXEC_FLAG tBTA_GATT_EXEC_FLAG;
/* read request always based on UUID */
@@ -452,114 +451,100 @@
/* callback data for server access request from client */
typedef tGATTS_DATA tBTA_GATTS_REQ_DATA;
-typedef struct
-{
- tBTA_GATT_STATUS status;
- BD_ADDR remote_bda;
- uint32_t trans_id;
- uint16_t conn_id;
- tBTA_GATTS_REQ_DATA *p_data;
-}tBTA_GATTS_REQ;
+typedef struct {
+ tBTA_GATT_STATUS status;
+ BD_ADDR remote_bda;
+ uint32_t trans_id;
+ uint16_t conn_id;
+ tBTA_GATTS_REQ_DATA* p_data;
+} tBTA_GATTS_REQ;
-typedef struct
-{
- tBTA_GATTS_IF server_if;
- tBTA_GATT_STATUS status;
- tBT_UUID uuid;
-}tBTA_GATTS_REG_OPER;
+typedef struct {
+ tBTA_GATTS_IF server_if;
+ tBTA_GATT_STATUS status;
+ tBT_UUID uuid;
+} tBTA_GATTS_REG_OPER;
+typedef struct {
+ tBTA_GATTS_IF server_if;
+ uint16_t service_id;
+ uint16_t svc_instance;
+ bool is_primary;
+ tBTA_GATT_STATUS status;
+ tBT_UUID uuid;
+} tBTA_GATTS_CREATE;
-typedef struct
-{
- tBTA_GATTS_IF server_if;
- uint16_t service_id;
- uint16_t svc_instance;
- bool is_primary;
- tBTA_GATT_STATUS status;
- tBT_UUID uuid;
-}tBTA_GATTS_CREATE;
+typedef struct {
+ tBTA_GATTS_IF server_if;
+ uint16_t service_id;
+ tBTA_GATT_STATUS status;
+} tBTA_GATTS_SRVC_OPER;
-typedef struct
-{
- tBTA_GATTS_IF server_if;
- uint16_t service_id;
- tBTA_GATT_STATUS status;
-}tBTA_GATTS_SRVC_OPER;
+typedef struct {
+ tBTA_GATTS_IF server_if;
+ BD_ADDR remote_bda;
+ uint16_t conn_id;
+ tBTA_GATT_REASON reason; /* report disconnect reason */
+ tBTA_GATT_TRANSPORT transport;
+} tBTA_GATTS_CONN;
+typedef struct {
+ uint16_t conn_id;
+ bool congested; /* report channel congestion indicator */
+} tBTA_GATTS_CONGEST;
-typedef struct
-{
- tBTA_GATTS_IF server_if;
- BD_ADDR remote_bda;
- uint16_t conn_id;
- tBTA_GATT_REASON reason; /* report disconnect reason */
- tBTA_GATT_TRANSPORT transport;
-}tBTA_GATTS_CONN;
-
-typedef struct
-{
- uint16_t conn_id;
- bool congested; /* report channel congestion indicator */
-}tBTA_GATTS_CONGEST;
-
-typedef struct
-{
- uint16_t conn_id; /* connection ID */
- tBTA_GATT_STATUS status; /* notification/indication status */
-}tBTA_GATTS_CONF;
+typedef struct {
+ uint16_t conn_id; /* connection ID */
+ tBTA_GATT_STATUS status; /* notification/indication status */
+} tBTA_GATTS_CONF;
/* GATTS callback data */
-typedef union
-{
- tBTA_GATTS_REG_OPER reg_oper;
- tBTA_GATTS_CREATE create;
- tBTA_GATTS_SRVC_OPER srvc_oper;
- tBTA_GATT_STATUS status; /* BTA_GATTS_LISTEN_EVT */
- tBTA_GATTS_REQ req_data;
- tBTA_GATTS_CONN conn; /* BTA_GATTS_CONN_EVT */
- tBTA_GATTS_CONGEST congest; /* BTA_GATTS_CONGEST_EVT callback data */
- tBTA_GATTS_CONF confirm; /* BTA_GATTS_CONF_EVT callback data */
-}tBTA_GATTS;
+typedef union {
+ tBTA_GATTS_REG_OPER reg_oper;
+ tBTA_GATTS_CREATE create;
+ tBTA_GATTS_SRVC_OPER srvc_oper;
+ tBTA_GATT_STATUS status; /* BTA_GATTS_LISTEN_EVT */
+ tBTA_GATTS_REQ req_data;
+ tBTA_GATTS_CONN conn; /* BTA_GATTS_CONN_EVT */
+ tBTA_GATTS_CONGEST congest; /* BTA_GATTS_CONGEST_EVT callback data */
+ tBTA_GATTS_CONF confirm; /* BTA_GATTS_CONF_EVT callback data */
+} tBTA_GATTS;
/* GATTS enable callback function */
-typedef void (tBTA_GATTS_ENB_CBACK)(tBTA_GATT_STATUS status);
+typedef void(tBTA_GATTS_ENB_CBACK)(tBTA_GATT_STATUS status);
/* Server callback function */
-typedef void (tBTA_GATTS_CBACK)(tBTA_GATTS_EVT event, tBTA_GATTS *p_data);
+typedef void(tBTA_GATTS_CBACK)(tBTA_GATTS_EVT event, tBTA_GATTS* p_data);
-typedef struct
-{
- tBT_UUID uuid;
- bool is_primary;
- uint16_t handle;
- uint16_t s_handle;
- uint16_t e_handle;
- list_t *characteristics; /* list of tBTA_GATTC_CHARACTERISTIC */
- list_t *included_svc; /* list of tBTA_GATTC_INCLUDED_SVC */
+typedef struct {
+ tBT_UUID uuid;
+ bool is_primary;
+ uint16_t handle;
+ uint16_t s_handle;
+ uint16_t e_handle;
+ list_t* characteristics; /* list of tBTA_GATTC_CHARACTERISTIC */
+ list_t* included_svc; /* list of tBTA_GATTC_INCLUDED_SVC */
} __attribute__((packed)) tBTA_GATTC_SERVICE;
-typedef struct
-{
- tBT_UUID uuid;
- uint16_t handle;
- tBTA_GATT_CHAR_PROP properties;
- tBTA_GATTC_SERVICE *service; /* owning service*/
- list_t *descriptors; /* list of tBTA_GATTC_DESCRIPTOR */
+typedef struct {
+ tBT_UUID uuid;
+ uint16_t handle;
+ tBTA_GATT_CHAR_PROP properties;
+ tBTA_GATTC_SERVICE* service; /* owning service*/
+ list_t* descriptors; /* list of tBTA_GATTC_DESCRIPTOR */
} __attribute__((packed)) tBTA_GATTC_CHARACTERISTIC;
-typedef struct
-{
- tBT_UUID uuid;
- uint16_t handle;
- tBTA_GATTC_CHARACTERISTIC *characteristic; /* owning characteristic */
+typedef struct {
+ tBT_UUID uuid;
+ uint16_t handle;
+ tBTA_GATTC_CHARACTERISTIC* characteristic; /* owning characteristic */
} __attribute__((packed)) tBTA_GATTC_DESCRIPTOR;
-typedef struct
-{
- tBT_UUID uuid;
- uint16_t handle;
- tBTA_GATTC_SERVICE *owning_service; /* owning service*/
- tBTA_GATTC_SERVICE *included_service;
+typedef struct {
+ tBT_UUID uuid;
+ uint16_t handle;
+ tBTA_GATTC_SERVICE* owning_service; /* owning service*/
+ tBTA_GATTC_SERVICE* included_service;
} __attribute__((packed)) tBTA_GATTC_INCLUDED_SVC;
/*****************************************************************************
@@ -596,7 +581,8 @@
* Returns None
*
******************************************************************************/
-extern void BTA_GATTC_AppRegister(tBT_UUID *p_app_uuid, tBTA_GATTC_CBACK *p_client_cb);
+extern void BTA_GATTC_AppRegister(tBT_UUID* p_app_uuid,
+ tBTA_GATTC_CBACK* p_client_cb);
/*******************************************************************************
*
@@ -610,7 +596,7 @@
* Returns None
*
******************************************************************************/
-extern void BTA_GATTC_AppDeregister (tBTA_GATTC_IF client_if);
+extern void BTA_GATTC_AppDeregister(tBTA_GATTC_IF client_if);
/*******************************************************************************
*
@@ -643,7 +629,8 @@
* Returns void
*
******************************************************************************/
-extern void BTA_GATTC_CancelOpen(tBTA_GATTC_IF client_if, BD_ADDR remote_bda, bool is_direct);
+extern void BTA_GATTC_CancelOpen(tBTA_GATTC_IF client_if, BD_ADDR remote_bda,
+ bool is_direct);
/*******************************************************************************
*
@@ -663,24 +650,29 @@
* Function BTA_GATTC_ServiceSearchRequest
*
* Description This function is called to request a GATT service discovery
- * on a GATT server. This function report service search result
- * by a callback event, and followed by a service search complete
+ * on a GATT server. This function report service search
+ *result
+ * by a callback event, and followed by a service search
+ *complete
* event.
*
* Parameters conn_id: connection ID.
- * p_srvc_uuid: a UUID of the service application is interested in.
+ * p_srvc_uuid: a UUID of the service application is interested
+ *in.
* If Null, discover for all services.
*
* Returns None
*
******************************************************************************/
-extern void BTA_GATTC_ServiceSearchRequest(uint16_t conn_id, tBT_UUID *p_srvc_uuid);
+extern void BTA_GATTC_ServiceSearchRequest(uint16_t conn_id,
+ tBT_UUID* p_srvc_uuid);
/*******************************************************************************
*
* Function BTA_GATTC_GetServices
*
- * Description This function is called to find the services on the given server.
+ * Description This function is called to find the services on the given
+ *server.
*
* Parameters conn_id: connection ID which identify the server.
*
@@ -693,7 +685,8 @@
*
* Function BTA_GATTC_GetCharacteristic
*
- * Description This function is called to find the characteristic on the given server.
+ * Description This function is called to find the characteristic on the
+ *given server.
*
* Parameters conn_id: connection ID which identify the server.
* handle: characteristic handle
@@ -701,13 +694,15 @@
* Returns returns pointer to tBTA_GATTC_CHARACTERISTIC or NULL.
*
******************************************************************************/
-extern const tBTA_GATTC_CHARACTERISTIC* BTA_GATTC_GetCharacteristic(uint16_t conn_id, uint16_t handle);
+extern const tBTA_GATTC_CHARACTERISTIC* BTA_GATTC_GetCharacteristic(
+ uint16_t conn_id, uint16_t handle);
/*******************************************************************************
*
* Function BTA_GATTC_GetDescriptor
*
- * Description This function is called to find the characteristic on the given server.
+ * Description This function is called to find the characteristic on the
+ *given server.
*
* Parameters conn_id: connection ID which identify the server.
* handle: descriptor handle
@@ -715,7 +710,8 @@
* Returns returns pointer to tBTA_GATTC_DESCRIPTOR or NULL.
*
******************************************************************************/
-extern const tBTA_GATTC_DESCRIPTOR* BTA_GATTC_GetDescriptor(uint16_t conn_id, uint16_t handle);
+extern const tBTA_GATTC_DESCRIPTOR* BTA_GATTC_GetDescriptor(uint16_t conn_id,
+ uint16_t handle);
/*******************************************************************************
*
@@ -729,12 +725,15 @@
* count: number of elements in db.
*
******************************************************************************/
-extern void BTA_GATTC_GetGattDb(uint16_t conn_id, uint16_t start_handle, uint16_t end_handle,
- btgatt_db_element_t **db, int *count);
+extern void BTA_GATTC_GetGattDb(uint16_t conn_id, uint16_t start_handle,
+ uint16_t end_handle, btgatt_db_element_t** db,
+ int* count);
-typedef void (*GATT_READ_OP_CB)(uint16_t conn_id, tGATT_STATUS status, uint16_t handle, uint16_t len,
- uint8_t *value, void* data);
-typedef void (*GATT_WRITE_OP_CB)(uint16_t conn_id, tGATT_STATUS status, uint16_t handle, void* data);
+typedef void (*GATT_READ_OP_CB)(uint16_t conn_id, tGATT_STATUS status,
+ uint16_t handle, uint16_t len, uint8_t* value,
+ void* data);
+typedef void (*GATT_WRITE_OP_CB)(uint16_t conn_id, tGATT_STATUS status,
+ uint16_t handle, void* data);
/*******************************************************************************
*
@@ -748,7 +747,8 @@
* Returns None
*
******************************************************************************/
-void BTA_GATTC_ReadCharacteristic(uint16_t conn_id, uint16_t handle, tBTA_GATT_AUTH_REQ auth_req,
+void BTA_GATTC_ReadCharacteristic(uint16_t conn_id, uint16_t handle,
+ tBTA_GATT_AUTH_REQ auth_req,
GATT_READ_OP_CB callback, void* cb_data);
/*******************************************************************************
@@ -763,8 +763,9 @@
* Returns None
*
******************************************************************************/
-void BTA_GATTC_ReadCharDescr (uint16_t conn_id, uint16_t handle, tBTA_GATT_AUTH_REQ auth_req,
- GATT_READ_OP_CB callback, void* cb_data);
+void BTA_GATTC_ReadCharDescr(uint16_t conn_id, uint16_t handle,
+ tBTA_GATT_AUTH_REQ auth_req,
+ GATT_READ_OP_CB callback, void* cb_data);
/*******************************************************************************
*
@@ -780,13 +781,11 @@
* Returns None
*
******************************************************************************/
-void BTA_GATTC_WriteCharValue ( uint16_t conn_id,
- uint16_t handle,
- tBTA_GATTC_WRITE_TYPE write_type,
- vector<uint8_t> value,
- tBTA_GATT_AUTH_REQ auth_req,
- GATT_WRITE_OP_CB callback,
- void* cb_data);
+void BTA_GATTC_WriteCharValue(uint16_t conn_id, uint16_t handle,
+ tBTA_GATTC_WRITE_TYPE write_type,
+ vector<uint8_t> value,
+ tBTA_GATT_AUTH_REQ auth_req,
+ GATT_WRITE_OP_CB callback, void* cb_data);
/*******************************************************************************
*
@@ -801,12 +800,10 @@
* Returns None
*
******************************************************************************/
-void BTA_GATTC_WriteCharDescr (uint16_t conn_id,
- uint16_t handle,
- vector<uint8_t> value,
- tBTA_GATT_AUTH_REQ auth_req,
- GATT_WRITE_OP_CB callback,
- void* cb_data);
+void BTA_GATTC_WriteCharDescr(uint16_t conn_id, uint16_t handle,
+ vector<uint8_t> value,
+ tBTA_GATT_AUTH_REQ auth_req,
+ GATT_WRITE_OP_CB callback, void* cb_data);
/*******************************************************************************
*
@@ -820,13 +817,14 @@
* Returns None
*
******************************************************************************/
-extern void BTA_GATTC_SendIndConfirm (uint16_t conn_id, uint16_t handle);
+extern void BTA_GATTC_SendIndConfirm(uint16_t conn_id, uint16_t handle);
/*******************************************************************************
*
* Function BTA_GATTC_RegisterForNotifications
*
- * Description This function is called to register for notification of a service.
+ * Description This function is called to register for notification of a
+ *service.
*
* Parameters client_if - client interface.
* remote_bda - target GATT server.
@@ -835,15 +833,15 @@
* Returns OK if registration succeed, otherwise failed.
*
******************************************************************************/
-extern tBTA_GATT_STATUS BTA_GATTC_RegisterForNotifications (tBTA_GATTC_IF client_if,
- const BD_ADDR remote_bda,
- uint16_t handle);
+extern tBTA_GATT_STATUS BTA_GATTC_RegisterForNotifications(
+ tBTA_GATTC_IF client_if, const BD_ADDR remote_bda, uint16_t handle);
/*******************************************************************************
*
* Function BTA_GATTC_DeregisterForNotifications
*
- * Description This function is called to de-register for notification of a servbice.
+ * Description This function is called to de-register for notification of a
+ *servbice.
*
* Parameters client_if - client interface.
* remote_bda - target GATT server.
@@ -852,15 +850,15 @@
* Returns OK if deregistration succeed, otherwise failed.
*
******************************************************************************/
-extern tBTA_GATT_STATUS BTA_GATTC_DeregisterForNotifications (tBTA_GATTC_IF client_if,
- const BD_ADDR remote_bda,
- uint16_t handle);
+extern tBTA_GATT_STATUS BTA_GATTC_DeregisterForNotifications(
+ tBTA_GATTC_IF client_if, const BD_ADDR remote_bda, uint16_t handle);
/*******************************************************************************
*
* Function BTA_GATTC_PrepareWrite
*
- * Description This function is called to prepare write a characteristic value.
+ * Description This function is called to prepare write a characteristic
+ *value.
*
* Parameters conn_id - connection ID.
* handle - GATT characteritic handle.
@@ -870,19 +868,17 @@
* Returns None
*
******************************************************************************/
-extern void BTA_GATTC_PrepareWrite (uint16_t conn_id,
- uint16_t handle,
- uint16_t offset,
- vector<uint8_t> value,
- tBTA_GATT_AUTH_REQ auth_req,
- GATT_WRITE_OP_CB callback,
- void* cb_data);
+extern void BTA_GATTC_PrepareWrite(uint16_t conn_id, uint16_t handle,
+ uint16_t offset, vector<uint8_t> value,
+ tBTA_GATT_AUTH_REQ auth_req,
+ GATT_WRITE_OP_CB callback, void* cb_data);
/*******************************************************************************
*
* Function BTA_GATTC_ExecuteWrite
*
- * Description This function is called to execute write a prepare write sequence.
+ * Description This function is called to execute write a prepare write
+ *sequence.
*
* Parameters conn_id - connection ID.
* is_execute - execute or cancel.
@@ -890,7 +886,7 @@
* Returns None
*
******************************************************************************/
-extern void BTA_GATTC_ExecuteWrite (uint16_t conn_id, bool is_execute);
+extern void BTA_GATTC_ExecuteWrite(uint16_t conn_id, bool is_execute);
/*******************************************************************************
*
@@ -905,10 +901,10 @@
* Returns None
*
******************************************************************************/
-extern void BTA_GATTC_ReadMultiple(uint16_t conn_id, tBTA_GATTC_MULTI *p_read_multi,
+extern void BTA_GATTC_ReadMultiple(uint16_t conn_id,
+ tBTA_GATTC_MULTI* p_read_multi,
tBTA_GATT_AUTH_REQ auth_req);
-
/*******************************************************************************
*
* Function BTA_GATTC_Refresh
@@ -935,7 +931,7 @@
* Returns void
*
******************************************************************************/
-extern void BTA_GATTC_ConfigureMTU (uint16_t conn_id, uint16_t mtu);
+extern void BTA_GATTC_ConfigureMTU(uint16_t conn_id, uint16_t mtu);
/*******************************************************************************
* BTA GATT Server API
@@ -980,8 +976,8 @@
* Returns None
*
******************************************************************************/
-extern void BTA_GATTS_AppRegister(tBT_UUID *p_app_uuid, tBTA_GATTS_CBACK *p_cback);
-
+extern void BTA_GATTS_AppRegister(tBT_UUID* p_app_uuid,
+ tBTA_GATTS_CBACK* p_cback);
/*******************************************************************************
*
@@ -1011,21 +1007,24 @@
* service cannot be added.
*
******************************************************************************/
-extern uint16_t BTA_GATTS_AddService(tBTA_GATTS_IF server_if, vector<btgatt_db_element_t> &service);
+extern uint16_t BTA_GATTS_AddService(tBTA_GATTS_IF server_if,
+ vector<btgatt_db_element_t>& service);
/*******************************************************************************
*
* Function BTA_GATTS_DeleteService
*
- * Description This function is called to delete a service. When this is done,
- * a callback event BTA_GATTS_DELETE_EVT is report with the status.
+ * Description This function is called to delete a service. When this is
+ *done,
+ * a callback event BTA_GATTS_DELETE_EVT is report with the
+ *status.
*
* Parameters service_id: service_id to be deleted.
*
* Returns returns none.
*
******************************************************************************/
-extern void BTA_GATTS_DeleteService(uint16_t service_id);
+extern void BTA_GATTS_DeleteService(uint16_t service_id);
/*******************************************************************************
*
@@ -1044,19 +1043,21 @@
*
* Function BTA_GATTS_HandleValueIndication
*
- * Description This function is called to read a characteristics descriptor.
+ * Description This function is called to read a characteristics
+ *descriptor.
*
* Parameters conn_id - connection identifier.
* attr_id - attribute ID to indicate.
* value - data to indicate.
- * need_confirm - if this indication expects a confirmation or not.
+ * need_confirm - if this indication expects a confirmation or
+ *not.
*
* Returns None
*
******************************************************************************/
-extern void BTA_GATTS_HandleValueIndication (uint16_t conn_id, uint16_t attr_id,
- vector<uint8_t> value,
- bool need_confirm);
+extern void BTA_GATTS_HandleValueIndication(uint16_t conn_id, uint16_t attr_id,
+ vector<uint8_t> value,
+ bool need_confirm);
/*******************************************************************************
*
@@ -1072,15 +1073,15 @@
* Returns None
*
******************************************************************************/
-extern void BTA_GATTS_SendRsp (uint16_t conn_id, uint32_t trans_id,
- tBTA_GATT_STATUS status, tBTA_GATTS_RSP *p_msg);
-
+extern void BTA_GATTS_SendRsp(uint16_t conn_id, uint32_t trans_id,
+ tBTA_GATT_STATUS status, tBTA_GATTS_RSP* p_msg);
/*******************************************************************************
*
* Function BTA_GATTS_Open
*
- * Description Open a direct open connection or add a background auto connection
+ * Description Open a direct open connection or add a background auto
+ *connection
* bd address
*
* Parameters server_if: server interface.
@@ -1093,12 +1094,12 @@
extern void BTA_GATTS_Open(tBTA_GATTS_IF server_if, BD_ADDR remote_bda,
bool is_direct, tBTA_GATT_TRANSPORT transport);
-
/*******************************************************************************
*
* Function BTA_GATTS_CancelOpen
*
- * Description Cancel a direct open connection or remove a background auto connection
+ * Description Cancel a direct open connection or remove a background auto
+ *connection
* bd address
*
* Parameters server_if: server interface.
@@ -1108,8 +1109,8 @@
* Returns void
*
******************************************************************************/
-extern void BTA_GATTS_CancelOpen(tBTA_GATTS_IF server_if, BD_ADDR remote_bda, bool is_direct);
-
+extern void BTA_GATTS_CancelOpen(tBTA_GATTS_IF server_if, BD_ADDR remote_bda,
+ bool is_direct);
/*******************************************************************************
*
diff --git a/bta/include/bta_gatts_co.h b/bta/include/bta_gatts_co.h
index fe90b2f..c84f449 100644
--- a/bta/include/bta_gatts_co.h
+++ b/bta/include/bta_gatts_co.h
@@ -34,23 +34,27 @@
*
* Function bta_gatts_co_update_handle_range
*
- * Description This callout function is executed by GATTS when a GATT server
+ * Description This callout function is executed by GATTS when a GATT
+ *server
* handle range ios to be added or removed.
*
- * Parameter is_add: true is to add a handle range; otherwise is to delete.
+ * Parameter is_add: true is to add a handle range; otherwise is to
+ *delete.
* p_hndl_range: handle range.
*
* Returns void.
*
******************************************************************************/
-extern void bta_gatts_co_update_handle_range(bool is_add, tBTA_GATTS_HNDL_RANGE *p_hndl_range);
+extern void bta_gatts_co_update_handle_range(
+ bool is_add, tBTA_GATTS_HNDL_RANGE* p_hndl_range);
/*******************************************************************************
*
* Function bta_gatts_co_srv_chg
*
* Description This call-out is to read/write/remove service change related
- * informaiton. The request consists of the cmd and p_req and the
+ * informaiton. The request consists of the cmd and p_req and
+ *the
* response is returned in p_rsp
*
* Parameter cmd - request command
@@ -63,14 +67,15 @@
*
******************************************************************************/
extern bool bta_gatts_co_srv_chg(tBTA_GATTS_SRV_CHG_CMD cmd,
- tBTA_GATTS_SRV_CHG_REQ *p_req,
- tBTA_GATTS_SRV_CHG_RSP *p_rsp);
+ tBTA_GATTS_SRV_CHG_REQ* p_req,
+ tBTA_GATTS_SRV_CHG_RSP* p_rsp);
/*******************************************************************************
*
* Function bta_gatts_co_load_handle_range
*
- * Description This callout function is executed by GATTS when a GATT server
+ * Description This callout function is executed by GATTS when a GATT
+ *server
* handle range is requested to be loaded from NV.
*
* Parameter
@@ -78,8 +83,8 @@
* Returns void.
*
******************************************************************************/
-extern bool bta_gatts_co_load_handle_range(uint8_t index,
- tBTA_GATTS_HNDL_RANGE *p_handle);
+extern bool bta_gatts_co_load_handle_range(uint8_t index,
+ tBTA_GATTS_HNDL_RANGE* p_handle);
#ifdef __cplusplus
}
diff --git a/bta/include/bta_hf_client_api.h b/bta/include/bta_hf_client_api.h
index 84d8531..bc107e6 100644
--- a/bta/include/bta_hf_client_api.h
+++ b/bta/include/bta_hf_client_api.h
@@ -36,211 +36,216 @@
****************************************************************************/
/* HFP peer (AG) features*/
-#define BTA_HF_CLIENT_PEER_FEAT_3WAY 0x00000001 /* Three-way calling */
-#define BTA_HF_CLIENT_PEER_FEAT_ECNR 0x00000002 /* Echo cancellation and/or noise reduction */
-#define BTA_HF_CLIENT_PEER_FEAT_VREC 0x00000004 /* Voice recognition */
-#define BTA_HF_CLIENT_PEER_INBAND 0x00000008 /* In-band ring tone */
-#define BTA_HF_CLIENT_PEER_VTAG 0x00000010 /* Attach a phone number to a voice tag */
-#define BTA_HF_CLIENT_PEER_REJECT 0x00000020 /* Ability to reject incoming call */
-#define BTA_HF_CLIENT_PEER_ECS 0x00000040 /* Enhanced Call Status */
-#define BTA_HF_CLIENT_PEER_ECC 0x00000080 /* Enhanced Call Control */
-#define BTA_HF_CLIENT_PEER_EXTERR 0x00000100 /* Extended error codes */
-#define BTA_HF_CLIENT_PEER_CODEC 0x00000200 /* Codec Negotiation */
+#define BTA_HF_CLIENT_PEER_FEAT_3WAY 0x00000001 /* Three-way calling */
+#define BTA_HF_CLIENT_PEER_FEAT_ECNR \
+ 0x00000002 /* Echo cancellation and/or noise reduction */
+#define BTA_HF_CLIENT_PEER_FEAT_VREC 0x00000004 /* Voice recognition */
+#define BTA_HF_CLIENT_PEER_INBAND 0x00000008 /* In-band ring tone */
+#define BTA_HF_CLIENT_PEER_VTAG \
+ 0x00000010 /* Attach a phone number to a voice tag */
+#define BTA_HF_CLIENT_PEER_REJECT \
+ 0x00000020 /* Ability to reject incoming call */
+#define BTA_HF_CLIENT_PEER_ECS 0x00000040 /* Enhanced Call Status */
+#define BTA_HF_CLIENT_PEER_ECC 0x00000080 /* Enhanced Call Control */
+#define BTA_HF_CLIENT_PEER_EXTERR 0x00000100 /* Extended error codes */
+#define BTA_HF_CLIENT_PEER_CODEC 0x00000200 /* Codec Negotiation */
typedef uint16_t tBTA_HF_CLIENT_PEER_FEAT;
/* HFP HF features */
-#define BTA_HF_CLIENT_FEAT_ECNR 0x00000001 /* Echo cancellation and/or noise reduction */
-#define BTA_HF_CLIENT_FEAT_3WAY 0x00000002 /* Call waiting and three-way calling */
-#define BTA_HF_CLIENT_FEAT_CLI 0x00000004 /* Caller ID presentation capability */
-#define BTA_HF_CLIENT_FEAT_VREC 0x00000008 /* Voice recognition activation */
-#define BTA_HF_CLIENT_FEAT_VOL 0x00000010 /* Remote volume control */
-#define BTA_HF_CLIENT_FEAT_ECS 0x00000020 /* Enhanced Call Status */
-#define BTA_HF_CLIENT_FEAT_ECC 0x00000040 /* Enhanced Call Control */
-#define BTA_HF_CLIENT_FEAT_CODEC 0x00000080 /* Codec Negotiation */
+#define BTA_HF_CLIENT_FEAT_ECNR \
+ 0x00000001 /* Echo cancellation and/or noise reduction */
+#define BTA_HF_CLIENT_FEAT_3WAY \
+ 0x00000002 /* Call waiting and three-way calling */
+#define BTA_HF_CLIENT_FEAT_CLI \
+ 0x00000004 /* Caller ID presentation capability */
+#define BTA_HF_CLIENT_FEAT_VREC 0x00000008 /* Voice recognition activation */
+#define BTA_HF_CLIENT_FEAT_VOL 0x00000010 /* Remote volume control */
+#define BTA_HF_CLIENT_FEAT_ECS 0x00000020 /* Enhanced Call Status */
+#define BTA_HF_CLIENT_FEAT_ECC 0x00000040 /* Enhanced Call Control */
+#define BTA_HF_CLIENT_FEAT_CODEC 0x00000080 /* Codec Negotiation */
/* HFP HF extended call handling - masks not related to any spec */
-#define BTA_HF_CLIENT_CHLD_REL 0x00000001 /* 0 Release waiting call or held calls */
-#define BTA_HF_CLIENT_CHLD_REL_ACC 0x00000002 /* 1 Release active calls and accept other (waiting or held) cal */
-#define BTA_HF_CLIENT_CHLD_REL_X 0x00000004 /* 1x Release x call*/
-#define BTA_HF_CLIENT_CHLD_HOLD_ACC 0x00000008 /* 2 Active calls on hold and accept other call */
-#define BTA_HF_CLIENT_CHLD_PRIV_X 0x00000010 /* 2x Active multiparty call on hold except call x */
-#define BTA_HF_CLIENT_CHLD_MERGE 0x00000020 /* 3 Add held call to multiparty */
-#define BTA_HF_CLIENT_CHLD_MERGE_DETACH 0x00000040 /* 4 Add held call to multiparty */
+#define BTA_HF_CLIENT_CHLD_REL \
+ 0x00000001 /* 0 Release waiting call or held calls */
+#define BTA_HF_CLIENT_CHLD_REL_ACC \
+ 0x00000002 /* 1 Release active calls and accept other (waiting or held) cal \
+ */
+#define BTA_HF_CLIENT_CHLD_REL_X 0x00000004 /* 1x Release x call*/
+#define BTA_HF_CLIENT_CHLD_HOLD_ACC \
+ 0x00000008 /* 2 Active calls on hold and accept other call */
+#define BTA_HF_CLIENT_CHLD_PRIV_X \
+ 0x00000010 /* 2x Active multiparty call on hold except call x */
+#define BTA_HF_CLIENT_CHLD_MERGE \
+ 0x00000020 /* 3 Add held call to multiparty \
+ */
+#define BTA_HF_CLIENT_CHLD_MERGE_DETACH \
+ 0x00000040 /* 4 Add held call to multiparty */
typedef uint16_t tBTA_HF_CLIENT_CHLD_FEAT;
/* HFP AG errors ot OK sent to HF Unit */
-#define BTA_HF_CLIENT_AT_RESULT_OK 0
-#define BTA_HF_CLIENT_AT_RESULT_ERROR 1
-#define BTA_HF_CLIENT_AT_RESULT_NO_CARRIER 2
-#define BTA_HF_CLIENT_AT_RESULT_BUSY 3
-#define BTA_HF_CLIENT_AT_RESULT_NO_ANSWER 4
-#define BTA_HF_CLIENT_AT_RESULT_DELAY 5
-#define BTA_HF_CLIENT_AT_RESULT_BLACKLISTED 6
-#define BTA_HF_CLIENT_AT_RESULT_CME 7
+#define BTA_HF_CLIENT_AT_RESULT_OK 0
+#define BTA_HF_CLIENT_AT_RESULT_ERROR 1
+#define BTA_HF_CLIENT_AT_RESULT_NO_CARRIER 2
+#define BTA_HF_CLIENT_AT_RESULT_BUSY 3
+#define BTA_HF_CLIENT_AT_RESULT_NO_ANSWER 4
+#define BTA_HF_CLIENT_AT_RESULT_DELAY 5
+#define BTA_HF_CLIENT_AT_RESULT_BLACKLISTED 6
+#define BTA_HF_CLIENT_AT_RESULT_CME 7
typedef uint8_t tBTA_HF_CLIENT_AT_RESULT_TYPE;
/* HF Client callback events */
-#define BTA_HF_CLIENT_ENABLE_EVT 0 /* HF Client enabled */
-#define BTA_HF_CLIENT_REGISTER_EVT 1 /* HF Client registered */
-#define BTA_HF_CLIENT_OPEN_EVT 2 /* HF Client connection open */
-#define BTA_HF_CLIENT_CLOSE_EVT 3 /* HF Client connection closed */
-#define BTA_HF_CLIENT_CONN_EVT 4 /* Service level connection opened */
-#define BTA_HF_CLIENT_AUDIO_OPEN_EVT 5 /* Audio connection open */
-#define BTA_HF_CLIENT_AUDIO_MSBC_OPEN_EVT 6 /* Audio connection with mSBC codec open */
-#define BTA_HF_CLIENT_AUDIO_CLOSE_EVT 7 /* Audio connection closed */
-#define BTA_HF_CLIENT_SPK_EVT 8 /* Speaker volume changed */
-#define BTA_HF_CLIENT_MIC_EVT 9 /* Microphone volume changed */
-#define BTA_HF_CLIENT_IND_EVT 10 /* Indicator */
-#define BTA_HF_CLIENT_VOICE_REC_EVT 11 /* AG changed voice recognition setting */
-#define BTA_HF_CLIENT_OPERATOR_NAME_EVT 12 /* Operator name acquired */
-#define BTA_HF_CLIENT_CLIP_EVT 13 /* Calling line identification event */
-#define BTA_HF_CLIENT_CCWA_EVT 14 /* Call waiting notification */
-#define BTA_HF_CLIENT_AT_RESULT_EVT 15 /* Call waiting notification */
-#define BTA_HF_CLIENT_CLCC_EVT 16 /* current call event */
-#define BTA_HF_CLIENT_CNUM_EVT 17 /* subscriber information event */
-#define BTA_HF_CLIENT_BTRH_EVT 18 /* bluetooth response and hold event */
-#define BTA_HF_CLIENT_BSIR_EVT 19 /* in-band ring tone setting changed event */
-#define BTA_HF_CLIENT_BINP_EVT 20 /* binp number event */
-#define BTA_HF_CLIENT_RING_INDICATION 21 /* HF Client ring indication */
-#define BTA_HF_CLIENT_DISABLE_EVT 30 /* HF Client disabled */
+#define BTA_HF_CLIENT_ENABLE_EVT 0 /* HF Client enabled */
+#define BTA_HF_CLIENT_REGISTER_EVT 1 /* HF Client registered */
+#define BTA_HF_CLIENT_OPEN_EVT 2 /* HF Client connection open */
+#define BTA_HF_CLIENT_CLOSE_EVT 3 /* HF Client connection closed */
+#define BTA_HF_CLIENT_CONN_EVT 4 /* Service level connection opened */
+#define BTA_HF_CLIENT_AUDIO_OPEN_EVT 5 /* Audio connection open */
+#define BTA_HF_CLIENT_AUDIO_MSBC_OPEN_EVT \
+ 6 /* Audio connection with mSBC codec open */
+#define BTA_HF_CLIENT_AUDIO_CLOSE_EVT 7 /* Audio connection closed */
+#define BTA_HF_CLIENT_SPK_EVT 8 /* Speaker volume changed */
+#define BTA_HF_CLIENT_MIC_EVT 9 /* Microphone volume changed */
+#define BTA_HF_CLIENT_IND_EVT 10 /* Indicator */
+#define BTA_HF_CLIENT_VOICE_REC_EVT \
+ 11 /* AG changed voice recognition setting */
+#define BTA_HF_CLIENT_OPERATOR_NAME_EVT 12 /* Operator name acquired */
+#define BTA_HF_CLIENT_CLIP_EVT 13 /* Calling line identification event */
+#define BTA_HF_CLIENT_CCWA_EVT 14 /* Call waiting notification */
+#define BTA_HF_CLIENT_AT_RESULT_EVT 15 /* Call waiting notification */
+#define BTA_HF_CLIENT_CLCC_EVT 16 /* current call event */
+#define BTA_HF_CLIENT_CNUM_EVT 17 /* subscriber information event */
+#define BTA_HF_CLIENT_BTRH_EVT 18 /* bluetooth response and hold event */
+#define BTA_HF_CLIENT_BSIR_EVT \
+ 19 /* in-band ring tone setting changed event \
+ */
+#define BTA_HF_CLIENT_BINP_EVT 20 /* binp number event */
+#define BTA_HF_CLIENT_RING_INDICATION 21 /* HF Client ring indication */
+#define BTA_HF_CLIENT_DISABLE_EVT 30 /* HF Client disabled */
typedef uint8_t tBTA_HF_CLIENT_EVT;
/* HF Client open status */
-#define BTA_HF_CLIENT_SUCCESS 0 /* Connection successfully opened */
-#define BTA_HF_CLIENT_FAIL_SDP 1 /* Open failed due to SDP */
-#define BTA_HF_CLIENT_FAIL_RFCOMM 2 /* Open failed due to RFCOMM */
-#define BTA_HF_CLIENT_FAIL_RESOURCES 3 /* out of resources failure */
+#define BTA_HF_CLIENT_SUCCESS 0 /* Connection successfully opened */
+#define BTA_HF_CLIENT_FAIL_SDP 1 /* Open failed due to SDP */
+#define BTA_HF_CLIENT_FAIL_RFCOMM 2 /* Open failed due to RFCOMM */
+#define BTA_HF_CLIENT_FAIL_RESOURCES 3 /* out of resources failure */
typedef uint8_t tBTA_HF_CLIENT_STATUS;
/* indicator type */
-#define BTA_HF_CLIENT_IND_BATTCH 0 /* Battery charge indicator */
-#define BTA_HF_CLIENT_IND_SIGNAL 1 /* Signal Strength indicator */
-#define BTA_HF_CLIENT_IND_SERVICE 2 /* Service availability indicator */
-#define BTA_HF_CLIENT_IND_CALL 3 /* Standard call status indicator*/
-#define BTA_HF_CLIENT_IND_ROAM 4 /* Roaming status indicator */
-#define BTA_HF_CLIENT_IND_CALLSETUP 5 /* Call setup status indicator */
-#define BTA_HF_CLIENT_IND_CALLHELD 6 /* Call hold status indicator */
+#define BTA_HF_CLIENT_IND_BATTCH 0 /* Battery charge indicator */
+#define BTA_HF_CLIENT_IND_SIGNAL 1 /* Signal Strength indicator */
+#define BTA_HF_CLIENT_IND_SERVICE 2 /* Service availability indicator */
+#define BTA_HF_CLIENT_IND_CALL 3 /* Standard call status indicator*/
+#define BTA_HF_CLIENT_IND_ROAM 4 /* Roaming status indicator */
+#define BTA_HF_CLIENT_IND_CALLSETUP 5 /* Call setup status indicator */
+#define BTA_HF_CLIENT_IND_CALLHELD 6 /* Call hold status indicator */
typedef uint8_t tBTA_HF_CLIENT_IND_TYPE;
/* AT commands */
-#define BTA_HF_CLIENT_AT_CMD_VTS 0
-#define BTA_HF_CLIENT_AT_CMD_BTRH 1
-#define BTA_HF_CLIENT_AT_CMD_CHUP 2
-#define BTA_HF_CLIENT_AT_CMD_CHLD 3
-#define BTA_HF_CLIENT_AT_CMD_BCC 4
-#define BTA_HF_CLIENT_AT_CMD_CNUM 5
-#define BTA_HF_CLIENT_AT_CMD_ATA 6
-#define BTA_HF_CLIENT_AT_CMD_COPS 7
-#define BTA_HF_CLIENT_AT_CMD_ATD 8
-#define BTA_HF_CLIENT_AT_CMD_VGM 9
-#define BTA_HF_CLIENT_AT_CMD_VGS 10
-#define BTA_HF_CLIENT_AT_CMD_BVRA 11
-#define BTA_HF_CLIENT_AT_CMD_CLCC 12
-#define BTA_HF_CLIENT_AT_CMD_BINP 13
-#define BTA_HF_CLIENT_AT_CMD_BLDN 14
-#define BTA_HF_CLIENT_AT_CMD_NREC 15
+#define BTA_HF_CLIENT_AT_CMD_VTS 0
+#define BTA_HF_CLIENT_AT_CMD_BTRH 1
+#define BTA_HF_CLIENT_AT_CMD_CHUP 2
+#define BTA_HF_CLIENT_AT_CMD_CHLD 3
+#define BTA_HF_CLIENT_AT_CMD_BCC 4
+#define BTA_HF_CLIENT_AT_CMD_CNUM 5
+#define BTA_HF_CLIENT_AT_CMD_ATA 6
+#define BTA_HF_CLIENT_AT_CMD_COPS 7
+#define BTA_HF_CLIENT_AT_CMD_ATD 8
+#define BTA_HF_CLIENT_AT_CMD_VGM 9
+#define BTA_HF_CLIENT_AT_CMD_VGS 10
+#define BTA_HF_CLIENT_AT_CMD_BVRA 11
+#define BTA_HF_CLIENT_AT_CMD_CLCC 12
+#define BTA_HF_CLIENT_AT_CMD_BINP 13
+#define BTA_HF_CLIENT_AT_CMD_BLDN 14
+#define BTA_HF_CLIENT_AT_CMD_NREC 15
typedef uint8_t tBTA_HF_CLIENT_AT_CMD_TYPE;
-
/* data associated with BTA_HF_CLIENT_REGISTER_EVT */
-typedef struct
-{
- uint16_t handle;
- tBTA_HF_CLIENT_STATUS status;
+typedef struct {
+ uint16_t handle;
+ tBTA_HF_CLIENT_STATUS status;
} tBTA_HF_CLIENT_REGISTER;
/* data associated with BTA_HF_CLIENT_OPEN_EVT */
-typedef struct
-{
- BD_ADDR bd_addr;
- tBTA_HF_CLIENT_STATUS status;
+typedef struct {
+ BD_ADDR bd_addr;
+ tBTA_HF_CLIENT_STATUS status;
} tBTA_HF_CLIENT_OPEN;
/* data associated with BTA_HF_CLIENT_CONN_EVT */
-typedef struct
-{
- tBTA_HF_CLIENT_PEER_FEAT peer_feat;
- tBTA_HF_CLIENT_CHLD_FEAT chld_feat;
+typedef struct {
+ tBTA_HF_CLIENT_PEER_FEAT peer_feat;
+ tBTA_HF_CLIENT_CHLD_FEAT chld_feat;
} tBTA_HF_CLIENT_CONN;
/* data associated with BTA_HF_CLIENT_IND_EVT event */
-typedef struct
-{
- tBTA_HF_CLIENT_IND_TYPE type;
- uint16_t value;
+typedef struct {
+ tBTA_HF_CLIENT_IND_TYPE type;
+ uint16_t value;
} tBTA_HF_CLIENT_IND;
/* data associated with BTA_HF_CLIENT_OPERATOR_NAME_EVT */
#define BTA_HF_CLIENT_OPERATOR_NAME_LEN 16
-typedef struct
-{
- char name[BTA_HF_CLIENT_OPERATOR_NAME_LEN + 1];
+typedef struct {
+ char name[BTA_HF_CLIENT_OPERATOR_NAME_LEN + 1];
} tBTA_HF_CLIENT_OPERATOR_NAME;
/* data associated with BTA_HF_CLIENT_CLIP_EVT and BTA_HF_CLIENT_CCWA_EVT*/
#define BTA_HF_CLIENT_NUMBER_LEN 32
-typedef struct
-{
- char number[BTA_HF_CLIENT_NUMBER_LEN + 1];
+typedef struct {
+ char number[BTA_HF_CLIENT_NUMBER_LEN + 1];
} tBTA_HF_CLIENT_NUMBER;
/* data associated with BTA_HF_CLIENT_AT_RESULT_EVT event */
-typedef struct
-{
- tBTA_HF_CLIENT_AT_RESULT_TYPE type;
- uint16_t cme;
+typedef struct {
+ tBTA_HF_CLIENT_AT_RESULT_TYPE type;
+ uint16_t cme;
} tBTA_HF_CLIENT_AT_RESULT;
/* data associated with BTA_HF_CLIENT_CLCC_EVT event */
-typedef struct
-{
- uint32_t idx;
- bool inc;
- uint8_t status;
- bool mpty;
- bool number_present;
- char number[BTA_HF_CLIENT_NUMBER_LEN + 1];
+typedef struct {
+ uint32_t idx;
+ bool inc;
+ uint8_t status;
+ bool mpty;
+ bool number_present;
+ char number[BTA_HF_CLIENT_NUMBER_LEN + 1];
} tBTA_HF_CLIENT_CLCC;
/* data associated with BTA_HF_CLIENT_CNUM_EVT event */
-typedef struct
-{
- uint16_t service;
- char number[BTA_HF_CLIENT_NUMBER_LEN + 1];
+typedef struct {
+ uint16_t service;
+ char number[BTA_HF_CLIENT_NUMBER_LEN + 1];
} tBTA_HF_CLIENT_CNUM;
/* data associated with other events */
-typedef struct
-{
- uint16_t value;
-} tBTA_HF_CLIENT_VAL;
+typedef struct { uint16_t value; } tBTA_HF_CLIENT_VAL;
/* union of data associated with AG callback */
-typedef union
-{
- tBTA_HF_CLIENT_REGISTER reg;
- tBTA_HF_CLIENT_OPEN open;
- tBTA_HF_CLIENT_CONN conn;
- tBTA_HF_CLIENT_IND ind;
- tBTA_HF_CLIENT_VAL val;
- tBTA_HF_CLIENT_OPERATOR_NAME operator_name;
- tBTA_HF_CLIENT_NUMBER number;
- tBTA_HF_CLIENT_AT_RESULT result;
- tBTA_HF_CLIENT_CLCC clcc;
- tBTA_HF_CLIENT_CNUM cnum;
+typedef union {
+ tBTA_HF_CLIENT_REGISTER reg;
+ tBTA_HF_CLIENT_OPEN open;
+ tBTA_HF_CLIENT_CONN conn;
+ tBTA_HF_CLIENT_IND ind;
+ tBTA_HF_CLIENT_VAL val;
+ tBTA_HF_CLIENT_OPERATOR_NAME operator_name;
+ tBTA_HF_CLIENT_NUMBER number;
+ tBTA_HF_CLIENT_AT_RESULT result;
+ tBTA_HF_CLIENT_CLCC clcc;
+ tBTA_HF_CLIENT_CNUM cnum;
} tBTA_HF_CLIENT;
typedef uint32_t tBTA_HF_CLIENT_FEAT;
/* HF Client callback */
-typedef void (tBTA_HF_CLIENT_CBACK)(tBTA_HF_CLIENT_EVT event, tBTA_HF_CLIENT *p_data);
+typedef void(tBTA_HF_CLIENT_CBACK)(tBTA_HF_CLIENT_EVT event,
+ tBTA_HF_CLIENT* p_data);
/*****************************************************************************
* External Function Declarations
@@ -259,7 +264,7 @@
* Returns BTA_SUCCESS if OK, BTA_FAILURE otherwise.
*
******************************************************************************/
-tBTA_STATUS BTA_HfClientEnable(tBTA_HF_CLIENT_CBACK *p_cback);
+tBTA_STATUS BTA_HfClientEnable(tBTA_HF_CLIENT_CBACK* p_cback);
/*******************************************************************************
*
@@ -284,7 +289,7 @@
*
******************************************************************************/
void BTA_HfClientRegister(tBTA_SEC sec_mask, tBTA_HF_CLIENT_FEAT features,
- const char *p_service_name);
+ const char* p_service_name);
/*******************************************************************************
*
@@ -362,7 +367,8 @@
* Returns void
*
******************************************************************************/
-void BTA_HfClientSendAT(uint16_t handle, tBTA_HF_CLIENT_AT_CMD_TYPE at, uint32_t val1, uint32_t val2, const char *str);
+void BTA_HfClientSendAT(uint16_t handle, tBTA_HF_CLIENT_AT_CMD_TYPE at,
+ uint32_t val1, uint32_t val2, const char* str);
#ifdef __cplusplus
}
diff --git a/bta/include/bta_hh_api.h b/bta/include/bta_hh_api.h
index 6406deb..6d2ad69 100644
--- a/bta/include/bta_hh_api.h
+++ b/bta/include/bta_hh_api.h
@@ -33,197 +33,187 @@
* Constants and Type Definitions
****************************************************************************/
#ifndef BTA_HH_DEBUG
-#define BTA_HH_DEBUG true
+#define BTA_HH_DEBUG true
#endif
#ifndef BTA_HH_SSR_MAX_LATENCY_DEF
-#define BTA_HH_SSR_MAX_LATENCY_DEF 800 /* 500 ms*/
+#define BTA_HH_SSR_MAX_LATENCY_DEF 800 /* 500 ms*/
#endif
#ifndef BTA_HH_SSR_MIN_TOUT_DEF
-#define BTA_HH_SSR_MIN_TOUT_DEF 2
+#define BTA_HH_SSR_MIN_TOUT_DEF 2
#endif
/* BTA HID Host callback events */
-#define BTA_HH_ENABLE_EVT 0 /* HH enabled */
-#define BTA_HH_DISABLE_EVT 1 /* HH disabled */
-#define BTA_HH_OPEN_EVT 2 /* connection opened */
-#define BTA_HH_CLOSE_EVT 3 /* connection closed */
-#define BTA_HH_GET_RPT_EVT 4 /* BTA_HhGetReport callback */
-#define BTA_HH_SET_RPT_EVT 5 /* BTA_HhSetReport callback */
-#define BTA_HH_GET_PROTO_EVT 6 /* BTA_GetProtoMode callback */
-#define BTA_HH_SET_PROTO_EVT 7 /* BTA_HhSetProtoMode callback */
-#define BTA_HH_GET_IDLE_EVT 8 /* BTA_HhGetIdle comes callback */
-#define BTA_HH_SET_IDLE_EVT 9 /* BTA_HhSetIdle finish callback */
-#define BTA_HH_GET_DSCP_EVT 10 /* Get report descriptor */
-#define BTA_HH_ADD_DEV_EVT 11 /* Add Device callback */
-#define BTA_HH_RMV_DEV_EVT 12 /* remove device finished */
-#define BTA_HH_VC_UNPLUG_EVT 13 /* virtually unplugged */
-#define BTA_HH_DATA_EVT 15
-#define BTA_HH_API_ERR_EVT 16 /* API error is caught */
-#define BTA_HH_UPDATE_SCPP_EVT 17 /* update scan paramter complete */
+#define BTA_HH_ENABLE_EVT 0 /* HH enabled */
+#define BTA_HH_DISABLE_EVT 1 /* HH disabled */
+#define BTA_HH_OPEN_EVT 2 /* connection opened */
+#define BTA_HH_CLOSE_EVT 3 /* connection closed */
+#define BTA_HH_GET_RPT_EVT 4 /* BTA_HhGetReport callback */
+#define BTA_HH_SET_RPT_EVT 5 /* BTA_HhSetReport callback */
+#define BTA_HH_GET_PROTO_EVT 6 /* BTA_GetProtoMode callback */
+#define BTA_HH_SET_PROTO_EVT 7 /* BTA_HhSetProtoMode callback */
+#define BTA_HH_GET_IDLE_EVT 8 /* BTA_HhGetIdle comes callback */
+#define BTA_HH_SET_IDLE_EVT 9 /* BTA_HhSetIdle finish callback */
+#define BTA_HH_GET_DSCP_EVT 10 /* Get report descriptor */
+#define BTA_HH_ADD_DEV_EVT 11 /* Add Device callback */
+#define BTA_HH_RMV_DEV_EVT 12 /* remove device finished */
+#define BTA_HH_VC_UNPLUG_EVT 13 /* virtually unplugged */
+#define BTA_HH_DATA_EVT 15
+#define BTA_HH_API_ERR_EVT 16 /* API error is caught */
+#define BTA_HH_UPDATE_SCPP_EVT 17 /* update scan paramter complete */
typedef uint16_t tBTA_HH_EVT;
/* application ID(none-zero) for each type of device */
-#define BTA_HH_APP_ID_MI 1
-#define BTA_HH_APP_ID_KB 2
-#define BTA_HH_APP_ID_RMC 3
-#define BTA_HH_APP_ID_3DSG 4
-#define BTA_HH_APP_ID_JOY 5
-#define BTA_HH_APP_ID_GPAD 6
-#define BTA_HH_APP_ID_LE 0xff
+#define BTA_HH_APP_ID_MI 1
+#define BTA_HH_APP_ID_KB 2
+#define BTA_HH_APP_ID_RMC 3
+#define BTA_HH_APP_ID_3DSG 4
+#define BTA_HH_APP_ID_JOY 5
+#define BTA_HH_APP_ID_GPAD 6
+#define BTA_HH_APP_ID_LE 0xff
/* defined the minimum offset */
-#define BTA_HH_MIN_OFFSET (L2CAP_MIN_OFFSET+1)
+#define BTA_HH_MIN_OFFSET (L2CAP_MIN_OFFSET + 1)
/* HID_HOST_MAX_DEVICES can not exceed 15 for th design of BTA HH */
-#define BTA_HH_IDX_INVALID 0xff
-#define BTA_HH_MAX_KNOWN HID_HOST_MAX_DEVICES
+#define BTA_HH_IDX_INVALID 0xff
+#define BTA_HH_MAX_KNOWN HID_HOST_MAX_DEVICES
#if (BTA_HH_LE_INCLUDED == TRUE)
/* GATT_MAX_PHY_CHANNEL can not exceed 14 for the design of BTA HH */
-#define BTA_HH_LE_MAX_KNOWN GATT_MAX_PHY_CHANNEL
-#define BTA_HH_MAX_DEVICE (HID_HOST_MAX_DEVICES + GATT_MAX_PHY_CHANNEL)
+#define BTA_HH_LE_MAX_KNOWN GATT_MAX_PHY_CHANNEL
+#define BTA_HH_MAX_DEVICE (HID_HOST_MAX_DEVICES + GATT_MAX_PHY_CHANNEL)
#else
-#define BTA_HH_MAX_DEVICE HID_HOST_MAX_DEVICES
+#define BTA_HH_MAX_DEVICE HID_HOST_MAX_DEVICES
#endif
/* invalid device handle */
-#define BTA_HH_INVALID_HANDLE 0xff
+#define BTA_HH_INVALID_HANDLE 0xff
/* type of protocol mode */
-#define BTA_HH_PROTO_RPT_MODE (0x00)
-#define BTA_HH_PROTO_BOOT_MODE (0x01)
-#define BTA_HH_PROTO_UNKNOWN (0xff)
-typedef uint8_t tBTA_HH_PROTO_MODE;
+#define BTA_HH_PROTO_RPT_MODE (0x00)
+#define BTA_HH_PROTO_BOOT_MODE (0x01)
+#define BTA_HH_PROTO_UNKNOWN (0xff)
+typedef uint8_t tBTA_HH_PROTO_MODE;
-enum
-{
- BTA_HH_KEYBD_RPT_ID = 1,
- BTA_HH_MOUSE_RPT_ID
-};
+enum { BTA_HH_KEYBD_RPT_ID = 1, BTA_HH_MOUSE_RPT_ID };
typedef uint8_t tBTA_HH_BOOT_RPT_ID;
/* type of devices, bit mask */
-#define BTA_HH_DEVT_UNKNOWN 0x00
-#define BTA_HH_DEVT_JOS 0x01 /* joy stick */
-#define BTA_HH_DEVT_GPD 0x02 /* game pad */
-#define BTA_HH_DEVT_RMC 0x03 /* remote control */
-#define BTA_HH_DEVT_SED 0x04 /* sensing device */
-#define BTA_HH_DEVT_DGT 0x05 /* Digitizer tablet */
-#define BTA_HH_DEVT_CDR 0x06 /* card reader */
-#define BTA_HH_DEVT_KBD 0x10 /* keyboard */
-#define BTA_HH_DEVT_MIC 0x20 /* pointing device */
-#define BTA_HH_DEVT_COM 0x30 /* Combo keyboard/pointing */
-#define BTA_HH_DEVT_OTHER 0x80
-typedef uint8_t tBTA_HH_DEVT;
+#define BTA_HH_DEVT_UNKNOWN 0x00
+#define BTA_HH_DEVT_JOS 0x01 /* joy stick */
+#define BTA_HH_DEVT_GPD 0x02 /* game pad */
+#define BTA_HH_DEVT_RMC 0x03 /* remote control */
+#define BTA_HH_DEVT_SED 0x04 /* sensing device */
+#define BTA_HH_DEVT_DGT 0x05 /* Digitizer tablet */
+#define BTA_HH_DEVT_CDR 0x06 /* card reader */
+#define BTA_HH_DEVT_KBD 0x10 /* keyboard */
+#define BTA_HH_DEVT_MIC 0x20 /* pointing device */
+#define BTA_HH_DEVT_COM 0x30 /* Combo keyboard/pointing */
+#define BTA_HH_DEVT_OTHER 0x80
+typedef uint8_t tBTA_HH_DEVT;
-enum
-{
- BTA_HH_OK,
- BTA_HH_HS_HID_NOT_READY, /* handshake error : device not ready */
- BTA_HH_HS_INVALID_RPT_ID, /* handshake error : invalid report ID */
- BTA_HH_HS_TRANS_NOT_SPT, /* handshake error : transaction not spt */
- BTA_HH_HS_INVALID_PARAM, /* handshake error : invalid paremter */
- BTA_HH_HS_ERROR, /* handshake error : unspecified HS error */
- BTA_HH_ERR, /* general BTA HH error */
- BTA_HH_ERR_SDP, /* SDP error */
- BTA_HH_ERR_PROTO, /* SET_Protocol error,
- only used in BTA_HH_OPEN_EVT callback */
+enum {
+ BTA_HH_OK,
+ BTA_HH_HS_HID_NOT_READY, /* handshake error : device not ready */
+ BTA_HH_HS_INVALID_RPT_ID, /* handshake error : invalid report ID */
+ BTA_HH_HS_TRANS_NOT_SPT, /* handshake error : transaction not spt */
+ BTA_HH_HS_INVALID_PARAM, /* handshake error : invalid paremter */
+ BTA_HH_HS_ERROR, /* handshake error : unspecified HS error */
+ BTA_HH_ERR, /* general BTA HH error */
+ BTA_HH_ERR_SDP, /* SDP error */
+ BTA_HH_ERR_PROTO, /* SET_Protocol error,
+ only used in BTA_HH_OPEN_EVT callback */
- BTA_HH_ERR_DB_FULL, /* device database full error, used in
- BTA_HH_OPEN_EVT/BTA_HH_ADD_DEV_EVT */
- BTA_HH_ERR_TOD_UNSPT, /* type of device not supported */
- BTA_HH_ERR_NO_RES, /* out of system resources */
- BTA_HH_ERR_AUTH_FAILED, /* authentication fail */
- BTA_HH_ERR_HDL,
- BTA_HH_ERR_SEC
+ BTA_HH_ERR_DB_FULL, /* device database full error, used in
+ BTA_HH_OPEN_EVT/BTA_HH_ADD_DEV_EVT */
+ BTA_HH_ERR_TOD_UNSPT, /* type of device not supported */
+ BTA_HH_ERR_NO_RES, /* out of system resources */
+ BTA_HH_ERR_AUTH_FAILED, /* authentication fail */
+ BTA_HH_ERR_HDL,
+ BTA_HH_ERR_SEC
};
typedef uint8_t tBTA_HH_STATUS;
-
-#define BTA_HH_VIRTUAL_CABLE HID_VIRTUAL_CABLE
-#define BTA_HH_NORMALLY_CONNECTABLE HID_NORMALLY_CONNECTABLE
-#define BTA_HH_RECONN_INIT HID_RECONN_INIT
-#define BTA_HH_SDP_DISABLE HID_SDP_DISABLE
-#define BTA_HH_BATTERY_POWER HID_BATTERY_POWER
-#define BTA_HH_REMOTE_WAKE HID_REMOTE_WAKE
-#define BTA_HH_SUP_TOUT_AVLBL HID_SUP_TOUT_AVLBL
-#define BTA_HH_SEC_REQUIRED HID_SEC_REQUIRED
+#define BTA_HH_VIRTUAL_CABLE HID_VIRTUAL_CABLE
+#define BTA_HH_NORMALLY_CONNECTABLE HID_NORMALLY_CONNECTABLE
+#define BTA_HH_RECONN_INIT HID_RECONN_INIT
+#define BTA_HH_SDP_DISABLE HID_SDP_DISABLE
+#define BTA_HH_BATTERY_POWER HID_BATTERY_POWER
+#define BTA_HH_REMOTE_WAKE HID_REMOTE_WAKE
+#define BTA_HH_SUP_TOUT_AVLBL HID_SUP_TOUT_AVLBL
+#define BTA_HH_SEC_REQUIRED HID_SEC_REQUIRED
typedef uint16_t tBTA_HH_ATTR_MASK;
/* supported type of device and corresponding application ID */
-typedef struct
-{
- tBTA_HH_DEVT tod; /* type of device */
- uint8_t app_id; /* corresponding application ID */
-}tBTA_HH_SPT_TOD;
+typedef struct {
+ tBTA_HH_DEVT tod; /* type of device */
+ uint8_t app_id; /* corresponding application ID */
+} tBTA_HH_SPT_TOD;
/* configuration struct */
-typedef struct
-{
- uint8_t max_devt_spt; /* max number of types of devices spt */
- tBTA_HH_SPT_TOD *p_devt_list; /* supported types of device list */
- uint16_t sdp_db_size;
-}tBTA_HH_CFG;
+typedef struct {
+ uint8_t max_devt_spt; /* max number of types of devices spt */
+ tBTA_HH_SPT_TOD* p_devt_list; /* supported types of device list */
+ uint16_t sdp_db_size;
+} tBTA_HH_CFG;
-enum
-{
- BTA_HH_RPTT_RESRV, /* reserved */
- BTA_HH_RPTT_INPUT, /* input report */
- BTA_HH_RPTT_OUTPUT, /* output report */
- BTA_HH_RPTT_FEATURE /* feature report */
+enum {
+ BTA_HH_RPTT_RESRV, /* reserved */
+ BTA_HH_RPTT_INPUT, /* input report */
+ BTA_HH_RPTT_OUTPUT, /* output report */
+ BTA_HH_RPTT_FEATURE /* feature report */
};
typedef uint8_t tBTA_HH_RPT_TYPE;
/* HID_CONTROL operation code used in BTA_HhSendCtrl()
*/
-enum
-{
- BTA_HH_CTRL_NOP = 0 + HID_PAR_CONTROL_NOP ,/* mapping from BTE */
- BTA_HH_CTRL_HARD_RESET, /* hard reset */
- BTA_HH_CTRL_SOFT_RESET, /* soft reset */
- BTA_HH_CTRL_SUSPEND, /* enter suspend */
- BTA_HH_CTRL_EXIT_SUSPEND, /* exit suspend */
- BTA_HH_CTRL_VIRTUAL_CABLE_UNPLUG /* virtual unplug */
+enum {
+ BTA_HH_CTRL_NOP = 0 + HID_PAR_CONTROL_NOP, /* mapping from BTE */
+ BTA_HH_CTRL_HARD_RESET, /* hard reset */
+ BTA_HH_CTRL_SOFT_RESET, /* soft reset */
+ BTA_HH_CTRL_SUSPEND, /* enter suspend */
+ BTA_HH_CTRL_EXIT_SUSPEND, /* exit suspend */
+ BTA_HH_CTRL_VIRTUAL_CABLE_UNPLUG /* virtual unplug */
};
typedef uint8_t tBTA_HH_TRANS_CTRL_TYPE;
typedef tHID_DEV_DSCP_INFO tBTA_HH_DEV_DESCR;
-#define BTA_HH_SSR_PARAM_INVALID HID_SSR_PARAM_INVALID
+#define BTA_HH_SSR_PARAM_INVALID HID_SSR_PARAM_INVALID
-/* id DI is not existing in remote device, vendor_id in tBTA_HH_DEV_DSCP_INFO will be set to 0xffff */
-#define BTA_HH_VENDOR_ID_INVALID 0xffff
-
+/* id DI is not existing in remote device, vendor_id in tBTA_HH_DEV_DSCP_INFO
+ * will be set to 0xffff */
+#define BTA_HH_VENDOR_ID_INVALID 0xffff
/* report descriptor information */
-typedef struct
-{
- uint16_t vendor_id; /* vendor ID */
- uint16_t product_id; /* product ID */
- uint16_t version; /* version */
- uint16_t ssr_max_latency; /* SSR max latency, BTA_HH_SSR_PARAM_INVALID if unknown */
- uint16_t ssr_min_tout; /* SSR min timeout, BTA_HH_SSR_PARAM_INVALID if unknown */
- uint8_t ctry_code; /*Country Code.*/
+typedef struct {
+ uint16_t vendor_id; /* vendor ID */
+ uint16_t product_id; /* product ID */
+ uint16_t version; /* version */
+ uint16_t ssr_max_latency; /* SSR max latency, BTA_HH_SSR_PARAM_INVALID if
+ unknown */
+ uint16_t
+ ssr_min_tout; /* SSR min timeout, BTA_HH_SSR_PARAM_INVALID if unknown */
+ uint8_t ctry_code; /*Country Code.*/
#if (BTA_HH_LE_INCLUDED == TRUE)
-#define BTA_HH_LE_REMOTE_WAKE 0x01
-#define BTA_HH_LE_NORMAL_CONN 0x02
+#define BTA_HH_LE_REMOTE_WAKE 0x01
+#define BTA_HH_LE_NORMAL_CONN 0x02
- uint8_t flag;
+ uint8_t flag;
#endif
- tBTA_HH_DEV_DESCR descriptor;
-}tBTA_HH_DEV_DSCP_INFO;
+ tBTA_HH_DEV_DESCR descriptor;
+} tBTA_HH_DEV_DSCP_INFO;
/* callback event data for BTA_HH_OPEN_EVT */
-typedef struct
-{
- BD_ADDR bda; /* HID device bd address */
- tBTA_HH_STATUS status; /* operation status */
- uint8_t handle; /* device handle */
+typedef struct {
+ BD_ADDR bda; /* HID device bd address */
+ tBTA_HH_STATUS status; /* operation status */
+ uint8_t handle; /* device handle */
#if (BTA_HH_LE_INCLUDED == TRUE)
- bool le_hid; /* is LE devices? */
- bool scps_supported; /* scan parameter service supported */
+ bool le_hid; /* is LE devices? */
+ bool scps_supported; /* scan parameter service supported */
#endif
} tBTA_HH_CONN;
@@ -231,90 +221,80 @@
typedef tBTA_HH_CONN tBTA_HH_DEV_INFO;
/* callback event data */
-typedef struct
-{
- tBTA_HH_STATUS status; /* operation status */
- uint8_t handle; /* device handle */
+typedef struct {
+ tBTA_HH_STATUS status; /* operation status */
+ uint8_t handle; /* device handle */
} tBTA_HH_CBDATA;
-enum
-{
- BTA_HH_MOD_CTRL_KEY,
- BTA_HH_MOD_SHFT_KEY,
- BTA_HH_MOD_ALT_KEY,
- BTA_HH_MOD_GUI_KEY,
- BTA_HH_MOD_MAX_KEY
+enum {
+ BTA_HH_MOD_CTRL_KEY,
+ BTA_HH_MOD_SHFT_KEY,
+ BTA_HH_MOD_ALT_KEY,
+ BTA_HH_MOD_GUI_KEY,
+ BTA_HH_MOD_MAX_KEY
};
/* parsed boot mode keyboard report */
-typedef struct
-{
- uint8_t this_char[6]; /* virtual key code */
- bool mod_key[BTA_HH_MOD_MAX_KEY];
- /* ctrl, shift, Alt, GUI */
- /* modifier key: is Shift key pressed */
- /* modifier key: is Ctrl key pressed */
- /* modifier key: is Alt key pressed */
- /* modifier key: GUI up/down */
- bool caps_lock; /* is caps locked */
- bool num_lock; /* is Num key pressed */
+typedef struct {
+ uint8_t this_char[6]; /* virtual key code */
+ bool mod_key[BTA_HH_MOD_MAX_KEY];
+ /* ctrl, shift, Alt, GUI */
+ /* modifier key: is Shift key pressed */
+ /* modifier key: is Ctrl key pressed */
+ /* modifier key: is Alt key pressed */
+ /* modifier key: GUI up/down */
+ bool caps_lock; /* is caps locked */
+ bool num_lock; /* is Num key pressed */
} tBTA_HH_KEYBD_RPT;
/* parsed boot mode mouse report */
-typedef struct
-{
- uint8_t mouse_button; /* mouse button is clicked */
- int8_t delta_x; /* displacement x */
- int8_t delta_y; /* displacement y */
-}tBTA_HH_MICE_RPT;
+typedef struct {
+ uint8_t mouse_button; /* mouse button is clicked */
+ int8_t delta_x; /* displacement x */
+ int8_t delta_y; /* displacement y */
+} tBTA_HH_MICE_RPT;
/* parsed Boot report */
-typedef struct
-{
- tBTA_HH_BOOT_RPT_ID dev_type; /* type of device report */
- union
- {
- tBTA_HH_KEYBD_RPT keybd_rpt; /* keyboard report */
- tBTA_HH_MICE_RPT mice_rpt; /* mouse report */
- } data_rpt;
+typedef struct {
+ tBTA_HH_BOOT_RPT_ID dev_type; /* type of device report */
+ union {
+ tBTA_HH_KEYBD_RPT keybd_rpt; /* keyboard report */
+ tBTA_HH_MICE_RPT mice_rpt; /* mouse report */
+ } data_rpt;
} tBTA_HH_BOOT_RPT;
/* handshake data */
-typedef struct
-{
- tBTA_HH_STATUS status; /* handshake status */
- uint8_t handle; /* device handle */
- union
- {
- tBTA_HH_PROTO_MODE proto_mode; /* GET_PROTO_EVT :protocol mode */
- BT_HDR *p_rpt_data; /* GET_RPT_EVT : report data */
- uint8_t idle_rate; /* GET_IDLE_EVT : idle rate */
- } rsp_data;
+typedef struct {
+ tBTA_HH_STATUS status; /* handshake status */
+ uint8_t handle; /* device handle */
+ union {
+ tBTA_HH_PROTO_MODE proto_mode; /* GET_PROTO_EVT :protocol mode */
+ BT_HDR* p_rpt_data; /* GET_RPT_EVT : report data */
+ uint8_t idle_rate; /* GET_IDLE_EVT : idle rate */
+ } rsp_data;
-}tBTA_HH_HSDATA;
+} tBTA_HH_HSDATA;
/* union of data associated with HD callback */
-typedef union
-{
- tBTA_HH_DEV_INFO dev_info; /* BTA_HH_ADD_DEV_EVT, BTA_HH_RMV_DEV_EVT */
- tBTA_HH_CONN conn; /* BTA_HH_OPEN_EVT */
- tBTA_HH_CBDATA dev_status; /* BTA_HH_CLOSE_EVT,
- BTA_HH_SET_PROTO_EVT
- BTA_HH_SET_RPT_EVT
- BTA_HH_SET_IDLE_EVT
- BTA_HH_UPDATE_SCPP_EVT */
+typedef union {
+ tBTA_HH_DEV_INFO dev_info; /* BTA_HH_ADD_DEV_EVT, BTA_HH_RMV_DEV_EVT */
+ tBTA_HH_CONN conn; /* BTA_HH_OPEN_EVT */
+ tBTA_HH_CBDATA dev_status; /* BTA_HH_CLOSE_EVT,
+ BTA_HH_SET_PROTO_EVT
+ BTA_HH_SET_RPT_EVT
+ BTA_HH_SET_IDLE_EVT
+ BTA_HH_UPDATE_SCPP_EVT */
- tBTA_HH_STATUS status; /* BTA_HH_ENABLE_EVT */
- tBTA_HH_DEV_DSCP_INFO dscp_info; /* BTA_HH_GET_DSCP_EVT */
- tBTA_HH_HSDATA hs_data; /* GET_ transaction callback
- BTA_HH_GET_RPT_EVT
- BTA_HH_GET_PROTO_EVT
- BTA_HH_GET_IDLE_EVT */
+ tBTA_HH_STATUS status; /* BTA_HH_ENABLE_EVT */
+ tBTA_HH_DEV_DSCP_INFO dscp_info; /* BTA_HH_GET_DSCP_EVT */
+ tBTA_HH_HSDATA hs_data; /* GET_ transaction callback
+ BTA_HH_GET_RPT_EVT
+ BTA_HH_GET_PROTO_EVT
+ BTA_HH_GET_IDLE_EVT */
} tBTA_HH;
/* BTA HH callback function */
-typedef void (tBTA_HH_CBACK) (tBTA_HH_EVT event, tBTA_HH *p_data);
-
+typedef void(tBTA_HH_CBACK)(tBTA_HH_EVT event, tBTA_HH* p_data);
/*****************************************************************************
* External Function Declarations
@@ -330,7 +310,7 @@
* Returns void
*
******************************************************************************/
-extern void BTA_HhEnable(tBTA_SEC sec_mask, tBTA_HH_CBACK *p_cback);
+extern void BTA_HhEnable(tBTA_SEC sec_mask, tBTA_HH_CBACK* p_cback);
/*******************************************************************************
*
@@ -354,8 +334,8 @@
* Returns void
*
******************************************************************************/
-extern void BTA_HhOpen (BD_ADDR dev_bda, tBTA_HH_PROTO_MODE mode,
- tBTA_SEC sec_mask);
+extern void BTA_HhOpen(BD_ADDR dev_bda, tBTA_HH_PROTO_MODE mode,
+ tBTA_SEC sec_mask);
/*******************************************************************************
*
@@ -383,7 +363,8 @@
*
* Function BTA_HhGetProtoMode
*
- * Description This function get the protocol mode of a specified HID device.
+ * Description This function get the protocol mode of a specified HID
+ *device.
*
* Returns void
*
@@ -399,7 +380,7 @@
*
******************************************************************************/
extern void BTA_HhSetReport(uint8_t dev_handle, tBTA_HH_RPT_TYPE r_type,
- BT_HDR *p_data);
+ BT_HDR* p_data);
/*******************************************************************************
*
@@ -443,8 +424,7 @@
* Returns void
*
******************************************************************************/
-extern void BTA_HhSendCtrl(uint8_t dev_handle,
- tBTA_HH_TRANS_CTRL_TYPE c_type);
+extern void BTA_HhSendCtrl(uint8_t dev_handle, tBTA_HH_TRANS_CTRL_TYPE c_type);
/*******************************************************************************
*
@@ -457,7 +437,6 @@
******************************************************************************/
extern void BTA_HhSetIdle(uint8_t dev_handle, uint16_t idle_rate);
-
/*******************************************************************************
*
* Function BTA_HhGetIdle
@@ -478,7 +457,7 @@
* Returns void
*
******************************************************************************/
-extern void BTA_HhSendData(uint8_t dev_handle, BD_ADDR dev_bda, BT_HDR *p_buf);
+extern void BTA_HhSendData(uint8_t dev_handle, BD_ADDR dev_bda, BT_HDR* p_buf);
/*******************************************************************************
*
@@ -514,7 +493,7 @@
* Returns void
*
******************************************************************************/
-extern void BTA_HhRemoveDev(uint8_t dev_handle );
+extern void BTA_HhRemoveDev(uint8_t dev_handle);
/*******************************************************************************
*
@@ -530,7 +509,7 @@
* Returns void
*
******************************************************************************/
-extern void BTA_HhParseBootRpt(tBTA_HH_BOOT_RPT *p_data, uint8_t *p_report,
+extern void BTA_HhParseBootRpt(tBTA_HH_BOOT_RPT* p_data, uint8_t* p_report,
uint16_t report_len);
/* test commands */
@@ -540,4 +519,4 @@
}
#endif
-#endif /* BTA_HH_API_H */
+#endif /* BTA_HH_API_H */
diff --git a/bta/include/bta_hh_co.h b/bta/include/bta_hh_co.h
index 435aa28..ac44c21 100644
--- a/bta/include/bta_hh_co.h
+++ b/bta/include/bta_hh_co.h
@@ -30,29 +30,30 @@
extern "C" {
#endif
-typedef struct
-{
- uint16_t rpt_uuid;
- uint8_t rpt_id;
- tBTA_HH_RPT_TYPE rpt_type;
- uint8_t srvc_inst_id;
- uint8_t char_inst_id;
-}tBTA_HH_RPT_CACHE_ENTRY;
+typedef struct {
+ uint16_t rpt_uuid;
+ uint8_t rpt_id;
+ tBTA_HH_RPT_TYPE rpt_type;
+ uint8_t srvc_inst_id;
+ uint8_t char_inst_id;
+} tBTA_HH_RPT_CACHE_ENTRY;
/*******************************************************************************
*
* Function bta_hh_co_data
*
- * Description This callout function is executed by HH when data is received
+ * Description This callout function is executed by HH when data is
+ *received
* in interupt channel.
*
*
* Returns void.
*
******************************************************************************/
-extern void bta_hh_co_data(uint8_t dev_handle, uint8_t *p_rpt, uint16_t len,
- tBTA_HH_PROTO_MODE mode, uint8_t sub_class,
- uint8_t ctry_code, BD_ADDR peer_addr, uint8_t app_id);
+extern void bta_hh_co_data(uint8_t dev_handle, uint8_t* p_rpt, uint16_t len,
+ tBTA_HH_PROTO_MODE mode, uint8_t sub_class,
+ uint8_t ctry_code, BD_ADDR peer_addr,
+ uint8_t app_id);
/*******************************************************************************
*
@@ -98,15 +99,17 @@
*
******************************************************************************/
extern void bta_hh_le_co_rpt_info(BD_ADDR remote_bda,
- tBTA_HH_RPT_CACHE_ENTRY *p_entry,
- uint8_t app_id);
+ tBTA_HH_RPT_CACHE_ENTRY* p_entry,
+ uint8_t app_id);
/*******************************************************************************
*
* Function bta_hh_le_co_cache_load
*
- * Description This callout function is to request the application to load the
- * cached HOGP report if there is any. When cache reading is completed,
+ * Description This callout function is to request the application to load
+ *the
+ * cached HOGP report if there is any. When cache reading is
+ *completed,
* bta_hh_le_ci_cache_load() is called by the application.
*
* Parameters remote_bda - remote device address
@@ -116,9 +119,9 @@
* Returns the acched report array
*
******************************************************************************/
-extern tBTA_HH_RPT_CACHE_ENTRY *bta_hh_le_co_cache_load (BD_ADDR remote_bda,
- uint8_t *p_num_rpt,
- uint8_t app_id);
+extern tBTA_HH_RPT_CACHE_ENTRY* bta_hh_le_co_cache_load(BD_ADDR remote_bda,
+ uint8_t* p_num_rpt,
+ uint8_t app_id);
/*******************************************************************************
*
@@ -131,7 +134,7 @@
* Returns none
*
******************************************************************************/
-extern void bta_hh_le_co_reset_rpt_cache (BD_ADDR remote_bda, uint8_t app_id);
+extern void bta_hh_le_co_reset_rpt_cache(BD_ADDR remote_bda, uint8_t app_id);
#endif /* #if (BLE_INCLUDED == true && BTA_HH_LE_INCLUDED == TRUE) */
diff --git a/bta/include/bta_hl_api.h b/bta/include/bta_hl_api.h
index 3033421..bc7ae8c 100644
--- a/bta/include/bta_hl_api.h
+++ b/bta/include/bta_hl_api.h
@@ -39,172 +39,169 @@
****************************************************************************/
/* Extra Debug Code */
#ifndef BTA_HL_DEBUG
-#define BTA_HL_DEBUG true
+#define BTA_HL_DEBUG true
#endif
#ifndef BTA_HL_NUM_APPS
-#define BTA_HL_NUM_APPS 12
+#define BTA_HL_NUM_APPS 12
#endif
#ifndef BTA_HL_NUM_MDEPS
-#define BTA_HL_NUM_MDEPS 13
+#define BTA_HL_NUM_MDEPS 13
#endif
#ifndef BTA_HL_NUM_MCLS
-#define BTA_HL_NUM_MCLS 7
+#define BTA_HL_NUM_MCLS 7
#endif
#ifndef BTA_HL_NUM_MDLS_PER_MDEP
-#define BTA_HL_NUM_MDLS_PER_MDEP 4
+#define BTA_HL_NUM_MDLS_PER_MDEP 4
#endif
#ifndef BTA_HL_NUM_MDLS_PER_MCL
-#define BTA_HL_NUM_MDLS_PER_MCL 10
+#define BTA_HL_NUM_MDLS_PER_MCL 10
#endif
#ifndef BTA_HL_NUM_DATA_TYPES
-#define BTA_HL_NUM_DATA_TYPES 5 /* maximum number of data types can be supported
- per MDEP ID */
+#define BTA_HL_NUM_DATA_TYPES \
+ 5 /* maximum number of data types can be supported \
+ per MDEP ID */
#endif
-#define BTA_HL_MCAP_RSP_TOUT 2 /* 2 seconds */
+#define BTA_HL_MCAP_RSP_TOUT 2 /* 2 seconds */
#ifndef BTA_HL_CCH_NUM_FILTER_ELEMS
-#define BTA_HL_CCH_NUM_FILTER_ELEMS 3
+#define BTA_HL_CCH_NUM_FILTER_ELEMS 3
#endif
#ifndef BTA_HL_NUM_SDP_CBACKS
-#define BTA_HL_NUM_SDP_CBACKS 7
+#define BTA_HL_NUM_SDP_CBACKS 7
#endif
#ifndef BTA_HL_NUM_SDP_RECS
-#define BTA_HL_NUM_SDP_RECS 5
+#define BTA_HL_NUM_SDP_RECS 5
#endif
#ifndef BTA_HL_NUM_SDP_MDEPS
-#define BTA_HL_NUM_SDP_MDEPS 12
+#define BTA_HL_NUM_SDP_MDEPS 12
#endif
#ifndef BTA_HL_NUM_SVC_ELEMS
-#define BTA_HL_NUM_SVC_ELEMS 2
+#define BTA_HL_NUM_SVC_ELEMS 2
#endif
#ifndef BTA_HL_NUM_PROTO_ELEMS
-#define BTA_HL_NUM_PROTO_ELEMS 2
+#define BTA_HL_NUM_PROTO_ELEMS 2
#endif
-#define BTA_HL_VERSION 0x0101
-#define BTA_HL_NUM_ADD_PROTO_LISTS 1
-#define BTA_HL_NUM_ADD_PROTO_ELEMS 2
-#define BTA_HL_MDEP_SEQ_SIZE 20
-#define BTA_HL_VAL_ARRY_SIZE 320
+#define BTA_HL_VERSION 0x0101
+#define BTA_HL_NUM_ADD_PROTO_LISTS 1
+#define BTA_HL_NUM_ADD_PROTO_ELEMS 2
+#define BTA_HL_MDEP_SEQ_SIZE 20
+#define BTA_HL_VAL_ARRY_SIZE 320
#ifndef BTA_HL_NUM_MDL_CFGS
-#define BTA_HL_NUM_MDL_CFGS 16 /* numer of MDL cfg saved in the persistent memory*/
+#define BTA_HL_NUM_MDL_CFGS \
+ 16 /* numer of MDL cfg saved in the persistent memory*/
#endif
-#define BTA_HL_NUM_TIMERS 7
+#define BTA_HL_NUM_TIMERS 7
-#define BTA_HL_CCH_RSP_TOUT 2000
-#define BTA_HL_MAX_TIME 255
-#define BTA_HL_MIN_TIME 1
-#define BTA_HL_INVALID_APP_HANDLE 0xFF
-#define BTA_HL_INVALID_MCL_HANDLE 0xFF
-#define BTA_HL_INVALID_MDL_HANDLE 0xFFFF
+#define BTA_HL_CCH_RSP_TOUT 2000
+#define BTA_HL_MAX_TIME 255
+#define BTA_HL_MIN_TIME 1
+#define BTA_HL_INVALID_APP_HANDLE 0xFF
+#define BTA_HL_INVALID_MCL_HANDLE 0xFF
+#define BTA_HL_INVALID_MDL_HANDLE 0xFFFF
-#define BTA_HL_STATUS_OK 0
-#define BTA_HL_STATUS_FAIL 1 /* Used to pass all other errors */
-#define BTA_HL_STATUS_ABORTED 2
-#define BTA_HL_STATUS_NO_RESOURCE 3
-#define BTA_HL_STATUS_LAST_ITEM 4
-#define BTA_HL_STATUS_DUPLICATE_APP_ID 5
-#define BTA_HL_STATUS_INVALID_APP_HANDLE 6
-#define BTA_HL_STATUS_INVALID_MCL_HANDLE 7
-#define BTA_HL_STATUS_MCAP_REG_FAIL 8
-#define BTA_HL_STATUS_MDEP_CO_FAIL 9
-#define BTA_HL_STATUS_ECHO_CO_FAIL 10
-#define BTA_HL_STATUS_MDL_CFG_CO_FAIL 11
-#define BTA_HL_STATUS_SDP_NO_RESOURCE 12
-#define BTA_HL_STATUS_SDP_FAIL 13
-#define BTA_HL_STATUS_NO_CCH 14
-#define BTA_HL_STATUS_NO_MCL 15
+#define BTA_HL_STATUS_OK 0
+#define BTA_HL_STATUS_FAIL 1 /* Used to pass all other errors */
+#define BTA_HL_STATUS_ABORTED 2
+#define BTA_HL_STATUS_NO_RESOURCE 3
+#define BTA_HL_STATUS_LAST_ITEM 4
+#define BTA_HL_STATUS_DUPLICATE_APP_ID 5
+#define BTA_HL_STATUS_INVALID_APP_HANDLE 6
+#define BTA_HL_STATUS_INVALID_MCL_HANDLE 7
+#define BTA_HL_STATUS_MCAP_REG_FAIL 8
+#define BTA_HL_STATUS_MDEP_CO_FAIL 9
+#define BTA_HL_STATUS_ECHO_CO_FAIL 10
+#define BTA_HL_STATUS_MDL_CFG_CO_FAIL 11
+#define BTA_HL_STATUS_SDP_NO_RESOURCE 12
+#define BTA_HL_STATUS_SDP_FAIL 13
+#define BTA_HL_STATUS_NO_CCH 14
+#define BTA_HL_STATUS_NO_MCL 15
-#define BTA_HL_STATUS_NO_FIRST_RELIABLE 17
-#define BTA_HL_STATUS_INVALID_DCH_CFG 18
-#define BTA_HL_STATUS_INVALID_MDL_HANDLE 19
-#define BTA_HL_STATUS_INVALID_BD_ADDR 20
+#define BTA_HL_STATUS_NO_FIRST_RELIABLE 17
+#define BTA_HL_STATUS_INVALID_DCH_CFG 18
+#define BTA_HL_STATUS_INVALID_MDL_HANDLE 19
+#define BTA_HL_STATUS_INVALID_BD_ADDR 20
#define BTA_HL_STATUS_INVALID_RECONNECT_CFG 21
-#define BTA_HL_STATUS_ECHO_TEST_BUSY 22
+#define BTA_HL_STATUS_ECHO_TEST_BUSY 22
#define BTA_HL_STATUS_INVALID_LOCAL_MDEP_ID 23
-#define BTA_HL_STATUS_INVALID_MDL_ID 24
-#define BTA_HL_STATUS_NO_MDL_ID_FOUND 25
-#define BTA_HL_STATUS_DCH_BUSY 26 /* DCH is congested*/
-#define BTA_HL_STATUS_INVALID_CTRL_PSM 27
-#define BTA_HL_STATUS_DUPLICATE_CCH_OPEN 28
+#define BTA_HL_STATUS_INVALID_MDL_ID 24
+#define BTA_HL_STATUS_NO_MDL_ID_FOUND 25
+#define BTA_HL_STATUS_DCH_BUSY 26 /* DCH is congested*/
+#define BTA_HL_STATUS_INVALID_CTRL_PSM 27
+#define BTA_HL_STATUS_DUPLICATE_CCH_OPEN 28
typedef uint8_t tBTA_HL_STATUS;
typedef tMCA_HANDLE tBTA_HL_APP_HANDLE;
-typedef tMCA_CL tBTA_HL_MCL_HANDLE;
-typedef tMCA_DL tBTA_HL_MDL_HANDLE;
-enum
-{
- BTA_HL_DEVICE_TYPE_SINK,
- BTA_HL_DEVICE_TYPE_SOURCE,
- BTA_HL_DEVICE_TYPE_DUAL
+typedef tMCA_CL tBTA_HL_MCL_HANDLE;
+typedef tMCA_DL tBTA_HL_MDL_HANDLE;
+enum {
+ BTA_HL_DEVICE_TYPE_SINK,
+ BTA_HL_DEVICE_TYPE_SOURCE,
+ BTA_HL_DEVICE_TYPE_DUAL
};
typedef uint8_t tBTA_HL_DEVICE_TYPE;
+#define BTA_HL_SDP_IEEE_11073_20601 0x01
+#define BTA_HL_MCAP_SUP_RECONNECT_MASK_INIT 2 /* 0x02 */
+#define BTA_HL_MCAP_SUP_RECONNECT_MASK_ACCEPT 4 /* 0x04 */
+#define BTA_HL_MCAP_SUP_CSP_MASK_SYNC_SLAVE 0 /* 0x08 */
+#define BTA_HL_MCAP_SUP_CSP_MASK_SYNC_MASTER 0 /* 0x10 */
-#define BTA_HL_SDP_IEEE_11073_20601 0x01
-
-#define BTA_HL_MCAP_SUP_RECONNECT_MASK_INIT 2 /* 0x02 */
-#define BTA_HL_MCAP_SUP_RECONNECT_MASK_ACCEPT 4 /* 0x04 */
-#define BTA_HL_MCAP_SUP_CSP_MASK_SYNC_SLAVE 0 /* 0x08 */
-#define BTA_HL_MCAP_SUP_CSP_MASK_SYNC_MASTER 0 /* 0x10 */
-
-#define BTA_HL_MCAP_SUP_PROC_MASK (BTA_HL_MCAP_SUP_RECONNECT_MASK_INIT | \
- BTA_HL_MCAP_SUP_RECONNECT_MASK_ACCEPT | \
- BTA_HL_MCAP_SUP_CSP_MASK_SYNC_SLAVE | \
- BTA_HL_MCAP_SUP_CSP_MASK_SYNC_MASTER)
-#define BTA_HL_MDEP_ROLE_SOURCE 0x00
-#define BTA_HL_MDEP_ROLE_SINK 0x01
+#define BTA_HL_MCAP_SUP_PROC_MASK \
+ (BTA_HL_MCAP_SUP_RECONNECT_MASK_INIT | \
+ BTA_HL_MCAP_SUP_RECONNECT_MASK_ACCEPT | \
+ BTA_HL_MCAP_SUP_CSP_MASK_SYNC_SLAVE | BTA_HL_MCAP_SUP_CSP_MASK_SYNC_MASTER)
+#define BTA_HL_MDEP_ROLE_SOURCE 0x00
+#define BTA_HL_MDEP_ROLE_SINK 0x01
typedef uint8_t tBTA_HL_MDEP_ROLE;
-#define BTA_HL_MDEP_ROLE_MASK_SOURCE 0x01 /* bit mask */
-#define BTA_HL_MDEP_ROLE_MASK_SINK 0x02
+#define BTA_HL_MDEP_ROLE_MASK_SOURCE 0x01 /* bit mask */
+#define BTA_HL_MDEP_ROLE_MASK_SINK 0x02
typedef uint8_t tBTA_HL_MDEP_ROLE_MASK;
+#define BTA_HL_ECHO_TEST_MDEP_ID 0
+#define BTA_HL_ECHO_TEST_MDEP_CFG_IDX 0
-#define BTA_HL_ECHO_TEST_MDEP_ID 0
-#define BTA_HL_ECHO_TEST_MDEP_CFG_IDX 0
-
-#define BTA_HL_INVALID_MDEP_ID 0xFF
+#define BTA_HL_INVALID_MDEP_ID 0xFF
typedef tMCA_DEP tBTA_HL_MDEP_ID; /* 0 is for echo test,
0x01-0x7F availave for use,
0x80-0xFF reserved*/
+#define BTA_HL_DELETE_ALL_MDL_IDS 0xFFFF
+#define BTA_HL_MAX_MDL_VAL 0xFEFF
+typedef uint16_t tBTA_HL_MDL_ID; /* 0x0000 reserved,
+ 0x0001-0xFEFF dynamic range,
+ 0xFF00-0xFFFE reserved,
+ 0xFFFF indicates all MDLs*/
-#define BTA_HL_DELETE_ALL_MDL_IDS 0xFFFF
-#define BTA_HL_MAX_MDL_VAL 0xFEFF
-typedef uint16_t tBTA_HL_MDL_ID; /* 0x0000 reserved,
- 0x0001-0xFEFF dynamic range,
- 0xFF00-0xFFFE reserved,
- 0xFFFF indicates all MDLs*/
+#define BTA_HL_MDEP_DESP_LEN 35
-#define BTA_HL_MDEP_DESP_LEN 35
-
-#define BTA_HL_DCH_MODE_RELIABLE 0
-#define BTA_HL_DCH_MODE_STREAMING 1
+#define BTA_HL_DCH_MODE_RELIABLE 0
+#define BTA_HL_DCH_MODE_STREAMING 1
typedef uint8_t tBTA_HL_DCH_MODE;
-#define BTA_HL_DCH_CFG_NO_PREF 0
-#define BTA_HL_DCH_CFG_RELIABLE 1
-#define BTA_HL_DCH_CFG_STREAMING 2
-#define BTA_HL_DCH_CFG_UNKNOWN 0xFF
+#define BTA_HL_DCH_CFG_NO_PREF 0
+#define BTA_HL_DCH_CFG_RELIABLE 1
+#define BTA_HL_DCH_CFG_STREAMING 2
+#define BTA_HL_DCH_CFG_UNKNOWN 0xFF
typedef uint8_t tBTA_HL_DCH_CFG;
@@ -217,415 +214,359 @@
typedef uint8_t tBTA_HL_DCH_CREATE_RSP;
#define BTA_HL_MCAP_SUP_PROC_RECONNECT_INIT 0x02
-#define BTA_HL_MCAP_SUP_PROC_RECONNECT_APT 0x04
-#define BTA_HL_MCAP_SUP_PROC_CSP_SLAVE 0x08
-#define BTA_HL_MCAP_SUP_PROC_CSP_MASTER 0x10
+#define BTA_HL_MCAP_SUP_PROC_RECONNECT_APT 0x04
+#define BTA_HL_MCAP_SUP_PROC_CSP_SLAVE 0x08
+#define BTA_HL_MCAP_SUP_PROC_CSP_MASTER 0x10
typedef uint8_t tBTA_HL_SUP_PROC_MASK;
-typedef struct
-{
- uint16_t max_rx_apdu_size; /* local rcv MTU */
- uint16_t max_tx_apdu_size; /* maximum TX APDU size*/
+typedef struct {
+ uint16_t max_rx_apdu_size; /* local rcv MTU */
+ uint16_t max_tx_apdu_size; /* maximum TX APDU size*/
} tBTA_HL_ECHO_CFG;
-
-typedef struct
-{
- uint16_t data_type;
- uint16_t max_rx_apdu_size; /* local rcv MTU */
- uint16_t max_tx_apdu_size; /* maximum TX APDU size*/
- char desp[BTA_HL_MDEP_DESP_LEN+1];
+typedef struct {
+ uint16_t data_type;
+ uint16_t max_rx_apdu_size; /* local rcv MTU */
+ uint16_t max_tx_apdu_size; /* maximum TX APDU size*/
+ char desp[BTA_HL_MDEP_DESP_LEN + 1];
} tBTA_HL_MDEP_DATA_TYPE_CFG;
-
-typedef struct
-{
- tBTA_HL_MDEP_ROLE mdep_role;
- uint8_t num_of_mdep_data_types;
- tBTA_HL_MDEP_DATA_TYPE_CFG data_cfg[BTA_HL_NUM_DATA_TYPES];
+typedef struct {
+ tBTA_HL_MDEP_ROLE mdep_role;
+ uint8_t num_of_mdep_data_types;
+ tBTA_HL_MDEP_DATA_TYPE_CFG data_cfg[BTA_HL_NUM_DATA_TYPES];
} tBTA_HL_MDEP_CFG;
-typedef struct
-{
- tBTA_HL_MDEP_ID mdep_id; /* MDEP ID 0x01-0x7F */
- tBTA_HL_MDEP_CFG mdep_cfg;
- uint8_t ori_app_id;
+typedef struct {
+ tBTA_HL_MDEP_ID mdep_id; /* MDEP ID 0x01-0x7F */
+ tBTA_HL_MDEP_CFG mdep_cfg;
+ uint8_t ori_app_id;
} tBTA_HL_MDEP;
-typedef struct
-{
- tBTA_HL_MDEP mdep[BTA_HL_NUM_MDEPS];
- tBTA_HL_ECHO_CFG echo_cfg;
- tBTA_HL_MDEP_ROLE_MASK app_role_mask;
- bool advertize_source_sdp;
- uint8_t num_of_mdeps;
+typedef struct {
+ tBTA_HL_MDEP mdep[BTA_HL_NUM_MDEPS];
+ tBTA_HL_ECHO_CFG echo_cfg;
+ tBTA_HL_MDEP_ROLE_MASK app_role_mask;
+ bool advertize_source_sdp;
+ uint8_t num_of_mdeps;
} tBTA_HL_SUP_FEATURE;
-typedef struct
-{
- bool delete_req_pending;
- tBTA_HL_MDL_ID mdl_id;
- tBTA_HL_MCL_HANDLE mcl_handle;
+typedef struct {
+ bool delete_req_pending;
+ tBTA_HL_MDL_ID mdl_id;
+ tBTA_HL_MCL_HANDLE mcl_handle;
} tBTA_HL_DELETE_MDL;
-typedef struct
-{
- uint8_t time;
- uint16_t mtu;
- tBTA_HL_MDL_ID mdl_id;
- tBTA_HL_MDEP_ID local_mdep_id;
- tBTA_HL_MDEP_ROLE local_mdep_role;
- bool active; /* true if this item is in use */
- tBTA_HL_DCH_MODE dch_mode;
- uint8_t fcs;
- BD_ADDR peer_bd_addr;
+typedef struct {
+ uint8_t time;
+ uint16_t mtu;
+ tBTA_HL_MDL_ID mdl_id;
+ tBTA_HL_MDEP_ID local_mdep_id;
+ tBTA_HL_MDEP_ROLE local_mdep_role;
+ bool active; /* true if this item is in use */
+ tBTA_HL_DCH_MODE dch_mode;
+ uint8_t fcs;
+ BD_ADDR peer_bd_addr;
} tBTA_HL_MDL_CFG;
-
-/* Maximum number of supported feature list items (list_elem in tSDP_SUP_FEATURE_ELEM) */
-#define BTA_HL_NUM_SUP_FEATURE_ELEMS 13
-#define BTA_HL_SUP_FEATURE_SDP_BUF_SIZE 512
-/* This structure is used to add supported feature lists and find supported feature elements */
-typedef struct
-{
- uint8_t mdep_id;
- uint16_t data_type;
- tBTA_HL_MDEP_ROLE mdep_role;
- char *p_mdep_desp;
+/* Maximum number of supported feature list items (list_elem in
+ * tSDP_SUP_FEATURE_ELEM) */
+#define BTA_HL_NUM_SUP_FEATURE_ELEMS 13
+#define BTA_HL_SUP_FEATURE_SDP_BUF_SIZE 512
+/* This structure is used to add supported feature lists and find supported
+ * feature elements */
+typedef struct {
+ uint8_t mdep_id;
+ uint16_t data_type;
+ tBTA_HL_MDEP_ROLE mdep_role;
+ char* p_mdep_desp;
} tBTA_HL_SUP_FEATURE_ELEM;
-typedef struct
-{
- uint16_t num_elems;
- tBTA_HL_SUP_FEATURE_ELEM list_elem[BTA_HL_NUM_SUP_FEATURE_ELEMS];
+typedef struct {
+ uint16_t num_elems;
+ tBTA_HL_SUP_FEATURE_ELEM list_elem[BTA_HL_NUM_SUP_FEATURE_ELEMS];
} tBTA_HL_SUP_FEATURE_LIST_ELEM;
-
-typedef struct
-{
- tBTA_HL_DEVICE_TYPE dev_type; /* sink, source or dual roles */
- tBTA_SEC sec_mask; /* security mask for accepting conenction*/
- const char *p_srv_name; /* service name to be used in the SDP; null terminated*/
- const char *p_srv_desp; /* service description to be used in the SDP; null terminated */
- const char *p_provider_name; /* provide name to be used in the SDP; null terminated */
+typedef struct {
+ tBTA_HL_DEVICE_TYPE dev_type; /* sink, source or dual roles */
+ tBTA_SEC sec_mask; /* security mask for accepting conenction*/
+ const char*
+ p_srv_name; /* service name to be used in the SDP; null terminated*/
+ const char* p_srv_desp; /* service description to be used in the SDP; null
+ terminated */
+ const char*
+ p_provider_name; /* provide name to be used in the SDP; null terminated */
} tBTA_HL_REG_PARAM;
-typedef struct
-{
- uint16_t ctrl_psm;
- BD_ADDR bd_addr; /* Address of peer device */
- tBTA_SEC sec_mask; /* security mask for initiating connection*/
+typedef struct {
+ uint16_t ctrl_psm;
+ BD_ADDR bd_addr; /* Address of peer device */
+ tBTA_SEC sec_mask; /* security mask for initiating connection*/
} tBTA_HL_CCH_OPEN_PARAM;
-
-typedef struct
-{
- uint16_t ctrl_psm;
- tBTA_HL_MDEP_ID local_mdep_id; /* local MDEP ID */
- tBTA_HL_MDEP_ID peer_mdep_id; /* peer mdep id */
- tBTA_HL_DCH_CFG local_cfg;
- tBTA_SEC sec_mask; /* security mask for initiating connection*/
+typedef struct {
+ uint16_t ctrl_psm;
+ tBTA_HL_MDEP_ID local_mdep_id; /* local MDEP ID */
+ tBTA_HL_MDEP_ID peer_mdep_id; /* peer mdep id */
+ tBTA_HL_DCH_CFG local_cfg;
+ tBTA_SEC sec_mask; /* security mask for initiating connection*/
} tBTA_HL_DCH_OPEN_PARAM;
-
-typedef struct
-{
- uint16_t ctrl_psm;
- tBTA_HL_MDL_ID mdl_id;
+typedef struct {
+ uint16_t ctrl_psm;
+ tBTA_HL_MDL_ID mdl_id;
} tBTA_HL_DCH_RECONNECT_PARAM;
-
-typedef struct
-{
- uint16_t ctrl_psm;
- uint16_t pkt_size;
- tBTA_HL_DCH_CFG local_cfg;
+typedef struct {
+ uint16_t ctrl_psm;
+ uint16_t pkt_size;
+ tBTA_HL_DCH_CFG local_cfg;
} tBTA_HL_DCH_ECHO_TEST_PARAM;
-typedef struct
-{
- uint16_t buf_size;
- uint8_t p_buf; /* buffer pointer */
+typedef struct {
+ uint16_t buf_size;
+ uint8_t p_buf; /* buffer pointer */
} tBTA_HL_DCH_BUF_INFO;
-typedef struct
-{
- tBTA_HL_MDEP_ID local_mdep_id; /* local MDEP ID */
- tBTA_HL_MDL_ID mdl_id;
- tBTA_HL_DCH_CREATE_RSP rsp_code;
- tBTA_HL_DCH_CFG cfg_rsp;
+typedef struct {
+ tBTA_HL_MDEP_ID local_mdep_id; /* local MDEP ID */
+ tBTA_HL_MDL_ID mdl_id;
+ tBTA_HL_DCH_CREATE_RSP rsp_code;
+ tBTA_HL_DCH_CFG cfg_rsp;
} tBTA_HL_DCH_CREATE_RSP_PARAM;
-typedef struct
-{
- uint16_t data_type;
- uint8_t mdep_id;
- tBTA_HL_MDEP_ROLE mdep_role;
- char mdep_desp[BTA_HL_MDEP_DESP_LEN+1];
-}tBTA_HL_SDP_MDEP_CFG;
+typedef struct {
+ uint16_t data_type;
+ uint8_t mdep_id;
+ tBTA_HL_MDEP_ROLE mdep_role;
+ char mdep_desp[BTA_HL_MDEP_DESP_LEN + 1];
+} tBTA_HL_SDP_MDEP_CFG;
-typedef struct
-{
- uint16_t ctrl_psm;
- uint16_t data_psm;
- uint8_t mcap_sup_proc;
- uint8_t num_mdeps; /* number of mdep elements from SDP*/
- char srv_name[BTA_SERVICE_NAME_LEN+1];
- char srv_desp[BTA_SERVICE_DESP_LEN+1];
- char provider_name[BTA_PROVIDER_NAME_LEN+1];
- tBTA_HL_SDP_MDEP_CFG mdep_cfg[BTA_HL_NUM_SDP_MDEPS];
+typedef struct {
+ uint16_t ctrl_psm;
+ uint16_t data_psm;
+ uint8_t mcap_sup_proc;
+ uint8_t num_mdeps; /* number of mdep elements from SDP*/
+ char srv_name[BTA_SERVICE_NAME_LEN + 1];
+ char srv_desp[BTA_SERVICE_DESP_LEN + 1];
+ char provider_name[BTA_PROVIDER_NAME_LEN + 1];
+ tBTA_HL_SDP_MDEP_CFG mdep_cfg[BTA_HL_NUM_SDP_MDEPS];
} tBTA_HL_SDP_REC;
-typedef struct
-{
- uint8_t num_recs;
- tBTA_HL_SDP_REC sdp_rec[BTA_HL_NUM_SDP_RECS];
+typedef struct {
+ uint8_t num_recs;
+ tBTA_HL_SDP_REC sdp_rec[BTA_HL_NUM_SDP_RECS];
} tBTA_HL_SDP;
/* HL control callback function events */
-enum
-{
- BTA_HL_CTRL_ENABLE_CFM_EVT = 0,
- BTA_HL_CTRL_DISABLE_CFM_EVT
-};
+enum { BTA_HL_CTRL_ENABLE_CFM_EVT = 0, BTA_HL_CTRL_DISABLE_CFM_EVT };
typedef uint8_t tBTA_HL_CTRL_EVT;
/* Structure associated with BTA_HL_ENABLE_EVT
BTA_HL_DISABLE_EVT */
-typedef struct
-{
- tBTA_HL_STATUS status;
-} tBTA_HL_CTRL_ENABLE_DISABLE;
+typedef struct { tBTA_HL_STATUS status; } tBTA_HL_CTRL_ENABLE_DISABLE;
-typedef union
-{
- tBTA_HL_CTRL_ENABLE_DISABLE enable_cfm;
- tBTA_HL_CTRL_ENABLE_DISABLE disable_cfm;
+typedef union {
+ tBTA_HL_CTRL_ENABLE_DISABLE enable_cfm;
+ tBTA_HL_CTRL_ENABLE_DISABLE disable_cfm;
} tBTA_HL_CTRL;
/* HL instance callback function events */
-enum
-{
- BTA_HL_REGISTER_CFM_EVT =0,
- BTA_HL_DEREGISTER_CFM_EVT,
- BTA_HL_CCH_OPEN_IND_EVT,
- BTA_HL_CCH_OPEN_CFM_EVT,
- BTA_HL_CCH_CLOSE_IND_EVT,
- BTA_HL_CCH_CLOSE_CFM_EVT,
- BTA_HL_DCH_CREATE_IND_EVT,
- BTA_HL_DCH_OPEN_IND_EVT,
- BTA_HL_DCH_OPEN_CFM_EVT,
- BTA_HL_DCH_CLOSE_IND_EVT,
- BTA_HL_DCH_CLOSE_CFM_EVT,
- BTA_HL_DCH_RECONNECT_IND_EVT,
- BTA_HL_DCH_RECONNECT_CFM_EVT,
+enum {
+ BTA_HL_REGISTER_CFM_EVT = 0,
+ BTA_HL_DEREGISTER_CFM_EVT,
+ BTA_HL_CCH_OPEN_IND_EVT,
+ BTA_HL_CCH_OPEN_CFM_EVT,
+ BTA_HL_CCH_CLOSE_IND_EVT,
+ BTA_HL_CCH_CLOSE_CFM_EVT,
+ BTA_HL_DCH_CREATE_IND_EVT,
+ BTA_HL_DCH_OPEN_IND_EVT,
+ BTA_HL_DCH_OPEN_CFM_EVT,
+ BTA_HL_DCH_CLOSE_IND_EVT,
+ BTA_HL_DCH_CLOSE_CFM_EVT,
+ BTA_HL_DCH_RECONNECT_IND_EVT,
+ BTA_HL_DCH_RECONNECT_CFM_EVT,
- BTA_HL_DCH_ABORT_IND_EVT,
- BTA_HL_DCH_ABORT_CFM_EVT,
- BTA_HL_DELETE_MDL_IND_EVT,
- BTA_HL_DELETE_MDL_CFM_EVT,
- BTA_HL_DCH_SEND_DATA_CFM_EVT,
- BTA_HL_DCH_RCV_DATA_IND_EVT,
- BTA_HL_CONG_CHG_IND_EVT,
- BTA_HL_DCH_ECHO_TEST_CFM_EVT,
- BTA_HL_SDP_QUERY_CFM_EVT,
- BTA_HL_SDP_INFO_IND_EVT
+ BTA_HL_DCH_ABORT_IND_EVT,
+ BTA_HL_DCH_ABORT_CFM_EVT,
+ BTA_HL_DELETE_MDL_IND_EVT,
+ BTA_HL_DELETE_MDL_CFM_EVT,
+ BTA_HL_DCH_SEND_DATA_CFM_EVT,
+ BTA_HL_DCH_RCV_DATA_IND_EVT,
+ BTA_HL_CONG_CHG_IND_EVT,
+ BTA_HL_DCH_ECHO_TEST_CFM_EVT,
+ BTA_HL_SDP_QUERY_CFM_EVT,
+ BTA_HL_SDP_INFO_IND_EVT
};
typedef uint8_t tBTA_HL_EVT;
-
-typedef struct
-{
- tBTA_HL_STATUS status; /* start status */
- uint8_t app_id;
- tBTA_HL_APP_HANDLE app_handle;
+typedef struct {
+ tBTA_HL_STATUS status; /* start status */
+ uint8_t app_id;
+ tBTA_HL_APP_HANDLE app_handle;
} tBTA_HL_REGISTER_CFM;
-
-typedef struct
-{
- tBTA_HL_STATUS status; /* start status */
- uint8_t app_id;
- tBTA_HL_APP_HANDLE app_handle;
+typedef struct {
+ tBTA_HL_STATUS status; /* start status */
+ uint8_t app_id;
+ tBTA_HL_APP_HANDLE app_handle;
} tBTA_HL_DEREGISTER_CFM;
-
-typedef struct
-{
- bool intentional;
- tBTA_HL_MCL_HANDLE mcl_handle;
- tBTA_HL_APP_HANDLE app_handle;
+typedef struct {
+ bool intentional;
+ tBTA_HL_MCL_HANDLE mcl_handle;
+ tBTA_HL_APP_HANDLE app_handle;
} tBTA_HL_CCH_CLOSE_IND;
-
-typedef struct
-{
- tBTA_HL_MCL_HANDLE mcl_handle;
- tBTA_HL_APP_HANDLE app_handle;
+typedef struct {
+ tBTA_HL_MCL_HANDLE mcl_handle;
+ tBTA_HL_APP_HANDLE app_handle;
} tBTA_HL_MCL_IND;
-typedef struct
-{
- tBTA_HL_STATUS status; /* connection status */
- tBTA_HL_MCL_HANDLE mcl_handle;
- tBTA_HL_APP_HANDLE app_handle;
+typedef struct {
+ tBTA_HL_STATUS status; /* connection status */
+ tBTA_HL_MCL_HANDLE mcl_handle;
+ tBTA_HL_APP_HANDLE app_handle;
} tBTA_HL_MCL_CFM;
-typedef struct
-{
- tBTA_HL_MCL_HANDLE mcl_handle;
- tBTA_HL_APP_HANDLE app_handle;
- BD_ADDR bd_addr; /* address of peer device */
+typedef struct {
+ tBTA_HL_MCL_HANDLE mcl_handle;
+ tBTA_HL_APP_HANDLE app_handle;
+ BD_ADDR bd_addr; /* address of peer device */
} tBTA_HL_CCH_OPEN_IND;
-typedef struct
-{
- tBTA_HL_STATUS status; /* connection status */
- uint8_t app_id;
- tBTA_HL_MCL_HANDLE mcl_handle;
- tBTA_HL_APP_HANDLE app_handle;
- BD_ADDR bd_addr; /* address of peer device */
+typedef struct {
+ tBTA_HL_STATUS status; /* connection status */
+ uint8_t app_id;
+ tBTA_HL_MCL_HANDLE mcl_handle;
+ tBTA_HL_APP_HANDLE app_handle;
+ BD_ADDR bd_addr; /* address of peer device */
} tBTA_HL_CCH_OPEN_CFM;
-typedef struct
-{
- tBTA_HL_MCL_HANDLE mcl_handle;
- tBTA_HL_APP_HANDLE app_handle;
- tBTA_HL_MDEP_ID local_mdep_id;
- tBTA_HL_MDL_ID mdl_id; /* MCAP data link ID for this
- data channel conenction */
- tBTA_HL_DCH_CFG cfg; /* dch cfg requested by the peer device */
- BD_ADDR bd_addr; /* address of peer device */
+typedef struct {
+ tBTA_HL_MCL_HANDLE mcl_handle;
+ tBTA_HL_APP_HANDLE app_handle;
+ tBTA_HL_MDEP_ID local_mdep_id;
+ tBTA_HL_MDL_ID mdl_id; /* MCAP data link ID for this
+ data channel conenction */
+ tBTA_HL_DCH_CFG cfg; /* dch cfg requested by the peer device */
+ BD_ADDR bd_addr; /* address of peer device */
} tBTA_HL_DCH_CREATE_IND;
-typedef struct
-{
- tBTA_HL_MDL_HANDLE mdl_handle;
- tBTA_HL_MCL_HANDLE mcl_handle;
- tBTA_HL_APP_HANDLE app_handle;
- tBTA_HL_MDEP_ID local_mdep_id;
- tBTA_HL_MDL_ID mdl_id; /* MCAP data link ID for this
- data channel conenction */
- tBTA_HL_DCH_MODE dch_mode; /* data channel mode - reliable or streaming*/
+typedef struct {
+ tBTA_HL_MDL_HANDLE mdl_handle;
+ tBTA_HL_MCL_HANDLE mcl_handle;
+ tBTA_HL_APP_HANDLE app_handle;
+ tBTA_HL_MDEP_ID local_mdep_id;
+ tBTA_HL_MDL_ID mdl_id; /* MCAP data link ID for this
+ data channel conenction */
+ tBTA_HL_DCH_MODE dch_mode; /* data channel mode - reliable or streaming*/
- bool first_reliable; /* whether this is the first reliable data channel */
- uint16_t mtu;
+ bool first_reliable; /* whether this is the first reliable data channel */
+ uint16_t mtu;
} tBTA_HL_DCH_OPEN_IND;
-typedef struct
-{
- tBTA_HL_STATUS status; /* connection status */
- tBTA_HL_MDL_HANDLE mdl_handle;
- tBTA_HL_MCL_HANDLE mcl_handle;
- tBTA_HL_APP_HANDLE app_handle;
- tBTA_HL_MDEP_ID local_mdep_id;
- tBTA_HL_MDL_ID mdl_id; /* MCAP data link ID for this
- data channel conenction */
- tBTA_HL_DCH_MODE dch_mode; /* data channel mode - reliable or streaming*/
- bool first_reliable; /* whether this is the first reliable data channel */
- uint16_t mtu;
+typedef struct {
+ tBTA_HL_STATUS status; /* connection status */
+ tBTA_HL_MDL_HANDLE mdl_handle;
+ tBTA_HL_MCL_HANDLE mcl_handle;
+ tBTA_HL_APP_HANDLE app_handle;
+ tBTA_HL_MDEP_ID local_mdep_id;
+ tBTA_HL_MDL_ID mdl_id; /* MCAP data link ID for this
+ data channel conenction */
+ tBTA_HL_DCH_MODE dch_mode; /* data channel mode - reliable or streaming*/
+ bool first_reliable; /* whether this is the first reliable data channel */
+ uint16_t mtu;
} tBTA_HL_DCH_OPEN_CFM;
-
-typedef struct
-{
- bool intentional;
- tBTA_HL_MDL_HANDLE mdl_handle;
- tBTA_HL_MCL_HANDLE mcl_handle;
- tBTA_HL_APP_HANDLE app_handle;
+typedef struct {
+ bool intentional;
+ tBTA_HL_MDL_HANDLE mdl_handle;
+ tBTA_HL_MCL_HANDLE mcl_handle;
+ tBTA_HL_APP_HANDLE app_handle;
} tBTA_HL_DCH_CLOSE_IND;
-
-typedef struct
-{
- tBTA_HL_MDL_HANDLE mdl_handle;
- tBTA_HL_MCL_HANDLE mcl_handle;
- tBTA_HL_APP_HANDLE app_handle;
+typedef struct {
+ tBTA_HL_MDL_HANDLE mdl_handle;
+ tBTA_HL_MCL_HANDLE mcl_handle;
+ tBTA_HL_APP_HANDLE app_handle;
} tBTA_HL_MDL_IND;
-typedef struct
-{
- tBTA_HL_STATUS status;
- tBTA_HL_MDL_HANDLE mdl_handle;
- tBTA_HL_MCL_HANDLE mcl_handle;
- tBTA_HL_APP_HANDLE app_handle;
+typedef struct {
+ tBTA_HL_STATUS status;
+ tBTA_HL_MDL_HANDLE mdl_handle;
+ tBTA_HL_MCL_HANDLE mcl_handle;
+ tBTA_HL_APP_HANDLE app_handle;
} tBTA_HL_MDL_CFM;
-typedef struct
-{
- tBTA_HL_MCL_HANDLE mcl_handle;
- tBTA_HL_APP_HANDLE app_handle;
- tBTA_HL_MDL_ID mdl_id;
+typedef struct {
+ tBTA_HL_MCL_HANDLE mcl_handle;
+ tBTA_HL_APP_HANDLE app_handle;
+ tBTA_HL_MDL_ID mdl_id;
} tBTA_HL_DELETE_MDL_IND;
-typedef struct
-{
- tBTA_HL_STATUS status;
- tBTA_HL_MCL_HANDLE mcl_handle;
- tBTA_HL_APP_HANDLE app_handle;
- tBTA_HL_MDL_ID mdl_id;
+typedef struct {
+ tBTA_HL_STATUS status;
+ tBTA_HL_MCL_HANDLE mcl_handle;
+ tBTA_HL_APP_HANDLE app_handle;
+ tBTA_HL_MDL_ID mdl_id;
} tBTA_HL_DELETE_MDL_CFM;
-typedef struct
-{
- tBTA_HL_MDL_HANDLE mdl_handle;
- tBTA_HL_MCL_HANDLE mcl_handle;
- tBTA_HL_APP_HANDLE app_handle;
- bool cong;
+typedef struct {
+ tBTA_HL_MDL_HANDLE mdl_handle;
+ tBTA_HL_MCL_HANDLE mcl_handle;
+ tBTA_HL_APP_HANDLE app_handle;
+ bool cong;
} tBTA_HL_DCH_CONG_IND;
-typedef struct
-{
- tBTA_HL_APP_HANDLE app_handle;
- uint16_t ctrl_psm;
- uint16_t data_psm;
- uint8_t data_x_spec;
- uint8_t mcap_sup_procs;
+typedef struct {
+ tBTA_HL_APP_HANDLE app_handle;
+ uint16_t ctrl_psm;
+ uint16_t data_psm;
+ uint8_t data_x_spec;
+ uint8_t mcap_sup_procs;
} tBTA_HL_SDP_INFO_IND;
-typedef struct
-{
- tBTA_HL_STATUS status;
- uint8_t app_id;
- tBTA_HL_APP_HANDLE app_handle;
- BD_ADDR bd_addr;
- tBTA_HL_SDP *p_sdp;
+typedef struct {
+ tBTA_HL_STATUS status;
+ uint8_t app_id;
+ tBTA_HL_APP_HANDLE app_handle;
+ BD_ADDR bd_addr;
+ tBTA_HL_SDP* p_sdp;
} tBTA_HL_SDP_QUERY_CFM;
-typedef union
-{
- tBTA_HL_REGISTER_CFM reg_cfm;
- tBTA_HL_DEREGISTER_CFM dereg_cfm;
- tBTA_HL_CCH_OPEN_IND cch_open_ind;
- tBTA_HL_CCH_OPEN_CFM cch_open_cfm;
- tBTA_HL_CCH_CLOSE_IND cch_close_ind;
- tBTA_HL_MCL_CFM cch_close_cfm;
- tBTA_HL_DCH_CREATE_IND dch_create_ind;
- tBTA_HL_DCH_OPEN_IND dch_open_ind;
- tBTA_HL_DCH_OPEN_CFM dch_open_cfm;
- tBTA_HL_DCH_CLOSE_IND dch_close_ind;
- tBTA_HL_MDL_CFM dch_close_cfm;
- tBTA_HL_DCH_OPEN_IND dch_reconnect_ind;
- tBTA_HL_DCH_OPEN_CFM dch_reconnect_cfm;
- tBTA_HL_MCL_IND dch_abort_ind;
- tBTA_HL_MCL_CFM dch_abort_cfm;
- tBTA_HL_DELETE_MDL_IND delete_mdl_ind;
- tBTA_HL_DELETE_MDL_CFM delete_mdl_cfm;
- tBTA_HL_MDL_CFM dch_send_data_cfm;
- tBTA_HL_MDL_IND dch_rcv_data_ind;
- tBTA_HL_DCH_CONG_IND dch_cong_ind;
- tBTA_HL_MCL_CFM echo_test_cfm;
- tBTA_HL_SDP_QUERY_CFM sdp_query_cfm;
- tBTA_HL_SDP_INFO_IND sdp_info_ind;
+typedef union {
+ tBTA_HL_REGISTER_CFM reg_cfm;
+ tBTA_HL_DEREGISTER_CFM dereg_cfm;
+ tBTA_HL_CCH_OPEN_IND cch_open_ind;
+ tBTA_HL_CCH_OPEN_CFM cch_open_cfm;
+ tBTA_HL_CCH_CLOSE_IND cch_close_ind;
+ tBTA_HL_MCL_CFM cch_close_cfm;
+ tBTA_HL_DCH_CREATE_IND dch_create_ind;
+ tBTA_HL_DCH_OPEN_IND dch_open_ind;
+ tBTA_HL_DCH_OPEN_CFM dch_open_cfm;
+ tBTA_HL_DCH_CLOSE_IND dch_close_ind;
+ tBTA_HL_MDL_CFM dch_close_cfm;
+ tBTA_HL_DCH_OPEN_IND dch_reconnect_ind;
+ tBTA_HL_DCH_OPEN_CFM dch_reconnect_cfm;
+ tBTA_HL_MCL_IND dch_abort_ind;
+ tBTA_HL_MCL_CFM dch_abort_cfm;
+ tBTA_HL_DELETE_MDL_IND delete_mdl_ind;
+ tBTA_HL_DELETE_MDL_CFM delete_mdl_cfm;
+ tBTA_HL_MDL_CFM dch_send_data_cfm;
+ tBTA_HL_MDL_IND dch_rcv_data_ind;
+ tBTA_HL_DCH_CONG_IND dch_cong_ind;
+ tBTA_HL_MCL_CFM echo_test_cfm;
+ tBTA_HL_SDP_QUERY_CFM sdp_query_cfm;
+ tBTA_HL_SDP_INFO_IND sdp_info_ind;
} tBTA_HL;
/* HL callback functions */
-typedef void tBTA_HL_CTRL_CBACK(tBTA_HL_CTRL_EVT event, tBTA_HL_CTRL *p_data);
-typedef void tBTA_HL_CBACK(tBTA_HL_EVT event, tBTA_HL *p_data);
-
+typedef void tBTA_HL_CTRL_CBACK(tBTA_HL_CTRL_EVT event, tBTA_HL_CTRL* p_data);
+typedef void tBTA_HL_CBACK(tBTA_HL_EVT event, tBTA_HL* p_data);
/*****************************************************************************
* External Function Declarations
@@ -649,7 +590,7 @@
* Returns void
*
******************************************************************************/
-extern void BTA_HlEnable(tBTA_HL_CTRL_CBACK *p_ctrl_cback);
+extern void BTA_HlEnable(tBTA_HL_CTRL_CBACK* p_ctrl_cback);
/*******************************************************************************
*
* Function BTA_HlDisable
@@ -675,9 +616,8 @@
* Returns void
*
******************************************************************************/
-extern void BTA_HlUpdate(uint8_t app_id,
- tBTA_HL_REG_PARAM *p_reg_param, bool is_register,
- tBTA_HL_CBACK *p_cback);
+extern void BTA_HlUpdate(uint8_t app_id, tBTA_HL_REG_PARAM* p_reg_param,
+ bool is_register, tBTA_HL_CBACK* p_cback);
/*******************************************************************************
*
@@ -694,9 +634,8 @@
* Returns void
*
******************************************************************************/
-extern void BTA_HlRegister(uint8_t app_id,
- tBTA_HL_REG_PARAM *p_reg_param,
- tBTA_HL_CBACK *p_cback);
+extern void BTA_HlRegister(uint8_t app_id, tBTA_HL_REG_PARAM* p_reg_param,
+ tBTA_HL_CBACK* p_cback);
/*******************************************************************************
*
@@ -709,13 +648,14 @@
* Returns void
*
******************************************************************************/
-extern void BTA_HlDeregister(uint8_t app_id,tBTA_HL_APP_HANDLE app_handle);
+extern void BTA_HlDeregister(uint8_t app_id, tBTA_HL_APP_HANDLE app_handle);
/*******************************************************************************
*
* Function BTA_HlCchOpen
*
- * Description Open a Control channel connection with the specified BD address
+ * Description Open a Control channel connection with the specified BD
+ *address
* and the control PSM value is used to select which
* HDP insatnce should be used in case the peer device support
* multiple HDP instances.
@@ -730,7 +670,7 @@
* instance is used for the control channel setup
******************************************************************************/
extern void BTA_HlCchOpen(uint8_t app_id, tBTA_HL_APP_HANDLE app_handle,
- tBTA_HL_CCH_OPEN_PARAM *p_open_param);
+ tBTA_HL_CCH_OPEN_PARAM* p_open_param);
/*******************************************************************************
*
@@ -744,13 +684,14 @@
* Returns void
*
******************************************************************************/
-extern void BTA_HlCchClose(tBTA_HL_MCL_HANDLE mcl_handle);
+extern void BTA_HlCchClose(tBTA_HL_MCL_HANDLE mcl_handle);
/*******************************************************************************
*
* Function BTA_HlDchOpen
*
- * Description Open a data channel connection with the specified DCH parameters
+ * Description Open a data channel connection with the specified DCH
+ *parameters
*
* Parameters mcl_handle - MCL handle
* p_open_param - parameters for opening a data channel
@@ -758,8 +699,8 @@
* Returns void
*
******************************************************************************/
-extern void BTA_HlDchOpen(tBTA_HL_MCL_HANDLE mcl_handle,
- tBTA_HL_DCH_OPEN_PARAM *p_open_param);
+extern void BTA_HlDchOpen(tBTA_HL_MCL_HANDLE mcl_handle,
+ tBTA_HL_DCH_OPEN_PARAM* p_open_param);
/*******************************************************************************
*
* Function BTA_HlDchReconnect
@@ -773,7 +714,7 @@
*
******************************************************************************/
extern void BTA_HlDchReconnect(tBTA_HL_MCL_HANDLE mcl_handle,
- tBTA_HL_DCH_RECONNECT_PARAM *p_recon_param);
+ tBTA_HL_DCH_RECONNECT_PARAM* p_recon_param);
/*******************************************************************************
*
* Function BTA_HlDchClose
@@ -814,8 +755,7 @@
* Returns void
*
******************************************************************************/
-extern void BTA_HlSendData(tBTA_HL_MDL_HANDLE mdl_handle,
- uint16_t pkt_size);
+extern void BTA_HlSendData(tBTA_HL_MDL_HANDLE mdl_handle, uint16_t pkt_size);
/*******************************************************************************
*
@@ -829,12 +769,13 @@
* Returns void
*
* note: If mdl_id = 0xFFFF then this means to delete all MDLs
- * and this value can only be used with DeleteMdl request only
+ * and this value can only be used with DeleteMdl request
+ *only
* not other requests
*
******************************************************************************/
extern void BTA_HlDeleteMdl(tBTA_HL_MCL_HANDLE mcl_handle,
- tBTA_HL_MDL_ID mdl_id );
+ tBTA_HL_MDL_ID mdl_id);
/*******************************************************************************
*
@@ -848,8 +789,8 @@
* Returns void
*
******************************************************************************/
-extern void BTA_HlDchEchoTest( tBTA_HL_MCL_HANDLE mcl_handle,
- tBTA_HL_DCH_ECHO_TEST_PARAM *p_echo_test_param);
+extern void BTA_HlDchEchoTest(tBTA_HL_MCL_HANDLE mcl_handle,
+ tBTA_HL_DCH_ECHO_TEST_PARAM* p_echo_test_param);
/*******************************************************************************
*
@@ -864,8 +805,8 @@
* Returns void
*
******************************************************************************/
-extern void BTA_HlSdpQuery(uint8_t app_id,tBTA_HL_APP_HANDLE app_handle,
- BD_ADDR bd_addr);
+extern void BTA_HlSdpQuery(uint8_t app_id, tBTA_HL_APP_HANDLE app_handle,
+ BD_ADDR bd_addr);
/*******************************************************************************
*
@@ -875,21 +816,21 @@
* request
*
* Parameters mcl_handle - MCL handle
- * p_rsp_param - parameters specified whether the request should
- * be accepted or not and if it should be accepted
- * then it also specified the configuration response
+ * p_rsp_param - parameters specified whether the request
+ *should
+ * be accepted or not and if it should be
+ *accepted
+ * then it also specified the configuration
+ *response
* value
*
* Returns void
*
******************************************************************************/
extern void BTA_HlDchCreateRsp(tBTA_HL_MCL_HANDLE mcl_handle,
- tBTA_HL_DCH_CREATE_RSP_PARAM *p_rsp_param);
-
-
+ tBTA_HL_DCH_CREATE_RSP_PARAM* p_rsp_param);
#ifdef __cplusplus
-
}
#endif
diff --git a/bta/include/bta_hl_ci.h b/bta/include/bta_hl_ci.h
index fd4116e..f12ed12 100644
--- a/bta/include/bta_hl_ci.h
+++ b/bta/include/bta_hl_ci.h
@@ -60,9 +60,8 @@
* Returns void
*
******************************************************************************/
-extern void bta_hl_ci_get_tx_data( tBTA_HL_MDL_HANDLE mdl_handle,
- tBTA_HL_STATUS status,
- uint16_t evt );
+extern void bta_hl_ci_get_tx_data(tBTA_HL_MDL_HANDLE mdl_handle,
+ tBTA_HL_STATUS status, uint16_t evt);
/*******************************************************************************
*
@@ -79,11 +78,8 @@
* Returns void
*
******************************************************************************/
-extern void bta_hl_ci_put_rx_data( tBTA_HL_MDL_HANDLE mdl_handle,
- tBTA_HL_STATUS status,
- uint16_t evt );
-
-
+extern void bta_hl_ci_put_rx_data(tBTA_HL_MDL_HANDLE mdl_handle,
+ tBTA_HL_STATUS status, uint16_t evt);
/*******************************************************************************
*
@@ -100,10 +96,8 @@
* Returns void
*
******************************************************************************/
-extern void bta_hl_ci_get_echo_data( tBTA_HL_MCL_HANDLE mcl_handle,
- tBTA_HL_STATUS status,
- uint16_t evt );
-
+extern void bta_hl_ci_get_echo_data(tBTA_HL_MCL_HANDLE mcl_handle,
+ tBTA_HL_STATUS status, uint16_t evt);
/*******************************************************************************
*
@@ -120,9 +114,8 @@
* Returns void
*
******************************************************************************/
-extern void bta_hl_ci_put_echo_data( tBTA_HL_MCL_HANDLE mcl_handle,
- tBTA_HL_STATUS status,
- uint16_t evt );
+extern void bta_hl_ci_put_echo_data(tBTA_HL_MCL_HANDLE mcl_handle,
+ tBTA_HL_STATUS status, uint16_t evt);
#ifdef __cplusplus
}
diff --git a/bta/include/bta_hl_co.h b/bta/include/bta_hl_co.h
index 9275907..7a290c5 100644
--- a/bta/include/bta_hl_co.h
+++ b/bta/include/bta_hl_co.h
@@ -39,7 +39,6 @@
* Common Definitions
**************************/
-
/*******************************************************************************
*
* Function bta_hl_co_get_num_of_mdep
@@ -48,19 +47,21 @@
* application ID
*
* Parameters app_id - application ID
- * p_num_of_mdep (output) - number of MDEP configurations supported
+ * p_num_of_mdep (output) - number of MDEP configurations
+ *supported
* by the application
*
* Returns Bloolean - true success
*
******************************************************************************/
-extern bool bta_hl_co_get_num_of_mdep(uint8_t app_id, uint8_t *p_num_of_mdep);
+extern bool bta_hl_co_get_num_of_mdep(uint8_t app_id, uint8_t* p_num_of_mdep);
/*******************************************************************************
*
* Function bta_hl_co_advrtise_source_sdp
*
* Description This function is called to find out whether the SOURCE MDEP
- * configuration information should be advertize in the SDP or nopt
+ * configuration information should be advertize in the SDP or
+ *nopt
*
* Parameters app_id - application ID
*
@@ -74,7 +75,8 @@
* Function bta_hl_co_get_mdep_config
*
* Description This function is called to get the supported feature
- * configuration for the specified mdep index and it also assigns
+ * configuration for the specified mdep index and it also
+ *assigns
* the MDEP ID for the specified mdep index
*
* Parameters app_id - HDP application ID
@@ -86,12 +88,10 @@
*
* Returns Bloolean - true success
******************************************************************************/
-extern bool bta_hl_co_get_mdep_config(uint8_t app_id,
- uint8_t mdep_idx,
- uint8_t mdep_counter,
- tBTA_HL_MDEP_ID mdep_id,
- tBTA_HL_MDEP_CFG *p_mdep_cfg);
-
+extern bool bta_hl_co_get_mdep_config(uint8_t app_id, uint8_t mdep_idx,
+ uint8_t mdep_counter,
+ tBTA_HL_MDEP_ID mdep_id,
+ tBTA_HL_MDEP_CFG* p_mdep_cfg);
/*******************************************************************************
*
@@ -101,20 +101,21 @@
* maximum APDU size configuration
*
* Parameters app_id - HDP application ID
- * p_echo_cfg (output) - pointer to the Echo test maximum APDU size
+ * p_echo_cfg (output) - pointer to the Echo test maximum APDU
+ *size
* configuration
*
* Returns Bloolean - true success
******************************************************************************/
-extern bool bta_hl_co_get_echo_config(uint8_t app_id,
- tBTA_HL_ECHO_CFG *p_echo_cfg);
-
+extern bool bta_hl_co_get_echo_config(uint8_t app_id,
+ tBTA_HL_ECHO_CFG* p_echo_cfg);
/*******************************************************************************
*
* Function bta_hl_co_save_mdl
*
- * Description This function is called to save a MDL configuration item in persistent
+ * Description This function is called to save a MDL configuration item in
+ *persistent
* storage
*
* Parameters app_id - HDP application ID
@@ -124,12 +125,14 @@
* Returns void
*
******************************************************************************/
-extern void bta_hl_co_save_mdl(uint8_t app_id, uint8_t item_idx, tBTA_HL_MDL_CFG *p_mdl_cfg );
+extern void bta_hl_co_save_mdl(uint8_t app_id, uint8_t item_idx,
+ tBTA_HL_MDL_CFG* p_mdl_cfg);
/*******************************************************************************
*
* Function bta_hl_co_delete_mdl
*
- * Description This function is called to delete a MDL configuration item in persistent
+ * Description This function is called to delete a MDL configuration item in
+ *persistent
* storage
*
* Parameters app_id - HDP application ID
@@ -144,20 +147,21 @@
* Function bta_hl_co_get_mdl_config
*
* Description This function is called to get the MDL configuration
- * from teh persistent memory. This function shall only be called
+ * from teh persistent memory. This function shall only be
+*called
*8 once after the device is powered up
*
* Parameters app_id - HDP application ID
- * buffer_size - the unit of the buffer size is sizeof(tBTA_HL_MDL_CFG)
+ * buffer_size - the unit of the buffer size is
+*sizeof(tBTA_HL_MDL_CFG)
* p_mdl_buf - Point to the starting location of the buffer
*
* Returns bool
*
*
******************************************************************************/
-extern bool bta_hl_co_load_mdl_config (uint8_t app_id, uint8_t buffer_size,
- tBTA_HL_MDL_CFG *p_mdl_buf );
-
+extern bool bta_hl_co_load_mdl_config(uint8_t app_id, uint8_t buffer_size,
+ tBTA_HL_MDL_CFG* p_mdl_buf);
/*******************************************************************************
*
@@ -175,9 +179,9 @@
* Returns Void
*
******************************************************************************/
-extern void bta_hl_co_get_tx_data (uint8_t app_id, tBTA_HL_MDL_HANDLE mdl_handle,
- uint16_t buf_size, uint8_t *p_buf, uint16_t evt);
-
+extern void bta_hl_co_get_tx_data(uint8_t app_id, tBTA_HL_MDL_HANDLE mdl_handle,
+ uint16_t buf_size, uint8_t* p_buf,
+ uint16_t evt);
/*******************************************************************************
*
@@ -195,8 +199,9 @@
* Returns Void
*
******************************************************************************/
-extern void bta_hl_co_put_rx_data (uint8_t app_id, tBTA_HL_MDL_HANDLE mdl_handle,
- uint16_t data_size, uint8_t *p_data, uint16_t evt);
+extern void bta_hl_co_put_rx_data(uint8_t app_id, tBTA_HL_MDL_HANDLE mdl_handle,
+ uint16_t data_size, uint8_t* p_data,
+ uint16_t evt);
/*******************************************************************************
*
* Function bta_hl_co_get_tx_data
@@ -213,8 +218,10 @@
* Returns Void
*
******************************************************************************/
-extern void bta_hl_co_get_echo_data (uint8_t app_id, tBTA_HL_MCL_HANDLE mcl_handle,
- uint16_t buf_size, uint8_t *p_buf, uint16_t evt);
+extern void bta_hl_co_get_echo_data(uint8_t app_id,
+ tBTA_HL_MCL_HANDLE mcl_handle,
+ uint16_t buf_size, uint8_t* p_buf,
+ uint16_t evt);
/*******************************************************************************
*
@@ -232,8 +239,10 @@
* Returns Void
*
******************************************************************************/
-extern void bta_hl_co_put_echo_data (uint8_t app_id, tBTA_HL_MCL_HANDLE mcl_handle,
- uint16_t data_size, uint8_t *p_data, uint16_t evt);
+extern void bta_hl_co_put_echo_data(uint8_t app_id,
+ tBTA_HL_MCL_HANDLE mcl_handle,
+ uint16_t data_size, uint8_t* p_data,
+ uint16_t evt);
#ifdef __cplusplus
}
diff --git a/bta/include/bta_jv_api.h b/bta/include/bta_jv_api.h
index bf1371c..b25b312 100644
--- a/bta/include/bta_jv_api.h
+++ b/bta/include/bta_jv_api.h
@@ -38,372 +38,355 @@
* Constants and data types
****************************************************************************/
/* status values */
-#define BTA_JV_SUCCESS 0 /* Successful operation. */
-#define BTA_JV_FAILURE 1 /* Generic failure. */
-#define BTA_JV_BUSY 2 /* Temporarily can not handle this request. */
-#define BTA_JV_NO_DATA 3 /* no data. */
-#define BTA_JV_NO_RESOURCE 4 /* No more set pm control block */
+#define BTA_JV_SUCCESS 0 /* Successful operation. */
+#define BTA_JV_FAILURE 1 /* Generic failure. */
+#define BTA_JV_BUSY 2 /* Temporarily can not handle this request. */
+#define BTA_JV_NO_DATA 3 /* no data. */
+#define BTA_JV_NO_RESOURCE 4 /* No more set pm control block */
typedef uint8_t tBTA_JV_STATUS;
-#define BTA_JV_INTERNAL_ERR (-1) /* internal error. */
+#define BTA_JV_INTERNAL_ERR (-1) /* internal error. */
-#define BTA_JV_MAX_UUIDS SDP_MAX_UUID_FILTERS
-#define BTA_JV_MAX_ATTRS SDP_MAX_ATTR_FILTERS
-#define BTA_JV_MAX_SDP_REC SDP_MAX_RECORDS
-#define BTA_JV_MAX_L2C_CONN GAP_MAX_CONNECTIONS /* GAP handle is used as index, hence do not change this value */
-#define BTA_JV_MAX_SCN PORT_MAX_RFC_PORTS /* same as BTM_MAX_SCN (in btm_int.h) */
-#define BTA_JV_MAX_RFC_CONN MAX_RFC_PORTS
+#define BTA_JV_MAX_UUIDS SDP_MAX_UUID_FILTERS
+#define BTA_JV_MAX_ATTRS SDP_MAX_ATTR_FILTERS
+#define BTA_JV_MAX_SDP_REC SDP_MAX_RECORDS
+#define BTA_JV_MAX_L2C_CONN \
+ GAP_MAX_CONNECTIONS /* GAP handle is used as index, hence do not change this \
+ value */
+#define BTA_JV_MAX_SCN \
+ PORT_MAX_RFC_PORTS /* same as BTM_MAX_SCN (in btm_int.h) */
+#define BTA_JV_MAX_RFC_CONN MAX_RFC_PORTS
#ifndef BTA_JV_DEF_RFC_MTU
-#define BTA_JV_DEF_RFC_MTU (3*330)
+#define BTA_JV_DEF_RFC_MTU (3 * 330)
#endif
#ifndef BTA_JV_MAX_RFC_SR_SESSION
-#define BTA_JV_MAX_RFC_SR_SESSION MAX_BD_CONNECTIONS
+#define BTA_JV_MAX_RFC_SR_SESSION MAX_BD_CONNECTIONS
#endif
/* BTA_JV_MAX_RFC_SR_SESSION can not be bigger than MAX_BD_CONNECTIONS */
#if (BTA_JV_MAX_RFC_SR_SESSION > MAX_BD_CONNECTIONS)
#undef BTA_JV_MAX_RFC_SR_SESSION
-#define BTA_JV_MAX_RFC_SR_SESSION MAX_BD_CONNECTIONS
+#define BTA_JV_MAX_RFC_SR_SESSION MAX_BD_CONNECTIONS
#endif
#define BTA_JV_FIRST_SERVICE_ID BTA_FIRST_JV_SERVICE_ID
-#define BTA_JV_LAST_SERVICE_ID BTA_LAST_JV_SERVICE_ID
-#define BTA_JV_NUM_SERVICE_ID (BTA_LAST_JV_SERVICE_ID - BTA_FIRST_JV_SERVICE_ID + 1)
+#define BTA_JV_LAST_SERVICE_ID BTA_LAST_JV_SERVICE_ID
+#define BTA_JV_NUM_SERVICE_ID \
+ (BTA_LAST_JV_SERVICE_ID - BTA_FIRST_JV_SERVICE_ID + 1)
/* Discoverable modes */
-enum
-{
- BTA_JV_DISC_NONE,
- BTA_JV_DISC_LIMITED,
- BTA_JV_DISC_GENERAL
-};
+enum { BTA_JV_DISC_NONE, BTA_JV_DISC_LIMITED, BTA_JV_DISC_GENERAL };
typedef uint16_t tBTA_JV_DISC;
-#define BTA_JV_ROLE_SLAVE BTM_ROLE_SLAVE
-#define BTA_JV_ROLE_MASTER BTM_ROLE_MASTER
+#define BTA_JV_ROLE_SLAVE BTM_ROLE_SLAVE
+#define BTA_JV_ROLE_MASTER BTM_ROLE_MASTER
typedef uint32_t tBTA_JV_ROLE;
-#define BTA_JV_SERVICE_LMTD_DISCOVER BTM_COD_SERVICE_LMTD_DISCOVER /* 0x0020 */
-#define BTA_JV_SERVICE_POSITIONING BTM_COD_SERVICE_POSITIONING /* 0x0100 */
-#define BTA_JV_SERVICE_NETWORKING BTM_COD_SERVICE_NETWORKING /* 0x0200 */
-#define BTA_JV_SERVICE_RENDERING BTM_COD_SERVICE_RENDERING /* 0x0400 */
-#define BTA_JV_SERVICE_CAPTURING BTM_COD_SERVICE_CAPTURING /* 0x0800 */
-#define BTA_JV_SERVICE_OBJ_TRANSFER BTM_COD_SERVICE_OBJ_TRANSFER /* 0x1000 */
-#define BTA_JV_SERVICE_AUDIO BTM_COD_SERVICE_AUDIO /* 0x2000 */
-#define BTA_JV_SERVICE_TELEPHONY BTM_COD_SERVICE_TELEPHONY /* 0x4000 */
-#define BTA_JV_SERVICE_INFORMATION BTM_COD_SERVICE_INFORMATION /* 0x8000 */
+#define BTA_JV_SERVICE_LMTD_DISCOVER \
+ BTM_COD_SERVICE_LMTD_DISCOVER /* 0x0020 \
+ */
+#define BTA_JV_SERVICE_POSITIONING BTM_COD_SERVICE_POSITIONING /* 0x0100 */
+#define BTA_JV_SERVICE_NETWORKING BTM_COD_SERVICE_NETWORKING /* 0x0200 */
+#define BTA_JV_SERVICE_RENDERING BTM_COD_SERVICE_RENDERING /* 0x0400 */
+#define BTA_JV_SERVICE_CAPTURING BTM_COD_SERVICE_CAPTURING /* 0x0800 */
+#define BTA_JV_SERVICE_OBJ_TRANSFER BTM_COD_SERVICE_OBJ_TRANSFER /* 0x1000 */
+#define BTA_JV_SERVICE_AUDIO BTM_COD_SERVICE_AUDIO /* 0x2000 */
+#define BTA_JV_SERVICE_TELEPHONY BTM_COD_SERVICE_TELEPHONY /* 0x4000 */
+#define BTA_JV_SERVICE_INFORMATION BTM_COD_SERVICE_INFORMATION /* 0x8000 */
/* JV ID type */
-#define BTA_JV_PM_ID_1 1 /* PM example profile 1 */
-#define BTA_JV_PM_ID_2 2 /* PM example profile 2 */
-#define BTA_JV_PM_ID_CLEAR 0 /* Special JV ID used to clear PM profile */
-#define BTA_JV_PM_ALL 0xFF /* Generic match all id, see bta_dm_cfg.c */
+#define BTA_JV_PM_ID_1 1 /* PM example profile 1 */
+#define BTA_JV_PM_ID_2 2 /* PM example profile 2 */
+#define BTA_JV_PM_ID_CLEAR 0 /* Special JV ID used to clear PM profile */
+#define BTA_JV_PM_ALL 0xFF /* Generic match all id, see bta_dm_cfg.c */
typedef uint8_t tBTA_JV_PM_ID;
-#define BTA_JV_PM_HANDLE_CLEAR 0xFF /* Special JV ID used to clear PM profile */
+#define BTA_JV_PM_HANDLE_CLEAR \
+ 0xFF /* Special JV ID used to clear PM profile */
-/* define maximum number of registered PM entities. should be in sync with bta pm! */
+/* define maximum number of registered PM entities. should be in sync with bta
+ * pm! */
#ifndef BTA_JV_PM_MAX_NUM
#define BTA_JV_PM_MAX_NUM 5
#endif
/* JV pm connection states */
-enum
-{
- BTA_JV_CONN_OPEN = 0, /* Connection opened state */
- BTA_JV_CONN_CLOSE, /* Connection closed state */
- BTA_JV_APP_OPEN, /* JV Application opened state */
- BTA_JV_APP_CLOSE, /* JV Application closed state */
- BTA_JV_SCO_OPEN, /* SCO connection opened state */
- BTA_JV_SCO_CLOSE, /* SCO connection opened state */
- BTA_JV_CONN_IDLE, /* Connection idle state */
- BTA_JV_CONN_BUSY, /* Connection busy state */
- BTA_JV_MAX_CONN_STATE /* Max number of connection state */
+enum {
+ BTA_JV_CONN_OPEN = 0, /* Connection opened state */
+ BTA_JV_CONN_CLOSE, /* Connection closed state */
+ BTA_JV_APP_OPEN, /* JV Application opened state */
+ BTA_JV_APP_CLOSE, /* JV Application closed state */
+ BTA_JV_SCO_OPEN, /* SCO connection opened state */
+ BTA_JV_SCO_CLOSE, /* SCO connection opened state */
+ BTA_JV_CONN_IDLE, /* Connection idle state */
+ BTA_JV_CONN_BUSY, /* Connection busy state */
+ BTA_JV_MAX_CONN_STATE /* Max number of connection state */
};
typedef uint8_t tBTA_JV_CONN_STATE;
/* JV Connection types */
-#define BTA_JV_CONN_TYPE_RFCOMM 0
-#define BTA_JV_CONN_TYPE_L2CAP 1
-#define BTA_JV_CONN_TYPE_L2CAP_LE 2
+#define BTA_JV_CONN_TYPE_RFCOMM 0
+#define BTA_JV_CONN_TYPE_L2CAP 1
+#define BTA_JV_CONN_TYPE_L2CAP_LE 2
/* Java I/F callback events */
/* events received by tBTA_JV_DM_CBACK */
-#define BTA_JV_ENABLE_EVT 0 /* JV enabled */
-#define BTA_JV_GET_SCN_EVT 6 /* Reserved an SCN */
-#define BTA_JV_GET_PSM_EVT 7 /* Reserved a PSM */
-#define BTA_JV_DISCOVERY_COMP_EVT 8 /* SDP discovery complete */
-#define BTA_JV_CREATE_RECORD_EVT 11 /* the result for BTA_JvCreateRecord */
+#define BTA_JV_ENABLE_EVT 0 /* JV enabled */
+#define BTA_JV_GET_SCN_EVT 6 /* Reserved an SCN */
+#define BTA_JV_GET_PSM_EVT 7 /* Reserved a PSM */
+#define BTA_JV_DISCOVERY_COMP_EVT 8 /* SDP discovery complete */
+#define BTA_JV_CREATE_RECORD_EVT 11 /* the result for BTA_JvCreateRecord */
/* events received by tBTA_JV_L2CAP_CBACK */
-#define BTA_JV_L2CAP_OPEN_EVT 16 /* open status of L2CAP connection */
-#define BTA_JV_L2CAP_CLOSE_EVT 17 /* L2CAP connection closed */
-#define BTA_JV_L2CAP_START_EVT 18 /* L2CAP server started */
-#define BTA_JV_L2CAP_CL_INIT_EVT 19 /* L2CAP client initiated a connection */
-#define BTA_JV_L2CAP_DATA_IND_EVT 20 /* L2CAP connection received data */
-#define BTA_JV_L2CAP_CONG_EVT 21 /* L2CAP connection congestion status changed */
-#define BTA_JV_L2CAP_READ_EVT 22 /* the result for BTA_JvL2capRead */
-#define BTA_JV_L2CAP_WRITE_EVT 24 /* the result for BTA_JvL2capWrite*/
-#define BTA_JV_L2CAP_WRITE_FIXED_EVT 25 /* the result for BTA_JvL2capWriteFixed */
+#define BTA_JV_L2CAP_OPEN_EVT 16 /* open status of L2CAP connection */
+#define BTA_JV_L2CAP_CLOSE_EVT 17 /* L2CAP connection closed */
+#define BTA_JV_L2CAP_START_EVT 18 /* L2CAP server started */
+#define BTA_JV_L2CAP_CL_INIT_EVT 19 /* L2CAP client initiated a connection */
+#define BTA_JV_L2CAP_DATA_IND_EVT 20 /* L2CAP connection received data */
+#define BTA_JV_L2CAP_CONG_EVT \
+ 21 /* L2CAP connection congestion status changed */
+#define BTA_JV_L2CAP_READ_EVT 22 /* the result for BTA_JvL2capRead */
+#define BTA_JV_L2CAP_WRITE_EVT 24 /* the result for BTA_JvL2capWrite*/
+#define BTA_JV_L2CAP_WRITE_FIXED_EVT \
+ 25 /* the result for BTA_JvL2capWriteFixed */
/* events received by tBTA_JV_RFCOMM_CBACK */
-#define BTA_JV_RFCOMM_OPEN_EVT 26 /* open status of RFCOMM Client connection */
-#define BTA_JV_RFCOMM_CLOSE_EVT 27 /* RFCOMM connection closed */
-#define BTA_JV_RFCOMM_START_EVT 28 /* RFCOMM server started */
-#define BTA_JV_RFCOMM_CL_INIT_EVT 29 /* RFCOMM client initiated a connection */
-#define BTA_JV_RFCOMM_DATA_IND_EVT 30 /* RFCOMM connection received data */
-#define BTA_JV_RFCOMM_CONG_EVT 31 /* RFCOMM connection congestion status changed */
-#define BTA_JV_RFCOMM_WRITE_EVT 33 /* the result for BTA_JvRfcommWrite*/
-#define BTA_JV_RFCOMM_SRV_OPEN_EVT 34 /* open status of Server RFCOMM connection */
-#define BTA_JV_MAX_EVT 35 /* max number of JV events */
+#define BTA_JV_RFCOMM_OPEN_EVT \
+ 26 /* open status of RFCOMM Client connection \
+ */
+#define BTA_JV_RFCOMM_CLOSE_EVT 27 /* RFCOMM connection closed */
+#define BTA_JV_RFCOMM_START_EVT 28 /* RFCOMM server started */
+#define BTA_JV_RFCOMM_CL_INIT_EVT \
+ 29 /* RFCOMM client initiated a connection \
+ */
+#define BTA_JV_RFCOMM_DATA_IND_EVT 30 /* RFCOMM connection received data */
+#define BTA_JV_RFCOMM_CONG_EVT \
+ 31 /* RFCOMM connection congestion status changed */
+#define BTA_JV_RFCOMM_WRITE_EVT 33 /* the result for BTA_JvRfcommWrite*/
+#define BTA_JV_RFCOMM_SRV_OPEN_EVT \
+ 34 /* open status of Server RFCOMM connection */
+#define BTA_JV_MAX_EVT 35 /* max number of JV events */
typedef uint16_t tBTA_JV_EVT;
/* data associated with BTA_JV_SET_DISCOVER_EVT */
-typedef struct
-{
- tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */
- tBTA_JV_DISC disc_mode; /* The current discoverable mode */
+typedef struct {
+ tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */
+ tBTA_JV_DISC disc_mode; /* The current discoverable mode */
} tBTA_JV_SET_DISCOVER;
/* data associated with BTA_JV_DISCOVERY_COMP_EVT_ */
-typedef struct
-{
- tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */
- int scn; /* channel # */
+typedef struct {
+ tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */
+ int scn; /* channel # */
} tBTA_JV_DISCOVERY_COMP;
/* data associated with BTA_JV_CREATE_RECORD_EVT */
-typedef struct
-{
- tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */
+typedef struct {
+ tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */
} tBTA_JV_CREATE_RECORD;
/* data associated with BTA_JV_L2CAP_OPEN_EVT */
-typedef struct
-{
- tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */
- uint32_t handle; /* The connection handle */
- BD_ADDR rem_bda; /* The peer address */
- int32_t tx_mtu; /* The transmit MTU */
+typedef struct {
+ tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */
+ uint32_t handle; /* The connection handle */
+ BD_ADDR rem_bda; /* The peer address */
+ int32_t tx_mtu; /* The transmit MTU */
} tBTA_JV_L2CAP_OPEN;
/* data associated with BTA_JV_L2CAP_OPEN_EVT for LE sockets */
-typedef struct
-{
- tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */
- uint32_t handle; /* The connection handle */
- BD_ADDR rem_bda; /* The peer address */
- int32_t tx_mtu; /* The transmit MTU */
- void **p_p_cback; /* set them for new socket */
- void **p_user_data;/* set them for new socket */
+typedef struct {
+ tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */
+ uint32_t handle; /* The connection handle */
+ BD_ADDR rem_bda; /* The peer address */
+ int32_t tx_mtu; /* The transmit MTU */
+ void** p_p_cback; /* set them for new socket */
+ void** p_user_data; /* set them for new socket */
} tBTA_JV_L2CAP_LE_OPEN;
-
/* data associated with BTA_JV_L2CAP_CLOSE_EVT */
-typedef struct
-{
- tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */
- uint32_t handle; /* The connection handle */
- bool async; /* false, if local initiates disconnect */
+typedef struct {
+ tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */
+ uint32_t handle; /* The connection handle */
+ bool async; /* false, if local initiates disconnect */
} tBTA_JV_L2CAP_CLOSE;
/* data associated with BTA_JV_L2CAP_START_EVT */
-typedef struct
-{
- tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */
- uint32_t handle; /* The connection handle */
- uint8_t sec_id; /* security ID used by this server */
+typedef struct {
+ tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */
+ uint32_t handle; /* The connection handle */
+ uint8_t sec_id; /* security ID used by this server */
} tBTA_JV_L2CAP_START;
/* data associated with BTA_JV_L2CAP_CL_INIT_EVT */
-typedef struct
-{
- tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */
- uint32_t handle; /* The connection handle */
- uint8_t sec_id; /* security ID used by this client */
+typedef struct {
+ tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */
+ uint32_t handle; /* The connection handle */
+ uint8_t sec_id; /* security ID used by this client */
} tBTA_JV_L2CAP_CL_INIT;
/* data associated with BTA_JV_L2CAP_CONG_EVT */
-typedef struct
-{
- tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */
- uint32_t handle; /* The connection handle */
- bool cong; /* true, congested. false, uncongested */
+typedef struct {
+ tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */
+ uint32_t handle; /* The connection handle */
+ bool cong; /* true, congested. false, uncongested */
} tBTA_JV_L2CAP_CONG;
/* data associated with BTA_JV_L2CAP_READ_EVT */
-typedef struct
-{
- tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */
- uint32_t handle; /* The connection handle */
- uint32_t req_id; /* The req_id in the associated BTA_JvL2capRead() */
- uint8_t *p_data; /* This points the same location as the p_data
- * parameter in BTA_JvL2capRead () */
- uint16_t len; /* The length of the data read. */
+typedef struct {
+ tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */
+ uint32_t handle; /* The connection handle */
+ uint32_t req_id; /* The req_id in the associated BTA_JvL2capRead() */
+ uint8_t* p_data; /* This points the same location as the p_data
+ * parameter in BTA_JvL2capRead () */
+ uint16_t len; /* The length of the data read. */
} tBTA_JV_L2CAP_READ;
/* data associated with BTA_JV_L2CAP_WRITE_EVT */
-typedef struct
-{
- tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */
- uint32_t handle; /* The connection handle */
- uint32_t req_id; /* The req_id in the associated BTA_JvL2capWrite() */
- uint16_t len; /* The length of the data written. */
- bool cong; /* congestion status */
+typedef struct {
+ tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */
+ uint32_t handle; /* The connection handle */
+ uint32_t req_id; /* The req_id in the associated BTA_JvL2capWrite() */
+ uint16_t len; /* The length of the data written. */
+ bool cong; /* congestion status */
} tBTA_JV_L2CAP_WRITE;
-
/* data associated with BTA_JV_L2CAP_WRITE_FIXED_EVT */
-typedef struct
-{
- tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */
- uint16_t channel; /* The connection channel */
- BD_ADDR addr; /* The peer address */
- uint32_t req_id; /* The req_id in the associated BTA_JvL2capWrite() */
- uint16_t len; /* The length of the data written. */
- bool cong; /* congestion status */
+typedef struct {
+ tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */
+ uint16_t channel; /* The connection channel */
+ BD_ADDR addr; /* The peer address */
+ uint32_t req_id; /* The req_id in the associated BTA_JvL2capWrite() */
+ uint16_t len; /* The length of the data written. */
+ bool cong; /* congestion status */
} tBTA_JV_L2CAP_WRITE_FIXED;
/* data associated with BTA_JV_RFCOMM_OPEN_EVT */
-typedef struct
-{
- tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */
- uint32_t handle; /* The connection handle */
- BD_ADDR rem_bda; /* The peer address */
+typedef struct {
+ tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */
+ uint32_t handle; /* The connection handle */
+ BD_ADDR rem_bda; /* The peer address */
} tBTA_JV_RFCOMM_OPEN;
/* data associated with BTA_JV_RFCOMM_SRV_OPEN_EVT */
-typedef struct
-{
- tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */
- uint32_t handle; /* The connection handle */
- uint32_t new_listen_handle; /* The new listen handle */
- BD_ADDR rem_bda; /* The peer address */
+typedef struct {
+ tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */
+ uint32_t handle; /* The connection handle */
+ uint32_t new_listen_handle; /* The new listen handle */
+ BD_ADDR rem_bda; /* The peer address */
} tBTA_JV_RFCOMM_SRV_OPEN;
-
/* data associated with BTA_JV_RFCOMM_CLOSE_EVT */
-typedef struct
-{
- tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */
- uint32_t port_status; /* PORT status */
- uint32_t handle; /* The connection handle */
- bool async; /* false, if local initiates disconnect */
+typedef struct {
+ tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */
+ uint32_t port_status; /* PORT status */
+ uint32_t handle; /* The connection handle */
+ bool async; /* false, if local initiates disconnect */
} tBTA_JV_RFCOMM_CLOSE;
/* data associated with BTA_JV_RFCOMM_START_EVT */
-typedef struct
-{
- tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */
- uint32_t handle; /* The connection handle */
- uint8_t sec_id; /* security ID used by this server */
- bool use_co; /* true to use co_rfc_data */
+typedef struct {
+ tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */
+ uint32_t handle; /* The connection handle */
+ uint8_t sec_id; /* security ID used by this server */
+ bool use_co; /* true to use co_rfc_data */
} tBTA_JV_RFCOMM_START;
/* data associated with BTA_JV_RFCOMM_CL_INIT_EVT */
-typedef struct
-{
- tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */
- uint32_t handle; /* The connection handle */
- uint8_t sec_id; /* security ID used by this client */
- bool use_co; /* true to use co_rfc_data */
+typedef struct {
+ tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */
+ uint32_t handle; /* The connection handle */
+ uint8_t sec_id; /* security ID used by this client */
+ bool use_co; /* true to use co_rfc_data */
} tBTA_JV_RFCOMM_CL_INIT;
/*data associated with BTA_JV_L2CAP_DATA_IND_EVT & BTA_JV_RFCOMM_DATA_IND_EVT */
-typedef struct
-{
- uint32_t handle; /* The connection handle */
+typedef struct {
+ uint32_t handle; /* The connection handle */
} tBTA_JV_DATA_IND;
/*data associated with BTA_JV_L2CAP_DATA_IND_EVT if used for LE */
-typedef struct
-{
- uint32_t handle; /* The connection handle */
- BT_HDR *p_buf; /* The incoming data */
+typedef struct {
+ uint32_t handle; /* The connection handle */
+ BT_HDR* p_buf; /* The incoming data */
} tBTA_JV_LE_DATA_IND;
-
/* data associated with BTA_JV_RFCOMM_CONG_EVT */
-typedef struct
-{
- tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */
- uint32_t handle; /* The connection handle */
- bool cong; /* true, congested. false, uncongested */
+typedef struct {
+ tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */
+ uint32_t handle; /* The connection handle */
+ bool cong; /* true, congested. false, uncongested */
} tBTA_JV_RFCOMM_CONG;
/* data associated with BTA_JV_RFCOMM_WRITE_EVT */
-typedef struct
-{
- tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */
- uint32_t handle; /* The connection handle */
- uint32_t req_id; /* The req_id in the associated BTA_JvRfcommWrite() */
- int len; /* The length of the data written. */
- bool cong; /* congestion status */
+typedef struct {
+ tBTA_JV_STATUS status; /* Whether the operation succeeded or failed. */
+ uint32_t handle; /* The connection handle */
+ uint32_t req_id; /* The req_id in the associated BTA_JvRfcommWrite() */
+ int len; /* The length of the data written. */
+ bool cong; /* congestion status */
} tBTA_JV_RFCOMM_WRITE;
/* data associated with BTA_JV_API_SET_PM_PROFILE_EVT */
-typedef struct
-{
- tBTA_JV_STATUS status; /* Status of the operation */
- uint32_t handle; /* Connection handle */
- tBTA_JV_PM_ID app_id; /* JV app ID */
+typedef struct {
+ tBTA_JV_STATUS status; /* Status of the operation */
+ uint32_t handle; /* Connection handle */
+ tBTA_JV_PM_ID app_id; /* JV app ID */
} tBTA_JV_SET_PM_PROFILE;
/* data associated with BTA_JV_API_NOTIFY_PM_STATE_CHANGE_EVT */
-typedef struct
-{
- uint32_t handle; /* Connection handle */
- tBTA_JV_CONN_STATE state; /* JV connection stata */
+typedef struct {
+ uint32_t handle; /* Connection handle */
+ tBTA_JV_CONN_STATE state; /* JV connection stata */
} tBTA_JV_NOTIFY_PM_STATE_CHANGE;
-
/* union of data associated with JV callback */
-typedef union
-{
- tBTA_JV_STATUS status; /* BTA_JV_ENABLE_EVT */
- tBTA_JV_DISCOVERY_COMP disc_comp; /* BTA_JV_DISCOVERY_COMP_EVT */
- tBTA_JV_SET_DISCOVER set_discover; /* BTA_JV_SET_DISCOVER_EVT */
- uint8_t scn; /* BTA_JV_GET_SCN_EVT */
- uint16_t psm; /* BTA_JV_GET_PSM_EVT */
- tBTA_JV_CREATE_RECORD create_rec; /* BTA_JV_CREATE_RECORD_EVT */
- tBTA_JV_L2CAP_OPEN l2c_open; /* BTA_JV_L2CAP_OPEN_EVT */
- tBTA_JV_L2CAP_CLOSE l2c_close; /* BTA_JV_L2CAP_CLOSE_EVT */
- tBTA_JV_L2CAP_START l2c_start; /* BTA_JV_L2CAP_START_EVT */
- tBTA_JV_L2CAP_CL_INIT l2c_cl_init; /* BTA_JV_L2CAP_CL_INIT_EVT */
- tBTA_JV_L2CAP_CONG l2c_cong; /* BTA_JV_L2CAP_CONG_EVT */
- tBTA_JV_L2CAP_READ l2c_read; /* BTA_JV_L2CAP_READ_EVT */
- tBTA_JV_L2CAP_WRITE l2c_write; /* BTA_JV_L2CAP_WRITE_EVT */
- tBTA_JV_RFCOMM_OPEN rfc_open; /* BTA_JV_RFCOMM_OPEN_EVT */
- tBTA_JV_RFCOMM_SRV_OPEN rfc_srv_open; /* BTA_JV_RFCOMM_SRV_OPEN_EVT */
- tBTA_JV_RFCOMM_CLOSE rfc_close; /* BTA_JV_RFCOMM_CLOSE_EVT */
- tBTA_JV_RFCOMM_START rfc_start; /* BTA_JV_RFCOMM_START_EVT */
- tBTA_JV_RFCOMM_CL_INIT rfc_cl_init; /* BTA_JV_RFCOMM_CL_INIT_EVT */
- tBTA_JV_RFCOMM_CONG rfc_cong; /* BTA_JV_RFCOMM_CONG_EVT */
- tBTA_JV_RFCOMM_WRITE rfc_write; /* BTA_JV_RFCOMM_WRITE_EVT */
- tBTA_JV_DATA_IND data_ind; /* BTA_JV_L2CAP_DATA_IND_EVT
- BTA_JV_RFCOMM_DATA_IND_EVT */
- tBTA_JV_LE_DATA_IND le_data_ind; /* BTA_JV_L2CAP_LE_DATA_IND_EVT */
- tBTA_JV_L2CAP_LE_OPEN l2c_le_open; /* BTA_JV_L2CAP_OPEN_EVT */
- tBTA_JV_L2CAP_WRITE_FIXED l2c_write_fixed; /* BTA_JV_L2CAP_WRITE_FIXED_EVT */
+typedef union {
+ tBTA_JV_STATUS status; /* BTA_JV_ENABLE_EVT */
+ tBTA_JV_DISCOVERY_COMP disc_comp; /* BTA_JV_DISCOVERY_COMP_EVT */
+ tBTA_JV_SET_DISCOVER set_discover; /* BTA_JV_SET_DISCOVER_EVT */
+ uint8_t scn; /* BTA_JV_GET_SCN_EVT */
+ uint16_t psm; /* BTA_JV_GET_PSM_EVT */
+ tBTA_JV_CREATE_RECORD create_rec; /* BTA_JV_CREATE_RECORD_EVT */
+ tBTA_JV_L2CAP_OPEN l2c_open; /* BTA_JV_L2CAP_OPEN_EVT */
+ tBTA_JV_L2CAP_CLOSE l2c_close; /* BTA_JV_L2CAP_CLOSE_EVT */
+ tBTA_JV_L2CAP_START l2c_start; /* BTA_JV_L2CAP_START_EVT */
+ tBTA_JV_L2CAP_CL_INIT l2c_cl_init; /* BTA_JV_L2CAP_CL_INIT_EVT */
+ tBTA_JV_L2CAP_CONG l2c_cong; /* BTA_JV_L2CAP_CONG_EVT */
+ tBTA_JV_L2CAP_READ l2c_read; /* BTA_JV_L2CAP_READ_EVT */
+ tBTA_JV_L2CAP_WRITE l2c_write; /* BTA_JV_L2CAP_WRITE_EVT */
+ tBTA_JV_RFCOMM_OPEN rfc_open; /* BTA_JV_RFCOMM_OPEN_EVT */
+ tBTA_JV_RFCOMM_SRV_OPEN rfc_srv_open; /* BTA_JV_RFCOMM_SRV_OPEN_EVT */
+ tBTA_JV_RFCOMM_CLOSE rfc_close; /* BTA_JV_RFCOMM_CLOSE_EVT */
+ tBTA_JV_RFCOMM_START rfc_start; /* BTA_JV_RFCOMM_START_EVT */
+ tBTA_JV_RFCOMM_CL_INIT rfc_cl_init; /* BTA_JV_RFCOMM_CL_INIT_EVT */
+ tBTA_JV_RFCOMM_CONG rfc_cong; /* BTA_JV_RFCOMM_CONG_EVT */
+ tBTA_JV_RFCOMM_WRITE rfc_write; /* BTA_JV_RFCOMM_WRITE_EVT */
+ tBTA_JV_DATA_IND data_ind; /* BTA_JV_L2CAP_DATA_IND_EVT
+ BTA_JV_RFCOMM_DATA_IND_EVT */
+ tBTA_JV_LE_DATA_IND le_data_ind; /* BTA_JV_L2CAP_LE_DATA_IND_EVT */
+ tBTA_JV_L2CAP_LE_OPEN l2c_le_open; /* BTA_JV_L2CAP_OPEN_EVT */
+ tBTA_JV_L2CAP_WRITE_FIXED l2c_write_fixed; /* BTA_JV_L2CAP_WRITE_FIXED_EVT */
} tBTA_JV;
/* JAVA DM Interface callback */
-typedef void (tBTA_JV_DM_CBACK)(tBTA_JV_EVT event, tBTA_JV *p_data, void * user_data);
+typedef void(tBTA_JV_DM_CBACK)(tBTA_JV_EVT event, tBTA_JV* p_data,
+ void* user_data);
/* JAVA RFCOMM interface callback */
-typedef void* (tBTA_JV_RFCOMM_CBACK)(tBTA_JV_EVT event, tBTA_JV *p_data, void *user_data);
+typedef void*(tBTA_JV_RFCOMM_CBACK)(tBTA_JV_EVT event, tBTA_JV* p_data,
+ void* user_data);
/* JAVA L2CAP interface callback */
-typedef void (tBTA_JV_L2CAP_CBACK)(tBTA_JV_EVT event, tBTA_JV *p_data, void *user_Data);
+typedef void(tBTA_JV_L2CAP_CBACK)(tBTA_JV_EVT event, tBTA_JV* p_data,
+ void* user_Data);
/* JV configuration structure */
-typedef struct
-{
- uint16_t sdp_raw_size; /* The size of p_sdp_raw_data */
- uint16_t sdp_db_size; /* The size of p_sdp_db */
- uint8_t *p_sdp_raw_data; /* The data buffer to keep raw data */
- tSDP_DISCOVERY_DB *p_sdp_db; /* The data buffer to keep SDP database */
+typedef struct {
+ uint16_t sdp_raw_size; /* The size of p_sdp_raw_data */
+ uint16_t sdp_db_size; /* The size of p_sdp_db */
+ uint8_t* p_sdp_raw_data; /* The data buffer to keep raw data */
+ tSDP_DISCOVERY_DB* p_sdp_db; /* The data buffer to keep SDP database */
} tBTA_JV_CFG;
/*******************************************************************************
@@ -420,7 +403,7 @@
* BTA_JV_FAIL if internal failure.
*
******************************************************************************/
-tBTA_JV_STATUS BTA_JvEnable(tBTA_JV_DM_CBACK *p_cback);
+tBTA_JV_STATUS BTA_JvEnable(tBTA_JV_DM_CBACK* p_cback);
/*******************************************************************************
*
@@ -451,15 +434,19 @@
*
* Description This function reserves a SCN/PSM for applications running
* over RFCOMM or L2CAP. It is primarily called by
- * server profiles/applications to register their SCN/PSM into the
+ * server profiles/applications to register their SCN/PSM into
+ *the
* SDP database. The SCN is reported by the tBTA_JV_DM_CBACK
* callback with a BTA_JV_GET_SCN_EVT.
- * If the SCN/PSM reported is 0, that means all SCN resources are
+ * If the SCN/PSM reported is 0, that means all SCN resources
+ *are
* exhausted.
* The channel parameter can be used to request a specific
* channel. If the request on the specific channel fails, the
- * SCN/PSM returned in the EVT will be 0 - no attempt to request
- * a new channel will be made. set channel to <= 0 to automatically
+ * SCN/PSM returned in the EVT will be 0 - no attempt to
+ *request
+ * a new channel will be made. set channel to <= 0 to
+ *automatically
* assign an channel ID.
*
* Returns BTA_JV_SUCCESS, if the request is being processed.
@@ -467,7 +454,7 @@
*
******************************************************************************/
tBTA_JV_STATUS BTA_JvGetChannelId(int conn_type, void* user_data,
- int32_t channel);
+ int32_t channel);
/*******************************************************************************
*
@@ -496,7 +483,7 @@
*
******************************************************************************/
tBTA_JV_STATUS BTA_JvStartDiscovery(BD_ADDR bd_addr, uint16_t num_uuid,
- tSDP_UUID *p_uuid_list, void* user_data);
+ tSDP_UUID* p_uuid_list, void* user_data);
/*******************************************************************************
*
@@ -539,9 +526,11 @@
*
******************************************************************************/
tBTA_JV_STATUS BTA_JvL2capConnectLE(tBTA_SEC sec_mask, tBTA_JV_ROLE role,
- const tL2CAP_ERTM_INFO *ertm_info, uint16_t remote_chan,
- uint16_t rx_mtu, tL2CAP_CFG_INFO *cfg,
- BD_ADDR peer_bd_addr, tBTA_JV_L2CAP_CBACK *p_cback, void *user_data);
+ const tL2CAP_ERTM_INFO* ertm_info,
+ uint16_t remote_chan, uint16_t rx_mtu,
+ tL2CAP_CFG_INFO* cfg, BD_ADDR peer_bd_addr,
+ tBTA_JV_L2CAP_CBACK* p_cback,
+ void* user_data);
/*******************************************************************************
*
@@ -558,10 +547,13 @@
* BTA_JV_FAILURE, otherwise.
*
******************************************************************************/
-tBTA_JV_STATUS BTA_JvL2capConnect(int conn_type, tBTA_SEC sec_mask, tBTA_JV_ROLE role,
- const tL2CAP_ERTM_INFO *ertm_info, uint16_t remote_psm,
- uint16_t rx_mtu, tL2CAP_CFG_INFO *cfg,
- BD_ADDR peer_bd_addr, tBTA_JV_L2CAP_CBACK *p_cback, void *user_data);
+tBTA_JV_STATUS BTA_JvL2capConnect(int conn_type, tBTA_SEC sec_mask,
+ tBTA_JV_ROLE role,
+ const tL2CAP_ERTM_INFO* ertm_info,
+ uint16_t remote_psm, uint16_t rx_mtu,
+ tL2CAP_CFG_INFO* cfg, BD_ADDR peer_bd_addr,
+ tBTA_JV_L2CAP_CBACK* p_cback,
+ void* user_data);
/*******************************************************************************
*
@@ -579,7 +571,8 @@
*
* Function BTA_JvL2capCloseLE
*
- * Description This function closes an L2CAP client connection for Fixed Channels
+ * Description This function closes an L2CAP client connection for Fixed
+ *Channels
* Function is idempotent and no callbacks are called!
*
* Returns BTA_JV_SUCCESS, if the request is being processed.
@@ -592,7 +585,8 @@
*
* Function BTA_JvL2capStartServer
*
- * Description This function starts an L2CAP server and listens for an L2CAP
+ * Description This function starts an L2CAP server and listens for an
+ *L2CAP
* connection from a remote Bluetooth device. When the server
* is started successfully, tBTA_JV_L2CAP_CBACK is called with
* BTA_JV_L2CAP_START_EVT. When the connection is established,
@@ -602,16 +596,17 @@
* BTA_JV_FAILURE, otherwise.
*
******************************************************************************/
-tBTA_JV_STATUS BTA_JvL2capStartServer(int conn_type, tBTA_SEC sec_mask, tBTA_JV_ROLE role,
- const tL2CAP_ERTM_INFO *ertm_info,
- uint16_t local_psm, uint16_t rx_mtu, tL2CAP_CFG_INFO *cfg,
- tBTA_JV_L2CAP_CBACK *p_cback, void *user_data);
+tBTA_JV_STATUS BTA_JvL2capStartServer(
+ int conn_type, tBTA_SEC sec_mask, tBTA_JV_ROLE role,
+ const tL2CAP_ERTM_INFO* ertm_info, uint16_t local_psm, uint16_t rx_mtu,
+ tL2CAP_CFG_INFO* cfg, tBTA_JV_L2CAP_CBACK* p_cback, void* user_data);
/*******************************************************************************
*
* Function BTA_JvL2capStartServerLE
*
- * Description This function starts an LE L2CAP server and listens for an L2CAP
+ * Description This function starts an LE L2CAP server and listens for an
+ *L2CAP
* connection from a remote Bluetooth device on a fixed channel
* over an LE link. When the server
* is started successfully, tBTA_JV_L2CAP_CBACK is called with
@@ -623,35 +618,39 @@
*
******************************************************************************/
tBTA_JV_STATUS BTA_JvL2capStartServerLE(tBTA_SEC sec_mask, tBTA_JV_ROLE role,
- const tL2CAP_ERTM_INFO *ertm_info,
- uint16_t local_chan, uint16_t rx_mtu, tL2CAP_CFG_INFO *cfg,
- tBTA_JV_L2CAP_CBACK *p_cback, void *user_data);
+ const tL2CAP_ERTM_INFO* ertm_info,
+ uint16_t local_chan, uint16_t rx_mtu,
+ tL2CAP_CFG_INFO* cfg,
+ tBTA_JV_L2CAP_CBACK* p_cback,
+ void* user_data);
/*******************************************************************************
*
* Function BTA_JvL2capStopServerLE
*
- * Description This function stops the LE L2CAP server. If the server has an
+ * Description This function stops the LE L2CAP server. If the server has
+ *an
* active connection, it would be closed.
*
* Returns BTA_JV_SUCCESS, if the request is being processed.
* BTA_JV_FAILURE, otherwise.
*
******************************************************************************/
-tBTA_JV_STATUS BTA_JvL2capStopServerLE(uint16_t local_chan, void *user_data);
+tBTA_JV_STATUS BTA_JvL2capStopServerLE(uint16_t local_chan, void* user_data);
/*******************************************************************************
*
* Function BTA_JvL2capStopServerLE
*
- * Description This function stops the LE L2CAP server. If the server has an
+ * Description This function stops the LE L2CAP server. If the server has
+ *an
* active connection, it would be closed.
*
* Returns BTA_JV_SUCCESS, if the request is being processed.
* BTA_JV_FAILURE, otherwise.
*
******************************************************************************/
-tBTA_JV_STATUS BTA_JvL2capStopServer(uint16_t local_psm, void *user_data);
+tBTA_JV_STATUS BTA_JvL2capStopServer(uint16_t local_psm, void* user_data);
/*******************************************************************************
*
@@ -666,7 +665,7 @@
*
******************************************************************************/
tBTA_JV_STATUS BTA_JvL2capRead(uint32_t handle, uint32_t req_id,
- uint8_t *p_data, uint16_t len);
+ uint8_t* p_data, uint16_t len);
/*******************************************************************************
*
@@ -679,7 +678,7 @@
* BTA_JV_FAILURE, if error.
*
******************************************************************************/
-tBTA_JV_STATUS BTA_JvL2capReady(uint32_t handle, uint32_t *p_data_size);
+tBTA_JV_STATUS BTA_JvL2capReady(uint32_t handle, uint32_t* p_data_size);
/*******************************************************************************
*
@@ -695,8 +694,7 @@
*
******************************************************************************/
tBTA_JV_STATUS BTA_JvL2capWrite(uint32_t handle, uint32_t req_id,
- uint8_t *p_data, uint16_t len, void *user_data);
-
+ uint8_t* p_data, uint16_t len, void* user_data);
/*******************************************************************************
*
@@ -711,9 +709,11 @@
* BTA_JV_FAILURE, otherwise.
*
******************************************************************************/
-tBTA_JV_STATUS BTA_JvL2capWriteFixed(uint16_t channel, BD_ADDR *addr, uint32_t req_id,
- tBTA_JV_L2CAP_CBACK *p_cback,
- uint8_t *p_data, uint16_t len, void *user_data);
+tBTA_JV_STATUS BTA_JvL2capWriteFixed(uint16_t channel, BD_ADDR* addr,
+ uint32_t req_id,
+ tBTA_JV_L2CAP_CBACK* p_cback,
+ uint8_t* p_data, uint16_t len,
+ void* user_data);
/*******************************************************************************
*
@@ -722,7 +722,8 @@
* Description This function makes an RFCOMM conection to a remote BD
* Address.
* When the connection is initiated or failed to initiate,
- * tBTA_JV_RFCOMM_CBACK is called with BTA_JV_RFCOMM_CL_INIT_EVT
+ * tBTA_JV_RFCOMM_CBACK is called with
+ *BTA_JV_RFCOMM_CL_INIT_EVT
* When the connection is established or failed,
* tBTA_JV_RFCOMM_CBACK is called with BTA_JV_RFCOMM_OPEN_EVT
*
@@ -730,9 +731,10 @@
* BTA_JV_FAILURE, otherwise.
*
******************************************************************************/
-tBTA_JV_STATUS BTA_JvRfcommConnect(tBTA_SEC sec_mask,
- tBTA_JV_ROLE role, uint8_t remote_scn, BD_ADDR peer_bd_addr,
- tBTA_JV_RFCOMM_CBACK *p_cback, void *user_data);
+tBTA_JV_STATUS BTA_JvRfcommConnect(tBTA_SEC sec_mask, tBTA_JV_ROLE role,
+ uint8_t remote_scn, BD_ADDR peer_bd_addr,
+ tBTA_JV_RFCOMM_CBACK* p_cback,
+ void* user_data);
/*******************************************************************************
*
@@ -761,9 +763,10 @@
* BTA_JV_FAILURE, otherwise.
*
******************************************************************************/
-tBTA_JV_STATUS BTA_JvRfcommStartServer(tBTA_SEC sec_mask,
- tBTA_JV_ROLE role, uint8_t local_scn, uint8_t max_session,
- tBTA_JV_RFCOMM_CBACK *p_cback, void *user_data);
+tBTA_JV_STATUS BTA_JvRfcommStartServer(tBTA_SEC sec_mask, tBTA_JV_ROLE role,
+ uint8_t local_scn, uint8_t max_session,
+ tBTA_JV_RFCOMM_CBACK* p_cback,
+ void* user_data);
/*******************************************************************************
*
@@ -796,23 +799,28 @@
*
* Function BTA_JVSetPmProfile
*
- * Description This function set or free power mode profile for different JV application
+ * Description This function set or free power mode profile for different JV
+ *application
*
* Parameters: handle, JV handle from RFCOMM or L2CAP
- * app_id: app specific pm ID, can be BTA_JV_PM_ALL, see bta_dm_cfg.c for details
- * BTA_JV_PM_ID_CLEAR: removes pm management on the handle. init_st is ignored and
+ * app_id: app specific pm ID, can be BTA_JV_PM_ALL, see
+ *bta_dm_cfg.c for details
+ * BTA_JV_PM_ID_CLEAR: removes pm management on the handle. init_st
+ *is ignored and
* BTA_JV_CONN_CLOSE is called implicitely
- * init_st: state after calling this API. typically it should be BTA_JV_CONN_OPEN
+ * init_st: state after calling this API. typically it should be
+ *BTA_JV_CONN_OPEN
*
* Returns BTA_JV_SUCCESS, if the request is being processed.
* BTA_JV_FAILURE, otherwise.
*
- * NOTE: BTA_JV_PM_ID_CLEAR: In general no need to be called as jv pm calls automatically
+ * NOTE: BTA_JV_PM_ID_CLEAR: In general no need to be called as jv pm
+ *calls automatically
* BTA_JV_CONN_CLOSE to remove in case of connection close!
*
*******************************************************************************/
tBTA_JV_STATUS BTA_JvSetPmProfile(uint32_t handle, tBTA_JV_PM_ID app_id,
- tBTA_JV_CONN_STATE init_st);
+ tBTA_JV_CONN_STATE init_st);
/*******************************************************************************
*
diff --git a/bta/include/bta_jv_co.h b/bta/include/bta_jv_co.h
index d0dd48d..ce9ab1c 100644
--- a/bta/include/bta_jv_co.h
+++ b/bta/include/bta_jv_co.h
@@ -34,7 +34,6 @@
* Function Declarations
****************************************************************************/
-
/*******************************************************************************
*
* Function bta_jv_co_rfc_data
@@ -46,13 +45,15 @@
*
******************************************************************************/
-extern int bta_co_rfc_data_incoming(void *user_data, BT_HDR *p_buf);
-extern int bta_co_rfc_data_outgoing_size(void *user_data, int *size);
-extern int bta_co_rfc_data_outgoing(void *user_data, uint8_t* buf, uint16_t size);
+extern int bta_co_rfc_data_incoming(void* user_data, BT_HDR* p_buf);
+extern int bta_co_rfc_data_outgoing_size(void* user_data, int* size);
+extern int bta_co_rfc_data_outgoing(void* user_data, uint8_t* buf,
+ uint16_t size);
-extern int bta_co_l2cap_data_incoming(void *user_data, BT_HDR *p_buf);
-extern int bta_co_l2cap_data_outgoing_size(void *user_data, int *size);
-extern int bta_co_l2cap_data_outgoing(void *user_data, uint8_t* buf, uint16_t size);
+extern int bta_co_l2cap_data_incoming(void* user_data, BT_HDR* p_buf);
+extern int bta_co_l2cap_data_outgoing_size(void* user_data, int* size);
+extern int bta_co_l2cap_data_outgoing(void* user_data, uint8_t* buf,
+ uint16_t size);
#ifdef __cplusplus
}
diff --git a/bta/include/bta_mce_api.h b/bta/include/bta_mce_api.h
index b542365..ef5525d 100644
--- a/bta/include/bta_mce_api.h
+++ b/bta/include/bta_mce_api.h
@@ -38,55 +38,53 @@
* Constants and data types
****************************************************************************/
/* status values */
-#define BTA_MCE_SUCCESS 0 /* Successful operation. */
-#define BTA_MCE_FAILURE 1 /* Generic failure. */
-#define BTA_MCE_BUSY 2 /* Temporarily can not handle this request. */
+#define BTA_MCE_SUCCESS 0 /* Successful operation. */
+#define BTA_MCE_FAILURE 1 /* Generic failure. */
+#define BTA_MCE_BUSY 2 /* Temporarily can not handle this request. */
typedef uint8_t tBTA_MCE_STATUS;
/* MCE I/F callback events */
/* events received by tBTA_MCE_DM_CBACK */
-#define BTA_MCE_ENABLE_EVT 0 /* MCE enabled */
-#define BTA_MCE_MAS_DISCOVERY_COMP_EVT 1 /* SDP MAS discovery complete */
-#define BTA_MCE_MAX_EVT 2 /* max number of MCE events */
+#define BTA_MCE_ENABLE_EVT 0 /* MCE enabled */
+#define BTA_MCE_MAS_DISCOVERY_COMP_EVT 1 /* SDP MAS discovery complete */
+#define BTA_MCE_MAX_EVT 2 /* max number of MCE events */
#define BTA_MCE_MAX_MAS_INSTANCES 12
typedef uint16_t tBTA_MCE_EVT;
-typedef struct
-{
- uint8_t scn;
- char *p_srv_name;
- uint16_t srv_name_len;
- uint8_t instance_id;
- uint8_t msg_type;
+typedef struct {
+ uint8_t scn;
+ char* p_srv_name;
+ uint16_t srv_name_len;
+ uint8_t instance_id;
+ uint8_t msg_type;
} tBTA_MCE_MAS_INFO;
/* data associated with BTA_MCE_MAS_DISCOVERY_COMP_EVT */
-typedef struct
-{
- tBTA_MCE_STATUS status;
- BD_ADDR remote_addr;
- int num_mas;
- tBTA_MCE_MAS_INFO mas[BTA_MCE_MAX_MAS_INSTANCES];
+typedef struct {
+ tBTA_MCE_STATUS status;
+ BD_ADDR remote_addr;
+ int num_mas;
+ tBTA_MCE_MAS_INFO mas[BTA_MCE_MAX_MAS_INSTANCES];
} tBTA_MCE_MAS_DISCOVERY_COMP;
/* union of data associated with MCE callback */
-typedef union
-{
- tBTA_MCE_STATUS status; /* BTA_MCE_ENABLE_EVT */
- tBTA_MCE_MAS_DISCOVERY_COMP mas_disc_comp; /* BTA_MCE_MAS_DISCOVERY_COMP_EVT */
+typedef union {
+ tBTA_MCE_STATUS status; /* BTA_MCE_ENABLE_EVT */
+ tBTA_MCE_MAS_DISCOVERY_COMP
+ mas_disc_comp; /* BTA_MCE_MAS_DISCOVERY_COMP_EVT */
} tBTA_MCE;
/* MCE DM Interface callback */
-typedef void (tBTA_MCE_DM_CBACK)(tBTA_MCE_EVT event, tBTA_MCE *p_data, void * user_data);
+typedef void(tBTA_MCE_DM_CBACK)(tBTA_MCE_EVT event, tBTA_MCE* p_data,
+ void* user_data);
/* MCE configuration structure */
-typedef struct
-{
- uint16_t sdp_db_size; /* The size of p_sdp_db */
- tSDP_DISCOVERY_DB *p_sdp_db; /* The data buffer to keep SDP database */
+typedef struct {
+ uint16_t sdp_db_size; /* The size of p_sdp_db */
+ tSDP_DISCOVERY_DB* p_sdp_db; /* The data buffer to keep SDP database */
} tBTA_MCE_CFG;
/*****************************************************************************
@@ -107,7 +105,7 @@
* BTA_MCE_FAIL if internal failure.
*
******************************************************************************/
-extern tBTA_MCE_STATUS BTA_MceEnable(tBTA_MCE_DM_CBACK *p_cback);
+extern tBTA_MCE_STATUS BTA_MceEnable(tBTA_MCE_DM_CBACK* p_cback);
/*******************************************************************************
*
diff --git a/bta/include/bta_op_api.h b/bta/include/bta_op_api.h
index 28012f6..3918568 100644
--- a/bta/include/bta_op_api.h
+++ b/bta/include/bta_op_api.h
@@ -33,35 +33,33 @@
****************************************************************************/
/* Extra Debug Code */
#ifndef BTA_OPS_DEBUG
-#define BTA_OPS_DEBUG false
+#define BTA_OPS_DEBUG false
#endif
#ifndef BTA_OPC_DEBUG
-#define BTA_OPC_DEBUG false
+#define BTA_OPC_DEBUG false
#endif
-
/* Object format */
-#define BTA_OP_VCARD21_FMT 1 /* vCard 2.1 */
-#define BTA_OP_VCARD30_FMT 2 /* vCard 3.0 */
-#define BTA_OP_VCAL_FMT 3 /* vCal 1.0 */
-#define BTA_OP_ICAL_FMT 4 /* iCal 2.0 */
-#define BTA_OP_VNOTE_FMT 5 /* vNote */
-#define BTA_OP_VMSG_FMT 6 /* vMessage */
-#define BTA_OP_OTHER_FMT 0xFF /* other format */
+#define BTA_OP_VCARD21_FMT 1 /* vCard 2.1 */
+#define BTA_OP_VCARD30_FMT 2 /* vCard 3.0 */
+#define BTA_OP_VCAL_FMT 3 /* vCal 1.0 */
+#define BTA_OP_ICAL_FMT 4 /* iCal 2.0 */
+#define BTA_OP_VNOTE_FMT 5 /* vNote */
+#define BTA_OP_VMSG_FMT 6 /* vMessage */
+#define BTA_OP_OTHER_FMT 0xFF /* other format */
typedef uint8_t tBTA_OP_FMT;
/* Object format mask */
-#define BTA_OP_VCARD21_MASK 0x01 /* vCard 2.1 */
-#define BTA_OP_VCARD30_MASK 0x02 /* vCard 3.0 */
-#define BTA_OP_VCAL_MASK 0x04 /* vCal 1.0 */
-#define BTA_OP_ICAL_MASK 0x08 /* iCal 2.0 */
-#define BTA_OP_VNOTE_MASK 0x10 /* vNote */
-#define BTA_OP_VMSG_MASK 0x20 /* vMessage */
-#define BTA_OP_ANY_MASK 0x40 /* Any type of object. */
+#define BTA_OP_VCARD21_MASK 0x01 /* vCard 2.1 */
+#define BTA_OP_VCARD30_MASK 0x02 /* vCard 3.0 */
+#define BTA_OP_VCAL_MASK 0x04 /* vCal 1.0 */
+#define BTA_OP_ICAL_MASK 0x08 /* iCal 2.0 */
+#define BTA_OP_VNOTE_MASK 0x10 /* vNote */
+#define BTA_OP_VMSG_MASK 0x20 /* vMessage */
+#define BTA_OP_ANY_MASK 0x40 /* Any type of object. */
typedef uint8_t tBTA_OP_FMT_MASK;
#endif /* BTA_OP_API_H */
-
diff --git a/bta/include/bta_pan_api.h b/bta/include/bta_pan_api.h
index a9920cb..8eae000 100644
--- a/bta/include/bta_pan_api.h
+++ b/bta/include/bta_pan_api.h
@@ -36,89 +36,78 @@
/*****************************************************************************
* Constants and data types
****************************************************************************/
-#define BTA_PAN_SUCCESS 0
-#define BTA_PAN_FAIL 1
+#define BTA_PAN_SUCCESS 0
+#define BTA_PAN_FAIL 1
typedef uint8_t tBTA_PAN_STATUS;
-
/* PAN Callback events */
-#define BTA_PAN_ENABLE_EVT 0 /* PAN service is enabled. */
-#define BTA_PAN_SET_ROLE_EVT 1 /* PAN roles registered */
-#define BTA_PAN_OPENING_EVT 2 /* Connection is being opened. */
-#define BTA_PAN_OPEN_EVT 3 /* Connection has been opened. */
-#define BTA_PAN_CLOSE_EVT 4 /* Connection has been closed. */
+#define BTA_PAN_ENABLE_EVT 0 /* PAN service is enabled. */
+#define BTA_PAN_SET_ROLE_EVT 1 /* PAN roles registered */
+#define BTA_PAN_OPENING_EVT 2 /* Connection is being opened. */
+#define BTA_PAN_OPEN_EVT 3 /* Connection has been opened. */
+#define BTA_PAN_CLOSE_EVT 4 /* Connection has been closed. */
typedef uint8_t tBTA_PAN_EVT;
-
/* pan roles */
-#define BTA_PAN_ROLE_PANU PAN_ROLE_CLIENT
-#define BTA_PAN_ROLE_GN PAN_ROLE_GN_SERVER
-#define BTA_PAN_ROLE_NAP PAN_ROLE_NAP_SERVER
+#define BTA_PAN_ROLE_PANU PAN_ROLE_CLIENT
+#define BTA_PAN_ROLE_GN PAN_ROLE_GN_SERVER
+#define BTA_PAN_ROLE_NAP PAN_ROLE_NAP_SERVER
-
-typedef uint8_t tBTA_PAN_ROLE;
+typedef uint8_t tBTA_PAN_ROLE;
/* information regarding PAN roles */
-typedef struct
-{
- const char *p_srv_name; /* service name for the PAN role */
- uint8_t app_id; /* application id */
- tBTA_SEC sec_mask; /* security setting for the role */
+typedef struct {
+ const char* p_srv_name; /* service name for the PAN role */
+ uint8_t app_id; /* application id */
+ tBTA_SEC sec_mask; /* security setting for the role */
} tBTA_PAN_ROLE_INFO;
-
/* Event associated with BTA_PAN_SET_ROLE_EVT */
-typedef struct
-{
- tBTA_PAN_STATUS status; /* status of set role event */
- tBTA_PAN_ROLE role; /* PAN roles successfully registered */
+typedef struct {
+ tBTA_PAN_STATUS status; /* status of set role event */
+ tBTA_PAN_ROLE role; /* PAN roles successfully registered */
} tBTA_PAN_SET_ROLE;
/* Event associated with BTA_PAN_OPENING_EVT */
-typedef struct
-{
- BD_ADDR bd_addr; /* BD address of peer device. */
- uint16_t handle; /* Handle associated with this connection. */
+typedef struct {
+ BD_ADDR bd_addr; /* BD address of peer device. */
+ uint16_t handle; /* Handle associated with this connection. */
} tBTA_PAN_OPENING;
-
/* Event associated with BTA_PAN_OPEN_EVT */
-typedef struct
-{
- BD_ADDR bd_addr; /* BD address of peer device. */
- uint16_t handle; /* Handle associated with this connection. */
- tBTA_PAN_STATUS status; /* status of open event */
- tBTA_PAN_ROLE local_role; /* Local device PAN role for the connection */
- tBTA_PAN_ROLE peer_role; /* Peer device PAN role for the connection */
+typedef struct {
+ BD_ADDR bd_addr; /* BD address of peer device. */
+ uint16_t handle; /* Handle associated with this connection. */
+ tBTA_PAN_STATUS status; /* status of open event */
+ tBTA_PAN_ROLE local_role; /* Local device PAN role for the connection */
+ tBTA_PAN_ROLE peer_role; /* Peer device PAN role for the connection */
} tBTA_PAN_OPEN;
/* Event associated with BTA_PAN_CLOSE_EVT */
-typedef struct
-{
- uint16_t handle; /* Handle associated with the connection. */
+typedef struct {
+ uint16_t handle; /* Handle associated with the connection. */
} tBTA_PAN_CLOSE;
/* Union of all PAN callback structures */
-typedef union
-{
- tBTA_PAN_SET_ROLE set_role; /* set_role event */
- tBTA_PAN_OPEN open; /* Connection has been opened. */
- tBTA_PAN_OPENING opening; /* Connection being opened */
- tBTA_PAN_CLOSE close; /* Connection has been closed. */
+typedef union {
+ tBTA_PAN_SET_ROLE set_role; /* set_role event */
+ tBTA_PAN_OPEN open; /* Connection has been opened. */
+ tBTA_PAN_OPENING opening; /* Connection being opened */
+ tBTA_PAN_CLOSE close; /* Connection has been closed. */
} tBTA_PAN;
/* Number of PAN connections */
#ifndef BTA_PAN_NUM_CONN
-#define BTA_PAN_NUM_CONN 4
+#define BTA_PAN_NUM_CONN 4
#endif
/* PAN callback */
-typedef void (tBTA_PAN_CBACK)(tBTA_PAN_EVT event, tBTA_PAN *p_data);
+typedef void(tBTA_PAN_CBACK)(tBTA_PAN_EVT event, tBTA_PAN* p_data);
/*****************************************************************************
* External Function Declarations
@@ -149,20 +138,20 @@
******************************************************************************/
extern void BTA_PanDisable(void);
-
/*******************************************************************************
*
* Function BTA_PanSetRole
*
* Description Sets PAN roles. When the enable operation is complete
- * the callback function will be called with a BTA_PAN_SET_ROLE_EVT.
+ * the callback function will be called with a
+ *BTA_PAN_SET_ROLE_EVT.
*
* Returns void
*
******************************************************************************/
-void BTA_PanSetRole(tBTA_PAN_ROLE role, tBTA_PAN_ROLE_INFO *p_user_info, tBTA_PAN_ROLE_INFO *p_gn_info,
- tBTA_PAN_ROLE_INFO *p_nap_info);
-
+void BTA_PanSetRole(tBTA_PAN_ROLE role, tBTA_PAN_ROLE_INFO* p_user_info,
+ tBTA_PAN_ROLE_INFO* p_gn_info,
+ tBTA_PAN_ROLE_INFO* p_nap_info);
/*******************************************************************************
*
@@ -176,9 +165,8 @@
* Returns void
*
******************************************************************************/
-void BTA_PanOpen(BD_ADDR bd_addr, tBTA_PAN_ROLE local_role, tBTA_PAN_ROLE peer_role);
-
-
+void BTA_PanOpen(BD_ADDR bd_addr, tBTA_PAN_ROLE local_role,
+ tBTA_PAN_ROLE peer_role);
/*******************************************************************************
*
@@ -192,7 +180,6 @@
******************************************************************************/
extern void BTA_PanClose(uint16_t handle);
-
#ifdef __cplusplus
}
#endif
diff --git a/bta/include/bta_pan_ci.h b/bta/include/bta_pan_ci.h
index 2c67db1..a5ae0e3 100644
--- a/bta/include/bta_pan_ci.h
+++ b/bta/include/bta_pan_ci.h
@@ -30,8 +30,7 @@
* Function Declarations
****************************************************************************/
#ifdef __cplusplus
-extern "C"
-{
+extern "C" {
#endif
/*******************************************************************************
@@ -39,7 +38,8 @@
* Function bta_pan_ci_tx_ready
*
* Description This function sends an event to PAN indicating the phone is
- * ready for more data and PAN should call bta_pan_co_tx_path().
+ * ready for more data and PAN should call
+ *bta_pan_co_tx_path().
* This function is used when the TX data path is configured
* to use a pull interface.
*
@@ -95,7 +95,8 @@
* Returns true if flow enabled
*
******************************************************************************/
-extern void bta_pan_ci_rx_writebuf(uint16_t handle, BD_ADDR src, BD_ADDR dst, uint16_t protocol, BT_HDR *p_buf, bool ext);
+extern void bta_pan_ci_rx_writebuf(uint16_t handle, BD_ADDR src, BD_ADDR dst,
+ uint16_t protocol, BT_HDR* p_buf, bool ext);
/*******************************************************************************
*
@@ -110,8 +111,9 @@
* Returns void
*
******************************************************************************/
-extern BT_HDR * bta_pan_ci_readbuf(uint16_t handle, BD_ADDR src, BD_ADDR dst, uint16_t *p_protocol,
- bool* p_ext, bool* p_forward);
+extern BT_HDR* bta_pan_ci_readbuf(uint16_t handle, BD_ADDR src, BD_ADDR dst,
+ uint16_t* p_protocol, bool* p_ext,
+ bool* p_forward);
/*******************************************************************************
*
@@ -123,8 +125,9 @@
* Returns void
*
******************************************************************************/
-extern void bta_pan_ci_set_pfilters(uint16_t handle, uint16_t num_filters, uint16_t *p_start_array, uint16_t *p_end_array);
-
+extern void bta_pan_ci_set_pfilters(uint16_t handle, uint16_t num_filters,
+ uint16_t* p_start_array,
+ uint16_t* p_end_array);
/*******************************************************************************
*
@@ -136,8 +139,9 @@
* Returns void
*
******************************************************************************/
-extern void bta_pan_ci_set_mfilters(uint16_t handle, uint16_t num_mcast_filters, uint8_t *p_start_array,
- uint8_t *p_end_array);
+extern void bta_pan_ci_set_mfilters(uint16_t handle, uint16_t num_mcast_filters,
+ uint8_t* p_start_array,
+ uint8_t* p_end_array);
#ifdef __cplusplus
}
diff --git a/bta/include/bta_pan_co.h b/bta/include/bta_pan_co.h
index 6de2c1f..f3d80f2 100644
--- a/bta/include/bta_pan_co.h
+++ b/bta/include/bta_pan_co.h
@@ -34,21 +34,16 @@
* Constants
****************************************************************************/
-
-
/* BT_HDR buffer offset */
-#define BTA_PAN_MIN_OFFSET PAN_MINIMUM_OFFSET
-
+#define BTA_PAN_MIN_OFFSET PAN_MINIMUM_OFFSET
/* Data Flow Mask */
-#define BTA_PAN_RX_PUSH 0x00 /* RX push. */
-#define BTA_PAN_RX_PUSH_BUF 0x01 /* RX push with zero copy. */
-#define BTA_PAN_RX_PULL 0x02 /* RX pull. */
-#define BTA_PAN_TX_PUSH 0x00 /* TX push. */
-#define BTA_PAN_TX_PUSH_BUF 0x10 /* TX push with zero copy. */
-#define BTA_PAN_TX_PULL 0x20 /* TX pull. */
-
-
+#define BTA_PAN_RX_PUSH 0x00 /* RX push. */
+#define BTA_PAN_RX_PUSH_BUF 0x01 /* RX push with zero copy. */
+#define BTA_PAN_RX_PULL 0x02 /* RX pull. */
+#define BTA_PAN_TX_PUSH 0x00 /* TX push. */
+#define BTA_PAN_TX_PUSH_BUF 0x10 /* TX push with zero copy. */
+#define BTA_PAN_TX_PULL 0x20 /* TX pull. */
/*****************************************************************************
* Function Declarations
@@ -68,7 +63,7 @@
* Returns Data flow mask.
*
******************************************************************************/
-extern uint8_t bta_pan_co_init(uint8_t *q_level);
+extern uint8_t bta_pan_co_init(uint8_t* q_level);
/*******************************************************************************
*
@@ -82,7 +77,9 @@
* Returns void
*
******************************************************************************/
-extern void bta_pan_co_open(uint16_t handle, uint8_t app_id, tBTA_PAN_ROLE local_role, tBTA_PAN_ROLE peer_role, BD_ADDR peer_addr);
+extern void bta_pan_co_open(uint16_t handle, uint8_t app_id,
+ tBTA_PAN_ROLE local_role, tBTA_PAN_ROLE peer_role,
+ BD_ADDR peer_addr);
/*******************************************************************************
*
@@ -140,7 +137,8 @@
* Returns void
*
******************************************************************************/
-extern void bta_pan_co_tx_write(uint16_t handle, uint8_t app_id, BD_ADDR src, BD_ADDR dst, uint16_t protocol, uint8_t *p_data,
+extern void bta_pan_co_tx_write(uint16_t handle, uint8_t app_id, BD_ADDR src,
+ BD_ADDR dst, uint16_t protocol, uint8_t* p_data,
uint16_t len, bool ext, bool forward);
/*******************************************************************************
@@ -156,9 +154,9 @@
* Returns void
*
******************************************************************************/
-extern void bta_pan_co_tx_writebuf(uint16_t handle, uint8_t app_id, BD_ADDR src, BD_ADDR dst, uint16_t protocol, BT_HDR *p_buf,
- bool ext, bool forward);
-
+extern void bta_pan_co_tx_writebuf(uint16_t handle, uint8_t app_id, BD_ADDR src,
+ BD_ADDR dst, uint16_t protocol,
+ BT_HDR* p_buf, bool ext, bool forward);
/*******************************************************************************
*
@@ -176,7 +174,6 @@
******************************************************************************/
extern void bta_pan_co_rx_flow(uint16_t handle, uint8_t app_id, bool enable);
-
/*******************************************************************************
*
* Function bta_pan_co_filt_ind
@@ -186,8 +183,9 @@
* Returns void
*
******************************************************************************/
-extern void bta_pan_co_pfilt_ind(uint16_t handle, bool indication, tBTA_PAN_STATUS result,
- uint16_t len, uint8_t *p_filters);
+extern void bta_pan_co_pfilt_ind(uint16_t handle, bool indication,
+ tBTA_PAN_STATUS result, uint16_t len,
+ uint8_t* p_filters);
/*******************************************************************************
*
@@ -198,8 +196,9 @@
* Returns void
*
******************************************************************************/
-extern void bta_pan_co_mfilt_ind(uint16_t handle, bool indication, tBTA_PAN_STATUS result,
- uint16_t len, uint8_t *p_filters);
+extern void bta_pan_co_mfilt_ind(uint16_t handle, bool indication,
+ tBTA_PAN_STATUS result, uint16_t len,
+ uint8_t* p_filters);
#ifdef __cplusplus
}
diff --git a/bta/include/bta_sdp_api.h b/bta/include/bta_sdp_api.h
index dadf18d..6884ea9 100644
--- a/bta/include/bta_sdp_api.h
+++ b/bta/include/bta_sdp_api.h
@@ -36,49 +36,47 @@
#endif
/* status values */
-#define BTA_SDP_SUCCESS 0 /* Successful operation. */
-#define BTA_SDP_FAILURE 1 /* Generic failure. */
-#define BTA_SDP_BUSY 2 /* Temporarily can not handle this request. */
+#define BTA_SDP_SUCCESS 0 /* Successful operation. */
+#define BTA_SDP_FAILURE 1 /* Generic failure. */
+#define BTA_SDP_BUSY 2 /* Temporarily can not handle this request. */
typedef uint8_t tBTA_SDP_STATUS;
/* SDP I/F callback events */
/* events received by tBTA_SDP_DM_CBACK */
-#define BTA_SDP_ENABLE_EVT 0 /* SDP service i/f enabled*/
-#define BTA_SDP_SEARCH_EVT 1 /* SDP Service started */
-#define BTA_SDP_SEARCH_COMP_EVT 2 /* SDP search complete */
-#define BTA_SDP_CREATE_RECORD_USER_EVT 3 /* SDP search complete */
-#define BTA_SDP_REMOVE_RECORD_USER_EVT 4 /* SDP search complete */
-#define BTA_SDP_MAX_EVT 5 /* max number of SDP events */
+#define BTA_SDP_ENABLE_EVT 0 /* SDP service i/f enabled*/
+#define BTA_SDP_SEARCH_EVT 1 /* SDP Service started */
+#define BTA_SDP_SEARCH_COMP_EVT 2 /* SDP search complete */
+#define BTA_SDP_CREATE_RECORD_USER_EVT 3 /* SDP search complete */
+#define BTA_SDP_REMOVE_RECORD_USER_EVT 4 /* SDP search complete */
+#define BTA_SDP_MAX_EVT 5 /* max number of SDP events */
#define BTA_SDP_MAX_RECORDS 15
typedef uint16_t tBTA_SDP_EVT;
/* data associated with BTA_SDP_DISCOVERY_COMP_EVT */
-typedef struct
-{
- tBTA_SDP_STATUS status;
- BD_ADDR remote_addr;
- tBT_UUID uuid;
- int record_count;
- bluetooth_sdp_record records[BTA_SDP_MAX_RECORDS];
+typedef struct {
+ tBTA_SDP_STATUS status;
+ BD_ADDR remote_addr;
+ tBT_UUID uuid;
+ int record_count;
+ bluetooth_sdp_record records[BTA_SDP_MAX_RECORDS];
} tBTA_SDP_SEARCH_COMP;
-typedef union
-{
- tBTA_SDP_STATUS status; /* BTA_SDP_SEARCH_EVT */
- tBTA_SDP_SEARCH_COMP sdp_search_comp; /* BTA_SDP_SEARCH_COMP_EVT */
+typedef union {
+ tBTA_SDP_STATUS status; /* BTA_SDP_SEARCH_EVT */
+ tBTA_SDP_SEARCH_COMP sdp_search_comp; /* BTA_SDP_SEARCH_COMP_EVT */
} tBTA_SDP;
/* SDP DM Interface callback */
-typedef void (tBTA_SDP_DM_CBACK)(tBTA_SDP_EVT event, tBTA_SDP *p_data, void * user_data);
+typedef void(tBTA_SDP_DM_CBACK)(tBTA_SDP_EVT event, tBTA_SDP* p_data,
+ void* user_data);
/* MCE configuration structure */
-typedef struct
-{
- uint16_t sdp_db_size; /* The size of p_sdp_db */
- tSDP_DISCOVERY_DB *p_sdp_db; /* The data buffer to keep SDP database */
+typedef struct {
+ uint16_t sdp_db_size; /* The size of p_sdp_db */
+ tSDP_DISCOVERY_DB* p_sdp_db; /* The data buffer to keep SDP database */
} tBTA_SDP_CFG;
/*******************************************************************************
@@ -95,7 +93,7 @@
* BTA_SDP_FAIL if internal failure.
*
******************************************************************************/
-extern tBTA_SDP_STATUS BTA_SdpEnable(tBTA_SDP_DM_CBACK *p_cback);
+extern tBTA_SDP_STATUS BTA_SdpEnable(tBTA_SDP_DM_CBACK* p_cback);
/*******************************************************************************
*
@@ -103,13 +101,14 @@
*
* Description Start a search for sdp records for a specific BD_ADDR with a
* specific profile uuid.
- * When the search operation is completed, the callback function
+ * When the search operation is completed, the callback
+ *function
* will be called with a BTA_SDP_SEARCH_EVT.
* Returns BTA_SDP_SUCCESS if successful.
* BTA_SDP_FAIL if internal failure.
*
******************************************************************************/
-extern tBTA_SDP_STATUS BTA_SdpSearch(BD_ADDR bd_addr,tSDP_UUID *uuid);
+extern tBTA_SDP_STATUS BTA_SdpSearch(BD_ADDR bd_addr, tSDP_UUID* uuid);
/*******************************************************************************
*
diff --git a/bta/include/utl.h b/bta/include/utl.h
index 6390350..200a965 100644
--- a/bta/include/utl.h
+++ b/bta/include/utl.h
@@ -35,25 +35,26 @@
* Constants
****************************************************************************/
/*** class of device settings ***/
-#define BTA_UTL_SET_COD_MAJOR_MINOR 0x01
-#define BTA_UTL_SET_COD_SERVICE_CLASS 0x02 /* only set the bits in the input */
-#define BTA_UTL_CLR_COD_SERVICE_CLASS 0x04
-#define BTA_UTL_SET_COD_ALL 0x08 /* take service class as the input (may clear some set bits!!) */
-#define BTA_UTL_INIT_COD 0x0a
+#define BTA_UTL_SET_COD_MAJOR_MINOR 0x01
+#define BTA_UTL_SET_COD_SERVICE_CLASS \
+ 0x02 /* only set the bits in the input \
+ */
+#define BTA_UTL_CLR_COD_SERVICE_CLASS 0x04
+#define BTA_UTL_SET_COD_ALL \
+ 0x08 /* take service class as the input (may clear some set bits!!) */
+#define BTA_UTL_INIT_COD 0x0a
/*****************************************************************************
* Type Definitions
****************************************************************************/
/** for utl_set_device_class() **/
-typedef struct
-{
- uint8_t minor;
- uint8_t major;
- uint16_t service;
+typedef struct {
+ uint8_t minor;
+ uint8_t major;
+ uint16_t service;
} tBTA_UTL_COD;
-
/*****************************************************************************
* External Function Declarations
****************************************************************************/
@@ -70,7 +71,7 @@
* Returns Integer value or -1 on error.
*
******************************************************************************/
-extern int16_t utl_str2int(const char *p_s);
+extern int16_t utl_str2int(const char* p_s);
/*******************************************************************************
*
@@ -85,7 +86,7 @@
* Returns 0 if strings match, nonzero otherwise.
*
******************************************************************************/
-extern int utl_strucmp(const char *p_s, const char *p_t);
+extern int utl_strucmp(const char* p_s, const char* p_t);
/*******************************************************************************
*
@@ -99,7 +100,7 @@
* Returns Length of string.
*
******************************************************************************/
-extern uint8_t utl_itoa(uint16_t i, char *p_s);
+extern uint8_t utl_itoa(uint16_t i, char* p_s);
/*******************************************************************************
*
@@ -111,16 +112,21 @@
* p_cod - Pointer to the device class to set to
*
* cmd - the fields of the device class to update.
- * BTA_UTL_SET_COD_MAJOR_MINOR, - overwrite major, minor class
- * BTA_UTL_SET_COD_SERVICE_CLASS - set the bits in the input
- * BTA_UTL_CLR_COD_SERVICE_CLASS - clear the bits in the input
- * BTA_UTL_SET_COD_ALL - overwrite major, minor, set the bits in service class
- * BTA_UTL_INIT_COD - overwrite major, minor, and service class
+ * BTA_UTL_SET_COD_MAJOR_MINOR, - overwrite major,
+ *minor class
+ * BTA_UTL_SET_COD_SERVICE_CLASS - set the bits in
+ *the input
+ * BTA_UTL_CLR_COD_SERVICE_CLASS - clear the bits in
+ *the input
+ * BTA_UTL_SET_COD_ALL - overwrite major, minor, set
+ *the bits in service class
+ * BTA_UTL_INIT_COD - overwrite major, minor, and
+ *service class
*
* Returns true if successful, Otherwise false
*
******************************************************************************/
-extern bool utl_set_device_class(tBTA_UTL_COD *p_cod, uint8_t cmd);
+extern bool utl_set_device_class(tBTA_UTL_COD* p_cod, uint8_t cmd);
/*******************************************************************************
*
@@ -133,7 +139,7 @@
* Returns true if successful, Otherwise false
*
******************************************************************************/
-extern bool utl_isintstr(const char *p_s);
+extern bool utl_isintstr(const char* p_s);
/*******************************************************************************
*
@@ -158,7 +164,7 @@
* Returns true if successful, Otherwise false
*
******************************************************************************/
-extern bool utl_isdialstr(const char *p_s);
+extern bool utl_isdialstr(const char* p_s);
#ifdef __cplusplus
}
diff --git a/bta/jv/bta_jv_act.cc b/bta/jv/bta_jv_act.cc
index 4ba7215..962cccf 100644
--- a/bta/jv/bta_jv_act.cc
+++ b/bta/jv/bta_jv_act.cc
@@ -21,85 +21,80 @@
* This file contains action functions for BTA JV APIs.
*
******************************************************************************/
-#include <hardware/bluetooth.h>
#include <arpa/inet.h>
+#include <hardware/bluetooth.h>
#include <pthread.h>
#include <stdlib.h>
#include <string.h>
-#include "osi/include/allocator.h"
-#include "bt_types.h"
-#include "bt_common.h"
-#include "utl.h"
-#include "bta_sys.h"
-#include "bta_api.h"
-#include "bta_jv_api.h"
-#include "bta_jv_int.h"
-#include "bta_jv_co.h"
-#include "btm_api.h"
-#include "btm_int.h"
-#include "sdp_api.h"
-#include "l2c_api.h"
-#include "port_api.h"
-#include "rfcdefs.h"
#include "avct_api.h"
#include "avdt_api.h"
+#include "bt_common.h"
+#include "bt_types.h"
+#include "bta_api.h"
+#include "bta_jv_api.h"
+#include "bta_jv_co.h"
+#include "bta_jv_int.h"
+#include "bta_sys.h"
+#include "btm_api.h"
+#include "btm_int.h"
#include "gap_api.h"
#include "l2c_api.h"
+#include "osi/include/allocator.h"
+#include "port_api.h"
+#include "rfcdefs.h"
+#include "sdp_api.h"
+#include "utl.h"
#include "osi/include/osi.h"
-
/* one of these exists for each client */
struct fc_client {
- struct fc_client *next_all_list;
- struct fc_client *next_chan_list;
- BD_ADDR remote_addr;
- uint32_t id;
- tBTA_JV_L2CAP_CBACK *p_cback;
- void *user_data;
- uint16_t handle;
- uint16_t chan;
- uint8_t sec_id;
- unsigned server : 1;
- unsigned init_called : 1;
+ struct fc_client* next_all_list;
+ struct fc_client* next_chan_list;
+ BD_ADDR remote_addr;
+ uint32_t id;
+ tBTA_JV_L2CAP_CBACK* p_cback;
+ void* user_data;
+ uint16_t handle;
+ uint16_t chan;
+ uint8_t sec_id;
+ unsigned server : 1;
+ unsigned init_called : 1;
};
/* one of these exists for each channel we're dealing with */
struct fc_channel {
- struct fc_channel *next;
- struct fc_client *clients;
- uint8_t has_server : 1;
- uint16_t chan;
+ struct fc_channel* next;
+ struct fc_client* clients;
+ uint8_t has_server : 1;
+ uint16_t chan;
};
-
-static struct fc_client *fc_clients;
-static struct fc_channel *fc_channels;
+static struct fc_client* fc_clients;
+static struct fc_channel* fc_channels;
static uint32_t fc_next_id;
-
static void fcchan_conn_chng_cbk(uint16_t chan, BD_ADDR bd_addr, bool connected,
- uint16_t reason, tBT_TRANSPORT );
-static void fcchan_data_cbk(uint16_t chan, BD_ADDR bd_addr, BT_HDR *p_buf);
+ uint16_t reason, tBT_TRANSPORT);
+static void fcchan_data_cbk(uint16_t chan, BD_ADDR bd_addr, BT_HDR* p_buf);
-
-extern void uuid_to_string_legacy(bt_uuid_t *p_uuid, char *str, size_t str_len);
-static inline void logu(const char* title, const uint8_t * p_uuid)
-{
- char uuids[128];
- uuid_to_string_legacy((bt_uuid_t*)p_uuid, uuids, sizeof(uuids));
- APPL_TRACE_DEBUG("%s: %s", title, uuids);
+extern void uuid_to_string_legacy(bt_uuid_t* p_uuid, char* str, size_t str_len);
+static inline void logu(const char* title, const uint8_t* p_uuid) {
+ char uuids[128];
+ uuid_to_string_legacy((bt_uuid_t*)p_uuid, uuids, sizeof(uuids));
+ APPL_TRACE_DEBUG("%s: %s", title, uuids);
}
-
-static tBTA_JV_PCB * bta_jv_add_rfc_port(tBTA_JV_RFC_CB *p_cb, tBTA_JV_PCB *p_pcb_open);
+static tBTA_JV_PCB* bta_jv_add_rfc_port(tBTA_JV_RFC_CB* p_cb,
+ tBTA_JV_PCB* p_pcb_open);
static tBTA_JV_STATUS bta_jv_free_set_pm_profile_cb(uint32_t jv_handle);
-static void bta_jv_pm_conn_busy(tBTA_JV_PM_CB *p_cb);
-static void bta_jv_pm_conn_idle(tBTA_JV_PM_CB *p_cb);
-static void bta_jv_pm_state_change(tBTA_JV_PM_CB *p_cb, const tBTA_JV_CONN_STATE state);
-tBTA_JV_STATUS bta_jv_set_pm_conn_state(tBTA_JV_PM_CB *p_cb, const tBTA_JV_CONN_STATE
- new_st);
+static void bta_jv_pm_conn_busy(tBTA_JV_PM_CB* p_cb);
+static void bta_jv_pm_conn_idle(tBTA_JV_PM_CB* p_cb);
+static void bta_jv_pm_state_change(tBTA_JV_PM_CB* p_cb,
+ const tBTA_JV_CONN_STATE state);
+tBTA_JV_STATUS bta_jv_set_pm_conn_state(tBTA_JV_PM_CB* p_cb,
+ const tBTA_JV_CONN_STATE new_st);
/*******************************************************************************
*
@@ -110,49 +105,39 @@
* Returns
*
******************************************************************************/
-uint8_t bta_jv_alloc_sec_id(void)
-{
- uint8_t ret = 0;
- int i;
- for(i=0; i<BTA_JV_NUM_SERVICE_ID; i++)
- {
- if(0 == bta_jv_cb.sec_id[i])
- {
- bta_jv_cb.sec_id[i] = BTA_JV_FIRST_SERVICE_ID + i;
- ret = bta_jv_cb.sec_id[i];
- break;
- }
+uint8_t bta_jv_alloc_sec_id(void) {
+ uint8_t ret = 0;
+ int i;
+ for (i = 0; i < BTA_JV_NUM_SERVICE_ID; i++) {
+ if (0 == bta_jv_cb.sec_id[i]) {
+ bta_jv_cb.sec_id[i] = BTA_JV_FIRST_SERVICE_ID + i;
+ ret = bta_jv_cb.sec_id[i];
+ break;
}
- return ret;
-
+ }
+ return ret;
}
-static int get_sec_id_used(void)
-{
- int i;
- int used = 0;
- for(i=0; i<BTA_JV_NUM_SERVICE_ID; i++)
- {
- if(bta_jv_cb.sec_id[i])
- used++;
- }
- if (used == BTA_JV_NUM_SERVICE_ID)
- APPL_TRACE_ERROR("get_sec_id_used, sec id exceeds the limit:%d",
- BTA_JV_NUM_SERVICE_ID);
- return used;
+static int get_sec_id_used(void) {
+ int i;
+ int used = 0;
+ for (i = 0; i < BTA_JV_NUM_SERVICE_ID; i++) {
+ if (bta_jv_cb.sec_id[i]) used++;
+ }
+ if (used == BTA_JV_NUM_SERVICE_ID)
+ APPL_TRACE_ERROR("get_sec_id_used, sec id exceeds the limit:%d",
+ BTA_JV_NUM_SERVICE_ID);
+ return used;
}
-static int get_rfc_cb_used(void)
-{
- int i;
- int used = 0;
- for(i=0; i<BTA_JV_MAX_RFC_CONN; i++)
- {
- if(bta_jv_cb.rfc_cb[i].handle )
- used++;
- }
- if (used == BTA_JV_MAX_RFC_CONN)
- APPL_TRACE_ERROR("get_sec_id_used, rfc ctrl block exceeds the limit:%d",
- BTA_JV_MAX_RFC_CONN);
- return used;
+static int get_rfc_cb_used(void) {
+ int i;
+ int used = 0;
+ for (i = 0; i < BTA_JV_MAX_RFC_CONN; i++) {
+ if (bta_jv_cb.rfc_cb[i].handle) used++;
+ }
+ if (used == BTA_JV_MAX_RFC_CONN)
+ APPL_TRACE_ERROR("get_sec_id_used, rfc ctrl block exceeds the limit:%d",
+ BTA_JV_MAX_RFC_CONN);
+ return used;
}
/*******************************************************************************
@@ -164,15 +149,13 @@
* Returns
*
******************************************************************************/
-static void bta_jv_free_sec_id(uint8_t *p_sec_id)
-{
- uint8_t sec_id = *p_sec_id;
- *p_sec_id = 0;
- if(sec_id >= BTA_JV_FIRST_SERVICE_ID && sec_id <= BTA_JV_LAST_SERVICE_ID)
- {
- BTM_SecClrService(sec_id);
- bta_jv_cb.sec_id[sec_id - BTA_JV_FIRST_SERVICE_ID] = 0;
- }
+static void bta_jv_free_sec_id(uint8_t* p_sec_id) {
+ uint8_t sec_id = *p_sec_id;
+ *p_sec_id = 0;
+ if (sec_id >= BTA_JV_FIRST_SERVICE_ID && sec_id <= BTA_JV_LAST_SERVICE_ID) {
+ BTM_SecClrService(sec_id);
+ bta_jv_cb.sec_id[sec_id - BTA_JV_FIRST_SERVICE_ID] = 0;
+ }
}
/*******************************************************************************
@@ -184,192 +167,190 @@
* Returns
*
******************************************************************************/
-tBTA_JV_RFC_CB * bta_jv_alloc_rfc_cb(uint16_t port_handle, tBTA_JV_PCB **pp_pcb)
-{
- tBTA_JV_RFC_CB *p_cb = NULL;
- tBTA_JV_PCB *p_pcb;
- int i, j;
- for(i=0; i<BTA_JV_MAX_RFC_CONN; i++)
- {
- if (0 == bta_jv_cb.rfc_cb[i].handle )
- {
- p_cb = &bta_jv_cb.rfc_cb[i];
- /* mask handle to distinguish it with L2CAP handle */
- p_cb->handle = (i + 1) | BTA_JV_RFCOMM_MASK;
+tBTA_JV_RFC_CB* bta_jv_alloc_rfc_cb(uint16_t port_handle,
+ tBTA_JV_PCB** pp_pcb) {
+ tBTA_JV_RFC_CB* p_cb = NULL;
+ tBTA_JV_PCB* p_pcb;
+ int i, j;
+ for (i = 0; i < BTA_JV_MAX_RFC_CONN; i++) {
+ if (0 == bta_jv_cb.rfc_cb[i].handle) {
+ p_cb = &bta_jv_cb.rfc_cb[i];
+ /* mask handle to distinguish it with L2CAP handle */
+ p_cb->handle = (i + 1) | BTA_JV_RFCOMM_MASK;
- p_cb->max_sess = 1;
- p_cb->curr_sess = 1;
- for (j = 0; j < BTA_JV_MAX_RFC_SR_SESSION; j++)
- p_cb->rfc_hdl[j] = 0;
- p_cb->rfc_hdl[0] = port_handle;
- APPL_TRACE_DEBUG( "bta_jv_alloc_rfc_cb port_handle:%d handle:0x%2x",
- port_handle, p_cb->handle);
+ p_cb->max_sess = 1;
+ p_cb->curr_sess = 1;
+ for (j = 0; j < BTA_JV_MAX_RFC_SR_SESSION; j++) p_cb->rfc_hdl[j] = 0;
+ p_cb->rfc_hdl[0] = port_handle;
+ APPL_TRACE_DEBUG("bta_jv_alloc_rfc_cb port_handle:%d handle:0x%2x",
+ port_handle, p_cb->handle);
- p_pcb = &bta_jv_cb.port_cb[port_handle - 1];
- p_pcb->handle = p_cb->handle;
- p_pcb->port_handle = port_handle;
- p_pcb->p_pm_cb = NULL;
- *pp_pcb = p_pcb;
- break;
- }
+ p_pcb = &bta_jv_cb.port_cb[port_handle - 1];
+ p_pcb->handle = p_cb->handle;
+ p_pcb->port_handle = port_handle;
+ p_pcb->p_pm_cb = NULL;
+ *pp_pcb = p_pcb;
+ break;
}
- if(p_cb == NULL)
- {
- APPL_TRACE_ERROR( "bta_jv_alloc_rfc_cb: port_handle:%d, ctrl block exceeds "
- "limit:%d", port_handle, BTA_JV_MAX_RFC_CONN);
- }
- return p_cb;
+ }
+ if (p_cb == NULL) {
+ APPL_TRACE_ERROR(
+ "bta_jv_alloc_rfc_cb: port_handle:%d, ctrl block exceeds "
+ "limit:%d",
+ port_handle, BTA_JV_MAX_RFC_CONN);
+ }
+ return p_cb;
}
/*******************************************************************************
*
* Function bta_jv_rfc_port_to_pcb
*
- * Description find the port control block associated with the given port handle
+ * Description find the port control block associated with the given port
+ *handle
*
* Returns
*
******************************************************************************/
-tBTA_JV_PCB * bta_jv_rfc_port_to_pcb(uint16_t port_handle)
-{
- tBTA_JV_PCB *p_pcb = NULL;
+tBTA_JV_PCB* bta_jv_rfc_port_to_pcb(uint16_t port_handle) {
+ tBTA_JV_PCB* p_pcb = NULL;
- if ((port_handle > 0) && (port_handle <= MAX_RFC_PORTS)
- && bta_jv_cb.port_cb[port_handle - 1].handle)
- {
- p_pcb = &bta_jv_cb.port_cb[port_handle - 1];
- }
+ if ((port_handle > 0) && (port_handle <= MAX_RFC_PORTS) &&
+ bta_jv_cb.port_cb[port_handle - 1].handle) {
+ p_pcb = &bta_jv_cb.port_cb[port_handle - 1];
+ }
- return p_pcb;
+ return p_pcb;
}
/*******************************************************************************
*
* Function bta_jv_rfc_port_to_cb
*
- * Description find the RFCOMM control block associated with the given port handle
+ * Description find the RFCOMM control block associated with the given port
+ *handle
*
* Returns
*
******************************************************************************/
-tBTA_JV_RFC_CB * bta_jv_rfc_port_to_cb(uint16_t port_handle)
-{
- tBTA_JV_RFC_CB *p_cb = NULL;
- uint32_t handle;
+tBTA_JV_RFC_CB* bta_jv_rfc_port_to_cb(uint16_t port_handle) {
+ tBTA_JV_RFC_CB* p_cb = NULL;
+ uint32_t handle;
- if ((port_handle > 0) && (port_handle <= MAX_RFC_PORTS)
- && bta_jv_cb.port_cb[port_handle - 1].handle)
- {
- handle = bta_jv_cb.port_cb[port_handle - 1].handle;
- handle &= BTA_JV_RFC_HDL_MASK;
- handle &= ~BTA_JV_RFCOMM_MASK;
- if (handle)
- p_cb = &bta_jv_cb.rfc_cb[handle - 1];
- }
- else
- {
- APPL_TRACE_WARNING("bta_jv_rfc_port_to_cb(port_handle:0x%x):jv handle:0x%x not"
- " FOUND", port_handle, bta_jv_cb.port_cb[port_handle - 1].handle);
- }
- return p_cb;
+ if ((port_handle > 0) && (port_handle <= MAX_RFC_PORTS) &&
+ bta_jv_cb.port_cb[port_handle - 1].handle) {
+ handle = bta_jv_cb.port_cb[port_handle - 1].handle;
+ handle &= BTA_JV_RFC_HDL_MASK;
+ handle &= ~BTA_JV_RFCOMM_MASK;
+ if (handle) p_cb = &bta_jv_cb.rfc_cb[handle - 1];
+ } else {
+ APPL_TRACE_WARNING(
+ "bta_jv_rfc_port_to_cb(port_handle:0x%x):jv handle:0x%x not"
+ " FOUND",
+ port_handle, bta_jv_cb.port_cb[port_handle - 1].handle);
+ }
+ return p_cb;
}
-static tBTA_JV_STATUS bta_jv_free_rfc_cb(tBTA_JV_RFC_CB *p_cb, tBTA_JV_PCB *p_pcb)
-{
- tBTA_JV_STATUS status = BTA_JV_SUCCESS;
- bool remove_server = false;
- int close_pending = 0;
+static tBTA_JV_STATUS bta_jv_free_rfc_cb(tBTA_JV_RFC_CB* p_cb,
+ tBTA_JV_PCB* p_pcb) {
+ tBTA_JV_STATUS status = BTA_JV_SUCCESS;
+ bool remove_server = false;
+ int close_pending = 0;
- if (!p_cb || !p_pcb)
- {
- APPL_TRACE_ERROR("bta_jv_free_sr_rfc_cb, p_cb or p_pcb cannot be null");
- return BTA_JV_FAILURE;
- }
- APPL_TRACE_DEBUG("bta_jv_free_sr_rfc_cb: max_sess:%d, curr_sess:%d, p_pcb:%p, user:"
- "%p, state:%d, jv handle: 0x%x" ,p_cb->max_sess, p_cb->curr_sess, p_pcb,
- p_pcb->user_data, p_pcb->state, p_pcb->handle);
+ if (!p_cb || !p_pcb) {
+ APPL_TRACE_ERROR("bta_jv_free_sr_rfc_cb, p_cb or p_pcb cannot be null");
+ return BTA_JV_FAILURE;
+ }
+ APPL_TRACE_DEBUG(
+ "bta_jv_free_sr_rfc_cb: max_sess:%d, curr_sess:%d, p_pcb:%p, user:"
+ "%p, state:%d, jv handle: 0x%x",
+ p_cb->max_sess, p_cb->curr_sess, p_pcb, p_pcb->user_data, p_pcb->state,
+ p_pcb->handle);
- if (p_cb->curr_sess <= 0)
- return BTA_JV_SUCCESS;
+ if (p_cb->curr_sess <= 0) return BTA_JV_SUCCESS;
- switch (p_pcb->state)
- {
+ switch (p_pcb->state) {
case BTA_JV_ST_CL_CLOSING:
case BTA_JV_ST_SR_CLOSING:
- APPL_TRACE_WARNING("bta_jv_free_sr_rfc_cb: return on closing, port state:%d, "
- "scn:%d, p_pcb:%p, user_data:%p", p_pcb->state, p_cb->scn, p_pcb,
- p_pcb->user_data);
- status = BTA_JV_FAILURE;
- return status;
+ APPL_TRACE_WARNING(
+ "bta_jv_free_sr_rfc_cb: return on closing, port state:%d, "
+ "scn:%d, p_pcb:%p, user_data:%p",
+ p_pcb->state, p_cb->scn, p_pcb, p_pcb->user_data);
+ status = BTA_JV_FAILURE;
+ return status;
case BTA_JV_ST_CL_OPEN:
case BTA_JV_ST_CL_OPENING:
- APPL_TRACE_DEBUG("bta_jv_free_sr_rfc_cb: state: %d, scn:%d,"
- " user_data:%p", p_pcb->state, p_cb->scn, p_pcb->user_data);
- p_pcb->state = BTA_JV_ST_CL_CLOSING;
- break;
+ APPL_TRACE_DEBUG(
+ "bta_jv_free_sr_rfc_cb: state: %d, scn:%d,"
+ " user_data:%p",
+ p_pcb->state, p_cb->scn, p_pcb->user_data);
+ p_pcb->state = BTA_JV_ST_CL_CLOSING;
+ break;
case BTA_JV_ST_SR_LISTEN:
- p_pcb->state = BTA_JV_ST_SR_CLOSING;
- remove_server = true;
- APPL_TRACE_DEBUG("bta_jv_free_sr_rfc_cb: state: BTA_JV_ST_SR_LISTEN, scn:%d,"
- " user_data:%p", p_cb->scn, p_pcb->user_data);
- break;
+ p_pcb->state = BTA_JV_ST_SR_CLOSING;
+ remove_server = true;
+ APPL_TRACE_DEBUG(
+ "bta_jv_free_sr_rfc_cb: state: BTA_JV_ST_SR_LISTEN, scn:%d,"
+ " user_data:%p",
+ p_cb->scn, p_pcb->user_data);
+ break;
case BTA_JV_ST_SR_OPEN:
- p_pcb->state = BTA_JV_ST_SR_CLOSING;
- APPL_TRACE_DEBUG("bta_jv_free_sr_rfc_cb: state: BTA_JV_ST_SR_OPEN, scn:%d,"
- " user_data:%p", p_cb->scn, p_pcb->user_data);
- break;
+ p_pcb->state = BTA_JV_ST_SR_CLOSING;
+ APPL_TRACE_DEBUG(
+ "bta_jv_free_sr_rfc_cb: state: BTA_JV_ST_SR_OPEN, scn:%d,"
+ " user_data:%p",
+ p_cb->scn, p_pcb->user_data);
+ break;
default:
- APPL_TRACE_WARNING("bta_jv_free_sr_rfc_cb():failed, ignore port state:%d, scn:"
- "%d, p_pcb:%p, jv handle: 0x%x, port_handle: %d, user_data:%p",
- p_pcb->state, p_cb->scn, p_pcb, p_pcb->handle, p_pcb->port_handle,
- p_pcb->user_data);
- status = BTA_JV_FAILURE;
- break;
- }
- if (BTA_JV_SUCCESS == status)
- {
- int port_status;
+ APPL_TRACE_WARNING(
+ "bta_jv_free_sr_rfc_cb():failed, ignore port state:%d, scn:"
+ "%d, p_pcb:%p, jv handle: 0x%x, port_handle: %d, user_data:%p",
+ p_pcb->state, p_cb->scn, p_pcb, p_pcb->handle, p_pcb->port_handle,
+ p_pcb->user_data);
+ status = BTA_JV_FAILURE;
+ break;
+ }
+ if (BTA_JV_SUCCESS == status) {
+ int port_status;
- if (!remove_server)
- port_status = RFCOMM_RemoveConnection(p_pcb->port_handle);
- else
- port_status = RFCOMM_RemoveServer(p_pcb->port_handle);
- if (port_status != PORT_SUCCESS)
- {
- status = BTA_JV_FAILURE;
- APPL_TRACE_WARNING("bta_jv_free_rfc_cb(jv handle: 0x%x, state %d)::"
- "port_status: %d, port_handle: %d, close_pending: %d:Remove",
- p_pcb->handle, p_pcb->state, port_status, p_pcb->port_handle,
- close_pending);
- }
+ if (!remove_server)
+ port_status = RFCOMM_RemoveConnection(p_pcb->port_handle);
+ else
+ port_status = RFCOMM_RemoveServer(p_pcb->port_handle);
+ if (port_status != PORT_SUCCESS) {
+ status = BTA_JV_FAILURE;
+ APPL_TRACE_WARNING(
+ "bta_jv_free_rfc_cb(jv handle: 0x%x, state %d)::"
+ "port_status: %d, port_handle: %d, close_pending: %d:Remove",
+ p_pcb->handle, p_pcb->state, port_status, p_pcb->port_handle,
+ close_pending);
}
- if (!close_pending)
- {
- p_pcb->port_handle = 0;
- p_pcb->state = BTA_JV_ST_NONE;
- bta_jv_free_set_pm_profile_cb(p_pcb->handle);
+ }
+ if (!close_pending) {
+ p_pcb->port_handle = 0;
+ p_pcb->state = BTA_JV_ST_NONE;
+ bta_jv_free_set_pm_profile_cb(p_pcb->handle);
- //Initialize congestion flags
- p_pcb->cong = false;
- p_pcb->user_data = 0;
- int si = BTA_JV_RFC_HDL_TO_SIDX(p_pcb->handle);
- if (0 <= si && si < BTA_JV_MAX_RFC_SR_SESSION)
- p_cb->rfc_hdl[si] = 0;
- p_pcb->handle = 0;
- p_cb->curr_sess--;
- if (p_cb->curr_sess == 0)
- {
- p_cb->scn = 0;
- bta_jv_free_sec_id(&p_cb->sec_id);
- p_cb->p_cback = NULL;
- p_cb->handle = 0;
- p_cb->curr_sess = -1;
- }
- if (remove_server) {
- bta_jv_free_sec_id(&p_cb->sec_id);
- }
+ // Initialize congestion flags
+ p_pcb->cong = false;
+ p_pcb->user_data = 0;
+ int si = BTA_JV_RFC_HDL_TO_SIDX(p_pcb->handle);
+ if (0 <= si && si < BTA_JV_MAX_RFC_SR_SESSION) p_cb->rfc_hdl[si] = 0;
+ p_pcb->handle = 0;
+ p_cb->curr_sess--;
+ if (p_cb->curr_sess == 0) {
+ p_cb->scn = 0;
+ bta_jv_free_sec_id(&p_cb->sec_id);
+ p_cb->p_cback = NULL;
+ p_cb->handle = 0;
+ p_cb->curr_sess = -1;
}
- return status;
+ if (remove_server) {
+ bta_jv_free_sec_id(&p_cb->sec_id);
+ }
+ }
+ return status;
}
/*******************************************************************************
@@ -381,22 +362,19 @@
* Returns
*
******************************************************************************/
-tBTA_JV_STATUS bta_jv_free_l2c_cb(tBTA_JV_L2C_CB *p_cb)
-{
- tBTA_JV_STATUS status = BTA_JV_SUCCESS;
+tBTA_JV_STATUS bta_jv_free_l2c_cb(tBTA_JV_L2C_CB* p_cb) {
+ tBTA_JV_STATUS status = BTA_JV_SUCCESS;
- if(BTA_JV_ST_NONE != p_cb->state)
- {
- bta_jv_free_set_pm_profile_cb((uint32_t)p_cb->handle);
- if (GAP_ConnClose(p_cb->handle) != BT_PASS)
- status = BTA_JV_FAILURE;
- }
- p_cb->psm = 0;
- p_cb->state = BTA_JV_ST_NONE;
- p_cb->cong = false;
- bta_jv_free_sec_id(&p_cb->sec_id);
- p_cb->p_cback = NULL;
- return status;
+ if (BTA_JV_ST_NONE != p_cb->state) {
+ bta_jv_free_set_pm_profile_cb((uint32_t)p_cb->handle);
+ if (GAP_ConnClose(p_cb->handle) != BT_PASS) status = BTA_JV_FAILURE;
+ }
+ p_cb->psm = 0;
+ p_cb->state = BTA_JV_ST_NONE;
+ p_cb->cong = false;
+ bta_jv_free_sec_id(&p_cb->sec_id);
+ p_cb->p_cback = NULL;
+ return status;
}
/*******************************************************************************
@@ -404,22 +382,25 @@
*
* Function bta_jv_clear_pm_cb
*
- * Description clears jv pm control block and optionally calls bta_sys_conn_close()
- * In general close_conn should be set to true to remove registering with
+ * Description clears jv pm control block and optionally calls
+ *bta_sys_conn_close()
+ * In general close_conn should be set to true to remove registering
+ *with
* dm pm!
*
- * WARNING: Make sure to clear pointer form port or l2c to this control block too!
+ * WARNING: Make sure to clear pointer form port or l2c to this control block
+ *too!
*
******************************************************************************/
-static void bta_jv_clear_pm_cb(tBTA_JV_PM_CB *p_pm_cb, bool close_conn)
-{
- /* needs to be called if registered with bta pm, otherwise we may run out of dm pm slots! */
- if (close_conn)
- bta_sys_conn_close(BTA_ID_JV, p_pm_cb->app_id, p_pm_cb->peer_bd_addr);
- p_pm_cb->state = BTA_JV_PM_FREE_ST;
- p_pm_cb->app_id = BTA_JV_PM_ALL;
- p_pm_cb->handle = BTA_JV_PM_HANDLE_CLEAR;
- bdcpy(p_pm_cb->peer_bd_addr, bd_addr_null);
+static void bta_jv_clear_pm_cb(tBTA_JV_PM_CB* p_pm_cb, bool close_conn) {
+ /* needs to be called if registered with bta pm, otherwise we may run out of
+ * dm pm slots! */
+ if (close_conn)
+ bta_sys_conn_close(BTA_ID_JV, p_pm_cb->app_id, p_pm_cb->peer_bd_addr);
+ p_pm_cb->state = BTA_JV_PM_FREE_ST;
+ p_pm_cb->app_id = BTA_JV_PM_ALL;
+ p_pm_cb->handle = BTA_JV_PM_HANDLE_CLEAR;
+ bdcpy(p_pm_cb->peer_bd_addr, bd_addr_null);
}
/*******************************************************************************
@@ -429,84 +410,82 @@
* Description free pm profile control block
*
* Returns BTA_JV_SUCCESS if cb has been freed correctly,
- * BTA_JV_FAILURE in case of no profile has been registered or already freed
+ * BTA_JV_FAILURE in case of no profile has been registered or
+ *already freed
*
*******************************************************************************/
-static tBTA_JV_STATUS bta_jv_free_set_pm_profile_cb(uint32_t jv_handle)
-{
- tBTA_JV_STATUS status = BTA_JV_FAILURE;
- tBTA_JV_PM_CB **p_cb;
- int i, j, bd_counter = 0, appid_counter = 0;
+static tBTA_JV_STATUS bta_jv_free_set_pm_profile_cb(uint32_t jv_handle) {
+ tBTA_JV_STATUS status = BTA_JV_FAILURE;
+ tBTA_JV_PM_CB** p_cb;
+ int i, j, bd_counter = 0, appid_counter = 0;
- for (i = 0; i < BTA_JV_PM_MAX_NUM; i++)
- {
- p_cb = NULL;
- if ((bta_jv_cb.pm_cb[i].state != BTA_JV_PM_FREE_ST) &&
- (jv_handle == bta_jv_cb.pm_cb[i].handle))
- {
- for (j = 0; j < BTA_JV_PM_MAX_NUM; j++)
- {
- if (bdcmp(bta_jv_cb.pm_cb[j].peer_bd_addr, bta_jv_cb.pm_cb[i].peer_bd_addr) == 0)
- bd_counter++;
- if (bta_jv_cb.pm_cb[j].app_id == bta_jv_cb.pm_cb[i].app_id)
- appid_counter++;
- }
+ for (i = 0; i < BTA_JV_PM_MAX_NUM; i++) {
+ p_cb = NULL;
+ if ((bta_jv_cb.pm_cb[i].state != BTA_JV_PM_FREE_ST) &&
+ (jv_handle == bta_jv_cb.pm_cb[i].handle)) {
+ for (j = 0; j < BTA_JV_PM_MAX_NUM; j++) {
+ if (bdcmp(bta_jv_cb.pm_cb[j].peer_bd_addr,
+ bta_jv_cb.pm_cb[i].peer_bd_addr) == 0)
+ bd_counter++;
+ if (bta_jv_cb.pm_cb[j].app_id == bta_jv_cb.pm_cb[i].app_id)
+ appid_counter++;
+ }
- APPL_TRACE_API("%s(jv_handle: 0x%2x), idx: %d, "
- "app_id: 0x%x",__func__, jv_handle, i, bta_jv_cb.pm_cb[i].app_id);
- APPL_TRACE_API("%s, bd_counter = %d, "
- "appid_counter = %d", __func__, bd_counter, appid_counter);
- if (bd_counter > 1)
- {
- bta_jv_pm_conn_idle(&bta_jv_cb.pm_cb[i]);
- }
+ APPL_TRACE_API(
+ "%s(jv_handle: 0x%2x), idx: %d, "
+ "app_id: 0x%x",
+ __func__, jv_handle, i, bta_jv_cb.pm_cb[i].app_id);
+ APPL_TRACE_API(
+ "%s, bd_counter = %d, "
+ "appid_counter = %d",
+ __func__, bd_counter, appid_counter);
+ if (bd_counter > 1) {
+ bta_jv_pm_conn_idle(&bta_jv_cb.pm_cb[i]);
+ }
- if (bd_counter <= 1 || (appid_counter <= 1))
- {
- bta_jv_clear_pm_cb(&bta_jv_cb.pm_cb[i], true);
- }
- else
- {
- bta_jv_clear_pm_cb(&bta_jv_cb.pm_cb[i], false);
- }
+ if (bd_counter <= 1 || (appid_counter <= 1)) {
+ bta_jv_clear_pm_cb(&bta_jv_cb.pm_cb[i], true);
+ } else {
+ bta_jv_clear_pm_cb(&bta_jv_cb.pm_cb[i], false);
+ }
- if (BTA_JV_RFCOMM_MASK & jv_handle)
- {
- uint32_t hi = ((jv_handle & BTA_JV_RFC_HDL_MASK) & ~BTA_JV_RFCOMM_MASK) - 1;
- uint32_t si = BTA_JV_RFC_HDL_TO_SIDX(jv_handle);
- if (hi < BTA_JV_MAX_RFC_CONN && bta_jv_cb.rfc_cb[hi].p_cback && si
- < BTA_JV_MAX_RFC_SR_SESSION && bta_jv_cb.rfc_cb[hi].rfc_hdl[si])
- {
- tBTA_JV_PCB *p_pcb = bta_jv_rfc_port_to_pcb(bta_jv_cb.rfc_cb[hi].rfc_hdl[si]);
- if (p_pcb)
- {
- if (NULL == p_pcb->p_pm_cb)
- APPL_TRACE_WARNING("%s(jv_handle:"
- " 0x%x):port_handle: 0x%x, p_pm_cb: %d: no link to "
- "pm_cb?", __func__, jv_handle, p_pcb->port_handle, i);
- p_cb = &p_pcb->p_pm_cb;
- }
- }
- }
- else
- {
- if (jv_handle < BTA_JV_MAX_L2C_CONN)
- {
- tBTA_JV_L2C_CB *p_l2c_cb = &bta_jv_cb.l2c_cb[jv_handle];
- if (NULL == p_l2c_cb->p_pm_cb)
- APPL_TRACE_WARNING("%s(jv_handle: "
- "0x%x): p_pm_cb: %d: no link to pm_cb?", __func__, jv_handle, i);
- p_cb = &p_l2c_cb->p_pm_cb;
- }
- }
- if (p_cb)
- {
- *p_cb = NULL;
- status = BTA_JV_SUCCESS;
- }
+ if (BTA_JV_RFCOMM_MASK & jv_handle) {
+ uint32_t hi =
+ ((jv_handle & BTA_JV_RFC_HDL_MASK) & ~BTA_JV_RFCOMM_MASK) - 1;
+ uint32_t si = BTA_JV_RFC_HDL_TO_SIDX(jv_handle);
+ if (hi < BTA_JV_MAX_RFC_CONN && bta_jv_cb.rfc_cb[hi].p_cback &&
+ si < BTA_JV_MAX_RFC_SR_SESSION &&
+ bta_jv_cb.rfc_cb[hi].rfc_hdl[si]) {
+ tBTA_JV_PCB* p_pcb =
+ bta_jv_rfc_port_to_pcb(bta_jv_cb.rfc_cb[hi].rfc_hdl[si]);
+ if (p_pcb) {
+ if (NULL == p_pcb->p_pm_cb)
+ APPL_TRACE_WARNING(
+ "%s(jv_handle:"
+ " 0x%x):port_handle: 0x%x, p_pm_cb: %d: no link to "
+ "pm_cb?",
+ __func__, jv_handle, p_pcb->port_handle, i);
+ p_cb = &p_pcb->p_pm_cb;
+ }
}
+ } else {
+ if (jv_handle < BTA_JV_MAX_L2C_CONN) {
+ tBTA_JV_L2C_CB* p_l2c_cb = &bta_jv_cb.l2c_cb[jv_handle];
+ if (NULL == p_l2c_cb->p_pm_cb)
+ APPL_TRACE_WARNING(
+ "%s(jv_handle: "
+ "0x%x): p_pm_cb: %d: no link to pm_cb?",
+ __func__, jv_handle, i);
+ p_cb = &p_l2c_cb->p_pm_cb;
+ }
+ }
+ if (p_cb) {
+ *p_cb = NULL;
+ status = BTA_JV_SUCCESS;
+ }
}
- return status;
+ }
+ return status;
}
/*******************************************************************************
@@ -518,69 +497,63 @@
* Returns pointer to allocated cb or NULL in case of failure
*
*******************************************************************************/
-static tBTA_JV_PM_CB *bta_jv_alloc_set_pm_profile_cb(uint32_t jv_handle, tBTA_JV_PM_ID app_id)
-{
- bool bRfcHandle = (jv_handle & BTA_JV_RFCOMM_MASK) != 0;
- BD_ADDR peer_bd_addr;
- int i, j;
- tBTA_JV_PM_CB **pp_cb;
+static tBTA_JV_PM_CB* bta_jv_alloc_set_pm_profile_cb(uint32_t jv_handle,
+ tBTA_JV_PM_ID app_id) {
+ bool bRfcHandle = (jv_handle & BTA_JV_RFCOMM_MASK) != 0;
+ BD_ADDR peer_bd_addr;
+ int i, j;
+ tBTA_JV_PM_CB** pp_cb;
- for (i = 0; i < BTA_JV_PM_MAX_NUM; i++)
- {
- pp_cb = NULL;
- if (bta_jv_cb.pm_cb[i].state == BTA_JV_PM_FREE_ST)
- {
- /* rfc handle bd addr retrieval requires core stack handle */
- if (bRfcHandle)
- {
- for (j = 0; j < BTA_JV_MAX_RFC_CONN; j++)
- {
- if (jv_handle == bta_jv_cb.port_cb[j].handle)
- {
- pp_cb = &bta_jv_cb.port_cb[j].p_pm_cb;
- if (PORT_SUCCESS != PORT_CheckConnection(
- bta_jv_cb.port_cb[j].port_handle, peer_bd_addr, NULL))
- i = BTA_JV_PM_MAX_NUM;
- break;
- }
- }
- }
- else
- {
- /* use jv handle for l2cap bd address retrieval */
- for (j = 0; j < BTA_JV_MAX_L2C_CONN; j++)
- {
- if (jv_handle == bta_jv_cb.l2c_cb[j].handle)
- {
- pp_cb = &bta_jv_cb.l2c_cb[j].p_pm_cb;
- uint8_t *p_bd_addr = GAP_ConnGetRemoteAddr((uint16_t)jv_handle);
- if (NULL != p_bd_addr)
- bdcpy(peer_bd_addr, p_bd_addr);
- else
- i = BTA_JV_PM_MAX_NUM;
- break;
- }
- }
- }
- APPL_TRACE_API("bta_jv_alloc_set_pm_profile_cb(handle 0x%2x, app_id %d): "
- "idx: %d, (BTA_JV_PM_MAX_NUM: %d), pp_cb: 0x%x", jv_handle, app_id,
- i, BTA_JV_PM_MAX_NUM, pp_cb);
+ for (i = 0; i < BTA_JV_PM_MAX_NUM; i++) {
+ pp_cb = NULL;
+ if (bta_jv_cb.pm_cb[i].state == BTA_JV_PM_FREE_ST) {
+ /* rfc handle bd addr retrieval requires core stack handle */
+ if (bRfcHandle) {
+ for (j = 0; j < BTA_JV_MAX_RFC_CONN; j++) {
+ if (jv_handle == bta_jv_cb.port_cb[j].handle) {
+ pp_cb = &bta_jv_cb.port_cb[j].p_pm_cb;
+ if (PORT_SUCCESS !=
+ PORT_CheckConnection(bta_jv_cb.port_cb[j].port_handle,
+ peer_bd_addr, NULL))
+ i = BTA_JV_PM_MAX_NUM;
break;
+ }
}
+ } else {
+ /* use jv handle for l2cap bd address retrieval */
+ for (j = 0; j < BTA_JV_MAX_L2C_CONN; j++) {
+ if (jv_handle == bta_jv_cb.l2c_cb[j].handle) {
+ pp_cb = &bta_jv_cb.l2c_cb[j].p_pm_cb;
+ uint8_t* p_bd_addr = GAP_ConnGetRemoteAddr((uint16_t)jv_handle);
+ if (NULL != p_bd_addr)
+ bdcpy(peer_bd_addr, p_bd_addr);
+ else
+ i = BTA_JV_PM_MAX_NUM;
+ break;
+ }
+ }
+ }
+ APPL_TRACE_API(
+ "bta_jv_alloc_set_pm_profile_cb(handle 0x%2x, app_id %d): "
+ "idx: %d, (BTA_JV_PM_MAX_NUM: %d), pp_cb: 0x%x",
+ jv_handle, app_id, i, BTA_JV_PM_MAX_NUM, pp_cb);
+ break;
}
+ }
- if ((i != BTA_JV_PM_MAX_NUM) && (NULL != pp_cb))
- {
- *pp_cb = &bta_jv_cb.pm_cb[i];
- bta_jv_cb.pm_cb[i].handle = jv_handle;
- bta_jv_cb.pm_cb[i].app_id = app_id;
- bdcpy(bta_jv_cb.pm_cb[i].peer_bd_addr, peer_bd_addr);
- bta_jv_cb.pm_cb[i].state = BTA_JV_PM_IDLE_ST;
- return &bta_jv_cb.pm_cb[i];
- }
- APPL_TRACE_WARNING("bta_jv_alloc_set_pm_profile_cb(jv_handle: 0x%x, app_id: %d) "
- "return NULL", jv_handle, app_id);
- return (tBTA_JV_PM_CB *)NULL;
+ if ((i != BTA_JV_PM_MAX_NUM) && (NULL != pp_cb)) {
+ *pp_cb = &bta_jv_cb.pm_cb[i];
+ bta_jv_cb.pm_cb[i].handle = jv_handle;
+ bta_jv_cb.pm_cb[i].app_id = app_id;
+ bdcpy(bta_jv_cb.pm_cb[i].peer_bd_addr, peer_bd_addr);
+ bta_jv_cb.pm_cb[i].state = BTA_JV_PM_IDLE_ST;
+ return &bta_jv_cb.pm_cb[i];
+ }
+ APPL_TRACE_WARNING(
+ "bta_jv_alloc_set_pm_profile_cb(jv_handle: 0x%x, app_id: %d) "
+ "return NULL",
+ jv_handle, app_id);
+ return (tBTA_JV_PM_CB*)NULL;
}
/*******************************************************************************
@@ -592,61 +565,53 @@
* Returns true, if allowed
*
******************************************************************************/
-bool bta_jv_check_psm(uint16_t psm)
-{
- bool ret = false;
+bool bta_jv_check_psm(uint16_t psm) {
+ bool ret = false;
- if (L2C_IS_VALID_PSM(psm))
- {
- if (psm < 0x1001)
- {
- /* see if this is defined by spec */
- switch (psm)
- {
- case SDP_PSM: /* 1 */
- case BT_PSM_RFCOMM: /* 3 */
- /* do not allow java app to use these 2 PSMs */
- break;
+ if (L2C_IS_VALID_PSM(psm)) {
+ if (psm < 0x1001) {
+ /* see if this is defined by spec */
+ switch (psm) {
+ case SDP_PSM: /* 1 */
+ case BT_PSM_RFCOMM: /* 3 */
+ /* do not allow java app to use these 2 PSMs */
+ break;
- case TCS_PSM_INTERCOM: /* 5 */
- case TCS_PSM_CORDLESS: /* 7 */
- if( false == bta_sys_is_register(BTA_ID_CT) &&
- false == bta_sys_is_register(BTA_ID_CG) )
- ret = true;
- break;
-
- case BT_PSM_BNEP: /* F */
- if(false == bta_sys_is_register(BTA_ID_PAN))
- ret = true;
- break;
-
- case HID_PSM_CONTROL: /* 0x11 */
- case HID_PSM_INTERRUPT: /* 0x13 */
- //FIX: allow HID Device and HID Host to coexist
- if( false == bta_sys_is_register(BTA_ID_HD) ||
- false == bta_sys_is_register(BTA_ID_HH) )
- ret = true;
- break;
-
- case AVCT_PSM: /* 0x17 */
- case AVDT_PSM: /* 0x19 */
- if ((false == bta_sys_is_register(BTA_ID_AV)) &&
- (false == bta_sys_is_register(BTA_ID_AVK)))
- ret = true;
- break;
-
- default:
- ret = true;
- break;
- }
- }
- else
- {
+ case TCS_PSM_INTERCOM: /* 5 */
+ case TCS_PSM_CORDLESS: /* 7 */
+ if (false == bta_sys_is_register(BTA_ID_CT) &&
+ false == bta_sys_is_register(BTA_ID_CG))
ret = true;
- }
- }
- return ret;
+ break;
+ case BT_PSM_BNEP: /* F */
+ if (false == bta_sys_is_register(BTA_ID_PAN)) ret = true;
+ break;
+
+ case HID_PSM_CONTROL: /* 0x11 */
+ case HID_PSM_INTERRUPT: /* 0x13 */
+ // FIX: allow HID Device and HID Host to coexist
+ if (false == bta_sys_is_register(BTA_ID_HD) ||
+ false == bta_sys_is_register(BTA_ID_HH))
+ ret = true;
+ break;
+
+ case AVCT_PSM: /* 0x17 */
+ case AVDT_PSM: /* 0x19 */
+ if ((false == bta_sys_is_register(BTA_ID_AV)) &&
+ (false == bta_sys_is_register(BTA_ID_AVK)))
+ ret = true;
+ break;
+
+ default:
+ ret = true;
+ break;
+ }
+ } else {
+ ret = true;
+ }
+ }
+ return ret;
}
/*******************************************************************************
@@ -658,12 +623,11 @@
* Returns void
*
******************************************************************************/
-void bta_jv_enable(tBTA_JV_MSG *p_data)
-{
- tBTA_JV_STATUS status = BTA_JV_SUCCESS;
- bta_jv_cb.p_dm_cback = p_data->enable.p_cback;
- bta_jv_cb.p_dm_cback(BTA_JV_ENABLE_EVT, (tBTA_JV *)&status, 0);
- memset(bta_jv_cb.free_psm_list,0,sizeof(bta_jv_cb.free_psm_list));
+void bta_jv_enable(tBTA_JV_MSG* p_data) {
+ tBTA_JV_STATUS status = BTA_JV_SUCCESS;
+ bta_jv_cb.p_dm_cback = p_data->enable.p_cback;
+ bta_jv_cb.p_dm_cback(BTA_JV_ENABLE_EVT, (tBTA_JV*)&status, 0);
+ memset(bta_jv_cb.free_psm_list, 0, sizeof(bta_jv_cb.free_psm_list));
}
/*******************************************************************************
@@ -676,12 +640,10 @@
* Returns void
*
******************************************************************************/
-void bta_jv_disable (UNUSED_ATTR tBTA_JV_MSG *p_data)
-{
- APPL_TRACE_ERROR("%s",__func__);
+void bta_jv_disable(UNUSED_ATTR tBTA_JV_MSG* p_data) {
+ APPL_TRACE_ERROR("%s", __func__);
}
-
/**
* We keep a list of PSM's that have been freed from JAVA, for reuse.
* This function will return a free PSM, and delete it from the free
@@ -689,34 +651,37 @@
* If no free PSMs exist, 0 will be returned.
*/
static uint16_t bta_jv_get_free_psm() {
- const int cnt = sizeof(bta_jv_cb.free_psm_list)/sizeof(bta_jv_cb.free_psm_list[0]);
- for (int i = 0; i < cnt; i++) {
- uint16_t psm = bta_jv_cb.free_psm_list[i];
- if (psm != 0) {
- APPL_TRACE_DEBUG("%s(): Reusing PSM: 0x%04d", __func__, psm)
- bta_jv_cb.free_psm_list[i] = 0;
- return psm;
- }
+ const int cnt =
+ sizeof(bta_jv_cb.free_psm_list) / sizeof(bta_jv_cb.free_psm_list[0]);
+ for (int i = 0; i < cnt; i++) {
+ uint16_t psm = bta_jv_cb.free_psm_list[i];
+ if (psm != 0) {
+ APPL_TRACE_DEBUG("%s(): Reusing PSM: 0x%04d", __func__, psm)
+ bta_jv_cb.free_psm_list[i] = 0;
+ return psm;
}
- return 0;
+ }
+ return 0;
}
static void bta_jv_set_free_psm(uint16_t psm) {
- int free_index = -1;
- const int cnt = sizeof(bta_jv_cb.free_psm_list)/sizeof(bta_jv_cb.free_psm_list[0]);
- for (int i = 0; i < cnt; i++) {
- if (bta_jv_cb.free_psm_list[i] == 0) {
- free_index = i;
- } else if (psm == bta_jv_cb.free_psm_list[i]) {
- return; // PSM already freed?
- }
+ int free_index = -1;
+ const int cnt =
+ sizeof(bta_jv_cb.free_psm_list) / sizeof(bta_jv_cb.free_psm_list[0]);
+ for (int i = 0; i < cnt; i++) {
+ if (bta_jv_cb.free_psm_list[i] == 0) {
+ free_index = i;
+ } else if (psm == bta_jv_cb.free_psm_list[i]) {
+ return; // PSM already freed?
}
- if (free_index != -1) {
- bta_jv_cb.free_psm_list[free_index] = psm;
- APPL_TRACE_DEBUG("%s(): Recycling PSM: 0x%04d", __func__, psm)
- } else {
- APPL_TRACE_ERROR("%s unable to free psm 0x%x no more free slots",__func__, psm);
- }
+ }
+ if (free_index != -1) {
+ bta_jv_cb.free_psm_list[free_index] = psm;
+ APPL_TRACE_DEBUG("%s(): Recycling PSM: 0x%04d", __func__, psm)
+ } else {
+ APPL_TRACE_ERROR("%s unable to free psm 0x%x no more free slots", __func__,
+ psm);
+ }
}
/*******************************************************************************
@@ -729,49 +694,47 @@
* Returns void
*
******************************************************************************/
-void bta_jv_get_channel_id(tBTA_JV_MSG *p_data)
-{
- uint16_t psm = 0;
+void bta_jv_get_channel_id(tBTA_JV_MSG* p_data) {
+ uint16_t psm = 0;
- switch (p_data->alloc_channel.type) {
- case BTA_JV_CONN_TYPE_RFCOMM: {
- int32_t channel = p_data->alloc_channel.channel;
- uint8_t scn = 0;
- if (channel > 0)
- {
- if (BTM_TryAllocateSCN(channel) == false)
- {
- APPL_TRACE_ERROR("rfc channel:%d already in use or invalid", channel);
- channel = 0;
- }
- } else if ((channel = BTM_AllocateSCN()) == 0) {
- APPL_TRACE_ERROR("run out of rfc channels");
- channel = 0;
- }
- if (channel != 0) {
- bta_jv_cb.scn[channel-1] = true;
- scn = (uint8_t) channel;
- }
- if (bta_jv_cb.p_dm_cback)
- bta_jv_cb.p_dm_cback(BTA_JV_GET_SCN_EVT, (tBTA_JV *)&scn,
- p_data->alloc_channel.user_data);
- return;
+ switch (p_data->alloc_channel.type) {
+ case BTA_JV_CONN_TYPE_RFCOMM: {
+ int32_t channel = p_data->alloc_channel.channel;
+ uint8_t scn = 0;
+ if (channel > 0) {
+ if (BTM_TryAllocateSCN(channel) == false) {
+ APPL_TRACE_ERROR("rfc channel:%d already in use or invalid", channel);
+ channel = 0;
}
- case BTA_JV_CONN_TYPE_L2CAP:
- psm = bta_jv_get_free_psm();
- if (psm == 0) {
- psm = L2CA_AllocatePSM();
- APPL_TRACE_DEBUG("%s() returned PSM: 0x%04x", __func__, psm);
- }
- break;
- case BTA_JV_CONN_TYPE_L2CAP_LE:
- break;
- default:
- break;
+ } else if ((channel = BTM_AllocateSCN()) == 0) {
+ APPL_TRACE_ERROR("run out of rfc channels");
+ channel = 0;
+ }
+ if (channel != 0) {
+ bta_jv_cb.scn[channel - 1] = true;
+ scn = (uint8_t)channel;
+ }
+ if (bta_jv_cb.p_dm_cback)
+ bta_jv_cb.p_dm_cback(BTA_JV_GET_SCN_EVT, (tBTA_JV*)&scn,
+ p_data->alloc_channel.user_data);
+ return;
}
+ case BTA_JV_CONN_TYPE_L2CAP:
+ psm = bta_jv_get_free_psm();
+ if (psm == 0) {
+ psm = L2CA_AllocatePSM();
+ APPL_TRACE_DEBUG("%s() returned PSM: 0x%04x", __func__, psm);
+ }
+ break;
+ case BTA_JV_CONN_TYPE_L2CAP_LE:
+ break;
+ default:
+ break;
+ }
- if (bta_jv_cb.p_dm_cback)
- bta_jv_cb.p_dm_cback(BTA_JV_GET_PSM_EVT, (tBTA_JV *)&psm, p_data->alloc_channel.user_data);
+ if (bta_jv_cb.p_dm_cback)
+ bta_jv_cb.p_dm_cback(BTA_JV_GET_PSM_EVT, (tBTA_JV*)&psm,
+ p_data->alloc_channel.user_data);
}
/*******************************************************************************
@@ -783,64 +746,57 @@
* Returns void
*
******************************************************************************/
-void bta_jv_free_scn(tBTA_JV_MSG *p_data)
-{
- uint16_t scn = p_data->free_channel.scn;
+void bta_jv_free_scn(tBTA_JV_MSG* p_data) {
+ uint16_t scn = p_data->free_channel.scn;
- switch (p_data->free_channel.type) {
- case BTA_JV_CONN_TYPE_RFCOMM: {
- if (scn > 0 && scn <= BTA_JV_MAX_SCN && bta_jv_cb.scn[scn-1])
- {
- /* this scn is used by JV */
- bta_jv_cb.scn[scn-1] = false;
- BTM_FreeSCN(scn);
- }
- break;
- }
- case BTA_JV_CONN_TYPE_L2CAP:
- bta_jv_set_free_psm(scn);
- break;
- case BTA_JV_CONN_TYPE_L2CAP_LE:
- // TODO: Not yet implemented...
- break;
- default:
- break;
+ switch (p_data->free_channel.type) {
+ case BTA_JV_CONN_TYPE_RFCOMM: {
+ if (scn > 0 && scn <= BTA_JV_MAX_SCN && bta_jv_cb.scn[scn - 1]) {
+ /* this scn is used by JV */
+ bta_jv_cb.scn[scn - 1] = false;
+ BTM_FreeSCN(scn);
+ }
+ break;
}
+ case BTA_JV_CONN_TYPE_L2CAP:
+ bta_jv_set_free_psm(scn);
+ break;
+ case BTA_JV_CONN_TYPE_L2CAP_LE:
+ // TODO: Not yet implemented...
+ break;
+ default:
+ break;
+ }
}
-static inline tBT_UUID shorten_sdp_uuid(const tBT_UUID* u)
-{
- static uint8_t bt_base_uuid[] =
- {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB };
+static inline tBT_UUID shorten_sdp_uuid(const tBT_UUID* u) {
+ static uint8_t bt_base_uuid[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x10, 0x00, 0x80, 0x00, 0x00, 0x80,
+ 0x5F, 0x9B, 0x34, 0xFB};
- logu("in, uuid:", u->uu.uuid128);
- APPL_TRACE_DEBUG("uuid len:%d", u->len);
- if(u->len == 16)
- {
- if(memcmp(&u->uu.uuid128[4], &bt_base_uuid[4], 12) == 0)
- {
- tBT_UUID su;
- memset(&su, 0, sizeof(su));
- if(u->uu.uuid128[0] == 0 && u->uu.uuid128[1] == 0)
- {
- su.len = 2;
- uint16_t u16;
- memcpy(&u16, &u->uu.uuid128[2], sizeof(u16));
- su.uu.uuid16 = ntohs(u16);
- APPL_TRACE_DEBUG("shorten to 16 bits uuid: %x", su.uu.uuid16);
- }
- else
- {
- su.len = 4;
- uint32_t u32;
- memcpy(&u32, &u->uu.uuid128[0], sizeof(u32));
- su.uu.uuid32 = ntohl(u32);
- APPL_TRACE_DEBUG("shorten to 32 bits uuid: %x", su.uu.uuid32);
- }
- return su;
- }
+ logu("in, uuid:", u->uu.uuid128);
+ APPL_TRACE_DEBUG("uuid len:%d", u->len);
+ if (u->len == 16) {
+ if (memcmp(&u->uu.uuid128[4], &bt_base_uuid[4], 12) == 0) {
+ tBT_UUID su;
+ memset(&su, 0, sizeof(su));
+ if (u->uu.uuid128[0] == 0 && u->uu.uuid128[1] == 0) {
+ su.len = 2;
+ uint16_t u16;
+ memcpy(&u16, &u->uu.uuid128[2], sizeof(u16));
+ su.uu.uuid16 = ntohs(u16);
+ APPL_TRACE_DEBUG("shorten to 16 bits uuid: %x", su.uu.uuid16);
+ } else {
+ su.len = 4;
+ uint32_t u32;
+ memcpy(&u32, &u->uu.uuid128[0], sizeof(u32));
+ su.uu.uuid32 = ntohl(u32);
+ APPL_TRACE_DEBUG("shorten to 32 bits uuid: %x", su.uu.uuid32);
+ }
+ return su;
}
- APPL_TRACE_DEBUG("cannot shorten none-reserved 128 bits uuid");
- return *u;
+ }
+ APPL_TRACE_DEBUG("cannot shorten none-reserved 128 bits uuid");
+ return *u;
}
/*******************************************************************************
@@ -852,37 +808,36 @@
* Returns void
*
******************************************************************************/
-static void bta_jv_start_discovery_cback(uint16_t result, void * user_data)
-{
- tBTA_JV_STATUS status;
+static void bta_jv_start_discovery_cback(uint16_t result, void* user_data) {
+ tBTA_JV_STATUS status;
- APPL_TRACE_DEBUG("bta_jv_start_discovery_cback res: 0x%x", result);
+ APPL_TRACE_DEBUG("bta_jv_start_discovery_cback res: 0x%x", result);
- bta_jv_cb.sdp_active = BTA_JV_SDP_ACT_NONE;
- if(bta_jv_cb.p_dm_cback)
- {
- tBTA_JV_DISCOVERY_COMP dcomp;
- dcomp.scn = 0;
- status = BTA_JV_FAILURE;
- if (result == SDP_SUCCESS || result == SDP_DB_FULL)
- {
- tSDP_DISC_REC *p_sdp_rec = NULL;
- tSDP_PROTOCOL_ELEM pe;
- logu("bta_jv_cb.uuid", bta_jv_cb.uuid.uu.uuid128);
- tBT_UUID su = shorten_sdp_uuid(&bta_jv_cb.uuid);
- logu("shorten uuid:", su.uu.uuid128);
- p_sdp_rec = SDP_FindServiceUUIDInDb(p_bta_jv_cfg->p_sdp_db, &su, p_sdp_rec);
- APPL_TRACE_DEBUG("p_sdp_rec:%p", p_sdp_rec);
- if (p_sdp_rec && SDP_FindProtocolListElemInRec(p_sdp_rec, UUID_PROTOCOL_RFCOMM, &pe))
- {
- dcomp.scn = (uint8_t) pe.params[0];
- status = BTA_JV_SUCCESS;
- }
- }
-
- dcomp.status = status;
- bta_jv_cb.p_dm_cback(BTA_JV_DISCOVERY_COMP_EVT, (tBTA_JV *)&dcomp, user_data);
+ bta_jv_cb.sdp_active = BTA_JV_SDP_ACT_NONE;
+ if (bta_jv_cb.p_dm_cback) {
+ tBTA_JV_DISCOVERY_COMP dcomp;
+ dcomp.scn = 0;
+ status = BTA_JV_FAILURE;
+ if (result == SDP_SUCCESS || result == SDP_DB_FULL) {
+ tSDP_DISC_REC* p_sdp_rec = NULL;
+ tSDP_PROTOCOL_ELEM pe;
+ logu("bta_jv_cb.uuid", bta_jv_cb.uuid.uu.uuid128);
+ tBT_UUID su = shorten_sdp_uuid(&bta_jv_cb.uuid);
+ logu("shorten uuid:", su.uu.uuid128);
+ p_sdp_rec =
+ SDP_FindServiceUUIDInDb(p_bta_jv_cfg->p_sdp_db, &su, p_sdp_rec);
+ APPL_TRACE_DEBUG("p_sdp_rec:%p", p_sdp_rec);
+ if (p_sdp_rec &&
+ SDP_FindProtocolListElemInRec(p_sdp_rec, UUID_PROTOCOL_RFCOMM, &pe)) {
+ dcomp.scn = (uint8_t)pe.params[0];
+ status = BTA_JV_SUCCESS;
+ }
}
+
+ dcomp.status = status;
+ bta_jv_cb.p_dm_cback(BTA_JV_DISCOVERY_COMP_EVT, (tBTA_JV*)&dcomp,
+ user_data);
+ }
}
/*******************************************************************************
@@ -894,45 +849,47 @@
* Returns void
*
******************************************************************************/
-void bta_jv_start_discovery(tBTA_JV_MSG *p_data)
-{
- tBTA_JV_STATUS status = BTA_JV_FAILURE;
- APPL_TRACE_DEBUG("bta_jv_start_discovery in, sdp_active:%d", bta_jv_cb.sdp_active);
- if (bta_jv_cb.sdp_active != BTA_JV_SDP_ACT_NONE)
- {
- /* SDP is still in progress */
- status = BTA_JV_BUSY;
- if(bta_jv_cb.p_dm_cback)
- bta_jv_cb.p_dm_cback(BTA_JV_DISCOVERY_COMP_EVT, (tBTA_JV *)&status, p_data->start_discovery.user_data);
- return;
- }
+void bta_jv_start_discovery(tBTA_JV_MSG* p_data) {
+ tBTA_JV_STATUS status = BTA_JV_FAILURE;
+ APPL_TRACE_DEBUG("bta_jv_start_discovery in, sdp_active:%d",
+ bta_jv_cb.sdp_active);
+ if (bta_jv_cb.sdp_active != BTA_JV_SDP_ACT_NONE) {
+ /* SDP is still in progress */
+ status = BTA_JV_BUSY;
+ if (bta_jv_cb.p_dm_cback)
+ bta_jv_cb.p_dm_cback(BTA_JV_DISCOVERY_COMP_EVT, (tBTA_JV*)&status,
+ p_data->start_discovery.user_data);
+ return;
+ }
- /* init the database/set up the filter */
- APPL_TRACE_DEBUG("call SDP_InitDiscoveryDb, p_data->start_discovery.num_uuid:%d",
- p_data->start_discovery.num_uuid);
- SDP_InitDiscoveryDb (p_bta_jv_cfg->p_sdp_db, p_bta_jv_cfg->sdp_db_size,
- p_data->start_discovery.num_uuid, p_data->start_discovery.uuid_list, 0, NULL);
+ /* init the database/set up the filter */
+ APPL_TRACE_DEBUG(
+ "call SDP_InitDiscoveryDb, p_data->start_discovery.num_uuid:%d",
+ p_data->start_discovery.num_uuid);
+ SDP_InitDiscoveryDb(p_bta_jv_cfg->p_sdp_db, p_bta_jv_cfg->sdp_db_size,
+ p_data->start_discovery.num_uuid,
+ p_data->start_discovery.uuid_list, 0, NULL);
- /* tell SDP to keep the raw data */
- p_bta_jv_cfg->p_sdp_db->raw_data = p_bta_jv_cfg->p_sdp_raw_data;
- p_bta_jv_cfg->p_sdp_db->raw_size = p_bta_jv_cfg->sdp_raw_size;
+ /* tell SDP to keep the raw data */
+ p_bta_jv_cfg->p_sdp_db->raw_data = p_bta_jv_cfg->p_sdp_raw_data;
+ p_bta_jv_cfg->p_sdp_db->raw_size = p_bta_jv_cfg->sdp_raw_size;
- bta_jv_cb.p_sel_raw_data = 0;
- bta_jv_cb.uuid = p_data->start_discovery.uuid_list[0];
+ bta_jv_cb.p_sel_raw_data = 0;
+ bta_jv_cb.uuid = p_data->start_discovery.uuid_list[0];
- bta_jv_cb.sdp_active = BTA_JV_SDP_ACT_YES;
- if (!SDP_ServiceSearchAttributeRequest2(p_data->start_discovery.bd_addr,
- p_bta_jv_cfg->p_sdp_db,
- bta_jv_start_discovery_cback, p_data->start_discovery.user_data))
- {
- bta_jv_cb.sdp_active = BTA_JV_SDP_ACT_NONE;
- /* failed to start SDP. report the failure right away */
- if(bta_jv_cb.p_dm_cback)
- bta_jv_cb.p_dm_cback(BTA_JV_DISCOVERY_COMP_EVT, (tBTA_JV *)&status, p_data->start_discovery.user_data);
- }
- /*
- else report the result when the cback is called
- */
+ bta_jv_cb.sdp_active = BTA_JV_SDP_ACT_YES;
+ if (!SDP_ServiceSearchAttributeRequest2(
+ p_data->start_discovery.bd_addr, p_bta_jv_cfg->p_sdp_db,
+ bta_jv_start_discovery_cback, p_data->start_discovery.user_data)) {
+ bta_jv_cb.sdp_active = BTA_JV_SDP_ACT_NONE;
+ /* failed to start SDP. report the failure right away */
+ if (bta_jv_cb.p_dm_cback)
+ bta_jv_cb.p_dm_cback(BTA_JV_DISCOVERY_COMP_EVT, (tBTA_JV*)&status,
+ p_data->start_discovery.user_data);
+ }
+ /*
+ else report the result when the cback is called
+ */
}
/*******************************************************************************
@@ -944,14 +901,15 @@
* Returns void
*
******************************************************************************/
-void bta_jv_create_record(tBTA_JV_MSG *p_data)
-{
- tBTA_JV_API_CREATE_RECORD *cr = &(p_data->create_record);
- tBTA_JV_CREATE_RECORD evt_data;
- evt_data.status = BTA_JV_SUCCESS;
- if(bta_jv_cb.p_dm_cback)
- //callback user immediately to create his own sdp record in stack thread context
- bta_jv_cb.p_dm_cback(BTA_JV_CREATE_RECORD_EVT, (tBTA_JV *)&evt_data, cr->user_data);
+void bta_jv_create_record(tBTA_JV_MSG* p_data) {
+ tBTA_JV_API_CREATE_RECORD* cr = &(p_data->create_record);
+ tBTA_JV_CREATE_RECORD evt_data;
+ evt_data.status = BTA_JV_SUCCESS;
+ if (bta_jv_cb.p_dm_cback)
+ // callback user immediately to create his own sdp record in stack thread
+ // context
+ bta_jv_cb.p_dm_cback(BTA_JV_CREATE_RECORD_EVT, (tBTA_JV*)&evt_data,
+ cr->user_data);
}
/*******************************************************************************
@@ -964,14 +922,12 @@
* Returns void
*
******************************************************************************/
-void bta_jv_delete_record(tBTA_JV_MSG *p_data)
-{
- tBTA_JV_API_ADD_ATTRIBUTE *dr = &(p_data->add_attr);
- if(dr->handle)
- {
- /* this is a record created by btif layer*/
- SDP_DeleteRecord(dr->handle);
- }
+void bta_jv_delete_record(tBTA_JV_MSG* p_data) {
+ tBTA_JV_API_ADD_ATTRIBUTE* dr = &(p_data->add_attr);
+ if (dr->handle) {
+ /* this is a record created by btif layer*/
+ SDP_DeleteRecord(dr->handle);
+ }
}
/*******************************************************************************
@@ -983,57 +939,54 @@
* Returns void
*
******************************************************************************/
-static void bta_jv_l2cap_client_cback(uint16_t gap_handle, uint16_t event)
-{
- tBTA_JV_L2C_CB *p_cb = &bta_jv_cb.l2c_cb[gap_handle];
- tBTA_JV evt_data;
+static void bta_jv_l2cap_client_cback(uint16_t gap_handle, uint16_t event) {
+ tBTA_JV_L2C_CB* p_cb = &bta_jv_cb.l2c_cb[gap_handle];
+ tBTA_JV evt_data;
- if (gap_handle >= BTA_JV_MAX_L2C_CONN && !p_cb->p_cback)
- return;
+ if (gap_handle >= BTA_JV_MAX_L2C_CONN && !p_cb->p_cback) return;
- APPL_TRACE_DEBUG( "%s: %d evt:x%x",__func__, gap_handle, event);
- evt_data.l2c_open.status = BTA_JV_SUCCESS;
- evt_data.l2c_open.handle = gap_handle;
+ APPL_TRACE_DEBUG("%s: %d evt:x%x", __func__, gap_handle, event);
+ evt_data.l2c_open.status = BTA_JV_SUCCESS;
+ evt_data.l2c_open.handle = gap_handle;
- switch (event)
- {
+ switch (event) {
case GAP_EVT_CONN_OPENED:
- bdcpy(evt_data.l2c_open.rem_bda, GAP_ConnGetRemoteAddr(gap_handle));
- evt_data.l2c_open.tx_mtu = GAP_ConnGetRemMtuSize(gap_handle);
- p_cb->state = BTA_JV_ST_CL_OPEN;
- p_cb->p_cback(BTA_JV_L2CAP_OPEN_EVT, &evt_data, p_cb->user_data);
- break;
+ bdcpy(evt_data.l2c_open.rem_bda, GAP_ConnGetRemoteAddr(gap_handle));
+ evt_data.l2c_open.tx_mtu = GAP_ConnGetRemMtuSize(gap_handle);
+ p_cb->state = BTA_JV_ST_CL_OPEN;
+ p_cb->p_cback(BTA_JV_L2CAP_OPEN_EVT, &evt_data, p_cb->user_data);
+ break;
case GAP_EVT_CONN_CLOSED:
- p_cb->state = BTA_JV_ST_NONE;
- bta_jv_free_sec_id(&p_cb->sec_id);
- evt_data.l2c_close.async = true;
- p_cb->p_cback(BTA_JV_L2CAP_CLOSE_EVT, &evt_data, p_cb->user_data);
- p_cb->p_cback = NULL;
- break;
+ p_cb->state = BTA_JV_ST_NONE;
+ bta_jv_free_sec_id(&p_cb->sec_id);
+ evt_data.l2c_close.async = true;
+ p_cb->p_cback(BTA_JV_L2CAP_CLOSE_EVT, &evt_data, p_cb->user_data);
+ p_cb->p_cback = NULL;
+ break;
case GAP_EVT_CONN_DATA_AVAIL:
- evt_data.data_ind.handle = gap_handle;
- /* Reset idle timer to avoid requesting sniff mode while receiving data */
- bta_jv_pm_conn_busy(p_cb->p_pm_cb);
- p_cb->p_cback(BTA_JV_L2CAP_DATA_IND_EVT, &evt_data, p_cb->user_data);
- bta_jv_pm_conn_idle(p_cb->p_pm_cb);
- break;
+ evt_data.data_ind.handle = gap_handle;
+ /* Reset idle timer to avoid requesting sniff mode while receiving data */
+ bta_jv_pm_conn_busy(p_cb->p_pm_cb);
+ p_cb->p_cback(BTA_JV_L2CAP_DATA_IND_EVT, &evt_data, p_cb->user_data);
+ bta_jv_pm_conn_idle(p_cb->p_pm_cb);
+ break;
case GAP_EVT_TX_EMPTY:
- bta_jv_pm_conn_idle(p_cb->p_pm_cb);
- break;
+ bta_jv_pm_conn_idle(p_cb->p_pm_cb);
+ break;
case GAP_EVT_CONN_CONGESTED:
case GAP_EVT_CONN_UNCONGESTED:
- p_cb->cong = (event == GAP_EVT_CONN_CONGESTED) ? true : false;
- evt_data.l2c_cong.cong = p_cb->cong;
- p_cb->p_cback(BTA_JV_L2CAP_CONG_EVT, &evt_data, p_cb->user_data);
- break;
+ p_cb->cong = (event == GAP_EVT_CONN_CONGESTED) ? true : false;
+ evt_data.l2c_cong.cong = p_cb->cong;
+ p_cb->p_cback(BTA_JV_L2CAP_CONG_EVT, &evt_data, p_cb->user_data);
+ break;
default:
- break;
- }
+ break;
+ }
}
/*******************************************************************************
@@ -1045,79 +998,73 @@
* Returns void
*
******************************************************************************/
-void bta_jv_l2cap_connect(tBTA_JV_MSG *p_data)
-{
- tBTA_JV_L2C_CB *p_cb;
- tBTA_JV_L2CAP_CL_INIT evt_data;
- uint16_t handle=GAP_INVALID_HANDLE;
- uint8_t sec_id;
- tL2CAP_CFG_INFO cfg;
- tBTA_JV_API_L2CAP_CONNECT *cc = &(p_data->l2cap_connect);
- uint8_t chan_mode_mask = GAP_FCR_CHAN_OPT_BASIC;
- tL2CAP_ERTM_INFO *ertm_info = NULL;
+void bta_jv_l2cap_connect(tBTA_JV_MSG* p_data) {
+ tBTA_JV_L2C_CB* p_cb;
+ tBTA_JV_L2CAP_CL_INIT evt_data;
+ uint16_t handle = GAP_INVALID_HANDLE;
+ uint8_t sec_id;
+ tL2CAP_CFG_INFO cfg;
+ tBTA_JV_API_L2CAP_CONNECT* cc = &(p_data->l2cap_connect);
+ uint8_t chan_mode_mask = GAP_FCR_CHAN_OPT_BASIC;
+ tL2CAP_ERTM_INFO* ertm_info = NULL;
- memset(&cfg, 0, sizeof(tL2CAP_CFG_INFO));
+ memset(&cfg, 0, sizeof(tL2CAP_CFG_INFO));
- if (cc->has_cfg == true)
- {
- cfg = cc->cfg;
- if (cfg.fcr_present && cfg.fcr.mode == L2CAP_FCR_ERTM_MODE) {
- chan_mode_mask = GAP_FCR_CHAN_OPT_ERTM;
- }
+ if (cc->has_cfg == true) {
+ cfg = cc->cfg;
+ if (cfg.fcr_present && cfg.fcr.mode == L2CAP_FCR_ERTM_MODE) {
+ chan_mode_mask = GAP_FCR_CHAN_OPT_ERTM;
}
+ }
- if (cc->has_ertm_info == true)
+ if (cc->has_ertm_info == true) {
+ ertm_info = &(cc->ertm_info);
+ }
+
+ /* We need to use this value for MTU to be able to handle cases where cfg is
+ * not set in req. */
+ cfg.mtu_present = true;
+ cfg.mtu = cc->rx_mtu;
+
+ /* TODO: DM role manager
+ L2CA_SetDesireRole(cc->role);
+ */
+
+ sec_id = bta_jv_alloc_sec_id();
+ evt_data.sec_id = sec_id;
+ evt_data.status = BTA_JV_FAILURE;
+
+ if (sec_id) {
+ /* PSM checking is not required for LE COC */
+ if ((cc->type != BTA_JV_CONN_TYPE_L2CAP) ||
+ (bta_jv_check_psm(cc->remote_psm))) /* allowed */
{
- ertm_info = &(cc->ertm_info);
+ if ((handle = GAP_ConnOpen("", sec_id, 0, cc->peer_bd_addr,
+ cc->remote_psm, &cfg, ertm_info, cc->sec_mask,
+ chan_mode_mask, bta_jv_l2cap_client_cback,
+ cc->type)) != GAP_INVALID_HANDLE) {
+ evt_data.status = BTA_JV_SUCCESS;
+ }
}
+ }
- /* We need to use this value for MTU to be able to handle cases where cfg is not set in req. */
- cfg.mtu_present = true;
- cfg.mtu = cc->rx_mtu;
+ if (evt_data.status == BTA_JV_SUCCESS) {
+ p_cb = &bta_jv_cb.l2c_cb[handle];
+ p_cb->handle = handle;
+ p_cb->p_cback = cc->p_cback;
+ p_cb->user_data = cc->user_data;
+ p_cb->psm = 0; /* not a server */
+ p_cb->sec_id = sec_id;
+ p_cb->state = BTA_JV_ST_CL_OPENING;
+ } else {
+ bta_jv_free_sec_id(&sec_id);
+ }
- /* TODO: DM role manager
- L2CA_SetDesireRole(cc->role);
- */
-
- sec_id = bta_jv_alloc_sec_id();
- evt_data.sec_id = sec_id;
- evt_data.status = BTA_JV_FAILURE;
-
- if (sec_id)
- {
- /* PSM checking is not required for LE COC */
- if ((cc->type != BTA_JV_CONN_TYPE_L2CAP) || (bta_jv_check_psm(cc->remote_psm))) /* allowed */
- {
- if ((handle = GAP_ConnOpen("", sec_id, 0, cc->peer_bd_addr, cc->remote_psm,
- &cfg, ertm_info, cc->sec_mask, chan_mode_mask,
- bta_jv_l2cap_client_cback, cc->type)) != GAP_INVALID_HANDLE )
- {
- evt_data.status = BTA_JV_SUCCESS;
- }
- }
- }
-
- if (evt_data.status == BTA_JV_SUCCESS)
- {
- p_cb = &bta_jv_cb.l2c_cb[handle];
- p_cb->handle = handle;
- p_cb->p_cback = cc->p_cback;
- p_cb->user_data = cc->user_data;
- p_cb->psm = 0; /* not a server */
- p_cb->sec_id = sec_id;
- p_cb->state = BTA_JV_ST_CL_OPENING;
- }
- else
- {
- bta_jv_free_sec_id(&sec_id);
- }
-
- evt_data.handle = handle;
- if(cc->p_cback)
- cc->p_cback(BTA_JV_L2CAP_CL_INIT_EVT, (tBTA_JV *)&evt_data, cc->user_data);
+ evt_data.handle = handle;
+ if (cc->p_cback)
+ cc->p_cback(BTA_JV_L2CAP_CL_INIT_EVT, (tBTA_JV*)&evt_data, cc->user_data);
}
-
/*******************************************************************************
*
* Function bta_jv_l2cap_close
@@ -1127,19 +1074,17 @@
* Returns void
*
******************************************************************************/
-void bta_jv_l2cap_close(tBTA_JV_MSG *p_data)
-{
- tBTA_JV_L2CAP_CLOSE evt_data;
- tBTA_JV_API_L2CAP_CLOSE *cc = &(p_data->l2cap_close);
- tBTA_JV_L2CAP_CBACK *p_cback = cc->p_cb->p_cback;
- void *user_data = cc->p_cb->user_data;
+void bta_jv_l2cap_close(tBTA_JV_MSG* p_data) {
+ tBTA_JV_L2CAP_CLOSE evt_data;
+ tBTA_JV_API_L2CAP_CLOSE* cc = &(p_data->l2cap_close);
+ tBTA_JV_L2CAP_CBACK* p_cback = cc->p_cb->p_cback;
+ void* user_data = cc->p_cb->user_data;
- evt_data.handle = cc->handle;
- evt_data.status = bta_jv_free_l2c_cb(cc->p_cb);
- evt_data.async = false;
+ evt_data.handle = cc->handle;
+ evt_data.status = bta_jv_free_l2c_cb(cc->p_cb);
+ evt_data.async = false;
- if (p_cback)
- p_cback(BTA_JV_L2CAP_CLOSE_EVT, (tBTA_JV *)&evt_data, user_data);
+ if (p_cback) p_cback(BTA_JV_L2CAP_CLOSE_EVT, (tBTA_JV*)&evt_data, user_data);
}
/*******************************************************************************
@@ -1151,60 +1096,57 @@
* Returns void
*
******************************************************************************/
-static void bta_jv_l2cap_server_cback(uint16_t gap_handle, uint16_t event)
-{
- tBTA_JV_L2C_CB *p_cb = &bta_jv_cb.l2c_cb[gap_handle];
- tBTA_JV evt_data;
- tBTA_JV_L2CAP_CBACK *p_cback;
- void *user_data;
+static void bta_jv_l2cap_server_cback(uint16_t gap_handle, uint16_t event) {
+ tBTA_JV_L2C_CB* p_cb = &bta_jv_cb.l2c_cb[gap_handle];
+ tBTA_JV evt_data;
+ tBTA_JV_L2CAP_CBACK* p_cback;
+ void* user_data;
- if (gap_handle >= BTA_JV_MAX_L2C_CONN && !p_cb->p_cback)
- return;
+ if (gap_handle >= BTA_JV_MAX_L2C_CONN && !p_cb->p_cback) return;
- APPL_TRACE_DEBUG( "%s: %d evt:x%x", __func__, gap_handle, event);
- evt_data.l2c_open.status = BTA_JV_SUCCESS;
- evt_data.l2c_open.handle = gap_handle;
+ APPL_TRACE_DEBUG("%s: %d evt:x%x", __func__, gap_handle, event);
+ evt_data.l2c_open.status = BTA_JV_SUCCESS;
+ evt_data.l2c_open.handle = gap_handle;
- switch (event)
- {
+ switch (event) {
case GAP_EVT_CONN_OPENED:
- bdcpy(evt_data.l2c_open.rem_bda, GAP_ConnGetRemoteAddr(gap_handle));
- evt_data.l2c_open.tx_mtu = GAP_ConnGetRemMtuSize(gap_handle);
- p_cb->state = BTA_JV_ST_SR_OPEN;
- p_cb->p_cback(BTA_JV_L2CAP_OPEN_EVT, &evt_data, p_cb->user_data);
- break;
+ bdcpy(evt_data.l2c_open.rem_bda, GAP_ConnGetRemoteAddr(gap_handle));
+ evt_data.l2c_open.tx_mtu = GAP_ConnGetRemMtuSize(gap_handle);
+ p_cb->state = BTA_JV_ST_SR_OPEN;
+ p_cb->p_cback(BTA_JV_L2CAP_OPEN_EVT, &evt_data, p_cb->user_data);
+ break;
case GAP_EVT_CONN_CLOSED:
- evt_data.l2c_close.async = true;
- evt_data.l2c_close.handle = p_cb->handle;
- p_cback = p_cb->p_cback;
- user_data = p_cb->user_data;
- evt_data.l2c_close.status = bta_jv_free_l2c_cb(p_cb);
- p_cback(BTA_JV_L2CAP_CLOSE_EVT, &evt_data, user_data);
- break;
+ evt_data.l2c_close.async = true;
+ evt_data.l2c_close.handle = p_cb->handle;
+ p_cback = p_cb->p_cback;
+ user_data = p_cb->user_data;
+ evt_data.l2c_close.status = bta_jv_free_l2c_cb(p_cb);
+ p_cback(BTA_JV_L2CAP_CLOSE_EVT, &evt_data, user_data);
+ break;
case GAP_EVT_CONN_DATA_AVAIL:
- evt_data.data_ind.handle = gap_handle;
- /* Reset idle timer to avoid requesting sniff mode while receiving data */
- bta_jv_pm_conn_busy(p_cb->p_pm_cb);
- p_cb->p_cback(BTA_JV_L2CAP_DATA_IND_EVT, &evt_data, p_cb->user_data);
- bta_jv_pm_conn_idle(p_cb->p_pm_cb);
- break;
+ evt_data.data_ind.handle = gap_handle;
+ /* Reset idle timer to avoid requesting sniff mode while receiving data */
+ bta_jv_pm_conn_busy(p_cb->p_pm_cb);
+ p_cb->p_cback(BTA_JV_L2CAP_DATA_IND_EVT, &evt_data, p_cb->user_data);
+ bta_jv_pm_conn_idle(p_cb->p_pm_cb);
+ break;
case GAP_EVT_TX_EMPTY:
- bta_jv_pm_conn_idle(p_cb->p_pm_cb);
- break;
+ bta_jv_pm_conn_idle(p_cb->p_pm_cb);
+ break;
case GAP_EVT_CONN_CONGESTED:
case GAP_EVT_CONN_UNCONGESTED:
- p_cb->cong = (event == GAP_EVT_CONN_CONGESTED) ? true : false;
- evt_data.l2c_cong.cong = p_cb->cong;
- p_cb->p_cback(BTA_JV_L2CAP_CONG_EVT, &evt_data, p_cb->user_data);
- break;
+ p_cb->cong = (event == GAP_EVT_CONN_CONGESTED) ? true : false;
+ evt_data.l2c_cong.cong = p_cb->cong;
+ p_cb->p_cback(BTA_JV_L2CAP_CONG_EVT, &evt_data, p_cb->user_data);
+ break;
default:
- break;
- }
+ break;
+ }
}
/*******************************************************************************
@@ -1216,71 +1158,67 @@
* Returns void
*
******************************************************************************/
-void bta_jv_l2cap_start_server(tBTA_JV_MSG *p_data)
-{
- tBTA_JV_L2C_CB *p_cb;
- uint8_t sec_id;
- uint16_t handle;
- tL2CAP_CFG_INFO cfg;
- tBTA_JV_L2CAP_START evt_data;
- tBTA_JV_API_L2CAP_SERVER *ls = &(p_data->l2cap_server);
- uint8_t chan_mode_mask = GAP_FCR_CHAN_OPT_BASIC;
- tL2CAP_ERTM_INFO *ertm_info = NULL;
+void bta_jv_l2cap_start_server(tBTA_JV_MSG* p_data) {
+ tBTA_JV_L2C_CB* p_cb;
+ uint8_t sec_id;
+ uint16_t handle;
+ tL2CAP_CFG_INFO cfg;
+ tBTA_JV_L2CAP_START evt_data;
+ tBTA_JV_API_L2CAP_SERVER* ls = &(p_data->l2cap_server);
+ uint8_t chan_mode_mask = GAP_FCR_CHAN_OPT_BASIC;
+ tL2CAP_ERTM_INFO* ertm_info = NULL;
- memset(&cfg, 0, sizeof(tL2CAP_CFG_INFO));
+ memset(&cfg, 0, sizeof(tL2CAP_CFG_INFO));
- if (ls->has_cfg == true) {
- cfg = ls->cfg;
- if (cfg.fcr_present && cfg.fcr.mode == L2CAP_FCR_ERTM_MODE) {
- chan_mode_mask = GAP_FCR_CHAN_OPT_ERTM;
- }
+ if (ls->has_cfg == true) {
+ cfg = ls->cfg;
+ if (cfg.fcr_present && cfg.fcr.mode == L2CAP_FCR_ERTM_MODE) {
+ chan_mode_mask = GAP_FCR_CHAN_OPT_ERTM;
}
+ }
- if (ls->has_ertm_info == true) {
- ertm_info = &(ls->ertm_info);
- }
+ if (ls->has_ertm_info == true) {
+ ertm_info = &(ls->ertm_info);
+ }
- //FIX: MTU=0 means not present
- if (ls->rx_mtu >0)
- {
- cfg.mtu_present = true;
- cfg.mtu = ls->rx_mtu;
- }
- else
- {
- cfg.mtu_present = false;
- cfg.mtu = 0;
- }
+ // FIX: MTU=0 means not present
+ if (ls->rx_mtu > 0) {
+ cfg.mtu_present = true;
+ cfg.mtu = ls->rx_mtu;
+ } else {
+ cfg.mtu_present = false;
+ cfg.mtu = 0;
+ }
- /* TODO DM role manager
- L2CA_SetDesireRole(ls->role);
- */
+ /* TODO DM role manager
+ L2CA_SetDesireRole(ls->role);
+ */
- sec_id = bta_jv_alloc_sec_id();
- /* PSM checking is not required for LE COC */
- if (0 == sec_id || ((ls->type == BTA_JV_CONN_TYPE_L2CAP) && (false == bta_jv_check_psm(ls->local_psm))) ||
- (handle = GAP_ConnOpen("JV L2CAP", sec_id, 1, 0, ls->local_psm, &cfg, ertm_info,
- ls->sec_mask, chan_mode_mask, bta_jv_l2cap_server_cback, ls->type)) == GAP_INVALID_HANDLE)
- {
- bta_jv_free_sec_id(&sec_id);
- evt_data.status = BTA_JV_FAILURE;
- }
- else
- {
- p_cb = &bta_jv_cb.l2c_cb[handle];
- evt_data.status = BTA_JV_SUCCESS;
- evt_data.handle = handle;
- evt_data.sec_id = sec_id;
- p_cb->p_cback = ls->p_cback;
- p_cb->user_data = ls->user_data;
- p_cb->handle = handle;
- p_cb->sec_id = sec_id;
- p_cb->state = BTA_JV_ST_SR_LISTEN;
- p_cb->psm = ls->local_psm;
- }
+ sec_id = bta_jv_alloc_sec_id();
+ /* PSM checking is not required for LE COC */
+ if (0 == sec_id || ((ls->type == BTA_JV_CONN_TYPE_L2CAP) &&
+ (false == bta_jv_check_psm(ls->local_psm))) ||
+ (handle = GAP_ConnOpen("JV L2CAP", sec_id, 1, 0, ls->local_psm, &cfg,
+ ertm_info, ls->sec_mask, chan_mode_mask,
+ bta_jv_l2cap_server_cback, ls->type)) ==
+ GAP_INVALID_HANDLE) {
+ bta_jv_free_sec_id(&sec_id);
+ evt_data.status = BTA_JV_FAILURE;
+ } else {
+ p_cb = &bta_jv_cb.l2c_cb[handle];
+ evt_data.status = BTA_JV_SUCCESS;
+ evt_data.handle = handle;
+ evt_data.sec_id = sec_id;
+ p_cb->p_cback = ls->p_cback;
+ p_cb->user_data = ls->user_data;
+ p_cb->handle = handle;
+ p_cb->sec_id = sec_id;
+ p_cb->state = BTA_JV_ST_SR_LISTEN;
+ p_cb->psm = ls->local_psm;
+ }
- if(ls->p_cback)
- ls->p_cback(BTA_JV_L2CAP_START_EVT, (tBTA_JV *)&evt_data, ls->user_data);
+ if (ls->p_cback)
+ ls->p_cback(BTA_JV_L2CAP_START_EVT, (tBTA_JV*)&evt_data, ls->user_data);
}
/*******************************************************************************
@@ -1292,32 +1230,27 @@
* Returns void
*
******************************************************************************/
-void bta_jv_l2cap_stop_server(tBTA_JV_MSG *p_data)
-{
- tBTA_JV_L2C_CB *p_cb;
- tBTA_JV_L2CAP_CLOSE evt_data;
- tBTA_JV_API_L2CAP_SERVER *ls = &(p_data->l2cap_server);
- tBTA_JV_L2CAP_CBACK *p_cback;
- void *user_data;
- for (int i = 0; i < BTA_JV_MAX_L2C_CONN; i++)
- {
- if (bta_jv_cb.l2c_cb[i].psm == ls->local_psm)
- {
- p_cb = &bta_jv_cb.l2c_cb[i];
- p_cback = p_cb->p_cback;
- user_data = p_cb->user_data;
- evt_data.handle = p_cb->handle;
- evt_data.status = bta_jv_free_l2c_cb(p_cb);
- evt_data.async = false;
- if(p_cback)
- p_cback(BTA_JV_L2CAP_CLOSE_EVT, (tBTA_JV *)&evt_data, user_data);
- break;
- }
+void bta_jv_l2cap_stop_server(tBTA_JV_MSG* p_data) {
+ tBTA_JV_L2C_CB* p_cb;
+ tBTA_JV_L2CAP_CLOSE evt_data;
+ tBTA_JV_API_L2CAP_SERVER* ls = &(p_data->l2cap_server);
+ tBTA_JV_L2CAP_CBACK* p_cback;
+ void* user_data;
+ for (int i = 0; i < BTA_JV_MAX_L2C_CONN; i++) {
+ if (bta_jv_cb.l2c_cb[i].psm == ls->local_psm) {
+ p_cb = &bta_jv_cb.l2c_cb[i];
+ p_cback = p_cb->p_cback;
+ user_data = p_cb->user_data;
+ evt_data.handle = p_cb->handle;
+ evt_data.status = bta_jv_free_l2c_cb(p_cb);
+ evt_data.async = false;
+ if (p_cback)
+ p_cback(BTA_JV_L2CAP_CLOSE_EVT, (tBTA_JV*)&evt_data, user_data);
+ break;
}
+ }
}
-
-
/*******************************************************************************
*
* Function bta_jv_l2cap_read
@@ -1327,26 +1260,24 @@
* Returns void
*
******************************************************************************/
-void bta_jv_l2cap_read(tBTA_JV_MSG *p_data)
-{
- tBTA_JV_L2CAP_READ evt_data;
- tBTA_JV_API_L2CAP_READ *rc = &(p_data->l2cap_read);
+void bta_jv_l2cap_read(tBTA_JV_MSG* p_data) {
+ tBTA_JV_L2CAP_READ evt_data;
+ tBTA_JV_API_L2CAP_READ* rc = &(p_data->l2cap_read);
- evt_data.status = BTA_JV_FAILURE;
- evt_data.handle = rc->handle;
- evt_data.req_id = rc->req_id;
- evt_data.p_data = rc->p_data;
- evt_data.len = 0;
+ evt_data.status = BTA_JV_FAILURE;
+ evt_data.handle = rc->handle;
+ evt_data.req_id = rc->req_id;
+ evt_data.p_data = rc->p_data;
+ evt_data.len = 0;
- if (BT_PASS == GAP_ConnReadData(rc->handle, rc->p_data, rc->len, &evt_data.len))
- {
- evt_data.status = BTA_JV_SUCCESS;
- }
+ if (BT_PASS ==
+ GAP_ConnReadData(rc->handle, rc->p_data, rc->len, &evt_data.len)) {
+ evt_data.status = BTA_JV_SUCCESS;
+ }
- rc->p_cback(BTA_JV_L2CAP_READ_EVT, (tBTA_JV *)&evt_data, rc->user_data);
+ rc->p_cback(BTA_JV_L2CAP_READ_EVT, (tBTA_JV*)&evt_data, rc->user_data);
}
-
/*******************************************************************************
*
* Function bta_jv_l2cap_write
@@ -1356,42 +1287,54 @@
* Returns void
*
******************************************************************************/
-void bta_jv_l2cap_write(tBTA_JV_MSG *p_data)
-{
- tBTA_JV_L2CAP_WRITE evt_data;
- tBTA_JV_API_L2CAP_WRITE *ls = &(p_data->l2cap_write);
+void bta_jv_l2cap_write(tBTA_JV_MSG* p_data) {
+ tBTA_JV_L2CAP_WRITE evt_data;
+ tBTA_JV_API_L2CAP_WRITE* ls = &(p_data->l2cap_write);
- /* As we check this callback exists before the tBTA_JV_API_L2CAP_WRITE can be send through the
- * API this check should not be needed.
- * But the API is not designed to be used (safely at least) in a multi-threaded scheduler, hence
- * if the peer device disconnects the l2cap link after the API is called, but before this
- * message is handled, the ->p_cback will be cleared at this point. At first glanch this seems
- * highly unlikely, but for all obex-profiles with two channels connected - e.g. MAP, this
- * happens around 1 of 4 disconnects, as a disconnect on the server channel causes a disconnect
- * to be send on the client (notification) channel, but at the peer typically disconnects both
- * the OBEX disconnect request crosses the incoming l2cap disconnect.
- * If p_cback is cleared, we simply discard the data.
- * RISK: The caller must handle any cleanup based on another signal than BTA_JV_L2CAP_WRITE_EVT,
- * which is typically not possible, as the pointer to the allocated buffer is stored
- * in this message, and can therefore not be freed, hence we have a mem-leak-by-design.*/
- if (ls->p_cb->p_cback != NULL) {
- evt_data.status = BTA_JV_FAILURE;
- evt_data.handle = ls->handle;
- evt_data.req_id = ls->req_id;
- evt_data.cong = ls->p_cb->cong;
- evt_data.len = 0;
- bta_jv_pm_conn_busy(ls->p_cb->p_pm_cb);
- if (!evt_data.cong &&
- BT_PASS == GAP_ConnWriteData(ls->handle, ls->p_data, ls->len, &evt_data.len))
- {
- evt_data.status = BTA_JV_SUCCESS;
- }
- ls->p_cb->p_cback(BTA_JV_L2CAP_WRITE_EVT, (tBTA_JV *)&evt_data, ls->user_data);
- } else {
- /* As this pointer is checked in the API function, this occurs only when the channel is
- * disconnected after the API function is called, but before the message is handled. */
- APPL_TRACE_ERROR("%s() ls->p_cb->p_cback == NULL", __func__);
+ /* As we check this callback exists before the tBTA_JV_API_L2CAP_WRITE can be
+ * send through the
+ * API this check should not be needed.
+ * But the API is not designed to be used (safely at least) in a
+ * multi-threaded scheduler, hence
+ * if the peer device disconnects the l2cap link after the API is called, but
+ * before this
+ * message is handled, the ->p_cback will be cleared at this point. At first
+ * glanch this seems
+ * highly unlikely, but for all obex-profiles with two channels connected -
+ * e.g. MAP, this
+ * happens around 1 of 4 disconnects, as a disconnect on the server channel
+ * causes a disconnect
+ * to be send on the client (notification) channel, but at the peer typically
+ * disconnects both
+ * the OBEX disconnect request crosses the incoming l2cap disconnect.
+ * If p_cback is cleared, we simply discard the data.
+ * RISK: The caller must handle any cleanup based on another signal than
+ * BTA_JV_L2CAP_WRITE_EVT,
+ * which is typically not possible, as the pointer to the allocated
+ * buffer is stored
+ * in this message, and can therefore not be freed, hence we have a
+ * mem-leak-by-design.*/
+ if (ls->p_cb->p_cback != NULL) {
+ evt_data.status = BTA_JV_FAILURE;
+ evt_data.handle = ls->handle;
+ evt_data.req_id = ls->req_id;
+ evt_data.cong = ls->p_cb->cong;
+ evt_data.len = 0;
+ bta_jv_pm_conn_busy(ls->p_cb->p_pm_cb);
+ if (!evt_data.cong &&
+ BT_PASS ==
+ GAP_ConnWriteData(ls->handle, ls->p_data, ls->len, &evt_data.len)) {
+ evt_data.status = BTA_JV_SUCCESS;
}
+ ls->p_cb->p_cback(BTA_JV_L2CAP_WRITE_EVT, (tBTA_JV*)&evt_data,
+ ls->user_data);
+ } else {
+ /* As this pointer is checked in the API function, this occurs only when the
+ * channel is
+ * disconnected after the API function is called, but before the message is
+ * handled. */
+ APPL_TRACE_ERROR("%s() ls->p_cb->p_cback == NULL", __func__);
+ }
}
/*******************************************************************************
@@ -1403,26 +1346,25 @@
* Returns void
*
******************************************************************************/
-void bta_jv_l2cap_write_fixed(tBTA_JV_MSG *p_data)
-{
- tBTA_JV_L2CAP_WRITE_FIXED evt_data;
- tBTA_JV_API_L2CAP_WRITE_FIXED *ls = &(p_data->l2cap_write_fixed);
- BT_HDR *msg = (BT_HDR *)osi_malloc(sizeof(BT_HDR) + ls->len + L2CAP_MIN_OFFSET);
+void bta_jv_l2cap_write_fixed(tBTA_JV_MSG* p_data) {
+ tBTA_JV_L2CAP_WRITE_FIXED evt_data;
+ tBTA_JV_API_L2CAP_WRITE_FIXED* ls = &(p_data->l2cap_write_fixed);
+ BT_HDR* msg =
+ (BT_HDR*)osi_malloc(sizeof(BT_HDR) + ls->len + L2CAP_MIN_OFFSET);
- evt_data.status = BTA_JV_FAILURE;
- evt_data.channel = ls->channel;
- memcpy(evt_data.addr, ls->addr, sizeof(evt_data.addr));
- evt_data.req_id = ls->req_id;
- evt_data.len = 0;
+ evt_data.status = BTA_JV_FAILURE;
+ evt_data.channel = ls->channel;
+ memcpy(evt_data.addr, ls->addr, sizeof(evt_data.addr));
+ evt_data.req_id = ls->req_id;
+ evt_data.len = 0;
+ memcpy(((uint8_t*)(msg + 1)) + L2CAP_MIN_OFFSET, ls->p_data, ls->len);
+ msg->len = ls->len;
+ msg->offset = L2CAP_MIN_OFFSET;
- memcpy(((uint8_t*)(msg + 1)) + L2CAP_MIN_OFFSET, ls->p_data, ls->len);
- msg->len = ls->len;
- msg->offset = L2CAP_MIN_OFFSET;
+ L2CA_SendFixedChnlData(ls->channel, ls->addr, msg);
- L2CA_SendFixedChnlData(ls->channel, ls->addr, msg);
-
- ls->p_cback(BTA_JV_L2CAP_WRITE_FIXED_EVT, (tBTA_JV *)&evt_data, ls->user_data);
+ ls->p_cback(BTA_JV_L2CAP_WRITE_FIXED_EVT, (tBTA_JV*)&evt_data, ls->user_data);
}
/*******************************************************************************
@@ -1435,27 +1377,26 @@
* Returns void
*
******************************************************************************/
-static int bta_jv_port_data_co_cback(uint16_t port_handle, uint8_t *buf, uint16_t len, int type)
-{
- tBTA_JV_RFC_CB *p_cb = bta_jv_rfc_port_to_cb(port_handle);
- tBTA_JV_PCB *p_pcb = bta_jv_rfc_port_to_pcb(port_handle);
- APPL_TRACE_DEBUG("%s, p_cb:%p, p_pcb:%p, len:%d, type:%d", __func__, p_cb, p_pcb, len, type);
- if (p_pcb != NULL)
- {
- switch(type)
- {
- case DATA_CO_CALLBACK_TYPE_INCOMING:
- return bta_co_rfc_data_incoming(p_pcb->user_data, (BT_HDR*)buf);
- case DATA_CO_CALLBACK_TYPE_OUTGOING_SIZE:
- return bta_co_rfc_data_outgoing_size(p_pcb->user_data, (int*)buf);
- case DATA_CO_CALLBACK_TYPE_OUTGOING:
- return bta_co_rfc_data_outgoing(p_pcb->user_data, buf, len);
- default:
- APPL_TRACE_ERROR("unknown callout type:%d", type);
- break;
- }
+static int bta_jv_port_data_co_cback(uint16_t port_handle, uint8_t* buf,
+ uint16_t len, int type) {
+ tBTA_JV_RFC_CB* p_cb = bta_jv_rfc_port_to_cb(port_handle);
+ tBTA_JV_PCB* p_pcb = bta_jv_rfc_port_to_pcb(port_handle);
+ APPL_TRACE_DEBUG("%s, p_cb:%p, p_pcb:%p, len:%d, type:%d", __func__, p_cb,
+ p_pcb, len, type);
+ if (p_pcb != NULL) {
+ switch (type) {
+ case DATA_CO_CALLBACK_TYPE_INCOMING:
+ return bta_co_rfc_data_incoming(p_pcb->user_data, (BT_HDR*)buf);
+ case DATA_CO_CALLBACK_TYPE_OUTGOING_SIZE:
+ return bta_co_rfc_data_outgoing_size(p_pcb->user_data, (int*)buf);
+ case DATA_CO_CALLBACK_TYPE_OUTGOING:
+ return bta_co_rfc_data_outgoing(p_pcb->user_data, buf, len);
+ default:
+ APPL_TRACE_ERROR("unknown callout type:%d", type);
+ break;
}
- return 0;
+ }
+ return 0;
}
/*******************************************************************************
@@ -1468,49 +1409,43 @@
* Returns void
*
******************************************************************************/
-static void bta_jv_port_mgmt_cl_cback(uint32_t code, uint16_t port_handle)
-{
- tBTA_JV_RFC_CB *p_cb = bta_jv_rfc_port_to_cb(port_handle);
- tBTA_JV_PCB *p_pcb = bta_jv_rfc_port_to_pcb(port_handle);
- tBTA_JV evt_data;
- BD_ADDR rem_bda;
- uint16_t lcid;
- tBTA_JV_RFCOMM_CBACK *p_cback; /* the callback function */
+static void bta_jv_port_mgmt_cl_cback(uint32_t code, uint16_t port_handle) {
+ tBTA_JV_RFC_CB* p_cb = bta_jv_rfc_port_to_cb(port_handle);
+ tBTA_JV_PCB* p_pcb = bta_jv_rfc_port_to_pcb(port_handle);
+ tBTA_JV evt_data;
+ BD_ADDR rem_bda;
+ uint16_t lcid;
+ tBTA_JV_RFCOMM_CBACK* p_cback; /* the callback function */
- APPL_TRACE_DEBUG( "bta_jv_port_mgmt_cl_cback:code:%d, port_handle%d", code, port_handle);
- if(NULL == p_cb || NULL == p_cb->p_cback)
- return;
+ APPL_TRACE_DEBUG("bta_jv_port_mgmt_cl_cback:code:%d, port_handle%d", code,
+ port_handle);
+ if (NULL == p_cb || NULL == p_cb->p_cback) return;
- APPL_TRACE_DEBUG( "bta_jv_port_mgmt_cl_cback code=%d port_handle:%d handle:%d",
- code, port_handle, p_cb->handle);
+ APPL_TRACE_DEBUG("bta_jv_port_mgmt_cl_cback code=%d port_handle:%d handle:%d",
+ code, port_handle, p_cb->handle);
- PORT_CheckConnection(port_handle, rem_bda, &lcid);
+ PORT_CheckConnection(port_handle, rem_bda, &lcid);
- if(code == PORT_SUCCESS)
- {
- evt_data.rfc_open.handle = p_cb->handle;
- evt_data.rfc_open.status = BTA_JV_SUCCESS;
- bdcpy(evt_data.rfc_open.rem_bda, rem_bda);
- p_pcb->state = BTA_JV_ST_CL_OPEN;
- p_cb->p_cback(BTA_JV_RFCOMM_OPEN_EVT, &evt_data, p_pcb->user_data);
+ if (code == PORT_SUCCESS) {
+ evt_data.rfc_open.handle = p_cb->handle;
+ evt_data.rfc_open.status = BTA_JV_SUCCESS;
+ bdcpy(evt_data.rfc_open.rem_bda, rem_bda);
+ p_pcb->state = BTA_JV_ST_CL_OPEN;
+ p_cb->p_cback(BTA_JV_RFCOMM_OPEN_EVT, &evt_data, p_pcb->user_data);
+ } else {
+ evt_data.rfc_close.handle = p_cb->handle;
+ evt_data.rfc_close.status = BTA_JV_FAILURE;
+ evt_data.rfc_close.port_status = code;
+ evt_data.rfc_close.async = true;
+ if (p_pcb->state == BTA_JV_ST_CL_CLOSING) {
+ evt_data.rfc_close.async = false;
}
- else
- {
- evt_data.rfc_close.handle = p_cb->handle;
- evt_data.rfc_close.status = BTA_JV_FAILURE;
- evt_data.rfc_close.port_status = code;
- evt_data.rfc_close.async = true;
- if (p_pcb->state == BTA_JV_ST_CL_CLOSING)
- {
- evt_data.rfc_close.async = false;
- }
- //p_pcb->state = BTA_JV_ST_NONE;
- //p_pcb->cong = false;
- p_cback = p_cb->p_cback;
- p_cback(BTA_JV_RFCOMM_CLOSE_EVT, &evt_data, p_pcb->user_data);
- //bta_jv_free_rfc_cb(p_cb, p_pcb);
- }
-
+ // p_pcb->state = BTA_JV_ST_NONE;
+ // p_pcb->cong = false;
+ p_cback = p_cb->p_cback;
+ p_cback(BTA_JV_RFCOMM_CLOSE_EVT, &evt_data, p_pcb->user_data);
+ // bta_jv_free_rfc_cb(p_cb, p_pcb);
+ }
}
/*******************************************************************************
@@ -1522,37 +1457,33 @@
* Returns void
*
******************************************************************************/
-static void bta_jv_port_event_cl_cback(uint32_t code, uint16_t port_handle)
-{
- tBTA_JV_RFC_CB *p_cb = bta_jv_rfc_port_to_cb(port_handle);
- tBTA_JV_PCB *p_pcb = bta_jv_rfc_port_to_pcb(port_handle);
- tBTA_JV evt_data;
+static void bta_jv_port_event_cl_cback(uint32_t code, uint16_t port_handle) {
+ tBTA_JV_RFC_CB* p_cb = bta_jv_rfc_port_to_cb(port_handle);
+ tBTA_JV_PCB* p_pcb = bta_jv_rfc_port_to_pcb(port_handle);
+ tBTA_JV evt_data;
- APPL_TRACE_DEBUG( "bta_jv_port_event_cl_cback:%d", port_handle);
- if (NULL == p_cb || NULL == p_cb->p_cback)
- return;
+ APPL_TRACE_DEBUG("bta_jv_port_event_cl_cback:%d", port_handle);
+ if (NULL == p_cb || NULL == p_cb->p_cback) return;
- APPL_TRACE_DEBUG( "bta_jv_port_event_cl_cback code=x%x port_handle:%d handle:%d",
- code, port_handle, p_cb->handle);
- if (code & PORT_EV_RXCHAR)
- {
- evt_data.data_ind.handle = p_cb->handle;
- p_cb->p_cback(BTA_JV_RFCOMM_DATA_IND_EVT, &evt_data, p_pcb->user_data);
- }
+ APPL_TRACE_DEBUG(
+ "bta_jv_port_event_cl_cback code=x%x port_handle:%d handle:%d", code,
+ port_handle, p_cb->handle);
+ if (code & PORT_EV_RXCHAR) {
+ evt_data.data_ind.handle = p_cb->handle;
+ p_cb->p_cback(BTA_JV_RFCOMM_DATA_IND_EVT, &evt_data, p_pcb->user_data);
+ }
- if (code & PORT_EV_FC)
- {
- p_pcb->cong = (code & PORT_EV_FCS) ? false : true;
- evt_data.rfc_cong.cong = p_pcb->cong;
- evt_data.rfc_cong.handle = p_cb->handle;
- evt_data.rfc_cong.status = BTA_JV_SUCCESS;
- p_cb->p_cback(BTA_JV_RFCOMM_CONG_EVT, &evt_data, p_pcb->user_data);
- }
+ if (code & PORT_EV_FC) {
+ p_pcb->cong = (code & PORT_EV_FCS) ? false : true;
+ evt_data.rfc_cong.cong = p_pcb->cong;
+ evt_data.rfc_cong.handle = p_cb->handle;
+ evt_data.rfc_cong.status = BTA_JV_SUCCESS;
+ p_cb->p_cback(BTA_JV_RFCOMM_CONG_EVT, &evt_data, p_pcb->user_data);
+ }
- if (code & PORT_EV_TXEMPTY)
- {
- bta_jv_pm_conn_idle(p_pcb->p_pm_cb);
- }
+ if (code & PORT_EV_TXEMPTY) {
+ bta_jv_pm_conn_idle(p_pcb->p_pm_cb);
+ }
}
/*******************************************************************************
@@ -1564,103 +1495,96 @@
* Returns void
*
******************************************************************************/
-void bta_jv_rfcomm_connect(tBTA_JV_MSG *p_data)
-{
- uint16_t handle = 0;
- uint32_t event_mask = BTA_JV_RFC_EV_MASK;
- tPORT_STATE port_state;
- uint8_t sec_id = 0;
- tBTA_JV_RFC_CB *p_cb = NULL;
- tBTA_JV_PCB *p_pcb;
- tBTA_JV_API_RFCOMM_CONNECT *cc = &(p_data->rfcomm_connect);
- tBTA_JV_RFCOMM_CL_INIT evt_data;
+void bta_jv_rfcomm_connect(tBTA_JV_MSG* p_data) {
+ uint16_t handle = 0;
+ uint32_t event_mask = BTA_JV_RFC_EV_MASK;
+ tPORT_STATE port_state;
+ uint8_t sec_id = 0;
+ tBTA_JV_RFC_CB* p_cb = NULL;
+ tBTA_JV_PCB* p_pcb;
+ tBTA_JV_API_RFCOMM_CONNECT* cc = &(p_data->rfcomm_connect);
+ tBTA_JV_RFCOMM_CL_INIT evt_data;
- /* TODO DM role manager
- L2CA_SetDesireRole(cc->role);
- */
+ /* TODO DM role manager
+ L2CA_SetDesireRole(cc->role);
+ */
- sec_id = bta_jv_alloc_sec_id();
- memset(&evt_data, 0, sizeof(evt_data));
- evt_data.sec_id = sec_id;
- evt_data.status = BTA_JV_SUCCESS;
- if (0 == sec_id ||
- BTM_SetSecurityLevel(true, "", sec_id, cc->sec_mask, BT_PSM_RFCOMM,
- BTM_SEC_PROTO_RFCOMM, cc->remote_scn) == false)
- {
- evt_data.status = BTA_JV_FAILURE;
- APPL_TRACE_ERROR("sec_id:%d is zero or BTM_SetSecurityLevel failed, remote_scn:%d", sec_id, cc->remote_scn);
+ sec_id = bta_jv_alloc_sec_id();
+ memset(&evt_data, 0, sizeof(evt_data));
+ evt_data.sec_id = sec_id;
+ evt_data.status = BTA_JV_SUCCESS;
+ if (0 == sec_id ||
+ BTM_SetSecurityLevel(true, "", sec_id, cc->sec_mask, BT_PSM_RFCOMM,
+ BTM_SEC_PROTO_RFCOMM, cc->remote_scn) == false) {
+ evt_data.status = BTA_JV_FAILURE;
+ APPL_TRACE_ERROR(
+ "sec_id:%d is zero or BTM_SetSecurityLevel failed, remote_scn:%d",
+ sec_id, cc->remote_scn);
+ }
+
+ if (evt_data.status == BTA_JV_SUCCESS &&
+ RFCOMM_CreateConnection(UUID_SERVCLASS_SERIAL_PORT, cc->remote_scn, false,
+ BTA_JV_DEF_RFC_MTU, cc->peer_bd_addr, &handle,
+ bta_jv_port_mgmt_cl_cback) != PORT_SUCCESS) {
+ APPL_TRACE_ERROR("bta_jv_rfcomm_connect, RFCOMM_CreateConnection failed");
+ evt_data.status = BTA_JV_FAILURE;
+ }
+ if (evt_data.status == BTA_JV_SUCCESS) {
+ p_cb = bta_jv_alloc_rfc_cb(handle, &p_pcb);
+ if (p_cb) {
+ p_cb->p_cback = cc->p_cback;
+ p_cb->sec_id = sec_id;
+ p_cb->scn = 0;
+ p_pcb->state = BTA_JV_ST_CL_OPENING;
+ p_pcb->user_data = cc->user_data;
+ evt_data.use_co = true;
+
+ PORT_SetEventCallback(handle, bta_jv_port_event_cl_cback);
+ PORT_SetEventMask(handle, event_mask);
+ PORT_SetDataCOCallback(handle, bta_jv_port_data_co_cback);
+
+ PORT_GetState(handle, &port_state);
+
+ port_state.fc_type = (PORT_FC_CTS_ON_INPUT | PORT_FC_CTS_ON_OUTPUT);
+
+ /* coverity[uninit_use_in_call]
+ false-POSITIVE: port_state is initialized at PORT_GetState() */
+ PORT_SetState(handle, &port_state);
+
+ evt_data.handle = p_cb->handle;
+ } else {
+ evt_data.status = BTA_JV_FAILURE;
+ APPL_TRACE_ERROR("run out of rfc control block");
}
+ }
+ cc->p_cback(BTA_JV_RFCOMM_CL_INIT_EVT, (tBTA_JV*)&evt_data, cc->user_data);
+ if (evt_data.status == BTA_JV_FAILURE) {
+ if (sec_id) bta_jv_free_sec_id(&sec_id);
+ if (handle) RFCOMM_RemoveConnection(handle);
+ }
+}
- if (evt_data.status == BTA_JV_SUCCESS &&
- RFCOMM_CreateConnection(UUID_SERVCLASS_SERIAL_PORT, cc->remote_scn, false,
- BTA_JV_DEF_RFC_MTU, cc->peer_bd_addr, &handle, bta_jv_port_mgmt_cl_cback) != PORT_SUCCESS)
- {
- APPL_TRACE_ERROR("bta_jv_rfcomm_connect, RFCOMM_CreateConnection failed");
- evt_data.status = BTA_JV_FAILURE;
+static int find_rfc_pcb(void* user_data, tBTA_JV_RFC_CB** cb,
+ tBTA_JV_PCB** pcb) {
+ *cb = NULL;
+ *pcb = NULL;
+ int i;
+ for (i = 0; i < MAX_RFC_PORTS; i++) {
+ uint32_t rfc_handle = bta_jv_cb.port_cb[i].handle & BTA_JV_RFC_HDL_MASK;
+ rfc_handle &= ~BTA_JV_RFCOMM_MASK;
+ if (rfc_handle && bta_jv_cb.port_cb[i].user_data == user_data) {
+ *pcb = &bta_jv_cb.port_cb[i];
+ *cb = &bta_jv_cb.rfc_cb[rfc_handle - 1];
+ APPL_TRACE_DEBUG(
+ "find_rfc_pcb(): FOUND rfc_cb_handle 0x%x, port.jv_handle:"
+ " 0x%x, state: %d, rfc_cb->handle: 0x%x",
+ rfc_handle, (*pcb)->handle, (*pcb)->state, (*cb)->handle);
+ return 1;
}
- if (evt_data.status == BTA_JV_SUCCESS)
- {
- p_cb = bta_jv_alloc_rfc_cb(handle, &p_pcb);
- if(p_cb)
- {
- p_cb->p_cback = cc->p_cback;
- p_cb->sec_id = sec_id;
- p_cb->scn = 0;
- p_pcb->state = BTA_JV_ST_CL_OPENING;
- p_pcb->user_data = cc->user_data;
- evt_data.use_co = true;
-
- PORT_SetEventCallback(handle, bta_jv_port_event_cl_cback);
- PORT_SetEventMask(handle, event_mask);
- PORT_SetDataCOCallback (handle, bta_jv_port_data_co_cback);
-
- PORT_GetState(handle, &port_state);
-
- port_state.fc_type = (PORT_FC_CTS_ON_INPUT | PORT_FC_CTS_ON_OUTPUT);
-
- /* coverity[uninit_use_in_call]
- false-POSITIVE: port_state is initialized at PORT_GetState() */
- PORT_SetState(handle, &port_state);
-
- evt_data.handle = p_cb->handle;
- }
- else
- {
- evt_data.status = BTA_JV_FAILURE;
- APPL_TRACE_ERROR("run out of rfc control block");
- }
- }
- cc->p_cback(BTA_JV_RFCOMM_CL_INIT_EVT, (tBTA_JV *)&evt_data, cc->user_data);
- if(evt_data.status == BTA_JV_FAILURE)
- {
- if(sec_id)
- bta_jv_free_sec_id(&sec_id);
- if(handle)
- RFCOMM_RemoveConnection(handle);
- }
- }
-
-static int find_rfc_pcb(void* user_data, tBTA_JV_RFC_CB **cb, tBTA_JV_PCB **pcb)
-{
- *cb = NULL;
- *pcb = NULL;
- int i;
- for (i = 0; i < MAX_RFC_PORTS; i++)
- {
- uint32_t rfc_handle = bta_jv_cb.port_cb[i].handle & BTA_JV_RFC_HDL_MASK;
- rfc_handle &= ~BTA_JV_RFCOMM_MASK;
- if (rfc_handle && bta_jv_cb.port_cb[i].user_data == user_data)
- {
- *pcb = &bta_jv_cb.port_cb[i];
- *cb = &bta_jv_cb.rfc_cb[rfc_handle - 1];
- APPL_TRACE_DEBUG("find_rfc_pcb(): FOUND rfc_cb_handle 0x%x, port.jv_handle:"
- " 0x%x, state: %d, rfc_cb->handle: 0x%x", rfc_handle, (*pcb)->handle,
- (*pcb)->state, (*cb)->handle);
- return 1;
- }
- }
- APPL_TRACE_DEBUG("find_rfc_pcb: cannot find rfc_cb from user data: %u", PTR_TO_UINT(user_data));
- return 0;
+ }
+ APPL_TRACE_DEBUG("find_rfc_pcb: cannot find rfc_cb from user data: %u",
+ PTR_TO_UINT(user_data));
+ return 0;
}
/*******************************************************************************
@@ -1672,24 +1596,21 @@
* Returns void
*
******************************************************************************/
-void bta_jv_rfcomm_close(tBTA_JV_MSG *p_data)
-{
- tBTA_JV_API_RFCOMM_CLOSE *cc = &(p_data->rfcomm_close);
- tBTA_JV_RFC_CB *p_cb = NULL;
- tBTA_JV_PCB *p_pcb = NULL;
- APPL_TRACE_DEBUG("bta_jv_rfcomm_close, rfc handle:%d", cc->handle);
- if (!cc->handle)
- {
- APPL_TRACE_ERROR("bta_jv_rfcomm_close, rfc handle is null");
- return;
- }
+void bta_jv_rfcomm_close(tBTA_JV_MSG* p_data) {
+ tBTA_JV_API_RFCOMM_CLOSE* cc = &(p_data->rfcomm_close);
+ tBTA_JV_RFC_CB* p_cb = NULL;
+ tBTA_JV_PCB* p_pcb = NULL;
+ APPL_TRACE_DEBUG("bta_jv_rfcomm_close, rfc handle:%d", cc->handle);
+ if (!cc->handle) {
+ APPL_TRACE_ERROR("bta_jv_rfcomm_close, rfc handle is null");
+ return;
+ }
- void* user_data = cc->user_data;
- if (!find_rfc_pcb(user_data, &p_cb, &p_pcb))
- return;
- bta_jv_free_rfc_cb(p_cb, p_pcb);
- APPL_TRACE_DEBUG("bta_jv_rfcomm_close: sec id in use:%d, rfc_cb in use:%d",
- get_sec_id_used(), get_rfc_cb_used());
+ void* user_data = cc->user_data;
+ if (!find_rfc_pcb(user_data, &p_cb, &p_pcb)) return;
+ bta_jv_free_rfc_cb(p_cb, p_pcb);
+ APPL_TRACE_DEBUG("bta_jv_rfcomm_close: sec id in use:%d, rfc_cb in use:%d",
+ get_sec_id_used(), get_rfc_cb_used());
}
/*******************************************************************************
@@ -1702,65 +1623,65 @@
* Returns void
*
******************************************************************************/
-static void bta_jv_port_mgmt_sr_cback(uint32_t code, uint16_t port_handle)
-{
- tBTA_JV_PCB *p_pcb = bta_jv_rfc_port_to_pcb(port_handle);
- tBTA_JV_RFC_CB *p_cb = bta_jv_rfc_port_to_cb(port_handle);
- tBTA_JV evt_data;
- BD_ADDR rem_bda;
- uint16_t lcid;
- APPL_TRACE_DEBUG("bta_jv_port_mgmt_sr_cback, code:%d, port_handle:%d", code, port_handle);
- if (NULL == p_cb || NULL == p_cb->p_cback)
- {
- APPL_TRACE_ERROR("bta_jv_port_mgmt_sr_cback, p_cb:%p, p_cb->p_cback%p",
- p_cb, p_cb ? p_cb->p_cback : NULL);
- return;
+static void bta_jv_port_mgmt_sr_cback(uint32_t code, uint16_t port_handle) {
+ tBTA_JV_PCB* p_pcb = bta_jv_rfc_port_to_pcb(port_handle);
+ tBTA_JV_RFC_CB* p_cb = bta_jv_rfc_port_to_cb(port_handle);
+ tBTA_JV evt_data;
+ BD_ADDR rem_bda;
+ uint16_t lcid;
+ APPL_TRACE_DEBUG("bta_jv_port_mgmt_sr_cback, code:%d, port_handle:%d", code,
+ port_handle);
+ if (NULL == p_cb || NULL == p_cb->p_cback) {
+ APPL_TRACE_ERROR("bta_jv_port_mgmt_sr_cback, p_cb:%p, p_cb->p_cback%p",
+ p_cb, p_cb ? p_cb->p_cback : NULL);
+ return;
+ }
+ void* user_data = p_pcb->user_data;
+ APPL_TRACE_DEBUG(
+ "bta_jv_port_mgmt_sr_cback code=%d port_handle:0x%x handle:0x%x, "
+ "p_pcb:%p, user:%d",
+ code, port_handle, p_cb->handle, p_pcb, p_pcb->user_data);
+
+ PORT_CheckConnection(port_handle, rem_bda, &lcid);
+ int failed = true;
+ if (code == PORT_SUCCESS) {
+ evt_data.rfc_srv_open.handle = p_pcb->handle;
+ evt_data.rfc_srv_open.status = BTA_JV_SUCCESS;
+ bdcpy(evt_data.rfc_srv_open.rem_bda, rem_bda);
+ tBTA_JV_PCB* p_pcb_new_listen = bta_jv_add_rfc_port(p_cb, p_pcb);
+ if (p_pcb_new_listen) {
+ evt_data.rfc_srv_open.new_listen_handle = p_pcb_new_listen->handle;
+ p_pcb_new_listen->user_data =
+ p_cb->p_cback(BTA_JV_RFCOMM_SRV_OPEN_EVT, &evt_data, user_data);
+ APPL_TRACE_DEBUG("PORT_SUCCESS: curr_sess:%d, max_sess:%d",
+ p_cb->curr_sess, p_cb->max_sess);
+ failed = false;
+ } else
+ APPL_TRACE_ERROR("bta_jv_add_rfc_port failed to create new listen port");
+ }
+ if (failed) {
+ evt_data.rfc_close.handle = p_cb->handle;
+ evt_data.rfc_close.status = BTA_JV_FAILURE;
+ evt_data.rfc_close.async = true;
+ evt_data.rfc_close.port_status = code;
+ p_pcb->cong = false;
+
+ tBTA_JV_RFCOMM_CBACK* p_cback = p_cb->p_cback;
+ APPL_TRACE_DEBUG(
+ "PORT_CLOSED before BTA_JV_RFCOMM_CLOSE_EVT: curr_sess:%d, max_sess:%d",
+ p_cb->curr_sess, p_cb->max_sess);
+ if (BTA_JV_ST_SR_CLOSING == p_pcb->state) {
+ evt_data.rfc_close.async = false;
+ evt_data.rfc_close.status = BTA_JV_SUCCESS;
}
- void *user_data = p_pcb->user_data;
- APPL_TRACE_DEBUG( "bta_jv_port_mgmt_sr_cback code=%d port_handle:0x%x handle:0x%x, p_pcb:%p, user:%d",
- code, port_handle, p_cb->handle, p_pcb, p_pcb->user_data);
+ // p_pcb->state = BTA_JV_ST_NONE;
+ p_cback(BTA_JV_RFCOMM_CLOSE_EVT, &evt_data, user_data);
+ // bta_jv_free_rfc_cb(p_cb, p_pcb);
- PORT_CheckConnection(port_handle, rem_bda, &lcid);
- int failed = true;
- if (code == PORT_SUCCESS)
- {
- evt_data.rfc_srv_open.handle = p_pcb->handle;
- evt_data.rfc_srv_open.status = BTA_JV_SUCCESS;
- bdcpy(evt_data.rfc_srv_open.rem_bda, rem_bda);
- tBTA_JV_PCB *p_pcb_new_listen = bta_jv_add_rfc_port(p_cb, p_pcb);
- if (p_pcb_new_listen)
- {
- evt_data.rfc_srv_open.new_listen_handle = p_pcb_new_listen->handle;
- p_pcb_new_listen->user_data = p_cb->p_cback(BTA_JV_RFCOMM_SRV_OPEN_EVT, &evt_data, user_data);
- APPL_TRACE_DEBUG("PORT_SUCCESS: curr_sess:%d, max_sess:%d", p_cb->curr_sess, p_cb->max_sess);
- failed = false;
- }
- else
- APPL_TRACE_ERROR("bta_jv_add_rfc_port failed to create new listen port");
- }
- if (failed)
- {
- evt_data.rfc_close.handle = p_cb->handle;
- evt_data.rfc_close.status = BTA_JV_FAILURE;
- evt_data.rfc_close.async = true;
- evt_data.rfc_close.port_status = code;
- p_pcb->cong = false;
-
- tBTA_JV_RFCOMM_CBACK *p_cback = p_cb->p_cback;
- APPL_TRACE_DEBUG("PORT_CLOSED before BTA_JV_RFCOMM_CLOSE_EVT: curr_sess:%d, max_sess:%d",
- p_cb->curr_sess, p_cb->max_sess);
- if (BTA_JV_ST_SR_CLOSING == p_pcb->state)
- {
- evt_data.rfc_close.async = false;
- evt_data.rfc_close.status = BTA_JV_SUCCESS;
- }
- //p_pcb->state = BTA_JV_ST_NONE;
- p_cback(BTA_JV_RFCOMM_CLOSE_EVT, &evt_data, user_data);
- //bta_jv_free_rfc_cb(p_cb, p_pcb);
-
- APPL_TRACE_DEBUG("PORT_CLOSED after BTA_JV_RFCOMM_CLOSE_EVT: curr_sess:%d, max_sess:%d",
- p_cb->curr_sess, p_cb->max_sess);
- }
+ APPL_TRACE_DEBUG(
+ "PORT_CLOSED after BTA_JV_RFCOMM_CLOSE_EVT: curr_sess:%d, max_sess:%d",
+ p_cb->curr_sess, p_cb->max_sess);
+ }
}
/*******************************************************************************
@@ -1772,38 +1693,34 @@
* Returns void
*
******************************************************************************/
-static void bta_jv_port_event_sr_cback(uint32_t code, uint16_t port_handle)
-{
- tBTA_JV_PCB *p_pcb = bta_jv_rfc_port_to_pcb(port_handle);
- tBTA_JV_RFC_CB *p_cb = bta_jv_rfc_port_to_cb(port_handle);
- tBTA_JV evt_data;
+static void bta_jv_port_event_sr_cback(uint32_t code, uint16_t port_handle) {
+ tBTA_JV_PCB* p_pcb = bta_jv_rfc_port_to_pcb(port_handle);
+ tBTA_JV_RFC_CB* p_cb = bta_jv_rfc_port_to_cb(port_handle);
+ tBTA_JV evt_data;
- if (NULL == p_cb || NULL == p_cb->p_cback)
- return;
+ if (NULL == p_cb || NULL == p_cb->p_cback) return;
- APPL_TRACE_DEBUG( "bta_jv_port_event_sr_cback code=x%x port_handle:%d handle:%d",
- code, port_handle, p_cb->handle);
+ APPL_TRACE_DEBUG(
+ "bta_jv_port_event_sr_cback code=x%x port_handle:%d handle:%d", code,
+ port_handle, p_cb->handle);
- void *user_data = p_pcb->user_data;
- if (code & PORT_EV_RXCHAR)
- {
- evt_data.data_ind.handle = p_cb->handle;
- p_cb->p_cback(BTA_JV_RFCOMM_DATA_IND_EVT, &evt_data, user_data);
- }
+ void* user_data = p_pcb->user_data;
+ if (code & PORT_EV_RXCHAR) {
+ evt_data.data_ind.handle = p_cb->handle;
+ p_cb->p_cback(BTA_JV_RFCOMM_DATA_IND_EVT, &evt_data, user_data);
+ }
- if (code & PORT_EV_FC)
- {
- p_pcb->cong = (code & PORT_EV_FCS) ? false : true;
- evt_data.rfc_cong.cong = p_pcb->cong;
- evt_data.rfc_cong.handle = p_cb->handle;
- evt_data.rfc_cong.status = BTA_JV_SUCCESS;
- p_cb->p_cback(BTA_JV_RFCOMM_CONG_EVT, &evt_data, user_data);
- }
+ if (code & PORT_EV_FC) {
+ p_pcb->cong = (code & PORT_EV_FCS) ? false : true;
+ evt_data.rfc_cong.cong = p_pcb->cong;
+ evt_data.rfc_cong.handle = p_cb->handle;
+ evt_data.rfc_cong.status = BTA_JV_SUCCESS;
+ p_cb->p_cback(BTA_JV_RFCOMM_CONG_EVT, &evt_data, user_data);
+ }
- if (code & PORT_EV_TXEMPTY)
- {
- bta_jv_pm_conn_idle(p_pcb->p_pm_cb);
- }
+ if (code & PORT_EV_TXEMPTY) {
+ bta_jv_pm_conn_idle(p_pcb->p_pm_cb);
+ }
}
/*******************************************************************************
@@ -1815,80 +1732,76 @@
* Returns return a pointer to tBTA_JV_PCB just added
*
******************************************************************************/
-static tBTA_JV_PCB * bta_jv_add_rfc_port(tBTA_JV_RFC_CB *p_cb, tBTA_JV_PCB *p_pcb_open)
-{
- uint8_t used = 0, i, listen=0;
- uint32_t si = 0;
- tPORT_STATE port_state;
- uint32_t event_mask = BTA_JV_RFC_EV_MASK;
- tBTA_JV_PCB *p_pcb = NULL;
- if (p_cb->max_sess > 1)
- {
- for (i=0; i < p_cb->max_sess; i++)
- {
- if (p_cb->rfc_hdl[i] != 0)
- {
- p_pcb = &bta_jv_cb.port_cb[p_cb->rfc_hdl[i] - 1];
- if (p_pcb->state == BTA_JV_ST_SR_LISTEN)
- {
- listen++;
- if (p_pcb_open == p_pcb)
- {
- APPL_TRACE_DEBUG("bta_jv_add_rfc_port, port_handle:%d, change the listen port to open state",
- p_pcb->port_handle);
- p_pcb->state = BTA_JV_ST_SR_OPEN;
+static tBTA_JV_PCB* bta_jv_add_rfc_port(tBTA_JV_RFC_CB* p_cb,
+ tBTA_JV_PCB* p_pcb_open) {
+ uint8_t used = 0, i, listen = 0;
+ uint32_t si = 0;
+ tPORT_STATE port_state;
+ uint32_t event_mask = BTA_JV_RFC_EV_MASK;
+ tBTA_JV_PCB* p_pcb = NULL;
+ if (p_cb->max_sess > 1) {
+ for (i = 0; i < p_cb->max_sess; i++) {
+ if (p_cb->rfc_hdl[i] != 0) {
+ p_pcb = &bta_jv_cb.port_cb[p_cb->rfc_hdl[i] - 1];
+ if (p_pcb->state == BTA_JV_ST_SR_LISTEN) {
+ listen++;
+ if (p_pcb_open == p_pcb) {
+ APPL_TRACE_DEBUG(
+ "bta_jv_add_rfc_port, port_handle:%d, change the listen port "
+ "to open state",
+ p_pcb->port_handle);
+ p_pcb->state = BTA_JV_ST_SR_OPEN;
- }
- else
- {
- APPL_TRACE_ERROR("bta_jv_add_rfc_port, open pcb not matching listen one,"
- "listen count:%d, listen pcb handle:%d, open pcb:%d",
- listen, p_pcb->port_handle, p_pcb_open->handle);
- return NULL;
- }
- }
- used++;
- }
- else if (si == 0)
- {
- si = i + 1;
- }
+ } else {
+ APPL_TRACE_ERROR(
+ "bta_jv_add_rfc_port, open pcb not matching listen one,"
+ "listen count:%d, listen pcb handle:%d, open pcb:%d",
+ listen, p_pcb->port_handle, p_pcb_open->handle);
+ return NULL;
+ }
}
-
- APPL_TRACE_DEBUG("bta_jv_add_rfc_port max_sess=%d used:%d curr_sess:%d, listen:%d si:%d",
- p_cb->max_sess, used, p_cb->curr_sess, listen, si);
- if (used < p_cb->max_sess && listen == 1 && si)
- {
- si--;
- if (RFCOMM_CreateConnection(p_cb->sec_id, p_cb->scn, true,
- BTA_JV_DEF_RFC_MTU, (uint8_t *) bd_addr_any, &(p_cb->rfc_hdl[si]), bta_jv_port_mgmt_sr_cback) == PORT_SUCCESS)
- {
- p_cb->curr_sess++;
- p_pcb = &bta_jv_cb.port_cb[p_cb->rfc_hdl[si] - 1];
- p_pcb->state = BTA_JV_ST_SR_LISTEN;
- p_pcb->port_handle = p_cb->rfc_hdl[si];
- p_pcb->user_data = p_pcb_open->user_data;
-
- PORT_ClearKeepHandleFlag(p_pcb->port_handle);
- PORT_SetEventCallback(p_pcb->port_handle, bta_jv_port_event_sr_cback);
- PORT_SetDataCOCallback (p_pcb->port_handle, bta_jv_port_data_co_cback);
- PORT_SetEventMask(p_pcb->port_handle, event_mask);
- PORT_GetState(p_pcb->port_handle, &port_state);
-
- port_state.fc_type = (PORT_FC_CTS_ON_INPUT | PORT_FC_CTS_ON_OUTPUT);
-
- PORT_SetState(p_pcb->port_handle, &port_state);
- p_pcb->handle = BTA_JV_RFC_H_S_TO_HDL(p_cb->handle, si);
- APPL_TRACE_DEBUG("bta_jv_add_rfc_port: p_pcb->handle:0x%x, curr_sess:%d",
- p_pcb->handle, p_cb->curr_sess);
- }
- }
- else
- APPL_TRACE_ERROR("bta_jv_add_rfc_port, cannot create new rfc listen port");
+ used++;
+ } else if (si == 0) {
+ si = i + 1;
+ }
}
- APPL_TRACE_DEBUG("bta_jv_add_rfc_port: sec id in use:%d, rfc_cb in use:%d",
- get_sec_id_used(), get_rfc_cb_used());
- return p_pcb;
+
+ APPL_TRACE_DEBUG(
+ "bta_jv_add_rfc_port max_sess=%d used:%d curr_sess:%d, listen:%d si:%d",
+ p_cb->max_sess, used, p_cb->curr_sess, listen, si);
+ if (used < p_cb->max_sess && listen == 1 && si) {
+ si--;
+ if (RFCOMM_CreateConnection(p_cb->sec_id, p_cb->scn, true,
+ BTA_JV_DEF_RFC_MTU, (uint8_t*)bd_addr_any,
+ &(p_cb->rfc_hdl[si]),
+ bta_jv_port_mgmt_sr_cback) == PORT_SUCCESS) {
+ p_cb->curr_sess++;
+ p_pcb = &bta_jv_cb.port_cb[p_cb->rfc_hdl[si] - 1];
+ p_pcb->state = BTA_JV_ST_SR_LISTEN;
+ p_pcb->port_handle = p_cb->rfc_hdl[si];
+ p_pcb->user_data = p_pcb_open->user_data;
+
+ PORT_ClearKeepHandleFlag(p_pcb->port_handle);
+ PORT_SetEventCallback(p_pcb->port_handle, bta_jv_port_event_sr_cback);
+ PORT_SetDataCOCallback(p_pcb->port_handle, bta_jv_port_data_co_cback);
+ PORT_SetEventMask(p_pcb->port_handle, event_mask);
+ PORT_GetState(p_pcb->port_handle, &port_state);
+
+ port_state.fc_type = (PORT_FC_CTS_ON_INPUT | PORT_FC_CTS_ON_OUTPUT);
+
+ PORT_SetState(p_pcb->port_handle, &port_state);
+ p_pcb->handle = BTA_JV_RFC_H_S_TO_HDL(p_cb->handle, si);
+ APPL_TRACE_DEBUG(
+ "bta_jv_add_rfc_port: p_pcb->handle:0x%x, curr_sess:%d",
+ p_pcb->handle, p_cb->curr_sess);
+ }
+ } else
+ APPL_TRACE_ERROR(
+ "bta_jv_add_rfc_port, cannot create new rfc listen port");
+ }
+ APPL_TRACE_DEBUG("bta_jv_add_rfc_port: sec id in use:%d, rfc_cb in use:%d",
+ get_sec_id_used(), get_rfc_cb_used());
+ return p_pcb;
}
/*******************************************************************************
@@ -1901,85 +1814,79 @@
* Returns void
*
******************************************************************************/
-void bta_jv_rfcomm_start_server(tBTA_JV_MSG *p_data)
-{
- uint16_t handle = 0;
- uint32_t event_mask = BTA_JV_RFC_EV_MASK;
- tPORT_STATE port_state;
- uint8_t sec_id = 0;
- tBTA_JV_RFC_CB *p_cb = NULL;
- tBTA_JV_PCB *p_pcb;
- tBTA_JV_API_RFCOMM_SERVER *rs = &(p_data->rfcomm_server);
- tBTA_JV_RFCOMM_START evt_data;
+void bta_jv_rfcomm_start_server(tBTA_JV_MSG* p_data) {
+ uint16_t handle = 0;
+ uint32_t event_mask = BTA_JV_RFC_EV_MASK;
+ tPORT_STATE port_state;
+ uint8_t sec_id = 0;
+ tBTA_JV_RFC_CB* p_cb = NULL;
+ tBTA_JV_PCB* p_pcb;
+ tBTA_JV_API_RFCOMM_SERVER* rs = &(p_data->rfcomm_server);
+ tBTA_JV_RFCOMM_START evt_data;
- /* TODO DM role manager
- L2CA_SetDesireRole(rs->role);
- */
- memset(&evt_data, 0, sizeof(evt_data));
- evt_data.status = BTA_JV_FAILURE;
- APPL_TRACE_DEBUG("bta_jv_rfcomm_start_server: sec id in use:%d, rfc_cb in use:%d",
- get_sec_id_used(), get_rfc_cb_used());
+ /* TODO DM role manager
+ L2CA_SetDesireRole(rs->role);
+ */
+ memset(&evt_data, 0, sizeof(evt_data));
+ evt_data.status = BTA_JV_FAILURE;
+ APPL_TRACE_DEBUG(
+ "bta_jv_rfcomm_start_server: sec id in use:%d, rfc_cb in use:%d",
+ get_sec_id_used(), get_rfc_cb_used());
- do
- {
- sec_id = bta_jv_alloc_sec_id();
+ do {
+ sec_id = bta_jv_alloc_sec_id();
- if (0 == sec_id ||
- BTM_SetSecurityLevel(false, "JV PORT", sec_id, rs->sec_mask,
- BT_PSM_RFCOMM, BTM_SEC_PROTO_RFCOMM, rs->local_scn) == false)
- {
- APPL_TRACE_ERROR("bta_jv_rfcomm_start_server, run out of sec_id");
- break;
- }
-
- if (RFCOMM_CreateConnection(sec_id, rs->local_scn, true,
- BTA_JV_DEF_RFC_MTU, (uint8_t *) bd_addr_any, &handle, bta_jv_port_mgmt_sr_cback) != PORT_SUCCESS)
- {
- APPL_TRACE_ERROR("bta_jv_rfcomm_start_server, RFCOMM_CreateConnection failed");
- break;
- }
-
-
- p_cb = bta_jv_alloc_rfc_cb(handle, &p_pcb);
- if (!p_cb)
- {
- APPL_TRACE_ERROR("bta_jv_rfcomm_start_server, run out of rfc control block");
- break;
- }
-
- p_cb->max_sess = rs->max_session;
- p_cb->p_cback = rs->p_cback;
- p_cb->sec_id = sec_id;
- p_cb->scn = rs->local_scn;
- p_pcb->state = BTA_JV_ST_SR_LISTEN;
- p_pcb->user_data = rs->user_data;
- evt_data.status = BTA_JV_SUCCESS;
- evt_data.handle = p_cb->handle;
- evt_data.sec_id = sec_id;
- evt_data.use_co = true;
-
- PORT_ClearKeepHandleFlag(handle);
- PORT_SetEventCallback(handle, bta_jv_port_event_sr_cback);
- PORT_SetEventMask(handle, event_mask);
- PORT_GetState(handle, &port_state);
-
- port_state.fc_type = (PORT_FC_CTS_ON_INPUT | PORT_FC_CTS_ON_OUTPUT);
-
- PORT_SetState(handle, &port_state);
- } while (0);
-
- rs->p_cback(BTA_JV_RFCOMM_START_EVT, (tBTA_JV *)&evt_data, rs->user_data);
- if (evt_data.status == BTA_JV_SUCCESS)
- {
- PORT_SetDataCOCallback (handle, bta_jv_port_data_co_cback);
+ if (0 == sec_id ||
+ BTM_SetSecurityLevel(false, "JV PORT", sec_id, rs->sec_mask,
+ BT_PSM_RFCOMM, BTM_SEC_PROTO_RFCOMM,
+ rs->local_scn) == false) {
+ APPL_TRACE_ERROR("bta_jv_rfcomm_start_server, run out of sec_id");
+ break;
}
- else
- {
- if (sec_id)
- bta_jv_free_sec_id(&sec_id);
- if (handle)
- RFCOMM_RemoveConnection(handle);
+
+ if (RFCOMM_CreateConnection(sec_id, rs->local_scn, true, BTA_JV_DEF_RFC_MTU,
+ (uint8_t*)bd_addr_any, &handle,
+ bta_jv_port_mgmt_sr_cback) != PORT_SUCCESS) {
+ APPL_TRACE_ERROR(
+ "bta_jv_rfcomm_start_server, RFCOMM_CreateConnection failed");
+ break;
}
+
+ p_cb = bta_jv_alloc_rfc_cb(handle, &p_pcb);
+ if (!p_cb) {
+ APPL_TRACE_ERROR(
+ "bta_jv_rfcomm_start_server, run out of rfc control block");
+ break;
+ }
+
+ p_cb->max_sess = rs->max_session;
+ p_cb->p_cback = rs->p_cback;
+ p_cb->sec_id = sec_id;
+ p_cb->scn = rs->local_scn;
+ p_pcb->state = BTA_JV_ST_SR_LISTEN;
+ p_pcb->user_data = rs->user_data;
+ evt_data.status = BTA_JV_SUCCESS;
+ evt_data.handle = p_cb->handle;
+ evt_data.sec_id = sec_id;
+ evt_data.use_co = true;
+
+ PORT_ClearKeepHandleFlag(handle);
+ PORT_SetEventCallback(handle, bta_jv_port_event_sr_cback);
+ PORT_SetEventMask(handle, event_mask);
+ PORT_GetState(handle, &port_state);
+
+ port_state.fc_type = (PORT_FC_CTS_ON_INPUT | PORT_FC_CTS_ON_OUTPUT);
+
+ PORT_SetState(handle, &port_state);
+ } while (0);
+
+ rs->p_cback(BTA_JV_RFCOMM_START_EVT, (tBTA_JV*)&evt_data, rs->user_data);
+ if (evt_data.status == BTA_JV_SUCCESS) {
+ PORT_SetDataCOCallback(handle, bta_jv_port_data_co_cback);
+ } else {
+ if (sec_id) bta_jv_free_sec_id(&sec_id);
+ if (handle) RFCOMM_RemoveConnection(handle);
+ }
}
/*******************************************************************************
@@ -1992,25 +1899,23 @@
*
******************************************************************************/
-void bta_jv_rfcomm_stop_server(tBTA_JV_MSG *p_data)
-{
- tBTA_JV_API_RFCOMM_SERVER *ls = &(p_data->rfcomm_server);
- tBTA_JV_RFC_CB *p_cb = NULL;
- tBTA_JV_PCB *p_pcb = NULL;
- APPL_TRACE_DEBUG("bta_jv_rfcomm_stop_server");
- if (!ls->handle)
- {
- APPL_TRACE_ERROR("bta_jv_rfcomm_stop_server, jv handle is null");
- return;
- }
- void* user_data = ls->user_data;
- if (!find_rfc_pcb(user_data, &p_cb, &p_pcb))
- return;
- APPL_TRACE_DEBUG("bta_jv_rfcomm_stop_server: p_pcb:%p, p_pcb->port_handle:%d",
- p_pcb, p_pcb->port_handle);
- bta_jv_free_rfc_cb(p_cb, p_pcb);
- APPL_TRACE_DEBUG("bta_jv_rfcomm_stop_server: sec id in use:%d, rfc_cb in use:%d",
- get_sec_id_used(), get_rfc_cb_used());
+void bta_jv_rfcomm_stop_server(tBTA_JV_MSG* p_data) {
+ tBTA_JV_API_RFCOMM_SERVER* ls = &(p_data->rfcomm_server);
+ tBTA_JV_RFC_CB* p_cb = NULL;
+ tBTA_JV_PCB* p_pcb = NULL;
+ APPL_TRACE_DEBUG("bta_jv_rfcomm_stop_server");
+ if (!ls->handle) {
+ APPL_TRACE_ERROR("bta_jv_rfcomm_stop_server, jv handle is null");
+ return;
+ }
+ void* user_data = ls->user_data;
+ if (!find_rfc_pcb(user_data, &p_cb, &p_pcb)) return;
+ APPL_TRACE_DEBUG("bta_jv_rfcomm_stop_server: p_pcb:%p, p_pcb->port_handle:%d",
+ p_pcb, p_pcb->port_handle);
+ bta_jv_free_rfc_cb(p_cb, p_pcb);
+ APPL_TRACE_DEBUG(
+ "bta_jv_rfcomm_stop_server: sec id in use:%d, rfc_cb in use:%d",
+ get_sec_id_used(), get_rfc_cb_used());
}
/*******************************************************************************
@@ -2022,42 +1927,39 @@
* Returns void
*
******************************************************************************/
-void bta_jv_rfcomm_write(tBTA_JV_MSG *p_data)
-{
- tBTA_JV_API_RFCOMM_WRITE *wc = &(p_data->rfcomm_write);
- tBTA_JV_RFC_CB *p_cb = wc->p_cb;
- tBTA_JV_PCB *p_pcb = wc->p_pcb;
+void bta_jv_rfcomm_write(tBTA_JV_MSG* p_data) {
+ tBTA_JV_API_RFCOMM_WRITE* wc = &(p_data->rfcomm_write);
+ tBTA_JV_RFC_CB* p_cb = wc->p_cb;
+ tBTA_JV_PCB* p_pcb = wc->p_pcb;
- if (p_pcb->state == BTA_JV_ST_NONE) {
- APPL_TRACE_ERROR("%s in state BTA_JV_ST_NONE - cannot write", __func__);
- return;
- }
+ if (p_pcb->state == BTA_JV_ST_NONE) {
+ APPL_TRACE_ERROR("%s in state BTA_JV_ST_NONE - cannot write", __func__);
+ return;
+ }
- tBTA_JV_RFCOMM_WRITE evt_data;
- evt_data.status = BTA_JV_FAILURE;
- evt_data.handle = p_cb->handle;
- evt_data.req_id = wc->req_id;
- evt_data.cong = p_pcb->cong;
- evt_data.len = 0;
-
- bta_jv_pm_conn_busy(p_pcb->p_pm_cb);
-
- if (!evt_data.cong &&
- PORT_WriteDataCO(p_pcb->port_handle, &evt_data.len) ==
- PORT_SUCCESS)
- {
- evt_data.status = BTA_JV_SUCCESS;
- }
-
- // Update congestion flag
- evt_data.cong = p_pcb->cong;
-
- if (p_cb->p_cback)
- {
- p_cb->p_cback(BTA_JV_RFCOMM_WRITE_EVT, (tBTA_JV *)&evt_data, p_pcb->user_data);
- } else {
- APPL_TRACE_ERROR("%s No JV callback set", __func__);
- }
+ tBTA_JV_RFCOMM_WRITE evt_data;
+ evt_data.status = BTA_JV_FAILURE;
+ evt_data.handle = p_cb->handle;
+ evt_data.req_id = wc->req_id;
+ evt_data.cong = p_pcb->cong;
+ evt_data.len = 0;
+
+ bta_jv_pm_conn_busy(p_pcb->p_pm_cb);
+
+ if (!evt_data.cong &&
+ PORT_WriteDataCO(p_pcb->port_handle, &evt_data.len) == PORT_SUCCESS) {
+ evt_data.status = BTA_JV_SUCCESS;
+ }
+
+ // Update congestion flag
+ evt_data.cong = p_pcb->cong;
+
+ if (p_cb->p_cback) {
+ p_cb->p_cback(BTA_JV_RFCOMM_WRITE_EVT, (tBTA_JV*)&evt_data,
+ p_pcb->user_data);
+ } else {
+ APPL_TRACE_ERROR("%s No JV callback set", __func__);
+ }
}
/*******************************************************************************
@@ -2069,35 +1971,32 @@
* Returns void
*
*******************************************************************************/
-void bta_jv_set_pm_profile(tBTA_JV_MSG *p_data)
-{
- tBTA_JV_STATUS status;
- tBTA_JV_PM_CB *p_cb;
+void bta_jv_set_pm_profile(tBTA_JV_MSG* p_data) {
+ tBTA_JV_STATUS status;
+ tBTA_JV_PM_CB* p_cb;
- APPL_TRACE_API("bta_jv_set_pm_profile(handle: 0x%x, app_id: %d, init_st: %d)",
- p_data->set_pm.handle, p_data->set_pm.app_id, p_data->set_pm.init_st);
+ APPL_TRACE_API("bta_jv_set_pm_profile(handle: 0x%x, app_id: %d, init_st: %d)",
+ p_data->set_pm.handle, p_data->set_pm.app_id,
+ p_data->set_pm.init_st);
- /* clear PM control block */
- if (p_data->set_pm.app_id == BTA_JV_PM_ID_CLEAR)
- {
- status = bta_jv_free_set_pm_profile_cb(p_data->set_pm.handle);
+ /* clear PM control block */
+ if (p_data->set_pm.app_id == BTA_JV_PM_ID_CLEAR) {
+ status = bta_jv_free_set_pm_profile_cb(p_data->set_pm.handle);
- if (status != BTA_JV_SUCCESS)
- {
- APPL_TRACE_WARNING("bta_jv_set_pm_profile() free pm cb failed: reason %d",
- status);
- }
+ if (status != BTA_JV_SUCCESS) {
+ APPL_TRACE_WARNING("bta_jv_set_pm_profile() free pm cb failed: reason %d",
+ status);
}
- else /* set PM control block */
- {
- p_cb = bta_jv_alloc_set_pm_profile_cb(p_data->set_pm.handle,
- p_data->set_pm.app_id);
+ } else /* set PM control block */
+ {
+ p_cb = bta_jv_alloc_set_pm_profile_cb(p_data->set_pm.handle,
+ p_data->set_pm.app_id);
- if (NULL != p_cb)
- bta_jv_pm_state_change(p_cb, p_data->set_pm.init_st);
- else
- APPL_TRACE_WARNING("bta_jv_alloc_set_pm_profile_cb() failed");
- }
+ if (NULL != p_cb)
+ bta_jv_pm_state_change(p_cb, p_data->set_pm.init_st);
+ else
+ APPL_TRACE_WARNING("bta_jv_alloc_set_pm_profile_cb() failed");
+ }
}
/*******************************************************************************
@@ -2109,46 +2008,42 @@
* Returns void
*
*******************************************************************************/
-void bta_jv_change_pm_state(tBTA_JV_MSG *p_data)
-{
- tBTA_JV_API_PM_STATE_CHANGE *p_msg = (tBTA_JV_API_PM_STATE_CHANGE *)p_data;
+void bta_jv_change_pm_state(tBTA_JV_MSG* p_data) {
+ tBTA_JV_API_PM_STATE_CHANGE* p_msg = (tBTA_JV_API_PM_STATE_CHANGE*)p_data;
- if (p_msg->p_cb)
- bta_jv_pm_state_change(p_msg->p_cb, p_msg->state);
+ if (p_msg->p_cb) bta_jv_pm_state_change(p_msg->p_cb, p_msg->state);
}
-
/*******************************************************************************
*
* Function bta_jv_set_pm_conn_state
*
- * Description Send pm event state change to jv state machine to serialize jv pm changes
+ * Description Send pm event state change to jv state machine to serialize jv pm
+ *changes
* in relation to other jv messages. internal API use mainly.
*
* Params: p_cb: jv pm control block, NULL pointer returns failure
- * new_state: new PM connections state, setting is forced by action function
+ * new_state: new PM connections state, setting is forced by action
+ *function
*
* Returns BTA_JV_SUCCESS, BTA_JV_FAILURE (buffer allocation, or NULL ptr!)
*
*******************************************************************************/
-tBTA_JV_STATUS bta_jv_set_pm_conn_state(tBTA_JV_PM_CB *p_cb, const tBTA_JV_CONN_STATE
- new_st)
-{
- if (p_cb == NULL)
- return BTA_JV_FAILURE;
+tBTA_JV_STATUS bta_jv_set_pm_conn_state(tBTA_JV_PM_CB* p_cb,
+ const tBTA_JV_CONN_STATE new_st) {
+ if (p_cb == NULL) return BTA_JV_FAILURE;
- APPL_TRACE_API("%s: handle:0x%x, state: %d", __func__, p_cb->handle,
- new_st);
+ APPL_TRACE_API("%s: handle:0x%x, state: %d", __func__, p_cb->handle, new_st);
- tBTA_JV_API_PM_STATE_CHANGE *p_msg =
- (tBTA_JV_API_PM_STATE_CHANGE *)osi_malloc(sizeof(tBTA_JV_API_PM_STATE_CHANGE));
- p_msg->hdr.event = BTA_JV_API_PM_STATE_CHANGE_EVT;
- p_msg->p_cb = p_cb;
- p_msg->state = new_st;
+ tBTA_JV_API_PM_STATE_CHANGE* p_msg = (tBTA_JV_API_PM_STATE_CHANGE*)osi_malloc(
+ sizeof(tBTA_JV_API_PM_STATE_CHANGE));
+ p_msg->hdr.event = BTA_JV_API_PM_STATE_CHANGE_EVT;
+ p_msg->p_cb = p_cb;
+ p_msg->state = new_st;
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
- return BTA_JV_SUCCESS;
+ return BTA_JV_SUCCESS;
}
/*******************************************************************************
@@ -2162,10 +2057,9 @@
* Returns void
*
*******************************************************************************/
-static void bta_jv_pm_conn_busy(tBTA_JV_PM_CB *p_cb)
-{
- if ((NULL != p_cb) && (BTA_JV_PM_IDLE_ST == p_cb->state))
- bta_jv_pm_state_change(p_cb, BTA_JV_CONN_BUSY);
+static void bta_jv_pm_conn_busy(tBTA_JV_PM_CB* p_cb) {
+ if ((NULL != p_cb) && (BTA_JV_PM_IDLE_ST == p_cb->state))
+ bta_jv_pm_state_change(p_cb, BTA_JV_CONN_BUSY);
}
/*******************************************************************************
@@ -2179,10 +2073,9 @@
* Returns void
*
*******************************************************************************/
-static void bta_jv_pm_conn_idle(tBTA_JV_PM_CB *p_cb)
-{
- if ((NULL != p_cb) && (BTA_JV_PM_IDLE_ST != p_cb->state))
- bta_jv_pm_state_change(p_cb, BTA_JV_CONN_IDLE);
+static void bta_jv_pm_conn_idle(tBTA_JV_PM_CB* p_cb) {
+ if ((NULL != p_cb) && (BTA_JV_PM_IDLE_ST != p_cb->state))
+ bta_jv_pm_state_change(p_cb, BTA_JV_CONN_IDLE);
}
/*******************************************************************************
@@ -2196,317 +2089,305 @@
* Returns void
*
*******************************************************************************/
-static void bta_jv_pm_state_change(tBTA_JV_PM_CB *p_cb, const tBTA_JV_CONN_STATE state)
-{
- APPL_TRACE_API("bta_jv_pm_state_change(p_cb: 0x%x, handle: 0x%x, busy/idle_state: %d"
- ", app_id: %d, conn_state: %d)", p_cb, p_cb->handle, p_cb->state,
- p_cb->app_id, state);
+static void bta_jv_pm_state_change(tBTA_JV_PM_CB* p_cb,
+ const tBTA_JV_CONN_STATE state) {
+ APPL_TRACE_API(
+ "bta_jv_pm_state_change(p_cb: 0x%x, handle: 0x%x, busy/idle_state: %d"
+ ", app_id: %d, conn_state: %d)",
+ p_cb, p_cb->handle, p_cb->state, p_cb->app_id, state);
- switch (state)
- {
+ switch (state) {
case BTA_JV_CONN_OPEN:
- bta_sys_conn_open(BTA_ID_JV, p_cb->app_id, p_cb->peer_bd_addr);
- break;
+ bta_sys_conn_open(BTA_ID_JV, p_cb->app_id, p_cb->peer_bd_addr);
+ break;
case BTA_JV_CONN_CLOSE:
- bta_sys_conn_close(BTA_ID_JV, p_cb->app_id, p_cb->peer_bd_addr);
- break;
+ bta_sys_conn_close(BTA_ID_JV, p_cb->app_id, p_cb->peer_bd_addr);
+ break;
case BTA_JV_APP_OPEN:
- bta_sys_app_open(BTA_ID_JV, p_cb->app_id, p_cb->peer_bd_addr);
- break;
+ bta_sys_app_open(BTA_ID_JV, p_cb->app_id, p_cb->peer_bd_addr);
+ break;
case BTA_JV_APP_CLOSE:
- bta_sys_app_close(BTA_ID_JV, p_cb->app_id, p_cb->peer_bd_addr);
- break;
+ bta_sys_app_close(BTA_ID_JV, p_cb->app_id, p_cb->peer_bd_addr);
+ break;
case BTA_JV_SCO_OPEN:
- bta_sys_sco_open(BTA_ID_JV, p_cb->app_id, p_cb->peer_bd_addr);
- break;
+ bta_sys_sco_open(BTA_ID_JV, p_cb->app_id, p_cb->peer_bd_addr);
+ break;
case BTA_JV_SCO_CLOSE:
- bta_sys_sco_close(BTA_ID_JV, p_cb->app_id, p_cb->peer_bd_addr);
- break;
+ bta_sys_sco_close(BTA_ID_JV, p_cb->app_id, p_cb->peer_bd_addr);
+ break;
case BTA_JV_CONN_IDLE:
- p_cb->state = BTA_JV_PM_IDLE_ST;
- bta_sys_idle(BTA_ID_JV, p_cb->app_id, p_cb->peer_bd_addr);
- break;
+ p_cb->state = BTA_JV_PM_IDLE_ST;
+ bta_sys_idle(BTA_ID_JV, p_cb->app_id, p_cb->peer_bd_addr);
+ break;
case BTA_JV_CONN_BUSY:
- p_cb->state = BTA_JV_PM_BUSY_ST;
- bta_sys_busy(BTA_ID_JV, p_cb->app_id, p_cb->peer_bd_addr);
- break;
+ p_cb->state = BTA_JV_PM_BUSY_ST;
+ bta_sys_busy(BTA_ID_JV, p_cb->app_id, p_cb->peer_bd_addr);
+ break;
default:
- APPL_TRACE_WARNING("bta_jv_pm_state_change(state: %d): Invalid state", state);
- break;
- }
+ APPL_TRACE_WARNING("bta_jv_pm_state_change(state: %d): Invalid state",
+ state);
+ break;
+ }
}
/**********************************************************************************************/
+static struct fc_channel* fcchan_get(uint16_t chan, char create) {
+ struct fc_channel* t = fc_channels;
+ static tL2CAP_FIXED_CHNL_REG fcr = {
+ .pL2CA_FixedConn_Cb = fcchan_conn_chng_cbk,
+ .pL2CA_FixedData_Cb = fcchan_data_cbk,
+ .default_idle_tout = 0xffff,
+ .fixed_chnl_opts =
+ {
+ .mode = L2CAP_FCR_BASIC_MODE,
+ .max_transmit = 0xFF,
+ .rtrans_tout = 2000,
+ .mon_tout = 12000,
+ .mps = 670,
+ .tx_win_sz = 1,
+ },
+ };
-static struct fc_channel *fcchan_get(uint16_t chan, char create)
-{
- struct fc_channel *t = fc_channels;
- static tL2CAP_FIXED_CHNL_REG fcr = {
- .pL2CA_FixedConn_Cb = fcchan_conn_chng_cbk,
- .pL2CA_FixedData_Cb = fcchan_data_cbk,
- .default_idle_tout = 0xffff,
- .fixed_chnl_opts = {
- .mode = L2CAP_FCR_BASIC_MODE,
- .max_transmit = 0xFF,
- .rtrans_tout = 2000,
- .mon_tout = 12000,
- .mps = 670,
- .tx_win_sz = 1,
- },
- };
+ while (t && t->chan != chan) t = t->next;
- while (t && t->chan != chan)
- t = t->next;
-
- if (t)
- return t;
- else if (!create)
- return NULL; /* we cannot alloc a struct if not asked to */
-
- t = static_cast<struct fc_channel *>(osi_calloc(sizeof(*t)));
- t->chan = chan;
-
- if (!L2CA_RegisterFixedChannel(chan, &fcr)) {
- osi_free(t);
- return NULL;
- }
-
- //link it in
- t->next = fc_channels;
- fc_channels = t;
-
+ if (t)
return t;
+ else if (!create)
+ return NULL; /* we cannot alloc a struct if not asked to */
+
+ t = static_cast<struct fc_channel*>(osi_calloc(sizeof(*t)));
+ t->chan = chan;
+
+ if (!L2CA_RegisterFixedChannel(chan, &fcr)) {
+ osi_free(t);
+ return NULL;
+ }
+
+ // link it in
+ t->next = fc_channels;
+ fc_channels = t;
+
+ return t;
}
/* pass NULL to find servers */
-static struct fc_client *fcclient_find_by_addr(struct fc_client *start, BD_ADDR addr)
-{
- struct fc_client *t = start;
+static struct fc_client* fcclient_find_by_addr(struct fc_client* start,
+ BD_ADDR addr) {
+ struct fc_client* t = start;
- while (t) {
+ while (t) {
+ /* match client if have addr */
+ if (addr && !memcmp(addr, &t->remote_addr, sizeof(t->remote_addr))) break;
- /* match client if have addr */
- if (addr && !memcmp(addr, &t->remote_addr, sizeof(t->remote_addr)))
- break;
+ /* match server if do not have addr */
+ if (!addr && t->server) break;
- /* match server if do not have addr */
- if (!addr && t->server)
- break;
+ t = t->next_all_list;
+ }
- t = t->next_all_list;
- }
-
- return t;
+ return t;
}
-static struct fc_client *fcclient_find_by_id(uint32_t id)
-{
- struct fc_client *t = fc_clients;
+static struct fc_client* fcclient_find_by_id(uint32_t id) {
+ struct fc_client* t = fc_clients;
- while (t && t->id != id)
- t = t->next_all_list;
+ while (t && t->id != id) t = t->next_all_list;
- return t;
+ return t;
}
-static struct fc_client *fcclient_alloc(uint16_t chan, char server, const uint8_t *sec_id_to_use)
-{
- struct fc_channel *fc = fcchan_get(chan, true);
- struct fc_client *t;
- uint8_t sec_id;
+static struct fc_client* fcclient_alloc(uint16_t chan, char server,
+ const uint8_t* sec_id_to_use) {
+ struct fc_channel* fc = fcchan_get(chan, true);
+ struct fc_client* t;
+ uint8_t sec_id;
- if (!fc)
- return NULL;
+ if (!fc) return NULL;
- if (fc->has_server && server)
- return NULL; /* no way to have multiple servers on same channel */
+ if (fc->has_server && server)
+ return NULL; /* no way to have multiple servers on same channel */
- if (sec_id_to_use)
- sec_id = *sec_id_to_use;
- else
- sec_id = bta_jv_alloc_sec_id();
+ if (sec_id_to_use)
+ sec_id = *sec_id_to_use;
+ else
+ sec_id = bta_jv_alloc_sec_id();
- t = static_cast<fc_client *>(osi_calloc(sizeof(*t)));
- // Allocate it a unique ID
- do {
- t->id = ++fc_next_id;
- } while (!t->id || fcclient_find_by_id(t->id));
+ t = static_cast<fc_client*>(osi_calloc(sizeof(*t)));
+ // Allocate it a unique ID
+ do {
+ t->id = ++fc_next_id;
+ } while (!t->id || fcclient_find_by_id(t->id));
- // Populate some params
- t->chan = chan;
- t->server = server;
+ // Populate some params
+ t->chan = chan;
+ t->server = server;
- // Get a security id
- t->sec_id = sec_id;
+ // Get a security id
+ t->sec_id = sec_id;
- // Link it in to global list
- t->next_all_list = fc_clients;
- fc_clients = t;
+ // Link it in to global list
+ t->next_all_list = fc_clients;
+ fc_clients = t;
- // Link it in to channel list
- t->next_chan_list = fc->clients;
- fc->clients = t;
+ // Link it in to channel list
+ t->next_chan_list = fc->clients;
+ fc->clients = t;
- // Update channel if needed
- if (server)
- fc->has_server = true;
+ // Update channel if needed
+ if (server) fc->has_server = true;
- return t;
+ return t;
}
-static void fcclient_free(struct fc_client *fc)
-{
- struct fc_client *t = fc_clients;
- struct fc_channel *tc = fcchan_get(fc->chan, false);
+static void fcclient_free(struct fc_client* fc) {
+ struct fc_client* t = fc_clients;
+ struct fc_channel* tc = fcchan_get(fc->chan, false);
- //remove from global list
- while (t && t->next_all_list != fc)
- t = t->next_all_list;
+ // remove from global list
+ while (t && t->next_all_list != fc) t = t->next_all_list;
- if (!t && fc != fc_clients)
- return; /* prevent double-free */
+ if (!t && fc != fc_clients) return; /* prevent double-free */
+
+ if (t)
+ t->next_all_list = fc->next_all_list;
+ else
+ fc_clients = fc->next_all_list;
+
+ // remove from channel list
+ if (tc) {
+ t = tc->clients;
+
+ while (t && t->next_chan_list != fc) t = t->next_chan_list;
if (t)
- t->next_all_list = fc->next_all_list;
+ t->next_chan_list = fc->next_chan_list;
else
- fc_clients = fc->next_all_list;
+ tc->clients = fc->next_chan_list;
- //remove from channel list
- if (tc) {
- t = tc->clients;
+ // if was server then channel no longer has a server
+ if (fc->server) tc->has_server = false;
+ }
- while (t && t->next_chan_list != fc)
- t = t->next_chan_list;
+ // free security id
+ bta_jv_free_sec_id(&fc->sec_id);
- if (t)
- t->next_chan_list = fc->next_chan_list;
- else
- tc->clients = fc->next_chan_list;
-
- //if was server then channel no longer has a server
- if (fc->server)
- tc->has_server = false;
- }
-
- //free security id
- bta_jv_free_sec_id(&fc->sec_id);
-
- osi_free(fc);
+ osi_free(fc);
}
-static void fcchan_conn_chng_cbk(uint16_t chan, BD_ADDR bd_addr, bool connected, uint16_t reason, tBT_TRANSPORT transport)
-{
- tBTA_JV init_evt;
- tBTA_JV open_evt;
- struct fc_channel *tc;
- struct fc_client *t = NULL, *new_conn;
- tBTA_JV_L2CAP_CBACK *p_cback = NULL;
- char call_init = false;
- void *user_data = NULL;
+static void fcchan_conn_chng_cbk(uint16_t chan, BD_ADDR bd_addr, bool connected,
+ uint16_t reason, tBT_TRANSPORT transport) {
+ tBTA_JV init_evt;
+ tBTA_JV open_evt;
+ struct fc_channel* tc;
+ struct fc_client *t = NULL, *new_conn;
+ tBTA_JV_L2CAP_CBACK* p_cback = NULL;
+ char call_init = false;
+ void* user_data = NULL;
-
- tc = fcchan_get(chan, false);
- if (tc) {
- t = fcclient_find_by_addr(tc->clients, bd_addr); // try to find an open socked for that addr
- if (t) {
- p_cback = t->p_cback;
- user_data = t->user_data;
- } else {
- t = fcclient_find_by_addr(tc->clients, NULL); // try to find a listening socked for that channel
- if (t) {
- //found: create a normal connection socket and assign the connection to it
- new_conn = fcclient_alloc(chan, false, &t->sec_id);
- if (new_conn){
-
- memcpy(&new_conn->remote_addr, bd_addr, sizeof(new_conn->remote_addr));
- new_conn->p_cback = NULL; //for now
- new_conn->init_called = true; /*nop need to do it again */
-
- p_cback = t->p_cback;
- user_data = t->user_data;
-
- t = new_conn;
- }
- } else {
- //drop it
- return;
- }
- }
- }
-
+ tc = fcchan_get(chan, false);
+ if (tc) {
+ t = fcclient_find_by_addr(
+ tc->clients, bd_addr); // try to find an open socked for that addr
if (t) {
+ p_cback = t->p_cback;
+ user_data = t->user_data;
+ } else {
+ t = fcclient_find_by_addr(
+ tc->clients,
+ NULL); // try to find a listening socked for that channel
+ if (t) {
+ // found: create a normal connection socket and assign the connection to
+ // it
+ new_conn = fcclient_alloc(chan, false, &t->sec_id);
+ if (new_conn) {
+ memcpy(&new_conn->remote_addr, bd_addr,
+ sizeof(new_conn->remote_addr));
+ new_conn->p_cback = NULL; // for now
+ new_conn->init_called = true; /*nop need to do it again */
- if (!t->init_called) {
+ p_cback = t->p_cback;
+ user_data = t->user_data;
- call_init = true;
- t->init_called = true;
-
- init_evt.l2c_cl_init.handle = t->id;
- init_evt.l2c_cl_init.status = BTA_JV_SUCCESS;
- init_evt.l2c_cl_init.sec_id = t->sec_id;
+ t = new_conn;
}
+ } else {
+ // drop it
+ return;
+ }
+ }
+ }
- open_evt.l2c_open.handle = t->id;
- open_evt.l2c_open.tx_mtu = 23; /* 23, why not ?*/
- memcpy(&open_evt.l2c_le_open.rem_bda, &t->remote_addr, sizeof(open_evt.l2c_le_open.rem_bda));
- open_evt.l2c_le_open.p_p_cback = (void**)&t->p_cback;
- open_evt.l2c_le_open.p_user_data = &t->user_data;
- open_evt.l2c_le_open.status = BTA_JV_SUCCESS;
+ if (t) {
+ if (!t->init_called) {
+ call_init = true;
+ t->init_called = true;
- if (connected) {
- open_evt.l2c_open.status = BTA_JV_SUCCESS;
- } else {
- fcclient_free(t);
- open_evt.l2c_open.status = BTA_JV_FAILURE;
- }
+ init_evt.l2c_cl_init.handle = t->id;
+ init_evt.l2c_cl_init.status = BTA_JV_SUCCESS;
+ init_evt.l2c_cl_init.sec_id = t->sec_id;
}
- if (call_init)
- p_cback(BTA_JV_L2CAP_CL_INIT_EVT, &init_evt, user_data);
+ open_evt.l2c_open.handle = t->id;
+ open_evt.l2c_open.tx_mtu = 23; /* 23, why not ?*/
+ memcpy(&open_evt.l2c_le_open.rem_bda, &t->remote_addr,
+ sizeof(open_evt.l2c_le_open.rem_bda));
+ open_evt.l2c_le_open.p_p_cback = (void**)&t->p_cback;
+ open_evt.l2c_le_open.p_user_data = &t->user_data;
+ open_evt.l2c_le_open.status = BTA_JV_SUCCESS;
- //call this with lock taken so socket does not disappear from under us */
- if (p_cback) {
- p_cback(BTA_JV_L2CAP_OPEN_EVT, &open_evt, user_data);
- if (!t->p_cback) /* no callback set, means they do not want this one... */
- fcclient_free(t);
+ if (connected) {
+ open_evt.l2c_open.status = BTA_JV_SUCCESS;
+ } else {
+ fcclient_free(t);
+ open_evt.l2c_open.status = BTA_JV_FAILURE;
}
+ }
+
+ if (call_init) p_cback(BTA_JV_L2CAP_CL_INIT_EVT, &init_evt, user_data);
+
+ // call this with lock taken so socket does not disappear from under us */
+ if (p_cback) {
+ p_cback(BTA_JV_L2CAP_OPEN_EVT, &open_evt, user_data);
+ if (!t->p_cback) /* no callback set, means they do not want this one... */
+ fcclient_free(t);
+ }
}
-static void fcchan_data_cbk(uint16_t chan, BD_ADDR bd_addr, BT_HDR *p_buf)
-{
- tBTA_JV evt_data;
- struct fc_channel *tc;
- struct fc_client *t = NULL;
- tBTA_JV_L2CAP_CBACK *sock_cback = NULL;
- void *sock_user_data;
+static void fcchan_data_cbk(uint16_t chan, BD_ADDR bd_addr, BT_HDR* p_buf) {
+ tBTA_JV evt_data;
+ struct fc_channel* tc;
+ struct fc_client* t = NULL;
+ tBTA_JV_L2CAP_CBACK* sock_cback = NULL;
+ void* sock_user_data;
- tc = fcchan_get(chan, false);
- if (tc) {
- t = fcclient_find_by_addr(tc->clients, bd_addr); // try to find an open socked for that addr and channel
- if (!t) {
- //no socket -> drop it
- return;
- }
+ tc = fcchan_get(chan, false);
+ if (tc) {
+ t = fcclient_find_by_addr(
+ tc->clients,
+ bd_addr); // try to find an open socked for that addr and channel
+ if (!t) {
+ // no socket -> drop it
+ return;
}
+ }
- sock_cback = t->p_cback;
- sock_user_data = t->user_data;
- evt_data.le_data_ind.handle = t->id;
- evt_data.le_data_ind.p_buf = p_buf;
+ sock_cback = t->p_cback;
+ sock_user_data = t->user_data;
+ evt_data.le_data_ind.handle = t->id;
+ evt_data.le_data_ind.p_buf = p_buf;
- if (sock_cback)
- sock_cback(BTA_JV_L2CAP_DATA_IND_EVT, &evt_data, sock_user_data);
+ if (sock_cback)
+ sock_cback(BTA_JV_L2CAP_DATA_IND_EVT, &evt_data, sock_user_data);
}
-
/*******************************************************************************
*
* Function bta_jv_l2cap_connect_le
@@ -2516,49 +2397,45 @@
* Returns void
*
******************************************************************************/
-void bta_jv_l2cap_connect_le(tBTA_JV_MSG *p_data)
-{
- tBTA_JV_API_L2CAP_CONNECT *cc = &(p_data->l2cap_connect);
- tBTA_JV evt;
- uint32_t id;
- char call_init_f = true;
- struct fc_client *t;
+void bta_jv_l2cap_connect_le(tBTA_JV_MSG* p_data) {
+ tBTA_JV_API_L2CAP_CONNECT* cc = &(p_data->l2cap_connect);
+ tBTA_JV evt;
+ uint32_t id;
+ char call_init_f = true;
+ struct fc_client* t;
- evt.l2c_cl_init.handle = GAP_INVALID_HANDLE;
- evt.l2c_cl_init.status = BTA_JV_FAILURE;
+ evt.l2c_cl_init.handle = GAP_INVALID_HANDLE;
+ evt.l2c_cl_init.status = BTA_JV_FAILURE;
- t = fcclient_alloc(cc->remote_chan, false, NULL);
- if (!t) {
- cc->p_cback(BTA_JV_L2CAP_CL_INIT_EVT, &evt, cc->user_data);
- return;
- }
+ t = fcclient_alloc(cc->remote_chan, false, NULL);
+ if (!t) {
+ cc->p_cback(BTA_JV_L2CAP_CL_INIT_EVT, &evt, cc->user_data);
+ return;
+ }
- t->p_cback = cc->p_cback;
- t->user_data = cc->user_data;
- memcpy(&t->remote_addr, &cc->peer_bd_addr, sizeof(t->remote_addr));
- id = t->id;
- t->init_called = false;
+ t->p_cback = cc->p_cback;
+ t->user_data = cc->user_data;
+ memcpy(&t->remote_addr, &cc->peer_bd_addr, sizeof(t->remote_addr));
+ id = t->id;
+ t->init_called = false;
- if (L2CA_ConnectFixedChnl(t->chan, t->remote_addr)) {
+ if (L2CA_ConnectFixedChnl(t->chan, t->remote_addr)) {
+ evt.l2c_cl_init.status = BTA_JV_SUCCESS;
+ evt.l2c_cl_init.handle = id;
+ }
- evt.l2c_cl_init.status = BTA_JV_SUCCESS;
- evt.l2c_cl_init.handle = id;
- }
-
- //it could have been deleted/moved from under us, so re-find it */
- t = fcclient_find_by_id(id);
- if (t) {
- if (evt.l2c_cl_init.status == BTA_JV_SUCCESS)
- call_init_f = !t->init_called;
- else
- fcclient_free(t);
- }
- if (call_init_f)
- cc->p_cback(BTA_JV_L2CAP_CL_INIT_EVT, &evt, cc->user_data);
- t->init_called = true;
+ // it could have been deleted/moved from under us, so re-find it */
+ t = fcclient_find_by_id(id);
+ if (t) {
+ if (evt.l2c_cl_init.status == BTA_JV_SUCCESS)
+ call_init_f = !t->init_called;
+ else
+ fcclient_free(t);
+ }
+ if (call_init_f) cc->p_cback(BTA_JV_L2CAP_CL_INIT_EVT, &evt, cc->user_data);
+ t->init_called = true;
}
-
/*******************************************************************************
*
* Function bta_jv_l2cap_stop_server_le
@@ -2568,35 +2445,33 @@
* Returns void
*
******************************************************************************/
-void bta_jv_l2cap_stop_server_le(tBTA_JV_MSG *p_data)
-{
- tBTA_JV evt;
- tBTA_JV_API_L2CAP_SERVER *ls = &(p_data->l2cap_server);
- tBTA_JV_L2CAP_CBACK *p_cback = NULL;
- struct fc_channel *fcchan;
- struct fc_client *fcclient;
- void *user_data;
+void bta_jv_l2cap_stop_server_le(tBTA_JV_MSG* p_data) {
+ tBTA_JV evt;
+ tBTA_JV_API_L2CAP_SERVER* ls = &(p_data->l2cap_server);
+ tBTA_JV_L2CAP_CBACK* p_cback = NULL;
+ struct fc_channel* fcchan;
+ struct fc_client* fcclient;
+ void* user_data;
- evt.l2c_close.status = BTA_JV_FAILURE;
- evt.l2c_close.async = false;
- evt.l2c_close.handle = GAP_INVALID_HANDLE;
+ evt.l2c_close.status = BTA_JV_FAILURE;
+ evt.l2c_close.async = false;
+ evt.l2c_close.handle = GAP_INVALID_HANDLE;
- fcchan = fcchan_get(ls->local_chan, false);
- if (fcchan) {
- while((fcclient = fcchan->clients)) {
- p_cback = fcclient->p_cback;
- user_data = fcclient->user_data;
+ fcchan = fcchan_get(ls->local_chan, false);
+ if (fcchan) {
+ while ((fcclient = fcchan->clients)) {
+ p_cback = fcclient->p_cback;
+ user_data = fcclient->user_data;
- evt.l2c_close.handle = fcclient->id;
- evt.l2c_close.status = BTA_JV_SUCCESS;
- evt.l2c_close.async = false;
+ evt.l2c_close.handle = fcclient->id;
+ evt.l2c_close.status = BTA_JV_SUCCESS;
+ evt.l2c_close.async = false;
- fcclient_free(fcclient);
+ fcclient_free(fcclient);
- if (p_cback)
- p_cback(BTA_JV_L2CAP_CLOSE_EVT, &evt, user_data);
- }
+ if (p_cback) p_cback(BTA_JV_L2CAP_CLOSE_EVT, &evt, user_data);
}
+ }
}
/*******************************************************************************
@@ -2608,30 +2483,27 @@
* Returns void
*
******************************************************************************/
-void bta_jv_l2cap_start_server_le(tBTA_JV_MSG *p_data)
-{
- tBTA_JV_API_L2CAP_SERVER *ss = &(p_data->l2cap_server);
- tBTA_JV_L2CAP_START evt_data;
- struct fc_client *t;
+void bta_jv_l2cap_start_server_le(tBTA_JV_MSG* p_data) {
+ tBTA_JV_API_L2CAP_SERVER* ss = &(p_data->l2cap_server);
+ tBTA_JV_L2CAP_START evt_data;
+ struct fc_client* t;
- evt_data.handle = GAP_INVALID_HANDLE;
- evt_data.status = BTA_JV_FAILURE;
+ evt_data.handle = GAP_INVALID_HANDLE;
+ evt_data.status = BTA_JV_FAILURE;
+ t = fcclient_alloc(ss->local_chan, true, NULL);
+ if (!t) goto out;
- t = fcclient_alloc(ss->local_chan, true, NULL);
- if (!t)
- goto out;
+ t->p_cback = ss->p_cback;
+ t->user_data = ss->user_data;
- t->p_cback = ss->p_cback;
- t->user_data = ss->user_data;
-
- //if we got here, we're registered...
- evt_data.status = BTA_JV_SUCCESS;
- evt_data.handle = t->id;
- evt_data.sec_id = t->sec_id;
+ // if we got here, we're registered...
+ evt_data.status = BTA_JV_SUCCESS;
+ evt_data.handle = t->id;
+ evt_data.sec_id = t->sec_id;
out:
- ss->p_cback(BTA_JV_L2CAP_START_EVT, (tBTA_JV *)&evt_data, ss->user_data);
+ ss->p_cback(BTA_JV_L2CAP_START_EVT, (tBTA_JV*)&evt_data, ss->user_data);
}
/*******************************************************************************
@@ -2643,12 +2515,10 @@
* Returns void
*
******************************************************************************/
-extern void bta_jv_l2cap_close_fixed (tBTA_JV_MSG *p_data)
-{
- tBTA_JV_API_L2CAP_CLOSE *cc = &(p_data->l2cap_close);
- struct fc_client *t;
+extern void bta_jv_l2cap_close_fixed(tBTA_JV_MSG* p_data) {
+ tBTA_JV_API_L2CAP_CLOSE* cc = &(p_data->l2cap_close);
+ struct fc_client* t;
- t = fcclient_find_by_id(cc->handle);
- if (t)
- fcclient_free(t);
+ t = fcclient_find_by_id(cc->handle);
+ if (t) fcclient_free(t);
}
diff --git a/bta/jv/bta_jv_api.cc b/bta/jv/bta_jv_api.cc
index 68bbcbe..a1de8db 100644
--- a/bta/jv/bta_jv_api.cc
+++ b/bta/jv/bta_jv_api.cc
@@ -24,25 +24,21 @@
******************************************************************************/
#include <string.h>
+#include "bt_common.h"
#include "bta_api.h"
-#include "bta_sys.h"
#include "bta_jv_api.h"
#include "bta_jv_int.h"
-#include "bt_common.h"
+#include "bta_sys.h"
+#include "gap_api.h"
#include "port_api.h"
#include "sdp_api.h"
#include "utl.h"
-#include "gap_api.h"
/*****************************************************************************
* Constants
****************************************************************************/
-static const tBTA_SYS_REG bta_jv_reg =
-{
- bta_jv_sm_execute,
- NULL
-};
+static const tBTA_SYS_REG bta_jv_reg = {bta_jv_sm_execute, NULL};
/*******************************************************************************
*
@@ -58,38 +54,33 @@
* BTA_JV_FAIL if internal failure.
*
******************************************************************************/
-tBTA_JV_STATUS BTA_JvEnable(tBTA_JV_DM_CBACK *p_cback)
-{
- tBTA_JV_STATUS status = BTA_JV_FAILURE;
- int i;
+tBTA_JV_STATUS BTA_JvEnable(tBTA_JV_DM_CBACK* p_cback) {
+ tBTA_JV_STATUS status = BTA_JV_FAILURE;
+ int i;
- APPL_TRACE_API( "BTA_JvEnable");
- if(p_cback && false == bta_sys_is_register(BTA_ID_JV))
- {
- memset(&bta_jv_cb, 0, sizeof(tBTA_JV_CB));
- /* set handle to invalid value by default */
- for (i=0; i<BTA_JV_PM_MAX_NUM; i++)
- {
- bta_jv_cb.pm_cb[i].handle = BTA_JV_PM_HANDLE_CLEAR;
- }
-
- /* register with BTA system manager */
- bta_sys_register(BTA_ID_JV, &bta_jv_reg);
-
- if (p_cback) {
- tBTA_JV_API_ENABLE *p_buf =
- (tBTA_JV_API_ENABLE *)osi_malloc(sizeof(tBTA_JV_API_ENABLE));
- p_buf->hdr.event = BTA_JV_API_ENABLE_EVT;
- p_buf->p_cback = p_cback;
- bta_sys_sendmsg(p_buf);
- status = BTA_JV_SUCCESS;
- }
+ APPL_TRACE_API("BTA_JvEnable");
+ if (p_cback && false == bta_sys_is_register(BTA_ID_JV)) {
+ memset(&bta_jv_cb, 0, sizeof(tBTA_JV_CB));
+ /* set handle to invalid value by default */
+ for (i = 0; i < BTA_JV_PM_MAX_NUM; i++) {
+ bta_jv_cb.pm_cb[i].handle = BTA_JV_PM_HANDLE_CLEAR;
}
- else
- {
- APPL_TRACE_ERROR("JVenable fails");
- }
- return(status);
+
+ /* register with BTA system manager */
+ bta_sys_register(BTA_ID_JV, &bta_jv_reg);
+
+ if (p_cback) {
+ tBTA_JV_API_ENABLE* p_buf =
+ (tBTA_JV_API_ENABLE*)osi_malloc(sizeof(tBTA_JV_API_ENABLE));
+ p_buf->hdr.event = BTA_JV_API_ENABLE_EVT;
+ p_buf->p_cback = p_cback;
+ bta_sys_sendmsg(p_buf);
+ status = BTA_JV_SUCCESS;
+ }
+ } else {
+ APPL_TRACE_ERROR("JVenable fails");
+ }
+ return (status);
}
/*******************************************************************************
@@ -101,16 +92,15 @@
* Returns void
*
******************************************************************************/
-void BTA_JvDisable(void)
-{
- BT_HDR *p_buf = (BT_HDR *)osi_malloc(sizeof(BT_HDR));
+void BTA_JvDisable(void) {
+ BT_HDR* p_buf = (BT_HDR*)osi_malloc(sizeof(BT_HDR));
- APPL_TRACE_API("%s", __func__);
+ APPL_TRACE_API("%s", __func__);
- bta_sys_deregister(BTA_ID_JV);
- p_buf->event = BTA_JV_API_DISABLE_EVT;
+ bta_sys_deregister(BTA_ID_JV);
+ p_buf->event = BTA_JV_API_DISABLE_EVT;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -123,19 +113,16 @@
* false if not.
*
******************************************************************************/
-bool BTA_JvIsEncrypted(BD_ADDR bd_addr)
-{
- bool is_encrypted = false;
- uint8_t sec_flags, le_flags;
+bool BTA_JvIsEncrypted(BD_ADDR bd_addr) {
+ bool is_encrypted = false;
+ uint8_t sec_flags, le_flags;
- if (BTM_GetSecurityFlags(bd_addr, &sec_flags) &&
- BTM_GetSecurityFlagsByTransport(bd_addr, &le_flags, BT_TRANSPORT_LE))
- {
- if(sec_flags & BTM_SEC_FLAG_ENCRYPTED ||
- le_flags & BTM_SEC_FLAG_ENCRYPTED)
- is_encrypted = true;
- }
- return is_encrypted;
+ if (BTM_GetSecurityFlags(bd_addr, &sec_flags) &&
+ BTM_GetSecurityFlagsByTransport(bd_addr, &le_flags, BT_TRANSPORT_LE)) {
+ if (sec_flags & BTM_SEC_FLAG_ENCRYPTED || le_flags & BTM_SEC_FLAG_ENCRYPTED)
+ is_encrypted = true;
+ }
+ return is_encrypted;
}
/*******************************************************************************
*
@@ -144,7 +131,8 @@
* Description This function reserves a SCN (server channel number) for
* applications running over RFCOMM, L2CAP of L2CAP_LE.
* It is primarily called by server profiles/applications to
- * register their SCN into the SDP database. The SCN is reported
+ * register their SCN into the SDP database. The SCN is
+ *reported
* by the tBTA_JV_DM_CBACK callback with a BTA_JV_GET_SCN_EVT
* for RFCOMM channels and BTA_JV_GET_PSM_EVT for L2CAP and LE.
* If the SCN/PSM reported is 0, that means all resources are
@@ -159,22 +147,21 @@
* BTA_JV_FAILURE, otherwise.
*
******************************************************************************/
-tBTA_JV_STATUS BTA_JvGetChannelId(int conn_type, void* user_data, int32_t channel)
-{
- tBTA_JV_API_ALLOC_CHANNEL *p_msg =
- (tBTA_JV_API_ALLOC_CHANNEL *)osi_malloc(sizeof(tBTA_JV_API_ALLOC_CHANNEL));
+tBTA_JV_STATUS BTA_JvGetChannelId(int conn_type, void* user_data,
+ int32_t channel) {
+ tBTA_JV_API_ALLOC_CHANNEL* p_msg =
+ (tBTA_JV_API_ALLOC_CHANNEL*)osi_malloc(sizeof(tBTA_JV_API_ALLOC_CHANNEL));
- APPL_TRACE_API("%s", __func__);
+ APPL_TRACE_API("%s", __func__);
- p_msg->hdr.event = BTA_JV_API_GET_CHANNEL_EVT;
- p_msg->type = conn_type;
- p_msg->channel = channel;
- p_msg->user_data = user_data;
-
- bta_sys_sendmsg(p_msg);
+ p_msg->hdr.event = BTA_JV_API_GET_CHANNEL_EVT;
+ p_msg->type = conn_type;
+ p_msg->channel = channel;
+ p_msg->user_data = user_data;
- return BTA_JV_SUCCESS;
+ bta_sys_sendmsg(p_msg);
+ return BTA_JV_SUCCESS;
}
/*******************************************************************************
@@ -191,20 +178,19 @@
* BTA_JV_FAILURE, otherwise.
*
******************************************************************************/
-tBTA_JV_STATUS BTA_JvFreeChannel(uint16_t channel, int conn_type)
-{
- tBTA_JV_API_FREE_CHANNEL *p_msg =
- (tBTA_JV_API_FREE_CHANNEL *)osi_malloc(sizeof(tBTA_JV_API_FREE_CHANNEL));
+tBTA_JV_STATUS BTA_JvFreeChannel(uint16_t channel, int conn_type) {
+ tBTA_JV_API_FREE_CHANNEL* p_msg =
+ (tBTA_JV_API_FREE_CHANNEL*)osi_malloc(sizeof(tBTA_JV_API_FREE_CHANNEL));
- APPL_TRACE_API("%s", __func__);
+ APPL_TRACE_API("%s", __func__);
- p_msg->hdr.event = BTA_JV_API_FREE_SCN_EVT;
- p_msg->scn = channel;
- p_msg->type = conn_type;
+ p_msg->hdr.event = BTA_JV_API_FREE_SCN_EVT;
+ p_msg->scn = channel;
+ p_msg->type = conn_type;
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
- return BTA_JV_SUCCESS;
+ return BTA_JV_SUCCESS;
}
/*******************************************************************************
@@ -221,23 +207,22 @@
*
******************************************************************************/
tBTA_JV_STATUS BTA_JvStartDiscovery(BD_ADDR bd_addr, uint16_t num_uuid,
- tSDP_UUID *p_uuid_list, void * user_data)
-{
- tBTA_JV_API_START_DISCOVERY *p_msg =
- (tBTA_JV_API_START_DISCOVERY *)osi_malloc(sizeof(tBTA_JV_API_START_DISCOVERY));
+ tSDP_UUID* p_uuid_list, void* user_data) {
+ tBTA_JV_API_START_DISCOVERY* p_msg = (tBTA_JV_API_START_DISCOVERY*)osi_malloc(
+ sizeof(tBTA_JV_API_START_DISCOVERY));
- APPL_TRACE_API("%s", __func__);
+ APPL_TRACE_API("%s", __func__);
- p_msg->hdr.event = BTA_JV_API_START_DISCOVERY_EVT;
- bdcpy(p_msg->bd_addr, bd_addr);
- p_msg->num_uuid = num_uuid;
- memcpy(p_msg->uuid_list, p_uuid_list, num_uuid * sizeof(tSDP_UUID));
- p_msg->num_attr = 0;
- p_msg->user_data = user_data;
+ p_msg->hdr.event = BTA_JV_API_START_DISCOVERY_EVT;
+ bdcpy(p_msg->bd_addr, bd_addr);
+ p_msg->num_uuid = num_uuid;
+ memcpy(p_msg->uuid_list, p_uuid_list, num_uuid * sizeof(tSDP_UUID));
+ p_msg->num_attr = 0;
+ p_msg->user_data = user_data;
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
- return BTA_JV_SUCCESS;
+ return BTA_JV_SUCCESS;
}
/*******************************************************************************
@@ -252,19 +237,18 @@
* BTA_JV_FAILURE, otherwise.
*
******************************************************************************/
-tBTA_JV_STATUS BTA_JvCreateRecordByUser(void *user_data)
-{
- tBTA_JV_API_CREATE_RECORD *p_msg =
- (tBTA_JV_API_CREATE_RECORD *)osi_malloc(sizeof(tBTA_JV_API_CREATE_RECORD));
+tBTA_JV_STATUS BTA_JvCreateRecordByUser(void* user_data) {
+ tBTA_JV_API_CREATE_RECORD* p_msg =
+ (tBTA_JV_API_CREATE_RECORD*)osi_malloc(sizeof(tBTA_JV_API_CREATE_RECORD));
- APPL_TRACE_API("%s", __func__);
+ APPL_TRACE_API("%s", __func__);
- p_msg->hdr.event = BTA_JV_API_CREATE_RECORD_EVT;
- p_msg->user_data = user_data;
+ p_msg->hdr.event = BTA_JV_API_CREATE_RECORD_EVT;
+ p_msg->user_data = user_data;
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
- return BTA_JV_SUCCESS;
+ return BTA_JV_SUCCESS;
}
/*******************************************************************************
@@ -277,19 +261,18 @@
* BTA_JV_FAILURE, otherwise.
*
******************************************************************************/
-tBTA_JV_STATUS BTA_JvDeleteRecord(uint32_t handle)
-{
- tBTA_JV_API_ADD_ATTRIBUTE *p_msg =
- (tBTA_JV_API_ADD_ATTRIBUTE *)osi_malloc(sizeof(tBTA_JV_API_ADD_ATTRIBUTE));
+tBTA_JV_STATUS BTA_JvDeleteRecord(uint32_t handle) {
+ tBTA_JV_API_ADD_ATTRIBUTE* p_msg =
+ (tBTA_JV_API_ADD_ATTRIBUTE*)osi_malloc(sizeof(tBTA_JV_API_ADD_ATTRIBUTE));
- APPL_TRACE_API("%s", __func__);
+ APPL_TRACE_API("%s", __func__);
- p_msg->hdr.event = BTA_JV_API_DELETE_RECORD_EVT;
- p_msg->handle = handle;
+ p_msg->hdr.event = BTA_JV_API_DELETE_RECORD_EVT;
+ p_msg->handle = handle;
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
- return BTA_JV_SUCCESS;
+ return BTA_JV_SUCCESS;
}
/*******************************************************************************
@@ -308,41 +291,41 @@
*
******************************************************************************/
tBTA_JV_STATUS BTA_JvL2capConnectLE(tBTA_SEC sec_mask, tBTA_JV_ROLE role,
- const tL2CAP_ERTM_INFO *ertm_info, uint16_t remote_chan,
- uint16_t rx_mtu, tL2CAP_CFG_INFO *cfg,
- BD_ADDR peer_bd_addr, tBTA_JV_L2CAP_CBACK *p_cback, void *user_data)
-{
- APPL_TRACE_API("%s", __func__);
+ const tL2CAP_ERTM_INFO* ertm_info,
+ uint16_t remote_chan, uint16_t rx_mtu,
+ tL2CAP_CFG_INFO* cfg, BD_ADDR peer_bd_addr,
+ tBTA_JV_L2CAP_CBACK* p_cback,
+ void* user_data) {
+ APPL_TRACE_API("%s", __func__);
- if (p_cback == NULL)
- return BTA_JV_FAILURE; /* Nothing to do */
+ if (p_cback == NULL) return BTA_JV_FAILURE; /* Nothing to do */
- tBTA_JV_API_L2CAP_CONNECT *p_msg =
- (tBTA_JV_API_L2CAP_CONNECT *)osi_malloc(sizeof(tBTA_JV_API_L2CAP_CONNECT));
- p_msg->hdr.event = BTA_JV_API_L2CAP_CONNECT_LE_EVT;
- p_msg->sec_mask = sec_mask;
- p_msg->role = role;
- p_msg->remote_chan = remote_chan;
- p_msg->rx_mtu = rx_mtu;
- if (cfg != NULL) {
- p_msg->has_cfg = true;
- p_msg->cfg = *cfg;
- } else {
- p_msg->has_cfg = false;
- }
- if (ertm_info != NULL) {
- p_msg->has_ertm_info = true;
- p_msg->ertm_info = *ertm_info;
- } else {
- p_msg->has_ertm_info = false;
- }
- memcpy(p_msg->peer_bd_addr, peer_bd_addr, sizeof(BD_ADDR));
- p_msg->p_cback = p_cback;
- p_msg->user_data = user_data;
+ tBTA_JV_API_L2CAP_CONNECT* p_msg =
+ (tBTA_JV_API_L2CAP_CONNECT*)osi_malloc(sizeof(tBTA_JV_API_L2CAP_CONNECT));
+ p_msg->hdr.event = BTA_JV_API_L2CAP_CONNECT_LE_EVT;
+ p_msg->sec_mask = sec_mask;
+ p_msg->role = role;
+ p_msg->remote_chan = remote_chan;
+ p_msg->rx_mtu = rx_mtu;
+ if (cfg != NULL) {
+ p_msg->has_cfg = true;
+ p_msg->cfg = *cfg;
+ } else {
+ p_msg->has_cfg = false;
+ }
+ if (ertm_info != NULL) {
+ p_msg->has_ertm_info = true;
+ p_msg->ertm_info = *ertm_info;
+ } else {
+ p_msg->has_ertm_info = false;
+ }
+ memcpy(p_msg->peer_bd_addr, peer_bd_addr, sizeof(BD_ADDR));
+ p_msg->p_cback = p_cback;
+ p_msg->user_data = user_data;
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
- return BTA_JV_SUCCESS;
+ return BTA_JV_SUCCESS;
}
/*******************************************************************************
@@ -360,43 +343,44 @@
* BTA_JV_FAILURE, otherwise.
*
******************************************************************************/
-tBTA_JV_STATUS BTA_JvL2capConnect(int conn_type, tBTA_SEC sec_mask, tBTA_JV_ROLE role,
- const tL2CAP_ERTM_INFO *ertm_info, uint16_t remote_psm,
- uint16_t rx_mtu, tL2CAP_CFG_INFO *cfg,
- BD_ADDR peer_bd_addr, tBTA_JV_L2CAP_CBACK *p_cback, void *user_data)
-{
- APPL_TRACE_API("%s", __func__);
+tBTA_JV_STATUS BTA_JvL2capConnect(int conn_type, tBTA_SEC sec_mask,
+ tBTA_JV_ROLE role,
+ const tL2CAP_ERTM_INFO* ertm_info,
+ uint16_t remote_psm, uint16_t rx_mtu,
+ tL2CAP_CFG_INFO* cfg, BD_ADDR peer_bd_addr,
+ tBTA_JV_L2CAP_CBACK* p_cback,
+ void* user_data) {
+ APPL_TRACE_API("%s", __func__);
- if (p_cback == NULL)
- return BTA_JV_FAILURE; /* Nothing to do */
+ if (p_cback == NULL) return BTA_JV_FAILURE; /* Nothing to do */
- tBTA_JV_API_L2CAP_CONNECT *p_msg =
- (tBTA_JV_API_L2CAP_CONNECT *)osi_malloc(sizeof(tBTA_JV_API_L2CAP_CONNECT));
- p_msg->hdr.event = BTA_JV_API_L2CAP_CONNECT_EVT;
- p_msg->type = conn_type;
- p_msg->sec_mask = sec_mask;
- p_msg->role = role;
- p_msg->remote_psm = remote_psm;
- p_msg->rx_mtu = rx_mtu;
- if (cfg != NULL) {
- p_msg->has_cfg = true;
- p_msg->cfg = *cfg;
- } else {
- p_msg->has_cfg = false;
- }
- if (ertm_info != NULL) {
- p_msg->has_ertm_info = true;
- p_msg->ertm_info = *ertm_info;
- } else {
- p_msg->has_ertm_info = false;
- }
- memcpy(p_msg->peer_bd_addr, peer_bd_addr, sizeof(BD_ADDR));
- p_msg->p_cback = p_cback;
- p_msg->user_data = user_data;
+ tBTA_JV_API_L2CAP_CONNECT* p_msg =
+ (tBTA_JV_API_L2CAP_CONNECT*)osi_malloc(sizeof(tBTA_JV_API_L2CAP_CONNECT));
+ p_msg->hdr.event = BTA_JV_API_L2CAP_CONNECT_EVT;
+ p_msg->type = conn_type;
+ p_msg->sec_mask = sec_mask;
+ p_msg->role = role;
+ p_msg->remote_psm = remote_psm;
+ p_msg->rx_mtu = rx_mtu;
+ if (cfg != NULL) {
+ p_msg->has_cfg = true;
+ p_msg->cfg = *cfg;
+ } else {
+ p_msg->has_cfg = false;
+ }
+ if (ertm_info != NULL) {
+ p_msg->has_ertm_info = true;
+ p_msg->ertm_info = *ertm_info;
+ } else {
+ p_msg->has_ertm_info = false;
+ }
+ memcpy(p_msg->peer_bd_addr, peer_bd_addr, sizeof(BD_ADDR));
+ p_msg->p_cback = p_cback;
+ p_msg->user_data = user_data;
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
- return BTA_JV_SUCCESS;
+ return BTA_JV_SUCCESS;
}
/*******************************************************************************
@@ -409,57 +393,57 @@
* BTA_JV_FAILURE, otherwise.
*
******************************************************************************/
-tBTA_JV_STATUS BTA_JvL2capClose(uint32_t handle)
-{
- tBTA_JV_STATUS status = BTA_JV_FAILURE;
+tBTA_JV_STATUS BTA_JvL2capClose(uint32_t handle) {
+ tBTA_JV_STATUS status = BTA_JV_FAILURE;
- APPL_TRACE_API("%s", __func__);
+ APPL_TRACE_API("%s", __func__);
- if (handle < BTA_JV_MAX_L2C_CONN && bta_jv_cb.l2c_cb[handle].p_cback) {
- tBTA_JV_API_L2CAP_CLOSE *p_msg =
- (tBTA_JV_API_L2CAP_CLOSE *)osi_malloc(sizeof(tBTA_JV_API_L2CAP_CLOSE));
- p_msg->hdr.event = BTA_JV_API_L2CAP_CLOSE_EVT;
- p_msg->handle = handle;
- p_msg->p_cb = &bta_jv_cb.l2c_cb[handle];
+ if (handle < BTA_JV_MAX_L2C_CONN && bta_jv_cb.l2c_cb[handle].p_cback) {
+ tBTA_JV_API_L2CAP_CLOSE* p_msg =
+ (tBTA_JV_API_L2CAP_CLOSE*)osi_malloc(sizeof(tBTA_JV_API_L2CAP_CLOSE));
+ p_msg->hdr.event = BTA_JV_API_L2CAP_CLOSE_EVT;
+ p_msg->handle = handle;
+ p_msg->p_cb = &bta_jv_cb.l2c_cb[handle];
- bta_sys_sendmsg(p_msg);
- status = BTA_JV_SUCCESS;
- }
+ bta_sys_sendmsg(p_msg);
+ status = BTA_JV_SUCCESS;
+ }
- return status;
+ return status;
}
/*******************************************************************************
*
* Function BTA_JvL2capCloseLE
*
- * Description This function closes an L2CAP client connection for Fixed Channels
+ * Description This function closes an L2CAP client connection for Fixed
+ *Channels
* Function is idempotent and no callbacks are called!
*
* Returns BTA_JV_SUCCESS, if the request is being processed.
* BTA_JV_FAILURE, otherwise.
*
******************************************************************************/
-tBTA_JV_STATUS BTA_JvL2capCloseLE(uint32_t handle)
-{
- tBTA_JV_API_L2CAP_CLOSE *p_msg =
- (tBTA_JV_API_L2CAP_CLOSE *)osi_malloc(sizeof(tBTA_JV_API_L2CAP_CLOSE));
+tBTA_JV_STATUS BTA_JvL2capCloseLE(uint32_t handle) {
+ tBTA_JV_API_L2CAP_CLOSE* p_msg =
+ (tBTA_JV_API_L2CAP_CLOSE*)osi_malloc(sizeof(tBTA_JV_API_L2CAP_CLOSE));
- APPL_TRACE_API("%s", __func__);
+ APPL_TRACE_API("%s", __func__);
- p_msg->hdr.event = BTA_JV_API_L2CAP_CLOSE_FIXED_EVT;
- p_msg->handle = handle;
+ p_msg->hdr.event = BTA_JV_API_L2CAP_CLOSE_FIXED_EVT;
+ p_msg->handle = handle;
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
- return BTA_JV_SUCCESS;
+ return BTA_JV_SUCCESS;
}
/*******************************************************************************
*
* Function BTA_JvL2capStartServer
*
- * Description This function starts an L2CAP server and listens for an L2CAP
+ * Description This function starts an L2CAP server and listens for an
+ *L2CAP
* connection from a remote Bluetooth device. When the server
* is started successfully, tBTA_JV_L2CAP_CBACK is called with
* BTA_JV_L2CAP_START_EVT. When the connection is established,
@@ -469,48 +453,48 @@
* BTA_JV_FAILURE, otherwise.
*
******************************************************************************/
-tBTA_JV_STATUS BTA_JvL2capStartServer(int conn_type, tBTA_SEC sec_mask, tBTA_JV_ROLE role,
- const tL2CAP_ERTM_INFO *ertm_info,uint16_t local_psm, uint16_t rx_mtu, tL2CAP_CFG_INFO *cfg,
- tBTA_JV_L2CAP_CBACK *p_cback, void *user_data)
-{
- APPL_TRACE_API("%s", __func__);
+tBTA_JV_STATUS BTA_JvL2capStartServer(
+ int conn_type, tBTA_SEC sec_mask, tBTA_JV_ROLE role,
+ const tL2CAP_ERTM_INFO* ertm_info, uint16_t local_psm, uint16_t rx_mtu,
+ tL2CAP_CFG_INFO* cfg, tBTA_JV_L2CAP_CBACK* p_cback, void* user_data) {
+ APPL_TRACE_API("%s", __func__);
- if (p_cback == NULL)
- return BTA_JV_FAILURE; /* Nothing to do */
+ if (p_cback == NULL) return BTA_JV_FAILURE; /* Nothing to do */
- tBTA_JV_API_L2CAP_SERVER *p_msg =
- (tBTA_JV_API_L2CAP_SERVER *)osi_malloc(sizeof(tBTA_JV_API_L2CAP_SERVER));
- p_msg->hdr.event = BTA_JV_API_L2CAP_START_SERVER_EVT;
- p_msg->type = conn_type;
- p_msg->sec_mask = sec_mask;
- p_msg->role = role;
- p_msg->local_psm = local_psm;
- p_msg->rx_mtu = rx_mtu;
- if (cfg != NULL) {
- p_msg->has_cfg = true;
- p_msg->cfg = *cfg;
- } else {
- p_msg->has_cfg = false;
- }
- if (ertm_info != NULL) {
- p_msg->has_ertm_info = true;
- p_msg->ertm_info = *ertm_info;
- } else {
- p_msg->has_ertm_info = false;
- }
- p_msg->p_cback = p_cback;
- p_msg->user_data = user_data;
+ tBTA_JV_API_L2CAP_SERVER* p_msg =
+ (tBTA_JV_API_L2CAP_SERVER*)osi_malloc(sizeof(tBTA_JV_API_L2CAP_SERVER));
+ p_msg->hdr.event = BTA_JV_API_L2CAP_START_SERVER_EVT;
+ p_msg->type = conn_type;
+ p_msg->sec_mask = sec_mask;
+ p_msg->role = role;
+ p_msg->local_psm = local_psm;
+ p_msg->rx_mtu = rx_mtu;
+ if (cfg != NULL) {
+ p_msg->has_cfg = true;
+ p_msg->cfg = *cfg;
+ } else {
+ p_msg->has_cfg = false;
+ }
+ if (ertm_info != NULL) {
+ p_msg->has_ertm_info = true;
+ p_msg->ertm_info = *ertm_info;
+ } else {
+ p_msg->has_ertm_info = false;
+ }
+ p_msg->p_cback = p_cback;
+ p_msg->user_data = user_data;
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
- return BTA_JV_SUCCESS;
+ return BTA_JV_SUCCESS;
}
/*******************************************************************************
*
* Function BTA_JvL2capStartServerLE
*
- * Description This function starts an LE L2CAP server and listens for an L2CAP
+ * Description This function starts an LE L2CAP server and listens for an
+ *L2CAP
* connection from a remote Bluetooth device. When the server
* is started successfully, tBTA_JV_L2CAP_CBACK is called with
* BTA_JV_L2CAP_START_EVT. When the connection is established,
@@ -521,39 +505,40 @@
*
******************************************************************************/
tBTA_JV_STATUS BTA_JvL2capStartServerLE(tBTA_SEC sec_mask, tBTA_JV_ROLE role,
- const tL2CAP_ERTM_INFO *ertm_info,uint16_t local_chan, uint16_t rx_mtu, tL2CAP_CFG_INFO *cfg,
- tBTA_JV_L2CAP_CBACK *p_cback, void *user_data)
-{
- APPL_TRACE_API("%s", __func__);
+ const tL2CAP_ERTM_INFO* ertm_info,
+ uint16_t local_chan, uint16_t rx_mtu,
+ tL2CAP_CFG_INFO* cfg,
+ tBTA_JV_L2CAP_CBACK* p_cback,
+ void* user_data) {
+ APPL_TRACE_API("%s", __func__);
- if (p_cback == NULL)
- return BTA_JV_FAILURE; /* Nothing to do */
+ if (p_cback == NULL) return BTA_JV_FAILURE; /* Nothing to do */
- tBTA_JV_API_L2CAP_SERVER *p_msg =
- (tBTA_JV_API_L2CAP_SERVER *)osi_malloc(sizeof(tBTA_JV_API_L2CAP_SERVER));
- p_msg->hdr.event = BTA_JV_API_L2CAP_START_SERVER_LE_EVT;
- p_msg->sec_mask = sec_mask;
- p_msg->role = role;
- p_msg->local_chan = local_chan;
- p_msg->rx_mtu = rx_mtu;
- if (cfg != NULL) {
- p_msg->has_cfg = true;
- p_msg->cfg = *cfg;
- } else {
- p_msg->has_cfg = false;
- }
- if (ertm_info != NULL) {
- p_msg->has_ertm_info = true;
- p_msg->ertm_info = *ertm_info;
- } else {
- p_msg->has_ertm_info = false;
- }
- p_msg->p_cback = p_cback;
- p_msg->user_data = user_data;
+ tBTA_JV_API_L2CAP_SERVER* p_msg =
+ (tBTA_JV_API_L2CAP_SERVER*)osi_malloc(sizeof(tBTA_JV_API_L2CAP_SERVER));
+ p_msg->hdr.event = BTA_JV_API_L2CAP_START_SERVER_LE_EVT;
+ p_msg->sec_mask = sec_mask;
+ p_msg->role = role;
+ p_msg->local_chan = local_chan;
+ p_msg->rx_mtu = rx_mtu;
+ if (cfg != NULL) {
+ p_msg->has_cfg = true;
+ p_msg->cfg = *cfg;
+ } else {
+ p_msg->has_cfg = false;
+ }
+ if (ertm_info != NULL) {
+ p_msg->has_ertm_info = true;
+ p_msg->ertm_info = *ertm_info;
+ } else {
+ p_msg->has_ertm_info = false;
+ }
+ p_msg->p_cback = p_cback;
+ p_msg->user_data = user_data;
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
- return BTA_JV_SUCCESS;
+ return BTA_JV_SUCCESS;
}
/*******************************************************************************
@@ -567,45 +552,44 @@
* BTA_JV_FAILURE, otherwise.
*
******************************************************************************/
-tBTA_JV_STATUS BTA_JvL2capStopServer(uint16_t local_psm, void *user_data)
-{
- APPL_TRACE_API("%s", __func__);
+tBTA_JV_STATUS BTA_JvL2capStopServer(uint16_t local_psm, void* user_data) {
+ APPL_TRACE_API("%s", __func__);
- tBTA_JV_API_L2CAP_SERVER *p_msg =
- (tBTA_JV_API_L2CAP_SERVER *)osi_malloc(sizeof(tBTA_JV_API_L2CAP_SERVER));
- p_msg->hdr.event = BTA_JV_API_L2CAP_STOP_SERVER_EVT;
- p_msg->local_psm = local_psm;
- p_msg->user_data = user_data;
+ tBTA_JV_API_L2CAP_SERVER* p_msg =
+ (tBTA_JV_API_L2CAP_SERVER*)osi_malloc(sizeof(tBTA_JV_API_L2CAP_SERVER));
+ p_msg->hdr.event = BTA_JV_API_L2CAP_STOP_SERVER_EVT;
+ p_msg->local_psm = local_psm;
+ p_msg->user_data = user_data;
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
- return BTA_JV_SUCCESS;
+ return BTA_JV_SUCCESS;
}
/*******************************************************************************
*
* Function BTA_JvL2capStopServerLE
*
- * Description This function stops the LE L2CAP server. If the server has an
+ * Description This function stops the LE L2CAP server. If the server has
+ *an
* active connection, it would be closed.
*
* Returns BTA_JV_SUCCESS, if the request is being processed.
* BTA_JV_FAILURE, otherwise.
*
******************************************************************************/
-tBTA_JV_STATUS BTA_JvL2capStopServerLE(uint16_t local_chan, void *user_data)
-{
- APPL_TRACE_API("%s", __func__);
+tBTA_JV_STATUS BTA_JvL2capStopServerLE(uint16_t local_chan, void* user_data) {
+ APPL_TRACE_API("%s", __func__);
- tBTA_JV_API_L2CAP_SERVER *p_msg =
- (tBTA_JV_API_L2CAP_SERVER *)osi_malloc(sizeof(tBTA_JV_API_L2CAP_SERVER));
- p_msg->hdr.event = BTA_JV_API_L2CAP_STOP_SERVER_LE_EVT;
- p_msg->local_chan = local_chan;
- p_msg->user_data = user_data;
+ tBTA_JV_API_L2CAP_SERVER* p_msg =
+ (tBTA_JV_API_L2CAP_SERVER*)osi_malloc(sizeof(tBTA_JV_API_L2CAP_SERVER));
+ p_msg->hdr.event = BTA_JV_API_L2CAP_STOP_SERVER_LE_EVT;
+ p_msg->local_chan = local_chan;
+ p_msg->user_data = user_data;
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
- return BTA_JV_SUCCESS;
+ return BTA_JV_SUCCESS;
}
/*******************************************************************************
@@ -622,32 +606,30 @@
* BTA_JV_FAILURE, otherwise.
*
******************************************************************************/
-tBTA_JV_STATUS BTA_JvL2capRead(uint32_t handle, uint32_t req_id, uint8_t *p_data, uint16_t len)
-{
- tBTA_JV_STATUS status = BTA_JV_FAILURE;
- tBTA_JV_L2CAP_READ evt_data;
+tBTA_JV_STATUS BTA_JvL2capRead(uint32_t handle, uint32_t req_id,
+ uint8_t* p_data, uint16_t len) {
+ tBTA_JV_STATUS status = BTA_JV_FAILURE;
+ tBTA_JV_L2CAP_READ evt_data;
- APPL_TRACE_API( "%s", __func__);
-
+ APPL_TRACE_API("%s", __func__);
- if (handle < BTA_JV_MAX_L2C_CONN && bta_jv_cb.l2c_cb[handle].p_cback)
- {
- status = BTA_JV_SUCCESS;
- evt_data.status = BTA_JV_FAILURE;
- evt_data.handle = handle;
- evt_data.req_id = req_id;
- evt_data.p_data = p_data;
- evt_data.len = 0;
+ if (handle < BTA_JV_MAX_L2C_CONN && bta_jv_cb.l2c_cb[handle].p_cback) {
+ status = BTA_JV_SUCCESS;
+ evt_data.status = BTA_JV_FAILURE;
+ evt_data.handle = handle;
+ evt_data.req_id = req_id;
+ evt_data.p_data = p_data;
+ evt_data.len = 0;
- if (BT_PASS == GAP_ConnReadData((uint16_t)handle, p_data, len, &evt_data.len))
- {
- evt_data.status = BTA_JV_SUCCESS;
- }
- bta_jv_cb.l2c_cb[handle].p_cback(
- BTA_JV_L2CAP_READ_EVT, (tBTA_JV *)&evt_data, bta_jv_cb.l2c_cb[handle].user_data);
+ if (BT_PASS ==
+ GAP_ConnReadData((uint16_t)handle, p_data, len, &evt_data.len)) {
+ evt_data.status = BTA_JV_SUCCESS;
}
+ bta_jv_cb.l2c_cb[handle].p_cback(BTA_JV_L2CAP_READ_EVT, (tBTA_JV*)&evt_data,
+ bta_jv_cb.l2c_cb[handle].user_data);
+ }
- return(status);
+ return (status);
}
/*******************************************************************************
@@ -661,24 +643,21 @@
* BTA_JV_FAILURE, if error.
*
******************************************************************************/
-tBTA_JV_STATUS BTA_JvL2capReady(uint32_t handle, uint32_t *p_data_size)
-{
- tBTA_JV_STATUS status = BTA_JV_FAILURE;
+tBTA_JV_STATUS BTA_JvL2capReady(uint32_t handle, uint32_t* p_data_size) {
+ tBTA_JV_STATUS status = BTA_JV_FAILURE;
- APPL_TRACE_API( "%s: %d", __func__, handle);
- if (p_data_size && handle < BTA_JV_MAX_L2C_CONN && bta_jv_cb.l2c_cb[handle].p_cback)
- {
- *p_data_size = 0;
- if(BT_PASS == GAP_GetRxQueueCnt((uint16_t)handle, p_data_size) )
- {
- status = BTA_JV_SUCCESS;
- }
+ APPL_TRACE_API("%s: %d", __func__, handle);
+ if (p_data_size && handle < BTA_JV_MAX_L2C_CONN &&
+ bta_jv_cb.l2c_cb[handle].p_cback) {
+ *p_data_size = 0;
+ if (BT_PASS == GAP_GetRxQueueCnt((uint16_t)handle, p_data_size)) {
+ status = BTA_JV_SUCCESS;
}
+ }
- return(status);
+ return (status);
}
-
/*******************************************************************************
*
* Function BTA_JvL2capWrite
@@ -692,30 +671,30 @@
* BTA_JV_FAILURE, otherwise.
*
******************************************************************************/
-tBTA_JV_STATUS BTA_JvL2capWrite(uint32_t handle, uint32_t req_id, uint8_t *p_data,
- uint16_t len, void *user_data)
-{
- tBTA_JV_STATUS status = BTA_JV_FAILURE;
+tBTA_JV_STATUS BTA_JvL2capWrite(uint32_t handle, uint32_t req_id,
+ uint8_t* p_data, uint16_t len,
+ void* user_data) {
+ tBTA_JV_STATUS status = BTA_JV_FAILURE;
- APPL_TRACE_API("%s", __func__);
+ APPL_TRACE_API("%s", __func__);
- if (handle < BTA_JV_MAX_L2C_CONN && bta_jv_cb.l2c_cb[handle].p_cback) {
- tBTA_JV_API_L2CAP_WRITE *p_msg =
- (tBTA_JV_API_L2CAP_WRITE *)osi_malloc(sizeof(tBTA_JV_API_L2CAP_WRITE));
- p_msg->hdr.event = BTA_JV_API_L2CAP_WRITE_EVT;
- p_msg->handle = handle;
- p_msg->req_id = req_id;
- p_msg->p_data = p_data;
- p_msg->p_cb = &bta_jv_cb.l2c_cb[handle];
- p_msg->len = len;
- p_msg->user_data = user_data;
+ if (handle < BTA_JV_MAX_L2C_CONN && bta_jv_cb.l2c_cb[handle].p_cback) {
+ tBTA_JV_API_L2CAP_WRITE* p_msg =
+ (tBTA_JV_API_L2CAP_WRITE*)osi_malloc(sizeof(tBTA_JV_API_L2CAP_WRITE));
+ p_msg->hdr.event = BTA_JV_API_L2CAP_WRITE_EVT;
+ p_msg->handle = handle;
+ p_msg->req_id = req_id;
+ p_msg->p_data = p_data;
+ p_msg->p_cb = &bta_jv_cb.l2c_cb[handle];
+ p_msg->len = len;
+ p_msg->user_data = user_data;
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
- status = BTA_JV_SUCCESS;
- }
+ status = BTA_JV_SUCCESS;
+ }
- return status;
+ return status;
}
/*******************************************************************************
@@ -731,26 +710,29 @@
* BTA_JV_FAILURE, otherwise.
*
******************************************************************************/
-tBTA_JV_STATUS BTA_JvL2capWriteFixed(uint16_t channel, BD_ADDR *addr, uint32_t req_id,
- tBTA_JV_L2CAP_CBACK *p_cback, uint8_t *p_data, uint16_t len, void *user_data)
-{
- tBTA_JV_API_L2CAP_WRITE_FIXED *p_msg =
- (tBTA_JV_API_L2CAP_WRITE_FIXED *)osi_malloc(sizeof(tBTA_JV_API_L2CAP_WRITE_FIXED));
+tBTA_JV_STATUS BTA_JvL2capWriteFixed(uint16_t channel, BD_ADDR* addr,
+ uint32_t req_id,
+ tBTA_JV_L2CAP_CBACK* p_cback,
+ uint8_t* p_data, uint16_t len,
+ void* user_data) {
+ tBTA_JV_API_L2CAP_WRITE_FIXED* p_msg =
+ (tBTA_JV_API_L2CAP_WRITE_FIXED*)osi_malloc(
+ sizeof(tBTA_JV_API_L2CAP_WRITE_FIXED));
- APPL_TRACE_API("%s", __func__);
+ APPL_TRACE_API("%s", __func__);
- p_msg->hdr.event = BTA_JV_API_L2CAP_WRITE_FIXED_EVT;
- p_msg->channel = channel;
- memcpy(p_msg->addr, addr, sizeof(p_msg->addr));
- p_msg->req_id = req_id;
- p_msg->p_data = p_data;
- p_msg->p_cback = p_cback;
- p_msg->len = len;
- p_msg->user_data = user_data;
+ p_msg->hdr.event = BTA_JV_API_L2CAP_WRITE_FIXED_EVT;
+ p_msg->channel = channel;
+ memcpy(p_msg->addr, addr, sizeof(p_msg->addr));
+ p_msg->req_id = req_id;
+ p_msg->p_data = p_data;
+ p_msg->p_cback = p_cback;
+ p_msg->len = len;
+ p_msg->user_data = user_data;
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
- return BTA_JV_SUCCESS;
+ return BTA_JV_SUCCESS;
}
/*******************************************************************************
@@ -760,7 +742,8 @@
* Description This function makes an RFCOMM conection to a remote BD
* Address.
* When the connection is initiated or failed to initiate,
- * tBTA_JV_RFCOMM_CBACK is called with BTA_JV_RFCOMM_CL_INIT_EVT
+ * tBTA_JV_RFCOMM_CBACK is called with
+ *BTA_JV_RFCOMM_CL_INIT_EVT
* When the connection is established or failed,
* tBTA_JV_RFCOMM_CBACK is called with BTA_JV_RFCOMM_OPEN_EVT
*
@@ -768,28 +751,27 @@
* BTA_JV_FAILURE, otherwise.
*
******************************************************************************/
-tBTA_JV_STATUS BTA_JvRfcommConnect(tBTA_SEC sec_mask,
- tBTA_JV_ROLE role, uint8_t remote_scn, BD_ADDR peer_bd_addr,
- tBTA_JV_RFCOMM_CBACK *p_cback, void* user_data)
-{
- APPL_TRACE_API("%s", __func__);
+tBTA_JV_STATUS BTA_JvRfcommConnect(tBTA_SEC sec_mask, tBTA_JV_ROLE role,
+ uint8_t remote_scn, BD_ADDR peer_bd_addr,
+ tBTA_JV_RFCOMM_CBACK* p_cback,
+ void* user_data) {
+ APPL_TRACE_API("%s", __func__);
- if (p_cback == NULL)
- return BTA_JV_FAILURE; /* Nothing to do */
+ if (p_cback == NULL) return BTA_JV_FAILURE; /* Nothing to do */
- tBTA_JV_API_RFCOMM_CONNECT *p_msg =
- (tBTA_JV_API_RFCOMM_CONNECT *)osi_malloc(sizeof(tBTA_JV_API_RFCOMM_CONNECT));
- p_msg->hdr.event = BTA_JV_API_RFCOMM_CONNECT_EVT;
- p_msg->sec_mask = sec_mask;
- p_msg->role = role;
- p_msg->remote_scn = remote_scn;
- memcpy(p_msg->peer_bd_addr, peer_bd_addr, sizeof(BD_ADDR));
- p_msg->p_cback = p_cback;
- p_msg->user_data = user_data;
+ tBTA_JV_API_RFCOMM_CONNECT* p_msg = (tBTA_JV_API_RFCOMM_CONNECT*)osi_malloc(
+ sizeof(tBTA_JV_API_RFCOMM_CONNECT));
+ p_msg->hdr.event = BTA_JV_API_RFCOMM_CONNECT_EVT;
+ p_msg->sec_mask = sec_mask;
+ p_msg->role = role;
+ p_msg->remote_scn = remote_scn;
+ memcpy(p_msg->peer_bd_addr, peer_bd_addr, sizeof(BD_ADDR));
+ p_msg->p_cback = p_cback;
+ p_msg->user_data = user_data;
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
- return BTA_JV_SUCCESS;
+ return BTA_JV_SUCCESS;
}
/*******************************************************************************
@@ -802,30 +784,29 @@
* BTA_JV_FAILURE, otherwise.
*
******************************************************************************/
-tBTA_JV_STATUS BTA_JvRfcommClose(uint32_t handle, void *user_data)
-{
- tBTA_JV_STATUS status = BTA_JV_FAILURE;
- uint32_t hi = ((handle & BTA_JV_RFC_HDL_MASK)&~BTA_JV_RFCOMM_MASK) - 1;
- uint32_t si = BTA_JV_RFC_HDL_TO_SIDX(handle);
+tBTA_JV_STATUS BTA_JvRfcommClose(uint32_t handle, void* user_data) {
+ tBTA_JV_STATUS status = BTA_JV_FAILURE;
+ uint32_t hi = ((handle & BTA_JV_RFC_HDL_MASK) & ~BTA_JV_RFCOMM_MASK) - 1;
+ uint32_t si = BTA_JV_RFC_HDL_TO_SIDX(handle);
- APPL_TRACE_API("%s", __func__);
+ APPL_TRACE_API("%s", __func__);
- if (hi < BTA_JV_MAX_RFC_CONN && bta_jv_cb.rfc_cb[hi].p_cback &&
- si < BTA_JV_MAX_RFC_SR_SESSION && bta_jv_cb.rfc_cb[hi].rfc_hdl[si]) {
- tBTA_JV_API_RFCOMM_CLOSE *p_msg =
- (tBTA_JV_API_RFCOMM_CLOSE *)osi_malloc(sizeof(tBTA_JV_API_RFCOMM_CLOSE));
- p_msg->hdr.event = BTA_JV_API_RFCOMM_CLOSE_EVT;
- p_msg->handle = handle;
- p_msg->p_cb = &bta_jv_cb.rfc_cb[hi];
- p_msg->p_pcb = &bta_jv_cb.port_cb[p_msg->p_cb->rfc_hdl[si] - 1];
- p_msg->user_data = user_data;
+ if (hi < BTA_JV_MAX_RFC_CONN && bta_jv_cb.rfc_cb[hi].p_cback &&
+ si < BTA_JV_MAX_RFC_SR_SESSION && bta_jv_cb.rfc_cb[hi].rfc_hdl[si]) {
+ tBTA_JV_API_RFCOMM_CLOSE* p_msg =
+ (tBTA_JV_API_RFCOMM_CLOSE*)osi_malloc(sizeof(tBTA_JV_API_RFCOMM_CLOSE));
+ p_msg->hdr.event = BTA_JV_API_RFCOMM_CLOSE_EVT;
+ p_msg->handle = handle;
+ p_msg->p_cb = &bta_jv_cb.rfc_cb[hi];
+ p_msg->p_pcb = &bta_jv_cb.port_cb[p_msg->p_cb->rfc_hdl[si] - 1];
+ p_msg->user_data = user_data;
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
- status = BTA_JV_SUCCESS;
- }
+ status = BTA_JV_SUCCESS;
+ }
- return status;
+ return status;
}
/*******************************************************************************
@@ -843,34 +824,33 @@
* BTA_JV_FAILURE, otherwise.
*
******************************************************************************/
-tBTA_JV_STATUS BTA_JvRfcommStartServer(tBTA_SEC sec_mask,
- tBTA_JV_ROLE role, uint8_t local_scn, uint8_t max_session,
- tBTA_JV_RFCOMM_CBACK *p_cback, void* user_data)
-{
- APPL_TRACE_API("%s", __func__);
+tBTA_JV_STATUS BTA_JvRfcommStartServer(tBTA_SEC sec_mask, tBTA_JV_ROLE role,
+ uint8_t local_scn, uint8_t max_session,
+ tBTA_JV_RFCOMM_CBACK* p_cback,
+ void* user_data) {
+ APPL_TRACE_API("%s", __func__);
- if (p_cback == NULL)
- return BTA_JV_FAILURE; /* Nothing to do */
+ if (p_cback == NULL) return BTA_JV_FAILURE; /* Nothing to do */
- tBTA_JV_API_RFCOMM_SERVER *p_msg =
- (tBTA_JV_API_RFCOMM_SERVER *)osi_malloc(sizeof(tBTA_JV_API_RFCOMM_SERVER));
- if (max_session == 0)
- max_session = 1;
- if (max_session > BTA_JV_MAX_RFC_SR_SESSION) {
- APPL_TRACE_DEBUG( "max_session is too big. use max (%d)", max_session, BTA_JV_MAX_RFC_SR_SESSION);
- max_session = BTA_JV_MAX_RFC_SR_SESSION;
- }
- p_msg->hdr.event = BTA_JV_API_RFCOMM_START_SERVER_EVT;
- p_msg->sec_mask = sec_mask;
- p_msg->role = role;
- p_msg->local_scn = local_scn;
- p_msg->max_session = max_session;
- p_msg->p_cback = p_cback;
- p_msg->user_data = user_data; //caller's private data
+ tBTA_JV_API_RFCOMM_SERVER* p_msg =
+ (tBTA_JV_API_RFCOMM_SERVER*)osi_malloc(sizeof(tBTA_JV_API_RFCOMM_SERVER));
+ if (max_session == 0) max_session = 1;
+ if (max_session > BTA_JV_MAX_RFC_SR_SESSION) {
+ APPL_TRACE_DEBUG("max_session is too big. use max (%d)", max_session,
+ BTA_JV_MAX_RFC_SR_SESSION);
+ max_session = BTA_JV_MAX_RFC_SR_SESSION;
+ }
+ p_msg->hdr.event = BTA_JV_API_RFCOMM_START_SERVER_EVT;
+ p_msg->sec_mask = sec_mask;
+ p_msg->role = role;
+ p_msg->local_scn = local_scn;
+ p_msg->max_session = max_session;
+ p_msg->p_cback = p_cback;
+ p_msg->user_data = user_data; // caller's private data
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
- return BTA_JV_SUCCESS;
+ return BTA_JV_SUCCESS;
}
/*******************************************************************************
@@ -884,20 +864,19 @@
* BTA_JV_FAILURE, otherwise.
*
******************************************************************************/
-tBTA_JV_STATUS BTA_JvRfcommStopServer(uint32_t handle, void * user_data)
-{
- tBTA_JV_API_RFCOMM_SERVER *p_msg =
- (tBTA_JV_API_RFCOMM_SERVER *)osi_malloc(sizeof(tBTA_JV_API_RFCOMM_SERVER));
+tBTA_JV_STATUS BTA_JvRfcommStopServer(uint32_t handle, void* user_data) {
+ tBTA_JV_API_RFCOMM_SERVER* p_msg =
+ (tBTA_JV_API_RFCOMM_SERVER*)osi_malloc(sizeof(tBTA_JV_API_RFCOMM_SERVER));
- APPL_TRACE_API("%s", __func__);
+ APPL_TRACE_API("%s", __func__);
- p_msg->hdr.event = BTA_JV_API_RFCOMM_STOP_SERVER_EVT;
- p_msg->handle = handle;
- p_msg->user_data = user_data; //caller's private data
+ p_msg->hdr.event = BTA_JV_API_RFCOMM_STOP_SERVER_EVT;
+ p_msg->handle = handle;
+ p_msg->user_data = user_data; // caller's private data
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
- return BTA_JV_SUCCESS;
+ return BTA_JV_SUCCESS;
}
/*******************************************************************************
@@ -910,16 +889,15 @@
* BTA_JV_FAILURE, otherwise.
*
******************************************************************************/
-uint16_t BTA_JvRfcommGetPortHdl(uint32_t handle)
-{
- uint32_t hi = ((handle & BTA_JV_RFC_HDL_MASK) & ~BTA_JV_RFCOMM_MASK) - 1;
- uint32_t si = BTA_JV_RFC_HDL_TO_SIDX(handle);
+uint16_t BTA_JvRfcommGetPortHdl(uint32_t handle) {
+ uint32_t hi = ((handle & BTA_JV_RFC_HDL_MASK) & ~BTA_JV_RFCOMM_MASK) - 1;
+ uint32_t si = BTA_JV_RFC_HDL_TO_SIDX(handle);
- if (hi < BTA_JV_MAX_RFC_CONN &&
- si < BTA_JV_MAX_RFC_SR_SESSION && bta_jv_cb.rfc_cb[hi].rfc_hdl[si])
- return bta_jv_cb.port_cb[bta_jv_cb.rfc_cb[hi].rfc_hdl[si] - 1].port_handle;
- else
- return 0xffff;
+ if (hi < BTA_JV_MAX_RFC_CONN && si < BTA_JV_MAX_RFC_SR_SESSION &&
+ bta_jv_cb.rfc_cb[hi].rfc_hdl[si])
+ return bta_jv_cb.port_cb[bta_jv_cb.rfc_cb[hi].rfc_hdl[si] - 1].port_handle;
+ else
+ return 0xffff;
}
/*******************************************************************************
@@ -932,66 +910,69 @@
* BTA_JV_FAILURE, otherwise.
*
******************************************************************************/
-tBTA_JV_STATUS BTA_JvRfcommWrite(uint32_t handle, uint32_t req_id)
-{
- tBTA_JV_STATUS status = BTA_JV_FAILURE;
- uint32_t hi = ((handle & BTA_JV_RFC_HDL_MASK)&~BTA_JV_RFCOMM_MASK) - 1;
- uint32_t si = BTA_JV_RFC_HDL_TO_SIDX(handle);
+tBTA_JV_STATUS BTA_JvRfcommWrite(uint32_t handle, uint32_t req_id) {
+ tBTA_JV_STATUS status = BTA_JV_FAILURE;
+ uint32_t hi = ((handle & BTA_JV_RFC_HDL_MASK) & ~BTA_JV_RFCOMM_MASK) - 1;
+ uint32_t si = BTA_JV_RFC_HDL_TO_SIDX(handle);
- APPL_TRACE_API("%s", __func__);
+ APPL_TRACE_API("%s", __func__);
- APPL_TRACE_DEBUG( "handle:0x%x, hi:%d, si:%d", handle, hi, si);
- if (hi < BTA_JV_MAX_RFC_CONN && bta_jv_cb.rfc_cb[hi].p_cback &&
- si < BTA_JV_MAX_RFC_SR_SESSION && bta_jv_cb.rfc_cb[hi].rfc_hdl[si]) {
- tBTA_JV_API_RFCOMM_WRITE *p_msg =
- (tBTA_JV_API_RFCOMM_WRITE *)osi_malloc(sizeof(tBTA_JV_API_RFCOMM_WRITE));
- p_msg->hdr.event = BTA_JV_API_RFCOMM_WRITE_EVT;
- p_msg->handle = handle;
- p_msg->req_id = req_id;
- p_msg->p_cb = &bta_jv_cb.rfc_cb[hi];
- p_msg->p_pcb = &bta_jv_cb.port_cb[p_msg->p_cb->rfc_hdl[si] - 1];
- APPL_TRACE_API( "write ok");
+ APPL_TRACE_DEBUG("handle:0x%x, hi:%d, si:%d", handle, hi, si);
+ if (hi < BTA_JV_MAX_RFC_CONN && bta_jv_cb.rfc_cb[hi].p_cback &&
+ si < BTA_JV_MAX_RFC_SR_SESSION && bta_jv_cb.rfc_cb[hi].rfc_hdl[si]) {
+ tBTA_JV_API_RFCOMM_WRITE* p_msg =
+ (tBTA_JV_API_RFCOMM_WRITE*)osi_malloc(sizeof(tBTA_JV_API_RFCOMM_WRITE));
+ p_msg->hdr.event = BTA_JV_API_RFCOMM_WRITE_EVT;
+ p_msg->handle = handle;
+ p_msg->req_id = req_id;
+ p_msg->p_cb = &bta_jv_cb.rfc_cb[hi];
+ p_msg->p_pcb = &bta_jv_cb.port_cb[p_msg->p_cb->rfc_hdl[si] - 1];
+ APPL_TRACE_API("write ok");
- bta_sys_sendmsg(p_msg);
- status = BTA_JV_SUCCESS;
- }
+ bta_sys_sendmsg(p_msg);
+ status = BTA_JV_SUCCESS;
+ }
- return status;
+ return status;
}
-
/*******************************************************************************
*
* Function BTA_JVSetPmProfile
*
- * Description This function set or free power mode profile for different JV application
+ * Description This function set or free power mode profile for different JV
+ *application
*
* Parameters: handle, JV handle from RFCOMM or L2CAP
- * app_id: app specific pm ID, can be BTA_JV_PM_ALL, see bta_dm_cfg.c for details
- * BTA_JV_PM_ID_CLEAR: removes pm management on the handle. init_st is ignored and
+ * app_id: app specific pm ID, can be BTA_JV_PM_ALL, see
+ *bta_dm_cfg.c for details
+ * BTA_JV_PM_ID_CLEAR: removes pm management on the handle. init_st
+ *is ignored and
* BTA_JV_CONN_CLOSE is called implicitely
- * init_st: state after calling this API. typically it should be BTA_JV_CONN_OPEN
+ * init_st: state after calling this API. typically it should be
+ *BTA_JV_CONN_OPEN
*
* Returns BTA_JV_SUCCESS, if the request is being processed.
* BTA_JV_FAILURE, otherwise.
*
- * NOTE: BTA_JV_PM_ID_CLEAR: In general no need to be called as jv pm calls automatically
+ * NOTE: BTA_JV_PM_ID_CLEAR: In general no need to be called as jv pm
+ *calls automatically
* BTA_JV_CONN_CLOSE to remove in case of connection close!
*
*******************************************************************************/
-tBTA_JV_STATUS BTA_JvSetPmProfile(uint32_t handle, tBTA_JV_PM_ID app_id, tBTA_JV_CONN_STATE init_st)
-{
- tBTA_JV_API_SET_PM_PROFILE *p_msg =
- (tBTA_JV_API_SET_PM_PROFILE *)osi_malloc(sizeof(tBTA_JV_API_SET_PM_PROFILE));
+tBTA_JV_STATUS BTA_JvSetPmProfile(uint32_t handle, tBTA_JV_PM_ID app_id,
+ tBTA_JV_CONN_STATE init_st) {
+ tBTA_JV_API_SET_PM_PROFILE* p_msg = (tBTA_JV_API_SET_PM_PROFILE*)osi_malloc(
+ sizeof(tBTA_JV_API_SET_PM_PROFILE));
- APPL_TRACE_API("%s handle:0x%x, app_id:%d", __func__, handle, app_id);
+ APPL_TRACE_API("%s handle:0x%x, app_id:%d", __func__, handle, app_id);
- p_msg->hdr.event = BTA_JV_API_SET_PM_PROFILE_EVT;
- p_msg->handle = handle;
- p_msg->app_id = app_id;
- p_msg->init_st = init_st;
+ p_msg->hdr.event = BTA_JV_API_SET_PM_PROFILE_EVT;
+ p_msg->handle = handle;
+ p_msg->app_id = app_id;
+ p_msg->init_st = init_st;
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
- return BTA_JV_SUCCESS;
+ return BTA_JV_SUCCESS;
}
diff --git a/bta/jv/bta_jv_cfg.cc b/bta/jv/bta_jv_cfg.cc
index 0acc844..b43b035 100644
--- a/bta/jv/bta_jv_cfg.cc
+++ b/bta/jv/bta_jv_cfg.cc
@@ -29,30 +29,30 @@
#include "bta_jv_api.h"
#ifndef BTA_JV_SDP_DB_SIZE
-#define BTA_JV_SDP_DB_SIZE 4500
+#define BTA_JV_SDP_DB_SIZE 4500
#endif
#ifndef BTA_JV_SDP_RAW_DATA_SIZE
-#define BTA_JV_SDP_RAW_DATA_SIZE 1800
+#define BTA_JV_SDP_RAW_DATA_SIZE 1800
#endif
/* The platform may choose to use dynamic memory for these data buffers.
* p_bta_jv_cfg->p_sdp_db must be allocated/stay allocated
* between BTA_JvEnable and BTA_JvDisable
- * p_bta_jv_cfg->p_sdp_raw_data can be allocated before calling BTA_JvStartDiscovery
+ * p_bta_jv_cfg->p_sdp_raw_data can be allocated before calling
+ * BTA_JvStartDiscovery
* it can be de-allocated after the last call to access the database */
static uint8_t bta_jv_sdp_raw_data[BTA_JV_SDP_RAW_DATA_SIZE];
-static uint8_t __attribute__ ((aligned(4))) bta_jv_sdp_db_data[BTA_JV_SDP_DB_SIZE];
+static uint8_t __attribute__((aligned(4)))
+bta_jv_sdp_db_data[BTA_JV_SDP_DB_SIZE];
/* JV configuration structure */
-const tBTA_JV_CFG bta_jv_cfg =
-{
- BTA_JV_SDP_RAW_DATA_SIZE, /* The size of p_sdp_raw_data */
- BTA_JV_SDP_DB_SIZE, /* The size of p_sdp_db_data */
- bta_jv_sdp_raw_data, /* The data buffer to keep raw data */
- (tSDP_DISCOVERY_DB *)bta_jv_sdp_db_data /* The data buffer to keep SDP database */
+const tBTA_JV_CFG bta_jv_cfg = {
+ BTA_JV_SDP_RAW_DATA_SIZE, /* The size of p_sdp_raw_data */
+ BTA_JV_SDP_DB_SIZE, /* The size of p_sdp_db_data */
+ bta_jv_sdp_raw_data, /* The data buffer to keep raw data */
+ (tSDP_DISCOVERY_DB*)
+ bta_jv_sdp_db_data /* The data buffer to keep SDP database */
};
-tBTA_JV_CFG *p_bta_jv_cfg = (tBTA_JV_CFG *) &bta_jv_cfg;
-
-
+tBTA_JV_CFG* p_bta_jv_cfg = (tBTA_JV_CFG*)&bta_jv_cfg;
diff --git a/bta/jv/bta_jv_int.h b/bta/jv/bta_jv_int.h
index 2f25f06..8c9144c 100644
--- a/bta/jv/bta_jv_int.h
+++ b/bta/jv/bta_jv_int.h
@@ -24,411 +24,385 @@
#ifndef BTA_JV_INT_H
#define BTA_JV_INT_H
-#include "bta_sys.h"
#include "bta_api.h"
#include "bta_jv_api.h"
-#include "rfcdefs.h"
+#include "bta_sys.h"
#include "port_api.h"
+#include "rfcdefs.h"
/*****************************************************************************
* Constants
****************************************************************************/
-enum
-{
- /* these events are handled by the state machine */
- BTA_JV_API_ENABLE_EVT = BTA_SYS_EVT_START(BTA_ID_JV),
- BTA_JV_API_DISABLE_EVT,
- BTA_JV_API_GET_CHANNEL_EVT,
- BTA_JV_API_FREE_SCN_EVT,
- BTA_JV_API_START_DISCOVERY_EVT,
- BTA_JV_API_CREATE_RECORD_EVT,
- BTA_JV_API_DELETE_RECORD_EVT,
- BTA_JV_API_L2CAP_CONNECT_EVT,
- BTA_JV_API_L2CAP_CLOSE_EVT,
- BTA_JV_API_L2CAP_START_SERVER_EVT,
- BTA_JV_API_L2CAP_STOP_SERVER_EVT,
- BTA_JV_API_L2CAP_READ_EVT,
- BTA_JV_API_L2CAP_WRITE_EVT,
- BTA_JV_API_RFCOMM_CONNECT_EVT,
- BTA_JV_API_RFCOMM_CLOSE_EVT,
- BTA_JV_API_RFCOMM_START_SERVER_EVT,
- BTA_JV_API_RFCOMM_STOP_SERVER_EVT,
- BTA_JV_API_RFCOMM_WRITE_EVT,
- BTA_JV_API_SET_PM_PROFILE_EVT,
- BTA_JV_API_PM_STATE_CHANGE_EVT,
- BTA_JV_API_L2CAP_CONNECT_LE_EVT,
- BTA_JV_API_L2CAP_START_SERVER_LE_EVT,
- BTA_JV_API_L2CAP_STOP_SERVER_LE_EVT,
- BTA_JV_API_L2CAP_WRITE_FIXED_EVT,
- BTA_JV_API_L2CAP_CLOSE_FIXED_EVT,
- BTA_JV_MAX_INT_EVT
+enum {
+ /* these events are handled by the state machine */
+ BTA_JV_API_ENABLE_EVT = BTA_SYS_EVT_START(BTA_ID_JV),
+ BTA_JV_API_DISABLE_EVT,
+ BTA_JV_API_GET_CHANNEL_EVT,
+ BTA_JV_API_FREE_SCN_EVT,
+ BTA_JV_API_START_DISCOVERY_EVT,
+ BTA_JV_API_CREATE_RECORD_EVT,
+ BTA_JV_API_DELETE_RECORD_EVT,
+ BTA_JV_API_L2CAP_CONNECT_EVT,
+ BTA_JV_API_L2CAP_CLOSE_EVT,
+ BTA_JV_API_L2CAP_START_SERVER_EVT,
+ BTA_JV_API_L2CAP_STOP_SERVER_EVT,
+ BTA_JV_API_L2CAP_READ_EVT,
+ BTA_JV_API_L2CAP_WRITE_EVT,
+ BTA_JV_API_RFCOMM_CONNECT_EVT,
+ BTA_JV_API_RFCOMM_CLOSE_EVT,
+ BTA_JV_API_RFCOMM_START_SERVER_EVT,
+ BTA_JV_API_RFCOMM_STOP_SERVER_EVT,
+ BTA_JV_API_RFCOMM_WRITE_EVT,
+ BTA_JV_API_SET_PM_PROFILE_EVT,
+ BTA_JV_API_PM_STATE_CHANGE_EVT,
+ BTA_JV_API_L2CAP_CONNECT_LE_EVT,
+ BTA_JV_API_L2CAP_START_SERVER_LE_EVT,
+ BTA_JV_API_L2CAP_STOP_SERVER_LE_EVT,
+ BTA_JV_API_L2CAP_WRITE_FIXED_EVT,
+ BTA_JV_API_L2CAP_CLOSE_FIXED_EVT,
+ BTA_JV_MAX_INT_EVT
};
#ifndef BTA_JV_RFC_EV_MASK
-#define BTA_JV_RFC_EV_MASK (PORT_EV_RXCHAR | PORT_EV_TXEMPTY | PORT_EV_FC | PORT_EV_FCS)
+#define BTA_JV_RFC_EV_MASK \
+ (PORT_EV_RXCHAR | PORT_EV_TXEMPTY | PORT_EV_FC | PORT_EV_FCS)
#endif
/* data type for BTA_JV_API_ENABLE_EVT */
-typedef struct
-{
- BT_HDR hdr;
- tBTA_JV_DM_CBACK *p_cback;
+typedef struct {
+ BT_HDR hdr;
+ tBTA_JV_DM_CBACK* p_cback;
} tBTA_JV_API_ENABLE;
/* data type for BTA_JV_API_START_DISCOVERY_EVT */
-typedef struct
-{
- BT_HDR hdr;
- BD_ADDR bd_addr;
- uint16_t num_uuid;
- tSDP_UUID uuid_list[BTA_JV_MAX_UUIDS];
- uint16_t num_attr;
- uint16_t attr_list[BTA_JV_MAX_ATTRS];
- void *user_data; /* piggyback caller's private data*/
+typedef struct {
+ BT_HDR hdr;
+ BD_ADDR bd_addr;
+ uint16_t num_uuid;
+ tSDP_UUID uuid_list[BTA_JV_MAX_UUIDS];
+ uint16_t num_attr;
+ uint16_t attr_list[BTA_JV_MAX_ATTRS];
+ void* user_data; /* piggyback caller's private data*/
} tBTA_JV_API_START_DISCOVERY;
-enum
-{
- BTA_JV_PM_FREE_ST = 0, /* empty PM slot */
- BTA_JV_PM_IDLE_ST,
- BTA_JV_PM_BUSY_ST
+enum {
+ BTA_JV_PM_FREE_ST = 0, /* empty PM slot */
+ BTA_JV_PM_IDLE_ST,
+ BTA_JV_PM_BUSY_ST
};
/* BTA JV PM control block */
-typedef struct
-{
- uint32_t handle; /* The connection handle */
- uint8_t state; /* state: see above enum */
- tBTA_JV_PM_ID app_id; /* JV app specific id indicating power table to use */
- BD_ADDR peer_bd_addr; /* Peer BD address */
+typedef struct {
+ uint32_t handle; /* The connection handle */
+ uint8_t state; /* state: see above enum */
+ tBTA_JV_PM_ID app_id; /* JV app specific id indicating power table to use */
+ BD_ADDR peer_bd_addr; /* Peer BD address */
} tBTA_JV_PM_CB;
-enum
-{
- BTA_JV_ST_NONE = 0,
- BTA_JV_ST_CL_OPENING,
- BTA_JV_ST_CL_OPEN,
- BTA_JV_ST_CL_CLOSING,
- BTA_JV_ST_SR_LISTEN,
- BTA_JV_ST_SR_OPEN,
- BTA_JV_ST_SR_CLOSING
-} ;
-typedef uint8_t tBTA_JV_STATE;
-#define BTA_JV_ST_CL_MAX BTA_JV_ST_CL_CLOSING
+enum {
+ BTA_JV_ST_NONE = 0,
+ BTA_JV_ST_CL_OPENING,
+ BTA_JV_ST_CL_OPEN,
+ BTA_JV_ST_CL_CLOSING,
+ BTA_JV_ST_SR_LISTEN,
+ BTA_JV_ST_SR_OPEN,
+ BTA_JV_ST_SR_CLOSING
+};
+typedef uint8_t tBTA_JV_STATE;
+#define BTA_JV_ST_CL_MAX BTA_JV_ST_CL_CLOSING
/* JV L2CAP control block */
-typedef struct
-{
- tBTA_JV_L2CAP_CBACK *p_cback; /* the callback function */
- uint16_t psm; /* the psm used for this server connection */
- tBTA_JV_STATE state; /* the state of this control block */
- tBTA_SERVICE_ID sec_id; /* service id */
- uint32_t handle; /* the handle reported to java app (same as gap handle) */
- bool cong; /* true, if congested */
- tBTA_JV_PM_CB *p_pm_cb; /* ptr to pm control block, NULL: unused */
- void *user_data; /* user data for callback from higher layers */
+typedef struct {
+ tBTA_JV_L2CAP_CBACK* p_cback; /* the callback function */
+ uint16_t psm; /* the psm used for this server connection */
+ tBTA_JV_STATE state; /* the state of this control block */
+ tBTA_SERVICE_ID sec_id; /* service id */
+ uint32_t handle; /* the handle reported to java app (same as gap handle) */
+ bool cong; /* true, if congested */
+ tBTA_JV_PM_CB* p_pm_cb; /* ptr to pm control block, NULL: unused */
+ void* user_data; /* user data for callback from higher layers */
} tBTA_JV_L2C_CB;
-#define BTA_JV_RFC_HDL_MASK 0xFF
-#define BTA_JV_RFCOMM_MASK 0x80
-#define BTA_JV_ALL_APP_ID 0xFF
-#define BTA_JV_RFC_HDL_TO_SIDX(r) (((r)&0xFF00) >> 8)
-#define BTA_JV_RFC_H_S_TO_HDL(h, s) ((h)|((s)<<8))
+#define BTA_JV_RFC_HDL_MASK 0xFF
+#define BTA_JV_RFCOMM_MASK 0x80
+#define BTA_JV_ALL_APP_ID 0xFF
+#define BTA_JV_RFC_HDL_TO_SIDX(r) (((r)&0xFF00) >> 8)
+#define BTA_JV_RFC_H_S_TO_HDL(h, s) ((h) | ((s) << 8))
/* port control block */
-typedef struct
-{
- uint32_t handle; /* the rfcomm session handle at jv */
- uint16_t port_handle;/* port handle */
- tBTA_JV_STATE state; /* the state of this control block */
- uint8_t max_sess; /* max sessions */
- void *user_data; /* piggyback caller's private data*/
- bool cong; /* true, if congested */
- tBTA_JV_PM_CB *p_pm_cb; /* ptr to pm control block, NULL: unused */
+typedef struct {
+ uint32_t handle; /* the rfcomm session handle at jv */
+ uint16_t port_handle; /* port handle */
+ tBTA_JV_STATE state; /* the state of this control block */
+ uint8_t max_sess; /* max sessions */
+ void* user_data; /* piggyback caller's private data*/
+ bool cong; /* true, if congested */
+ tBTA_JV_PM_CB* p_pm_cb; /* ptr to pm control block, NULL: unused */
} tBTA_JV_PCB;
/* JV RFCOMM control block */
-typedef struct
-{
- tBTA_JV_RFCOMM_CBACK *p_cback; /* the callback function */
- uint16_t rfc_hdl[BTA_JV_MAX_RFC_SR_SESSION];
- tBTA_SERVICE_ID sec_id; /* service id */
- uint8_t handle; /* index: the handle reported to java app */
- uint8_t scn; /* the scn of the server */
- uint8_t max_sess; /* max sessions */
- int curr_sess; /* current sessions count*/
+typedef struct {
+ tBTA_JV_RFCOMM_CBACK* p_cback; /* the callback function */
+ uint16_t rfc_hdl[BTA_JV_MAX_RFC_SR_SESSION];
+ tBTA_SERVICE_ID sec_id; /* service id */
+ uint8_t handle; /* index: the handle reported to java app */
+ uint8_t scn; /* the scn of the server */
+ uint8_t max_sess; /* max sessions */
+ int curr_sess; /* current sessions count*/
} tBTA_JV_RFC_CB;
-/* data type for BTA_JV_API_L2CAP_CONNECT_EVT & BTA_JV_API_L2CAP_CONNECT_LE_EVT */
-typedef struct
-{
- BT_HDR hdr;
- int32_t type; /* One of BTA_JV_CONN_TYPE_ */
- tBTA_SEC sec_mask;
- tBTA_JV_ROLE role;
- union {
- uint16_t remote_psm;
- uint16_t remote_chan;
- };
- uint16_t rx_mtu;
- BD_ADDR peer_bd_addr;
- int32_t has_cfg;
- tL2CAP_CFG_INFO cfg;
- int32_t has_ertm_info;
- tL2CAP_ERTM_INFO ertm_info;
- tBTA_JV_L2CAP_CBACK *p_cback;
- void *user_data;
+/* data type for BTA_JV_API_L2CAP_CONNECT_EVT & BTA_JV_API_L2CAP_CONNECT_LE_EVT
+ */
+typedef struct {
+ BT_HDR hdr;
+ int32_t type; /* One of BTA_JV_CONN_TYPE_ */
+ tBTA_SEC sec_mask;
+ tBTA_JV_ROLE role;
+ union {
+ uint16_t remote_psm;
+ uint16_t remote_chan;
+ };
+ uint16_t rx_mtu;
+ BD_ADDR peer_bd_addr;
+ int32_t has_cfg;
+ tL2CAP_CFG_INFO cfg;
+ int32_t has_ertm_info;
+ tL2CAP_ERTM_INFO ertm_info;
+ tBTA_JV_L2CAP_CBACK* p_cback;
+ void* user_data;
} tBTA_JV_API_L2CAP_CONNECT;
/* data type for BTA_JV_API_L2CAP_SERVER_EVT */
-typedef struct
-{
- BT_HDR hdr;
- int32_t type; /* One of BTA_JV_CONN_TYPE_ */
- tBTA_SEC sec_mask;
- tBTA_JV_ROLE role;
- union {
- uint16_t local_psm;
- uint16_t local_chan;
- };
- uint16_t rx_mtu;
- int32_t has_cfg;
- tL2CAP_CFG_INFO cfg;
- int32_t has_ertm_info;
- tL2CAP_ERTM_INFO ertm_info;
- tBTA_JV_L2CAP_CBACK *p_cback;
- void *user_data;
+typedef struct {
+ BT_HDR hdr;
+ int32_t type; /* One of BTA_JV_CONN_TYPE_ */
+ tBTA_SEC sec_mask;
+ tBTA_JV_ROLE role;
+ union {
+ uint16_t local_psm;
+ uint16_t local_chan;
+ };
+ uint16_t rx_mtu;
+ int32_t has_cfg;
+ tL2CAP_CFG_INFO cfg;
+ int32_t has_ertm_info;
+ tL2CAP_ERTM_INFO ertm_info;
+ tBTA_JV_L2CAP_CBACK* p_cback;
+ void* user_data;
} tBTA_JV_API_L2CAP_SERVER;
/* data type for BTA_JV_API_L2CAP_CLOSE_EVT */
-typedef struct
-{
- BT_HDR hdr;
- uint32_t handle;
- tBTA_JV_L2C_CB *p_cb;
+typedef struct {
+ BT_HDR hdr;
+ uint32_t handle;
+ tBTA_JV_L2C_CB* p_cb;
} tBTA_JV_API_L2CAP_CLOSE;
/* data type for BTA_JV_API_L2CAP_READ_EVT */
-typedef struct
-{
- BT_HDR hdr;
- uint32_t handle;
- uint32_t req_id;
- tBTA_JV_L2CAP_CBACK *p_cback;
- uint8_t* p_data;
- uint16_t len;
- void *user_data;
+typedef struct {
+ BT_HDR hdr;
+ uint32_t handle;
+ uint32_t req_id;
+ tBTA_JV_L2CAP_CBACK* p_cback;
+ uint8_t* p_data;
+ uint16_t len;
+ void* user_data;
} tBTA_JV_API_L2CAP_READ;
/* data type for BTA_JV_API_L2CAP_WRITE_EVT */
-typedef struct
-{
- BT_HDR hdr;
- uint32_t handle;
- uint32_t req_id;
- tBTA_JV_L2C_CB *p_cb;
- uint8_t *p_data;
- uint16_t len;
- void *user_data;
+typedef struct {
+ BT_HDR hdr;
+ uint32_t handle;
+ uint32_t req_id;
+ tBTA_JV_L2C_CB* p_cb;
+ uint8_t* p_data;
+ uint16_t len;
+ void* user_data;
} tBTA_JV_API_L2CAP_WRITE;
/* data type for BTA_JV_API_L2CAP_WRITE_FIXED_EVT */
-typedef struct
-{
- BT_HDR hdr;
- uint16_t channel;
- BD_ADDR addr;
- uint32_t req_id;
- tBTA_JV_L2CAP_CBACK *p_cback;
- uint8_t *p_data;
- uint16_t len;
- void *user_data;
+typedef struct {
+ BT_HDR hdr;
+ uint16_t channel;
+ BD_ADDR addr;
+ uint32_t req_id;
+ tBTA_JV_L2CAP_CBACK* p_cback;
+ uint8_t* p_data;
+ uint16_t len;
+ void* user_data;
} tBTA_JV_API_L2CAP_WRITE_FIXED;
/* data type for BTA_JV_API_RFCOMM_CONNECT_EVT */
-typedef struct
-{
- BT_HDR hdr;
- tBTA_SEC sec_mask;
- tBTA_JV_ROLE role;
- uint8_t remote_scn;
- BD_ADDR peer_bd_addr;
- tBTA_JV_RFCOMM_CBACK *p_cback;
- void *user_data;
+typedef struct {
+ BT_HDR hdr;
+ tBTA_SEC sec_mask;
+ tBTA_JV_ROLE role;
+ uint8_t remote_scn;
+ BD_ADDR peer_bd_addr;
+ tBTA_JV_RFCOMM_CBACK* p_cback;
+ void* user_data;
} tBTA_JV_API_RFCOMM_CONNECT;
/* data type for BTA_JV_API_RFCOMM_SERVER_EVT */
-typedef struct
-{
- BT_HDR hdr;
- tBTA_SEC sec_mask;
- tBTA_JV_ROLE role;
- uint8_t local_scn;
- uint8_t max_session;
- uint32_t handle;
- tBTA_JV_RFCOMM_CBACK *p_cback;
- void *user_data;
+typedef struct {
+ BT_HDR hdr;
+ tBTA_SEC sec_mask;
+ tBTA_JV_ROLE role;
+ uint8_t local_scn;
+ uint8_t max_session;
+ uint32_t handle;
+ tBTA_JV_RFCOMM_CBACK* p_cback;
+ void* user_data;
} tBTA_JV_API_RFCOMM_SERVER;
/* data type for BTA_JV_API_SET_PM_PROFILE_EVT */
-typedef struct
-{
- BT_HDR hdr;
- uint32_t handle;
- tBTA_JV_PM_ID app_id;
- tBTA_JV_CONN_STATE init_st;
+typedef struct {
+ BT_HDR hdr;
+ uint32_t handle;
+ tBTA_JV_PM_ID app_id;
+ tBTA_JV_CONN_STATE init_st;
} tBTA_JV_API_SET_PM_PROFILE;
/* data type for BTA_JV_API_PM_STATE_CHANGE_EVT */
-typedef struct
-{
- BT_HDR hdr;
- tBTA_JV_PM_CB *p_cb;
- tBTA_JV_CONN_STATE state;
+typedef struct {
+ BT_HDR hdr;
+ tBTA_JV_PM_CB* p_cb;
+ tBTA_JV_CONN_STATE state;
} tBTA_JV_API_PM_STATE_CHANGE;
/* data type for BTA_JV_API_RFCOMM_WRITE_EVT */
-typedef struct
-{
- BT_HDR hdr;
- uint32_t handle;
- uint32_t req_id;
- uint8_t *p_data;
- int len;
- tBTA_JV_RFC_CB *p_cb;
- tBTA_JV_PCB *p_pcb;
+typedef struct {
+ BT_HDR hdr;
+ uint32_t handle;
+ uint32_t req_id;
+ uint8_t* p_data;
+ int len;
+ tBTA_JV_RFC_CB* p_cb;
+ tBTA_JV_PCB* p_pcb;
} tBTA_JV_API_RFCOMM_WRITE;
/* data type for BTA_JV_API_RFCOMM_CLOSE_EVT */
-typedef struct
-{
- BT_HDR hdr;
- uint32_t handle;
- tBTA_JV_RFC_CB *p_cb;
- tBTA_JV_PCB *p_pcb;
- void *user_data;
+typedef struct {
+ BT_HDR hdr;
+ uint32_t handle;
+ tBTA_JV_RFC_CB* p_cb;
+ tBTA_JV_PCB* p_pcb;
+ void* user_data;
} tBTA_JV_API_RFCOMM_CLOSE;
/* data type for BTA_JV_API_CREATE_RECORD_EVT */
-typedef struct
-{
- BT_HDR hdr;
- void *user_data;
+typedef struct {
+ BT_HDR hdr;
+ void* user_data;
} tBTA_JV_API_CREATE_RECORD;
/* data type for BTA_JV_API_ADD_ATTRIBUTE_EVT */
-typedef struct
-{
- BT_HDR hdr;
- uint32_t handle;
- uint16_t attr_id;
- uint8_t *p_value;
- int32_t value_size;
+typedef struct {
+ BT_HDR hdr;
+ uint32_t handle;
+ uint16_t attr_id;
+ uint8_t* p_value;
+ int32_t value_size;
} tBTA_JV_API_ADD_ATTRIBUTE;
/* data type for BTA_JV_API_FREE_SCN_EVT */
-typedef struct
-{
- BT_HDR hdr;
- int32_t type; /* One of BTA_JV_CONN_TYPE_ */
- uint16_t scn;
+typedef struct {
+ BT_HDR hdr;
+ int32_t type; /* One of BTA_JV_CONN_TYPE_ */
+ uint16_t scn;
} tBTA_JV_API_FREE_CHANNEL;
/* data type for BTA_JV_API_ALLOC_CHANNEL_EVT */
-typedef struct
-{
- BT_HDR hdr;
- int32_t type; /* One of BTA_JV_CONN_TYPE_ */
- int32_t channel; /* optionally request a specific channel */
- void *user_data;
+typedef struct {
+ BT_HDR hdr;
+ int32_t type; /* One of BTA_JV_CONN_TYPE_ */
+ int32_t channel; /* optionally request a specific channel */
+ void* user_data;
} tBTA_JV_API_ALLOC_CHANNEL;
/* union of all data types */
-typedef union
-{
- /* GKI event buffer header */
- BT_HDR hdr;
- tBTA_JV_API_ENABLE enable;
- tBTA_JV_API_START_DISCOVERY start_discovery;
- tBTA_JV_API_ALLOC_CHANNEL alloc_channel;
- tBTA_JV_API_FREE_CHANNEL free_channel;
- tBTA_JV_API_CREATE_RECORD create_record;
- tBTA_JV_API_ADD_ATTRIBUTE add_attr;
- tBTA_JV_API_L2CAP_CONNECT l2cap_connect;
- tBTA_JV_API_L2CAP_READ l2cap_read;
- tBTA_JV_API_L2CAP_WRITE l2cap_write;
- tBTA_JV_API_L2CAP_CLOSE l2cap_close;
- tBTA_JV_API_L2CAP_SERVER l2cap_server;
- tBTA_JV_API_RFCOMM_CONNECT rfcomm_connect;
- tBTA_JV_API_RFCOMM_WRITE rfcomm_write;
- tBTA_JV_API_SET_PM_PROFILE set_pm;
- tBTA_JV_API_PM_STATE_CHANGE change_pm_state;
- tBTA_JV_API_RFCOMM_CLOSE rfcomm_close;
- tBTA_JV_API_RFCOMM_SERVER rfcomm_server;
- tBTA_JV_API_L2CAP_WRITE_FIXED l2cap_write_fixed;
+typedef union {
+ /* GKI event buffer header */
+ BT_HDR hdr;
+ tBTA_JV_API_ENABLE enable;
+ tBTA_JV_API_START_DISCOVERY start_discovery;
+ tBTA_JV_API_ALLOC_CHANNEL alloc_channel;
+ tBTA_JV_API_FREE_CHANNEL free_channel;
+ tBTA_JV_API_CREATE_RECORD create_record;
+ tBTA_JV_API_ADD_ATTRIBUTE add_attr;
+ tBTA_JV_API_L2CAP_CONNECT l2cap_connect;
+ tBTA_JV_API_L2CAP_READ l2cap_read;
+ tBTA_JV_API_L2CAP_WRITE l2cap_write;
+ tBTA_JV_API_L2CAP_CLOSE l2cap_close;
+ tBTA_JV_API_L2CAP_SERVER l2cap_server;
+ tBTA_JV_API_RFCOMM_CONNECT rfcomm_connect;
+ tBTA_JV_API_RFCOMM_WRITE rfcomm_write;
+ tBTA_JV_API_SET_PM_PROFILE set_pm;
+ tBTA_JV_API_PM_STATE_CHANGE change_pm_state;
+ tBTA_JV_API_RFCOMM_CLOSE rfcomm_close;
+ tBTA_JV_API_RFCOMM_SERVER rfcomm_server;
+ tBTA_JV_API_L2CAP_WRITE_FIXED l2cap_write_fixed;
} tBTA_JV_MSG;
/* JV control block */
-typedef struct
-{
- /* the SDP handle reported to JV user is the (index + 1) to sdp_handle[].
- * if sdp_handle[i]==0, it's not used.
- * otherwise sdp_handle[i] is the stack SDP handle. */
- uint32_t sdp_handle[BTA_JV_MAX_SDP_REC]; /* SDP records created */
- uint8_t *p_sel_raw_data;/* the raw data of last service select */
- tBTA_JV_DM_CBACK *p_dm_cback;
- tBTA_JV_L2C_CB l2c_cb[BTA_JV_MAX_L2C_CONN]; /* index is GAP handle (index) */
- tBTA_JV_RFC_CB rfc_cb[BTA_JV_MAX_RFC_CONN];
- tBTA_JV_PCB port_cb[MAX_RFC_PORTS]; /* index of this array is
- the port_handle, */
- uint8_t sec_id[BTA_JV_NUM_SERVICE_ID]; /* service ID */
- bool scn[BTA_JV_MAX_SCN]; /* SCN allocated by java */
- uint16_t free_psm_list[BTA_JV_MAX_L2C_CONN]; /* PSMs freed by java
- (can be reused) */
- uint8_t sdp_active; /* see BTA_JV_SDP_ACT_* */
- tSDP_UUID uuid; /* current uuid of sdp discovery*/
- tBTA_JV_PM_CB pm_cb[BTA_JV_PM_MAX_NUM]; /* PM on a per JV handle bases */
+typedef struct {
+ /* the SDP handle reported to JV user is the (index + 1) to sdp_handle[].
+ * if sdp_handle[i]==0, it's not used.
+ * otherwise sdp_handle[i] is the stack SDP handle. */
+ uint32_t sdp_handle[BTA_JV_MAX_SDP_REC]; /* SDP records created */
+ uint8_t* p_sel_raw_data; /* the raw data of last service select */
+ tBTA_JV_DM_CBACK* p_dm_cback;
+ tBTA_JV_L2C_CB l2c_cb[BTA_JV_MAX_L2C_CONN]; /* index is GAP handle (index) */
+ tBTA_JV_RFC_CB rfc_cb[BTA_JV_MAX_RFC_CONN];
+ tBTA_JV_PCB port_cb[MAX_RFC_PORTS]; /* index of this array is
+ the port_handle, */
+ uint8_t sec_id[BTA_JV_NUM_SERVICE_ID]; /* service ID */
+ bool scn[BTA_JV_MAX_SCN]; /* SCN allocated by java */
+ uint16_t free_psm_list[BTA_JV_MAX_L2C_CONN]; /* PSMs freed by java
+ (can be reused) */
+ uint8_t sdp_active; /* see BTA_JV_SDP_ACT_* */
+ tSDP_UUID uuid; /* current uuid of sdp discovery*/
+ tBTA_JV_PM_CB pm_cb[BTA_JV_PM_MAX_NUM]; /* PM on a per JV handle bases */
} tBTA_JV_CB;
-enum
-{
- BTA_JV_SDP_ACT_NONE = 0,
- BTA_JV_SDP_ACT_YES, /* waiting for SDP result */
- BTA_JV_SDP_ACT_CANCEL /* waiting for cancel complete */
+enum {
+ BTA_JV_SDP_ACT_NONE = 0,
+ BTA_JV_SDP_ACT_YES, /* waiting for SDP result */
+ BTA_JV_SDP_ACT_CANCEL /* waiting for cancel complete */
};
/* JV control block */
extern tBTA_JV_CB bta_jv_cb;
/* config struct */
-extern tBTA_JV_CFG *p_bta_jv_cfg;
+extern tBTA_JV_CFG* p_bta_jv_cfg;
-extern bool bta_jv_sm_execute(BT_HDR *p_msg);
+extern bool bta_jv_sm_execute(BT_HDR* p_msg);
-extern void bta_jv_enable (tBTA_JV_MSG *p_data);
-extern void bta_jv_disable (tBTA_JV_MSG *p_data);
-extern void bta_jv_get_channel_id (tBTA_JV_MSG *p_data);
-extern void bta_jv_free_scn (tBTA_JV_MSG *p_data);
-extern void bta_jv_start_discovery (tBTA_JV_MSG *p_data);
-extern void bta_jv_create_record (tBTA_JV_MSG *p_data);
-extern void bta_jv_delete_record (tBTA_JV_MSG *p_data);
-extern void bta_jv_l2cap_connect (tBTA_JV_MSG *p_data);
-extern void bta_jv_l2cap_close (tBTA_JV_MSG *p_data);
-extern void bta_jv_l2cap_start_server (tBTA_JV_MSG *p_data);
-extern void bta_jv_l2cap_stop_server (tBTA_JV_MSG *p_data);
-extern void bta_jv_l2cap_read (tBTA_JV_MSG *p_data);
-extern void bta_jv_l2cap_write (tBTA_JV_MSG *p_data);
-extern void bta_jv_rfcomm_connect (tBTA_JV_MSG *p_data);
-extern void bta_jv_rfcomm_close (tBTA_JV_MSG *p_data);
-extern void bta_jv_rfcomm_start_server (tBTA_JV_MSG *p_data);
-extern void bta_jv_rfcomm_stop_server (tBTA_JV_MSG *p_data);
-extern void bta_jv_rfcomm_read (tBTA_JV_MSG *p_data);
-extern void bta_jv_rfcomm_write (tBTA_JV_MSG *p_data);
-extern void bta_jv_set_pm_profile (tBTA_JV_MSG *p_data);
-extern void bta_jv_change_pm_state(tBTA_JV_MSG *p_data);
-extern void bta_jv_l2cap_connect_le (tBTA_JV_MSG *p_data);
-extern void bta_jv_l2cap_start_server_le (tBTA_JV_MSG *p_data);
-extern void bta_jv_l2cap_stop_server_le (tBTA_JV_MSG *p_data);
-extern void bta_jv_l2cap_write_fixed (tBTA_JV_MSG *p_data);
-extern void bta_jv_l2cap_close_fixed (tBTA_JV_MSG *p_data);
+extern void bta_jv_enable(tBTA_JV_MSG* p_data);
+extern void bta_jv_disable(tBTA_JV_MSG* p_data);
+extern void bta_jv_get_channel_id(tBTA_JV_MSG* p_data);
+extern void bta_jv_free_scn(tBTA_JV_MSG* p_data);
+extern void bta_jv_start_discovery(tBTA_JV_MSG* p_data);
+extern void bta_jv_create_record(tBTA_JV_MSG* p_data);
+extern void bta_jv_delete_record(tBTA_JV_MSG* p_data);
+extern void bta_jv_l2cap_connect(tBTA_JV_MSG* p_data);
+extern void bta_jv_l2cap_close(tBTA_JV_MSG* p_data);
+extern void bta_jv_l2cap_start_server(tBTA_JV_MSG* p_data);
+extern void bta_jv_l2cap_stop_server(tBTA_JV_MSG* p_data);
+extern void bta_jv_l2cap_read(tBTA_JV_MSG* p_data);
+extern void bta_jv_l2cap_write(tBTA_JV_MSG* p_data);
+extern void bta_jv_rfcomm_connect(tBTA_JV_MSG* p_data);
+extern void bta_jv_rfcomm_close(tBTA_JV_MSG* p_data);
+extern void bta_jv_rfcomm_start_server(tBTA_JV_MSG* p_data);
+extern void bta_jv_rfcomm_stop_server(tBTA_JV_MSG* p_data);
+extern void bta_jv_rfcomm_read(tBTA_JV_MSG* p_data);
+extern void bta_jv_rfcomm_write(tBTA_JV_MSG* p_data);
+extern void bta_jv_set_pm_profile(tBTA_JV_MSG* p_data);
+extern void bta_jv_change_pm_state(tBTA_JV_MSG* p_data);
+extern void bta_jv_l2cap_connect_le(tBTA_JV_MSG* p_data);
+extern void bta_jv_l2cap_start_server_le(tBTA_JV_MSG* p_data);
+extern void bta_jv_l2cap_stop_server_le(tBTA_JV_MSG* p_data);
+extern void bta_jv_l2cap_write_fixed(tBTA_JV_MSG* p_data);
+extern void bta_jv_l2cap_close_fixed(tBTA_JV_MSG* p_data);
#endif /* BTA_JV_INT_H */
diff --git a/bta/jv/bta_jv_main.cc b/bta/jv/bta_jv_main.cc
index 2779fd6..fd5ce3a 100644
--- a/bta/jv/bta_jv_main.cc
+++ b/bta/jv/bta_jv_main.cc
@@ -23,9 +23,9 @@
******************************************************************************/
#include "bta_api.h"
-#include "bta_sys.h"
#include "bta_jv_api.h"
#include "bta_jv_int.h"
+#include "bta_sys.h"
/*****************************************************************************
* Constants and types
@@ -34,39 +34,38 @@
tBTA_JV_CB bta_jv_cb;
/* state machine action enumeration list */
-#define BTA_JV_NUM_ACTIONS (BTA_JV_MAX_INT_EVT & 0x00ff)
+#define BTA_JV_NUM_ACTIONS (BTA_JV_MAX_INT_EVT & 0x00ff)
/* type for action functions */
-typedef void (*tBTA_JV_ACTION)(tBTA_JV_MSG *p_data);
+typedef void (*tBTA_JV_ACTION)(tBTA_JV_MSG* p_data);
/* action function list */
-const tBTA_JV_ACTION bta_jv_action[] =
-{
- bta_jv_enable, /* BTA_JV_API_ENABLE_EVT */
- bta_jv_disable, /* BTA_JV_API_DISABLE_EVT */
- bta_jv_get_channel_id, /* BTA_JV_API_GET_CHANNEL_EVT */
- bta_jv_free_scn, /* BTA_JV_API_FREE_SCN_EVT */
- bta_jv_start_discovery, /* BTA_JV_API_START_DISCOVERY_EVT */
- bta_jv_create_record, /* BTA_JV_API_CREATE_RECORD_EVT */
- bta_jv_delete_record, /* BTA_JV_API_DELETE_RECORD_EVT */
- bta_jv_l2cap_connect, /* BTA_JV_API_L2CAP_CONNECT_EVT */
- bta_jv_l2cap_close, /* BTA_JV_API_L2CAP_CLOSE_EVT */
- bta_jv_l2cap_start_server, /* BTA_JV_API_L2CAP_START_SERVER_EVT */
- bta_jv_l2cap_stop_server, /* BTA_JV_API_L2CAP_STOP_SERVER_EVT */
- bta_jv_l2cap_read, /* BTA_JV_API_L2CAP_READ_EVT */
- bta_jv_l2cap_write, /* BTA_JV_API_L2CAP_WRITE_EVT */
- bta_jv_rfcomm_connect, /* BTA_JV_API_RFCOMM_CONNECT_EVT */
- bta_jv_rfcomm_close, /* BTA_JV_API_RFCOMM_CLOSE_EVT */
- bta_jv_rfcomm_start_server, /* BTA_JV_API_RFCOMM_START_SERVER_EVT */
- bta_jv_rfcomm_stop_server, /* BTA_JV_API_RFCOMM_STOP_SERVER_EVT */
- bta_jv_rfcomm_write, /* BTA_JV_API_RFCOMM_WRITE_EVT */
- bta_jv_set_pm_profile, /* BTA_JV_API_SET_PM_PROFILE_EVT */
- bta_jv_change_pm_state, /* BTA_JV_API_PM_STATE_CHANGE_EVT */
- bta_jv_l2cap_connect_le, /* BTA_JV_API_L2CAP_CONNECT_LE_EVT */
- bta_jv_l2cap_start_server_le, /* BTA_JV_API_L2CAP_START_SERVER_LE_EVT */
- bta_jv_l2cap_stop_server_le, /* BTA_JV_API_L2CAP_STOP_SERVER_LE_EVT */
- bta_jv_l2cap_write_fixed, /* BTA_JV_API_L2CAP_WRITE_FIXED_EVT */
- bta_jv_l2cap_close_fixed, /* BTA_JV_API_L2CAP_CLOSE_FIXED_EVT */
+const tBTA_JV_ACTION bta_jv_action[] = {
+ bta_jv_enable, /* BTA_JV_API_ENABLE_EVT */
+ bta_jv_disable, /* BTA_JV_API_DISABLE_EVT */
+ bta_jv_get_channel_id, /* BTA_JV_API_GET_CHANNEL_EVT */
+ bta_jv_free_scn, /* BTA_JV_API_FREE_SCN_EVT */
+ bta_jv_start_discovery, /* BTA_JV_API_START_DISCOVERY_EVT */
+ bta_jv_create_record, /* BTA_JV_API_CREATE_RECORD_EVT */
+ bta_jv_delete_record, /* BTA_JV_API_DELETE_RECORD_EVT */
+ bta_jv_l2cap_connect, /* BTA_JV_API_L2CAP_CONNECT_EVT */
+ bta_jv_l2cap_close, /* BTA_JV_API_L2CAP_CLOSE_EVT */
+ bta_jv_l2cap_start_server, /* BTA_JV_API_L2CAP_START_SERVER_EVT */
+ bta_jv_l2cap_stop_server, /* BTA_JV_API_L2CAP_STOP_SERVER_EVT */
+ bta_jv_l2cap_read, /* BTA_JV_API_L2CAP_READ_EVT */
+ bta_jv_l2cap_write, /* BTA_JV_API_L2CAP_WRITE_EVT */
+ bta_jv_rfcomm_connect, /* BTA_JV_API_RFCOMM_CONNECT_EVT */
+ bta_jv_rfcomm_close, /* BTA_JV_API_RFCOMM_CLOSE_EVT */
+ bta_jv_rfcomm_start_server, /* BTA_JV_API_RFCOMM_START_SERVER_EVT */
+ bta_jv_rfcomm_stop_server, /* BTA_JV_API_RFCOMM_STOP_SERVER_EVT */
+ bta_jv_rfcomm_write, /* BTA_JV_API_RFCOMM_WRITE_EVT */
+ bta_jv_set_pm_profile, /* BTA_JV_API_SET_PM_PROFILE_EVT */
+ bta_jv_change_pm_state, /* BTA_JV_API_PM_STATE_CHANGE_EVT */
+ bta_jv_l2cap_connect_le, /* BTA_JV_API_L2CAP_CONNECT_LE_EVT */
+ bta_jv_l2cap_start_server_le, /* BTA_JV_API_L2CAP_START_SERVER_LE_EVT */
+ bta_jv_l2cap_stop_server_le, /* BTA_JV_API_L2CAP_STOP_SERVER_LE_EVT */
+ bta_jv_l2cap_write_fixed, /* BTA_JV_API_L2CAP_WRITE_FIXED_EVT */
+ bta_jv_l2cap_close_fixed, /* BTA_JV_API_L2CAP_CLOSE_FIXED_EVT */
};
/*******************************************************************************
@@ -79,17 +78,15 @@
* Returns void
*
******************************************************************************/
-bool bta_jv_sm_execute(BT_HDR *p_msg)
-{
- bool ret = false;
- uint16_t action = (p_msg->event & 0x00ff);
- /* execute action functions */
+bool bta_jv_sm_execute(BT_HDR* p_msg) {
+ bool ret = false;
+ uint16_t action = (p_msg->event & 0x00ff);
+ /* execute action functions */
- if(action < BTA_JV_NUM_ACTIONS)
- {
- (*bta_jv_action[action])((tBTA_JV_MSG*)p_msg);
- ret = true;
- }
+ if (action < BTA_JV_NUM_ACTIONS) {
+ (*bta_jv_action[action])((tBTA_JV_MSG*)p_msg);
+ ret = true;
+ }
- return(ret);
+ return (ret);
}
diff --git a/bta/mce/bta_mce_act.cc b/bta/mce/bta_mce_act.cc
index ed1317b..02dc317 100644
--- a/bta/mce/bta_mce_act.cc
+++ b/bta/mce/bta_mce_act.cc
@@ -23,29 +23,27 @@
*
******************************************************************************/
-#include <hardware/bluetooth.h>
#include <arpa/inet.h>
+#include <hardware/bluetooth.h>
-#include "bt_types.h"
+#include <string.h>
#include "bt_common.h"
-#include "utl.h"
-#include "bta_sys.h"
+#include "bt_types.h"
#include "bta_api.h"
#include "bta_mce_api.h"
#include "bta_mce_int.h"
+#include "bta_sys.h"
#include "btm_api.h"
#include "btm_int.h"
#include "sdp_api.h"
-#include <string.h>
+#include "utl.h"
/*****************************************************************************
* Constants
****************************************************************************/
static const tBT_UUID bta_mce_mas_uuid = {
- .len = 2,
- .uu.uuid16 = UUID_SERVCLASS_MESSAGE_ACCESS
-};
+ .len = 2, .uu.uuid16 = UUID_SERVCLASS_MESSAGE_ACCESS};
/*******************************************************************************
*
@@ -57,65 +55,67 @@
*
******************************************************************************/
-static void bta_mce_search_cback(uint16_t result, void * user_data)
-{
- tSDP_DISC_REC *p_rec = NULL;
- tBTA_MCE_MAS_DISCOVERY_COMP evt_data;
- int found = 0;
+static void bta_mce_search_cback(uint16_t result, void* user_data) {
+ tSDP_DISC_REC* p_rec = NULL;
+ tBTA_MCE_MAS_DISCOVERY_COMP evt_data;
+ int found = 0;
- APPL_TRACE_DEBUG("bta_mce_start_discovery_cback res: 0x%x", result);
+ APPL_TRACE_DEBUG("bta_mce_start_discovery_cback res: 0x%x", result);
- bta_mce_cb.sdp_active = BTA_MCE_SDP_ACT_NONE;
+ bta_mce_cb.sdp_active = BTA_MCE_SDP_ACT_NONE;
- if (bta_mce_cb.p_dm_cback == NULL) return;
+ if (bta_mce_cb.p_dm_cback == NULL) return;
- evt_data.status = BTA_MCE_FAILURE;
- bdcpy(evt_data.remote_addr, bta_mce_cb.remote_addr);
- evt_data.num_mas = 0;
+ evt_data.status = BTA_MCE_FAILURE;
+ bdcpy(evt_data.remote_addr, bta_mce_cb.remote_addr);
+ evt_data.num_mas = 0;
- if (result == SDP_SUCCESS || result == SDP_DB_FULL)
- {
- do
- {
- tSDP_DISC_ATTR *p_attr;
- tSDP_PROTOCOL_ELEM pe;
+ if (result == SDP_SUCCESS || result == SDP_DB_FULL) {
+ do {
+ tSDP_DISC_ATTR* p_attr;
+ tSDP_PROTOCOL_ELEM pe;
- p_rec = SDP_FindServiceUUIDInDb(p_bta_mce_cfg->p_sdp_db, (tBT_UUID*) &bta_mce_mas_uuid, p_rec);
+ p_rec = SDP_FindServiceUUIDInDb(p_bta_mce_cfg->p_sdp_db,
+ (tBT_UUID*)&bta_mce_mas_uuid, p_rec);
- APPL_TRACE_DEBUG("p_rec:%p", p_rec);
+ APPL_TRACE_DEBUG("p_rec:%p", p_rec);
- if (p_rec == NULL)
- break;
+ if (p_rec == NULL) break;
- if (!SDP_FindProtocolListElemInRec(p_rec, UUID_PROTOCOL_RFCOMM, &pe))
- continue;
+ if (!SDP_FindProtocolListElemInRec(p_rec, UUID_PROTOCOL_RFCOMM, &pe))
+ continue;
- evt_data.mas[found].scn = pe.params[0];
+ evt_data.mas[found].scn = pe.params[0];
- if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_SERVICE_NAME)) == NULL)
- continue;
+ if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_SERVICE_NAME)) ==
+ NULL)
+ continue;
- evt_data.mas[found].p_srv_name = (char *) p_attr->attr_value.v.array;
- evt_data.mas[found].srv_name_len= SDP_DISC_ATTR_LEN(p_attr->attr_len_type);
+ evt_data.mas[found].p_srv_name = (char*)p_attr->attr_value.v.array;
+ evt_data.mas[found].srv_name_len =
+ SDP_DISC_ATTR_LEN(p_attr->attr_len_type);
- if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_MAS_INSTANCE_ID)) == NULL)
- break;
+ if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_MAS_INSTANCE_ID)) ==
+ NULL)
+ break;
- evt_data.mas[found].instance_id = p_attr->attr_value.v.u8;
+ evt_data.mas[found].instance_id = p_attr->attr_value.v.u8;
- if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_SUPPORTED_MSG_TYPE)) == NULL)
- break;
+ if ((p_attr = SDP_FindAttributeInRec(p_rec,
+ ATTR_ID_SUPPORTED_MSG_TYPE)) == NULL)
+ break;
- evt_data.mas[found].msg_type = p_attr->attr_value.v.u8;
+ evt_data.mas[found].msg_type = p_attr->attr_value.v.u8;
- found++;
- } while (p_rec != NULL && found < BTA_MCE_MAX_MAS_INSTANCES);
+ found++;
+ } while (p_rec != NULL && found < BTA_MCE_MAX_MAS_INSTANCES);
- evt_data.num_mas = found;
- evt_data.status = BTA_MCE_SUCCESS;
- }
+ evt_data.num_mas = found;
+ evt_data.status = BTA_MCE_SUCCESS;
+ }
- bta_mce_cb.p_dm_cback(BTA_MCE_MAS_DISCOVERY_COMP_EVT, (tBTA_MCE*) &evt_data, user_data);
+ bta_mce_cb.p_dm_cback(BTA_MCE_MAS_DISCOVERY_COMP_EVT, (tBTA_MCE*)&evt_data,
+ user_data);
}
/*******************************************************************************
@@ -127,11 +127,10 @@
* Returns void
*
******************************************************************************/
-void bta_mce_enable(tBTA_MCE_MSG *p_data)
-{
- tBTA_MCE_STATUS status = BTA_MCE_SUCCESS;
- bta_mce_cb.p_dm_cback = p_data->enable.p_cback;
- bta_mce_cb.p_dm_cback(BTA_MCE_ENABLE_EVT, (tBTA_MCE *)&status, NULL);
+void bta_mce_enable(tBTA_MCE_MSG* p_data) {
+ tBTA_MCE_STATUS status = BTA_MCE_SUCCESS;
+ bta_mce_cb.p_dm_cback = p_data->enable.p_cback;
+ bta_mce_cb.p_dm_cback(BTA_MCE_ENABLE_EVT, (tBTA_MCE*)&status, NULL);
}
/*******************************************************************************
@@ -143,43 +142,42 @@
* Returns void
*
******************************************************************************/
-void bta_mce_get_remote_mas_instances(tBTA_MCE_MSG *p_data)
-{
- if(p_data == NULL)
- {
+void bta_mce_get_remote_mas_instances(tBTA_MCE_MSG* p_data) {
+ if (p_data == NULL) {
APPL_TRACE_DEBUG("MCE control block handle is null");
return;
- }
- tBTA_MCE_STATUS status = BTA_MCE_FAILURE;
+ }
+ tBTA_MCE_STATUS status = BTA_MCE_FAILURE;
- APPL_TRACE_DEBUG("%s in, sdp_active:%d", __func__, bta_mce_cb.sdp_active);
+ APPL_TRACE_DEBUG("%s in, sdp_active:%d", __func__, bta_mce_cb.sdp_active);
- if (bta_mce_cb.sdp_active != BTA_MCE_SDP_ACT_NONE)
- {
- /* SDP is still in progress */
- status = BTA_MCE_BUSY;
- if(bta_mce_cb.p_dm_cback)
- bta_mce_cb.p_dm_cback(BTA_MCE_MAS_DISCOVERY_COMP_EVT, (tBTA_MCE *)&status, NULL);
+ if (bta_mce_cb.sdp_active != BTA_MCE_SDP_ACT_NONE) {
+ /* SDP is still in progress */
+ status = BTA_MCE_BUSY;
+ if (bta_mce_cb.p_dm_cback)
+ bta_mce_cb.p_dm_cback(BTA_MCE_MAS_DISCOVERY_COMP_EVT, (tBTA_MCE*)&status,
+ NULL);
- return;
- }
+ return;
+ }
- bta_mce_cb.sdp_active = BTA_MCE_SDP_ACT_YES;
- bdcpy(bta_mce_cb.remote_addr, p_data->get_rmt_mas.bd_addr);
+ bta_mce_cb.sdp_active = BTA_MCE_SDP_ACT_YES;
+ bdcpy(bta_mce_cb.remote_addr, p_data->get_rmt_mas.bd_addr);
- SDP_InitDiscoveryDb (p_bta_mce_cfg->p_sdp_db, p_bta_mce_cfg->sdp_db_size, 1,
- (tBT_UUID*) &bta_mce_mas_uuid, 0, NULL);
+ SDP_InitDiscoveryDb(p_bta_mce_cfg->p_sdp_db, p_bta_mce_cfg->sdp_db_size, 1,
+ (tBT_UUID*)&bta_mce_mas_uuid, 0, NULL);
- if (!SDP_ServiceSearchAttributeRequest2(p_data->get_rmt_mas.bd_addr, p_bta_mce_cfg->p_sdp_db,
- bta_mce_search_cback, NULL))
- {
- bta_mce_cb.sdp_active = BTA_MCE_SDP_ACT_NONE;
+ if (!SDP_ServiceSearchAttributeRequest2(p_data->get_rmt_mas.bd_addr,
+ p_bta_mce_cfg->p_sdp_db,
+ bta_mce_search_cback, NULL)) {
+ bta_mce_cb.sdp_active = BTA_MCE_SDP_ACT_NONE;
- /* failed to start SDP. report the failure right away */
- if (bta_mce_cb.p_dm_cback)
- bta_mce_cb.p_dm_cback(BTA_MCE_MAS_DISCOVERY_COMP_EVT, (tBTA_MCE *)&status, NULL);
- }
- /*
- else report the result when the cback is called
- */
+ /* failed to start SDP. report the failure right away */
+ if (bta_mce_cb.p_dm_cback)
+ bta_mce_cb.p_dm_cback(BTA_MCE_MAS_DISCOVERY_COMP_EVT, (tBTA_MCE*)&status,
+ NULL);
+ }
+ /*
+ else report the result when the cback is called
+ */
}
diff --git a/bta/mce/bta_mce_api.cc b/bta/mce/bta_mce_api.cc
index ed4c300..e9233d9 100644
--- a/bta/mce/bta_mce_api.cc
+++ b/bta/mce/bta_mce_api.cc
@@ -25,12 +25,12 @@
#include <string.h>
-#include "bta_api.h"
+#include "bt_common.h"
#include "bt_types.h"
-#include "bta_sys.h"
+#include "bta_api.h"
#include "bta_mce_api.h"
#include "bta_mce_int.h"
-#include "bt_common.h"
+#include "bta_sys.h"
#include "port_api.h"
#include "sdp_api.h"
@@ -38,11 +38,7 @@
* Constants
****************************************************************************/
-static const tBTA_SYS_REG bta_mce_reg =
-{
- bta_mce_sm_execute,
- NULL
-};
+static const tBTA_SYS_REG bta_mce_reg = {bta_mce_sm_execute, NULL};
/*******************************************************************************
*
@@ -58,29 +54,28 @@
* BTA_MCE_FAIL if internal failure.
*
******************************************************************************/
-tBTA_MCE_STATUS BTA_MceEnable(tBTA_MCE_DM_CBACK *p_cback)
-{
- tBTA_MCE_STATUS status = BTA_MCE_FAILURE;
+tBTA_MCE_STATUS BTA_MceEnable(tBTA_MCE_DM_CBACK* p_cback) {
+ tBTA_MCE_STATUS status = BTA_MCE_FAILURE;
- APPL_TRACE_API("%", __func__);
+ APPL_TRACE_API("%", __func__);
- if (p_cback && false == bta_sys_is_register(BTA_ID_MCE)) {
- memset(&bta_mce_cb, 0, sizeof(tBTA_MCE_CB));
+ if (p_cback && false == bta_sys_is_register(BTA_ID_MCE)) {
+ memset(&bta_mce_cb, 0, sizeof(tBTA_MCE_CB));
- /* register with BTA system manager */
- bta_sys_register(BTA_ID_MCE, &bta_mce_reg);
+ /* register with BTA system manager */
+ bta_sys_register(BTA_ID_MCE, &bta_mce_reg);
- if (p_cback) {
- tBTA_MCE_API_ENABLE *p_buf =
- (tBTA_MCE_API_ENABLE *)osi_malloc(sizeof(tBTA_MCE_API_ENABLE));
- p_buf->hdr.event = BTA_MCE_API_ENABLE_EVT;
- p_buf->p_cback = p_cback;
- bta_sys_sendmsg(p_buf);
- status = BTA_MCE_SUCCESS;
- }
+ if (p_cback) {
+ tBTA_MCE_API_ENABLE* p_buf =
+ (tBTA_MCE_API_ENABLE*)osi_malloc(sizeof(tBTA_MCE_API_ENABLE));
+ p_buf->hdr.event = BTA_MCE_API_ENABLE_EVT;
+ p_buf->p_cback = p_cback;
+ bta_sys_sendmsg(p_buf);
+ status = BTA_MCE_SUCCESS;
}
+ }
- return status;
+ return status;
}
/*******************************************************************************
@@ -96,17 +91,17 @@
* BTA_MCE_FAILURE, otherwise.
*
******************************************************************************/
-tBTA_MCE_STATUS BTA_MceGetRemoteMasInstances(BD_ADDR bd_addr)
-{
- tBTA_MCE_API_GET_REMOTE_MAS_INSTANCES *p_msg =
- (tBTA_MCE_API_GET_REMOTE_MAS_INSTANCES *)osi_malloc(sizeof(tBTA_MCE_API_GET_REMOTE_MAS_INSTANCES));
+tBTA_MCE_STATUS BTA_MceGetRemoteMasInstances(BD_ADDR bd_addr) {
+ tBTA_MCE_API_GET_REMOTE_MAS_INSTANCES* p_msg =
+ (tBTA_MCE_API_GET_REMOTE_MAS_INSTANCES*)osi_malloc(
+ sizeof(tBTA_MCE_API_GET_REMOTE_MAS_INSTANCES));
- APPL_TRACE_API("%s", __func__);
+ APPL_TRACE_API("%s", __func__);
- p_msg->hdr.event = BTA_MCE_API_GET_REMOTE_MAS_INSTANCES_EVT;
- bdcpy(p_msg->bd_addr, bd_addr);
+ p_msg->hdr.event = BTA_MCE_API_GET_REMOTE_MAS_INSTANCES_EVT;
+ bdcpy(p_msg->bd_addr, bd_addr);
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
- return BTA_MCE_SUCCESS;
+ return BTA_MCE_SUCCESS;
}
diff --git a/bta/mce/bta_mce_cfg.cc b/bta/mce/bta_mce_cfg.cc
index 0f9761e..3beb265 100644
--- a/bta/mce/bta_mce_cfg.cc
+++ b/bta/mce/bta_mce_cfg.cc
@@ -24,21 +24,22 @@
******************************************************************************/
#include "bt_common.h"
-#include "bta_api.h"
#include "bt_types.h"
+#include "bta_api.h"
#include "bta_mce_api.h"
#ifndef BTA_MCE_SDP_DB_SIZE
-#define BTA_MCE_SDP_DB_SIZE 4500
+#define BTA_MCE_SDP_DB_SIZE 4500
#endif
-static uint8_t __attribute__ ((aligned(4))) bta_mce_sdp_db_data[BTA_MCE_SDP_DB_SIZE];
+static uint8_t __attribute__((aligned(4)))
+bta_mce_sdp_db_data[BTA_MCE_SDP_DB_SIZE];
/* MCE configuration structure */
-const tBTA_MCE_CFG bta_mce_cfg =
-{
+const tBTA_MCE_CFG bta_mce_cfg = {
BTA_MCE_SDP_DB_SIZE,
- (tSDP_DISCOVERY_DB *)bta_mce_sdp_db_data /* The data buffer to keep SDP database */
+ (tSDP_DISCOVERY_DB*)
+ bta_mce_sdp_db_data /* The data buffer to keep SDP database */
};
-tBTA_MCE_CFG *p_bta_mce_cfg = (tBTA_MCE_CFG *) &bta_mce_cfg;
+tBTA_MCE_CFG* p_bta_mce_cfg = (tBTA_MCE_CFG*)&bta_mce_cfg;
diff --git a/bta/mce/bta_mce_int.h b/bta/mce/bta_mce_int.h
index bb43d03..e249d74 100644
--- a/bta/mce/bta_mce_int.h
+++ b/bta/mce/bta_mce_int.h
@@ -25,68 +25,62 @@
#ifndef BTA_MCE_INT_H
#define BTA_MCE_INT_H
-#include "bta_sys.h"
#include "bta_api.h"
#include "bta_mce_api.h"
+#include "bta_sys.h"
/*****************************************************************************
* Constants
****************************************************************************/
-enum
-{
- /* these events are handled by the state machine */
- BTA_MCE_API_ENABLE_EVT = BTA_SYS_EVT_START(BTA_ID_MCE),
- BTA_MCE_API_GET_REMOTE_MAS_INSTANCES_EVT,
- BTA_MCE_MAX_INT_EVT
+enum {
+ /* these events are handled by the state machine */
+ BTA_MCE_API_ENABLE_EVT = BTA_SYS_EVT_START(BTA_ID_MCE),
+ BTA_MCE_API_GET_REMOTE_MAS_INSTANCES_EVT,
+ BTA_MCE_MAX_INT_EVT
};
/* data type for BTA_MCE_API_ENABLE_EVT */
-typedef struct
-{
- BT_HDR hdr;
- tBTA_MCE_DM_CBACK *p_cback;
+typedef struct {
+ BT_HDR hdr;
+ tBTA_MCE_DM_CBACK* p_cback;
} tBTA_MCE_API_ENABLE;
/* data type for BTA_MCE_API_GET_REMOTE_MAS_INSTANCES_EVT */
-typedef struct
-{
- BT_HDR hdr;
- BD_ADDR bd_addr;
+typedef struct {
+ BT_HDR hdr;
+ BD_ADDR bd_addr;
} tBTA_MCE_API_GET_REMOTE_MAS_INSTANCES;
/* union of all data types */
-typedef union
-{
- /* GKI event buffer header */
- BT_HDR hdr;
- tBTA_MCE_API_ENABLE enable;
- tBTA_MCE_API_GET_REMOTE_MAS_INSTANCES get_rmt_mas;
+typedef union {
+ /* GKI event buffer header */
+ BT_HDR hdr;
+ tBTA_MCE_API_ENABLE enable;
+ tBTA_MCE_API_GET_REMOTE_MAS_INSTANCES get_rmt_mas;
} tBTA_MCE_MSG;
/* MCE control block */
-typedef struct
-{
- uint8_t sdp_active; /* see BTA_MCE_SDP_ACT_* */
- BD_ADDR remote_addr;
- tBTA_MCE_DM_CBACK *p_dm_cback;
+typedef struct {
+ uint8_t sdp_active; /* see BTA_MCE_SDP_ACT_* */
+ BD_ADDR remote_addr;
+ tBTA_MCE_DM_CBACK* p_dm_cback;
} tBTA_MCE_CB;
-enum
-{
- BTA_MCE_SDP_ACT_NONE = 0,
- BTA_MCE_SDP_ACT_YES /* waiting for SDP result */
+enum {
+ BTA_MCE_SDP_ACT_NONE = 0,
+ BTA_MCE_SDP_ACT_YES /* waiting for SDP result */
};
/* MCE control block */
extern tBTA_MCE_CB bta_mce_cb;
/* config struct */
-extern tBTA_MCE_CFG *p_bta_mce_cfg;
+extern tBTA_MCE_CFG* p_bta_mce_cfg;
-extern bool bta_mce_sm_execute(BT_HDR *p_msg);
+extern bool bta_mce_sm_execute(BT_HDR* p_msg);
-extern void bta_mce_enable (tBTA_MCE_MSG *p_data);
-extern void bta_mce_get_remote_mas_instances (tBTA_MCE_MSG *p_data);
+extern void bta_mce_enable(tBTA_MCE_MSG* p_data);
+extern void bta_mce_get_remote_mas_instances(tBTA_MCE_MSG* p_data);
#endif /* BTA_MCE_INT_H */
diff --git a/bta/mce/bta_mce_main.cc b/bta/mce/bta_mce_main.cc
index 6188bd7..abd3e5c 100644
--- a/bta/mce/bta_mce_main.cc
+++ b/bta/mce/bta_mce_main.cc
@@ -26,9 +26,9 @@
#include <stddef.h>
#include "bta_api.h"
-#include "bta_sys.h"
#include "bta_mce_api.h"
#include "bta_mce_int.h"
+#include "bta_sys.h"
/*****************************************************************************
* Constants and types
@@ -37,16 +37,16 @@
tBTA_MCE_CB bta_mce_cb;
/* state machine action enumeration list */
-#define BTA_MCE_NUM_ACTIONS (BTA_MCE_MAX_INT_EVT & 0x00ff)
+#define BTA_MCE_NUM_ACTIONS (BTA_MCE_MAX_INT_EVT & 0x00ff)
/* type for action functions */
-typedef void (*tBTA_MCE_ACTION)(tBTA_MCE_MSG *p_data);
+typedef void (*tBTA_MCE_ACTION)(tBTA_MCE_MSG* p_data);
/* action function list */
-const tBTA_MCE_ACTION bta_mce_action[] =
-{
- bta_mce_enable, /* BTA_MCE_API_ENABLE_EVT */
- bta_mce_get_remote_mas_instances, /* BTA_MCE_API_GET_REMOTE_MAS_INSTANCES_EVT */
+const tBTA_MCE_ACTION bta_mce_action[] = {
+ bta_mce_enable, /* BTA_MCE_API_ENABLE_EVT */
+ bta_mce_get_remote_mas_instances, /* BTA_MCE_API_GET_REMOTE_MAS_INSTANCES_EVT
+ */
};
/*******************************************************************************
@@ -59,19 +59,17 @@
* Returns void
*
******************************************************************************/
-bool bta_mce_sm_execute(BT_HDR *p_msg)
-{
- if(p_msg == NULL) return false;
+bool bta_mce_sm_execute(BT_HDR* p_msg) {
+ if (p_msg == NULL) return false;
- bool ret = false;
- uint16_t action = (p_msg->event & 0x00ff);
+ bool ret = false;
+ uint16_t action = (p_msg->event & 0x00ff);
- /* execute action functions */
- if(action < BTA_MCE_NUM_ACTIONS)
- {
- (*bta_mce_action[action])((tBTA_MCE_MSG*)p_msg);
- ret = true;
- }
+ /* execute action functions */
+ if (action < BTA_MCE_NUM_ACTIONS) {
+ (*bta_mce_action[action])((tBTA_MCE_MSG*)p_msg);
+ ret = true;
+ }
- return(ret);
+ return (ret);
}
diff --git a/bta/pan/bta_pan_act.cc b/bta/pan/bta_pan_act.cc
index 57921b2..2f1892a 100644
--- a/bta/pan/bta_pan_act.cc
+++ b/bta/pan/bta_pan_act.cc
@@ -28,20 +28,19 @@
#include <string.h>
-#include "bta_api.h"
-#include "bta_sys.h"
#include "bt_common.h"
-#include "pan_api.h"
+#include "bta_api.h"
#include "bta_pan_api.h"
-#include "bta_pan_int.h"
#include "bta_pan_co.h"
+#include "bta_pan_int.h"
+#include "bta_sys.h"
#include "osi/include/osi.h"
+#include "pan_api.h"
#include "utl.h"
-
/* RX and TX data flow mask */
-#define BTA_PAN_RX_MASK 0x0F
-#define BTA_PAN_TX_MASK 0xF0
+#define BTA_PAN_RX_MASK 0x0F
+#define BTA_PAN_TX_MASK 0xF0
/*******************************************************************************
*
@@ -54,10 +53,9 @@
* Returns void
*
*******************************************************************************/
-static void bta_pan_pm_conn_busy(tBTA_PAN_SCB *p_scb)
-{
- if ((p_scb != NULL) && (p_scb->state != BTA_PAN_IDLE_ST))
- bta_sys_busy(BTA_ID_PAN, p_scb->app_id, p_scb->bd_addr);
+static void bta_pan_pm_conn_busy(tBTA_PAN_SCB* p_scb) {
+ if ((p_scb != NULL) && (p_scb->state != BTA_PAN_IDLE_ST))
+ bta_sys_busy(BTA_ID_PAN, p_scb->app_id, p_scb->bd_addr);
}
/*******************************************************************************
@@ -71,10 +69,9 @@
* Returns void
*
*******************************************************************************/
-static void bta_pan_pm_conn_idle(tBTA_PAN_SCB *p_scb)
-{
- if ((p_scb != NULL) && (p_scb->state != BTA_PAN_IDLE_ST))
- bta_sys_idle(BTA_ID_PAN, p_scb->app_id, p_scb->bd_addr);
+static void bta_pan_pm_conn_idle(tBTA_PAN_SCB* p_scb) {
+ if ((p_scb != NULL) && (p_scb->state != BTA_PAN_IDLE_ST))
+ bta_sys_idle(BTA_ID_PAN, p_scb->app_id, p_scb->bd_addr);
}
/*******************************************************************************
@@ -87,48 +84,47 @@
* Returns void
*
******************************************************************************/
-static void bta_pan_conn_state_cback(uint16_t handle, BD_ADDR bd_addr, tPAN_RESULT state,
- bool is_role_change, uint8_t src_role, uint8_t dst_role)
-{
- tBTA_PAN_SCB *p_scb;
- tBTA_PAN_CONN *p_buf = (tBTA_PAN_CONN *)osi_malloc(sizeof(tBTA_PAN_CONN));
+static void bta_pan_conn_state_cback(uint16_t handle, BD_ADDR bd_addr,
+ tPAN_RESULT state, bool is_role_change,
+ uint8_t src_role, uint8_t dst_role) {
+ tBTA_PAN_SCB* p_scb;
+ tBTA_PAN_CONN* p_buf = (tBTA_PAN_CONN*)osi_malloc(sizeof(tBTA_PAN_CONN));
- if ((state == PAN_SUCCESS) && !is_role_change) {
- p_buf->hdr.event = BTA_PAN_CONN_OPEN_EVT;
- if ((p_scb = bta_pan_scb_by_handle(handle)) == NULL) {
- /* allocate an scb */
- p_scb = bta_pan_scb_alloc();
- }
- /* we have exceeded maximum number of connections */
- if (!p_scb) {
- PAN_Disconnect (handle);
- return;
- }
-
- p_scb->handle = handle;
- p_scb->local_role = src_role;
- p_scb->peer_role = dst_role;
- p_scb->pan_flow_enable = true;
- bdcpy(p_scb->bd_addr, bd_addr);
- p_scb->data_queue = fixed_queue_new(SIZE_MAX);
-
- if (src_role == PAN_ROLE_CLIENT)
- p_scb->app_id = bta_pan_cb.app_id[0];
- else if (src_role == PAN_ROLE_GN_SERVER)
- p_scb->app_id = bta_pan_cb.app_id[1];
- else if (src_role == PAN_ROLE_NAP_SERVER)
- p_scb->app_id = bta_pan_cb.app_id[2];
+ if ((state == PAN_SUCCESS) && !is_role_change) {
+ p_buf->hdr.event = BTA_PAN_CONN_OPEN_EVT;
+ if ((p_scb = bta_pan_scb_by_handle(handle)) == NULL) {
+ /* allocate an scb */
+ p_scb = bta_pan_scb_alloc();
}
- else if ((state != PAN_SUCCESS) && !is_role_change) {
- p_buf->hdr.event = BTA_PAN_CONN_CLOSE_EVT;
- } else {
- return;
+ /* we have exceeded maximum number of connections */
+ if (!p_scb) {
+ PAN_Disconnect(handle);
+ return;
}
- p_buf->result = state;
- p_buf->hdr.layer_specific = handle;
+ p_scb->handle = handle;
+ p_scb->local_role = src_role;
+ p_scb->peer_role = dst_role;
+ p_scb->pan_flow_enable = true;
+ bdcpy(p_scb->bd_addr, bd_addr);
+ p_scb->data_queue = fixed_queue_new(SIZE_MAX);
- bta_sys_sendmsg(p_buf);
+ if (src_role == PAN_ROLE_CLIENT)
+ p_scb->app_id = bta_pan_cb.app_id[0];
+ else if (src_role == PAN_ROLE_GN_SERVER)
+ p_scb->app_id = bta_pan_cb.app_id[1];
+ else if (src_role == PAN_ROLE_NAP_SERVER)
+ p_scb->app_id = bta_pan_cb.app_id[2];
+ } else if ((state != PAN_SUCCESS) && !is_role_change) {
+ p_buf->hdr.event = BTA_PAN_CONN_CLOSE_EVT;
+ } else {
+ return;
+ }
+
+ p_buf->result = state;
+ p_buf->hdr.layer_specific = handle;
+
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -141,23 +137,21 @@
* Returns void
*
******************************************************************************/
-static void bta_pan_data_flow_cb(uint16_t handle, tPAN_RESULT result)
-{
- tBTA_PAN_SCB *p_scb;
+static void bta_pan_data_flow_cb(uint16_t handle, tPAN_RESULT result) {
+ tBTA_PAN_SCB* p_scb;
- if ((p_scb = bta_pan_scb_by_handle(handle)) == NULL)
- return;
+ if ((p_scb = bta_pan_scb_by_handle(handle)) == NULL) return;
- if (result == PAN_TX_FLOW_ON) {
- BT_HDR *p_buf = (BT_HDR *) osi_malloc(sizeof(BT_HDR));
- p_buf->layer_specific = handle;
- p_buf->event = BTA_PAN_BNEP_FLOW_ENABLE_EVT;
- bta_sys_sendmsg(p_buf);
- bta_pan_co_rx_flow(handle, p_scb->app_id, true);
- } else if (result == PAN_TX_FLOW_OFF) {
- p_scb->pan_flow_enable = false;
- bta_pan_co_rx_flow(handle, p_scb->app_id, false);
- }
+ if (result == PAN_TX_FLOW_ON) {
+ BT_HDR* p_buf = (BT_HDR*)osi_malloc(sizeof(BT_HDR));
+ p_buf->layer_specific = handle;
+ p_buf->event = BTA_PAN_BNEP_FLOW_ENABLE_EVT;
+ bta_sys_sendmsg(p_buf);
+ bta_pan_co_rx_flow(handle, p_scb->app_id, true);
+ } else if (result == PAN_TX_FLOW_OFF) {
+ p_scb->pan_flow_enable = false;
+ bta_pan_co_rx_flow(handle, p_scb->app_id, false);
+ }
}
/*******************************************************************************
@@ -170,40 +164,40 @@
* Returns void
*
******************************************************************************/
-static void bta_pan_data_buf_ind_cback(uint16_t handle, BD_ADDR src, BD_ADDR dst, uint16_t protocol, BT_HDR *p_buf,
- bool ext, bool forward)
-{
- tBTA_PAN_SCB *p_scb;
- BT_HDR *p_new_buf;
+static void bta_pan_data_buf_ind_cback(uint16_t handle, BD_ADDR src,
+ BD_ADDR dst, uint16_t protocol,
+ BT_HDR* p_buf, bool ext, bool forward) {
+ tBTA_PAN_SCB* p_scb;
+ BT_HDR* p_new_buf;
- if (sizeof(tBTA_PAN_DATA_PARAMS) > p_buf->offset) {
- /* offset smaller than data structure in front of actual data */
- p_new_buf = (BT_HDR *)osi_malloc(PAN_BUF_SIZE);
- memcpy((uint8_t *)(p_new_buf + 1) + sizeof(tBTA_PAN_DATA_PARAMS),
- (uint8_t *)(p_buf + 1) + p_buf->offset, p_buf->len);
- p_new_buf->len = p_buf->len;
- p_new_buf->offset = sizeof(tBTA_PAN_DATA_PARAMS);
- osi_free(p_buf);
- } else {
- p_new_buf = p_buf;
- }
- /* copy params into the space before the data */
- bdcpy(((tBTA_PAN_DATA_PARAMS *)p_new_buf)->src, src);
- bdcpy(((tBTA_PAN_DATA_PARAMS *)p_new_buf)->dst, dst);
- ((tBTA_PAN_DATA_PARAMS *)p_new_buf)->protocol = protocol;
- ((tBTA_PAN_DATA_PARAMS *)p_new_buf)->ext = ext;
- ((tBTA_PAN_DATA_PARAMS *)p_new_buf)->forward = forward;
+ if (sizeof(tBTA_PAN_DATA_PARAMS) > p_buf->offset) {
+ /* offset smaller than data structure in front of actual data */
+ p_new_buf = (BT_HDR*)osi_malloc(PAN_BUF_SIZE);
+ memcpy((uint8_t*)(p_new_buf + 1) + sizeof(tBTA_PAN_DATA_PARAMS),
+ (uint8_t*)(p_buf + 1) + p_buf->offset, p_buf->len);
+ p_new_buf->len = p_buf->len;
+ p_new_buf->offset = sizeof(tBTA_PAN_DATA_PARAMS);
+ osi_free(p_buf);
+ } else {
+ p_new_buf = p_buf;
+ }
+ /* copy params into the space before the data */
+ bdcpy(((tBTA_PAN_DATA_PARAMS*)p_new_buf)->src, src);
+ bdcpy(((tBTA_PAN_DATA_PARAMS*)p_new_buf)->dst, dst);
+ ((tBTA_PAN_DATA_PARAMS*)p_new_buf)->protocol = protocol;
+ ((tBTA_PAN_DATA_PARAMS*)p_new_buf)->ext = ext;
+ ((tBTA_PAN_DATA_PARAMS*)p_new_buf)->forward = forward;
- if ((p_scb = bta_pan_scb_by_handle(handle)) == NULL) {
- osi_free(p_new_buf);
- return;
- }
+ if ((p_scb = bta_pan_scb_by_handle(handle)) == NULL) {
+ osi_free(p_new_buf);
+ return;
+ }
- fixed_queue_enqueue(p_scb->data_queue, p_new_buf);
- BT_HDR *p_event = (BT_HDR *)osi_malloc(sizeof(BT_HDR));
- p_event->layer_specific = handle;
- p_event->event = BTA_PAN_RX_FROM_BNEP_READY_EVT;
- bta_sys_sendmsg(p_event);
+ fixed_queue_enqueue(p_scb->data_queue, p_new_buf);
+ BT_HDR* p_event = (BT_HDR*)osi_malloc(sizeof(BT_HDR));
+ p_event->layer_specific = handle;
+ p_event->event = BTA_PAN_RX_FROM_BNEP_READY_EVT;
+ bta_sys_sendmsg(p_event);
}
/*******************************************************************************
@@ -216,17 +210,16 @@
* Returns void
*
******************************************************************************/
-static void bta_pan_pfilt_ind_cback(uint16_t handle, bool indication,tBNEP_RESULT result,
- uint16_t num_filters, uint8_t *p_filters)
-{
-
- bta_pan_co_pfilt_ind(handle, indication, (tBTA_PAN_STATUS)((result == BNEP_SUCCESS) ? BTA_PAN_SUCCESS : BTA_PAN_FAIL),
- num_filters, p_filters);
-
-
+static void bta_pan_pfilt_ind_cback(uint16_t handle, bool indication,
+ tBNEP_RESULT result, uint16_t num_filters,
+ uint8_t* p_filters) {
+ bta_pan_co_pfilt_ind(
+ handle, indication,
+ (tBTA_PAN_STATUS)((result == BNEP_SUCCESS) ? BTA_PAN_SUCCESS
+ : BTA_PAN_FAIL),
+ num_filters, p_filters);
}
-
/*******************************************************************************
*
* Function bta_pan_mfilt_ind_cback
@@ -237,16 +230,16 @@
* Returns void
*
******************************************************************************/
-static void bta_pan_mfilt_ind_cback(uint16_t handle, bool indication,tBNEP_RESULT result,
- uint16_t num_mfilters, uint8_t *p_mfilters)
-{
-
- bta_pan_co_mfilt_ind(handle, indication, (tBTA_PAN_STATUS)((result == BNEP_SUCCESS) ? BTA_PAN_SUCCESS : BTA_PAN_FAIL),
- num_mfilters, p_mfilters);
+static void bta_pan_mfilt_ind_cback(uint16_t handle, bool indication,
+ tBNEP_RESULT result, uint16_t num_mfilters,
+ uint8_t* p_mfilters) {
+ bta_pan_co_mfilt_ind(
+ handle, indication,
+ (tBTA_PAN_STATUS)((result == BNEP_SUCCESS) ? BTA_PAN_SUCCESS
+ : BTA_PAN_FAIL),
+ num_mfilters, p_mfilters);
}
-
-
/*******************************************************************************
*
* Function bta_pan_has_multiple_connections
@@ -258,40 +251,35 @@
* Returns bool
*
******************************************************************************/
-static bool bta_pan_has_multiple_connections(uint8_t app_id)
-{
- tBTA_PAN_SCB *p_scb = NULL;
- bool found = false;
- BD_ADDR bd_addr;
+static bool bta_pan_has_multiple_connections(uint8_t app_id) {
+ tBTA_PAN_SCB* p_scb = NULL;
+ bool found = false;
+ BD_ADDR bd_addr;
- for (uint8_t index = 0; index < BTA_PAN_NUM_CONN; index++)
- {
- p_scb = &bta_pan_cb.scb[index];
- if (p_scb->in_use == true && app_id == p_scb->app_id)
- {
- /* save temp bd_addr */
- bdcpy(bd_addr, p_scb->bd_addr);
- found = true;
- break;
- }
+ for (uint8_t index = 0; index < BTA_PAN_NUM_CONN; index++) {
+ p_scb = &bta_pan_cb.scb[index];
+ if (p_scb->in_use == true && app_id == p_scb->app_id) {
+ /* save temp bd_addr */
+ bdcpy(bd_addr, p_scb->bd_addr);
+ found = true;
+ break;
}
+ }
- /* If cannot find a match then there is no connection at all */
- if (found == false)
- return false;
+ /* If cannot find a match then there is no connection at all */
+ if (found == false) return false;
- /* Find whether there is another connection with different device other than PANU.
- Could be same service or different service */
- for (uint8_t index = 0; index < BTA_PAN_NUM_CONN; index++)
- {
- p_scb = &bta_pan_cb.scb[index];
- if (p_scb->in_use == true && p_scb->app_id != bta_pan_cb.app_id[0] &&
- bdcmp(bd_addr, p_scb->bd_addr))
- {
- return true;
- }
+ /* Find whether there is another connection with different device other than
+ PANU.
+ Could be same service or different service */
+ for (uint8_t index = 0; index < BTA_PAN_NUM_CONN; index++) {
+ p_scb = &bta_pan_cb.scb[index];
+ if (p_scb->in_use == true && p_scb->app_id != bta_pan_cb.app_id[0] &&
+ bdcmp(bd_addr, p_scb->bd_addr)) {
+ return true;
}
- return false;
+ }
+ return false;
}
/*******************************************************************************
@@ -305,43 +293,39 @@
* Returns void
*
******************************************************************************/
-void bta_pan_enable(tBTA_PAN_DATA *p_data)
-{
- tPAN_REGISTER reg_data;
- uint16_t initial_discoverability;
- uint16_t initial_connectability;
- uint16_t d_window;
- uint16_t d_interval;
- uint16_t c_window;
- uint16_t c_interval;
+void bta_pan_enable(tBTA_PAN_DATA* p_data) {
+ tPAN_REGISTER reg_data;
+ uint16_t initial_discoverability;
+ uint16_t initial_connectability;
+ uint16_t d_window;
+ uint16_t d_interval;
+ uint16_t c_window;
+ uint16_t c_interval;
- bta_pan_cb.p_cback = p_data->api_enable.p_cback;
+ bta_pan_cb.p_cback = p_data->api_enable.p_cback;
- reg_data.pan_conn_state_cb = bta_pan_conn_state_cback;
- reg_data.pan_bridge_req_cb = NULL;
- reg_data.pan_data_buf_ind_cb = bta_pan_data_buf_ind_cback;
- reg_data.pan_data_ind_cb = NULL;
- reg_data.pan_pfilt_ind_cb = bta_pan_pfilt_ind_cback;
- reg_data.pan_mfilt_ind_cb = bta_pan_mfilt_ind_cback;
- reg_data.pan_tx_data_flow_cb = bta_pan_data_flow_cb;
+ reg_data.pan_conn_state_cb = bta_pan_conn_state_cback;
+ reg_data.pan_bridge_req_cb = NULL;
+ reg_data.pan_data_buf_ind_cb = bta_pan_data_buf_ind_cback;
+ reg_data.pan_data_ind_cb = NULL;
+ reg_data.pan_pfilt_ind_cb = bta_pan_pfilt_ind_cback;
+ reg_data.pan_mfilt_ind_cb = bta_pan_mfilt_ind_cback;
+ reg_data.pan_tx_data_flow_cb = bta_pan_data_flow_cb;
- /* read connectability and discoverability settings.
- Pan profile changes the settings. We have to change it back to
- be consistent with other bta subsystems */
- initial_connectability = BTM_ReadConnectability(&c_window, &c_interval);
- initial_discoverability = BTM_ReadDiscoverability(&d_window, &d_interval);
+ /* read connectability and discoverability settings.
+ Pan profile changes the settings. We have to change it back to
+ be consistent with other bta subsystems */
+ initial_connectability = BTM_ReadConnectability(&c_window, &c_interval);
+ initial_discoverability = BTM_ReadDiscoverability(&d_window, &d_interval);
+ PAN_Register(®_data);
- PAN_Register (®_data);
+ /* set it back to original value */
+ BTM_SetDiscoverability(initial_discoverability, d_window, d_interval);
+ BTM_SetConnectability(initial_connectability, c_window, c_interval);
-
- /* set it back to original value */
- BTM_SetDiscoverability(initial_discoverability, d_window, d_interval);
- BTM_SetConnectability(initial_connectability, c_window, c_interval);
-
- bta_pan_cb.flow_mask = bta_pan_co_init(&bta_pan_cb.q_level);
- bta_pan_cb.p_cback(BTA_PAN_ENABLE_EVT, NULL);
-
+ bta_pan_cb.flow_mask = bta_pan_co_init(&bta_pan_cb.q_level);
+ bta_pan_cb.p_cback(BTA_PAN_ENABLE_EVT, NULL);
}
/*******************************************************************************
@@ -353,61 +337,54 @@
* Returns void
*
******************************************************************************/
-void bta_pan_set_role(tBTA_PAN_DATA *p_data)
-{
- tPAN_RESULT status;
- tBTA_PAN_SET_ROLE set_role;
- uint8_t sec[3];
+void bta_pan_set_role(tBTA_PAN_DATA* p_data) {
+ tPAN_RESULT status;
+ tBTA_PAN_SET_ROLE set_role;
+ uint8_t sec[3];
+ bta_pan_cb.app_id[0] = p_data->api_set_role.user_app_id;
+ bta_pan_cb.app_id[1] = p_data->api_set_role.gn_app_id;
+ bta_pan_cb.app_id[2] = p_data->api_set_role.nap_app_id;
- bta_pan_cb.app_id[0] = p_data->api_set_role.user_app_id;
- bta_pan_cb.app_id[1] = p_data->api_set_role.gn_app_id;
- bta_pan_cb.app_id[2] = p_data->api_set_role.nap_app_id;
+ sec[0] = p_data->api_set_role.user_sec_mask;
+ sec[1] = p_data->api_set_role.gn_sec_mask;
+ sec[2] = p_data->api_set_role.nap_sec_mask;
- sec[0] = p_data->api_set_role.user_sec_mask;
- sec[1] = p_data->api_set_role.gn_sec_mask;
- sec[2] = p_data->api_set_role.nap_sec_mask;
+ /* set security correctly in api and here */
+ status = PAN_SetRole(
+ p_data->api_set_role.role, sec, p_data->api_set_role.user_name,
+ p_data->api_set_role.gn_name, p_data->api_set_role.nap_name);
- /* set security correctly in api and here */
- status = PAN_SetRole(p_data->api_set_role.role, sec,
- p_data->api_set_role.user_name,
- p_data->api_set_role.gn_name,
- p_data->api_set_role.nap_name);
-
- set_role.role = p_data->api_set_role.role;
- if(status == PAN_SUCCESS)
- {
- if(p_data->api_set_role.role & PAN_ROLE_NAP_SERVER )
- bta_sys_add_uuid(UUID_SERVCLASS_NAP);
- else
- bta_sys_remove_uuid(UUID_SERVCLASS_NAP);
-
- if(p_data->api_set_role.role & PAN_ROLE_GN_SERVER )
- bta_sys_add_uuid(UUID_SERVCLASS_GN);
- else
- bta_sys_remove_uuid(UUID_SERVCLASS_GN);
-
- if(p_data->api_set_role.role & PAN_ROLE_CLIENT )
- bta_sys_add_uuid(UUID_SERVCLASS_PANU);
- else
- bta_sys_remove_uuid(UUID_SERVCLASS_PANU);
-
- set_role.status = BTA_PAN_SUCCESS;
- }
- /* if status is not success clear everything */
+ set_role.role = p_data->api_set_role.role;
+ if (status == PAN_SUCCESS) {
+ if (p_data->api_set_role.role & PAN_ROLE_NAP_SERVER)
+ bta_sys_add_uuid(UUID_SERVCLASS_NAP);
else
- {
- PAN_SetRole(0, 0, NULL, NULL, NULL);
- bta_sys_remove_uuid(UUID_SERVCLASS_NAP);
- bta_sys_remove_uuid(UUID_SERVCLASS_GN);
- bta_sys_remove_uuid(UUID_SERVCLASS_PANU);
- set_role.status = BTA_PAN_FAIL;
- }
- bta_pan_cb.p_cback(BTA_PAN_SET_ROLE_EVT, (tBTA_PAN *)&set_role);
+ bta_sys_remove_uuid(UUID_SERVCLASS_NAP);
+
+ if (p_data->api_set_role.role & PAN_ROLE_GN_SERVER)
+ bta_sys_add_uuid(UUID_SERVCLASS_GN);
+ else
+ bta_sys_remove_uuid(UUID_SERVCLASS_GN);
+
+ if (p_data->api_set_role.role & PAN_ROLE_CLIENT)
+ bta_sys_add_uuid(UUID_SERVCLASS_PANU);
+ else
+ bta_sys_remove_uuid(UUID_SERVCLASS_PANU);
+
+ set_role.status = BTA_PAN_SUCCESS;
+ }
+ /* if status is not success clear everything */
+ else {
+ PAN_SetRole(0, 0, NULL, NULL, NULL);
+ bta_sys_remove_uuid(UUID_SERVCLASS_NAP);
+ bta_sys_remove_uuid(UUID_SERVCLASS_GN);
+ bta_sys_remove_uuid(UUID_SERVCLASS_PANU);
+ set_role.status = BTA_PAN_FAIL;
+ }
+ bta_pan_cb.p_cback(BTA_PAN_SET_ROLE_EVT, (tBTA_PAN*)&set_role);
}
-
-
/*******************************************************************************
*
* Function bta_pan_disable
@@ -419,39 +396,31 @@
* Returns void
*
******************************************************************************/
-void bta_pan_disable(void)
-{
+void bta_pan_disable(void) {
+ BT_HDR* p_buf;
+ tBTA_PAN_SCB* p_scb = &bta_pan_cb.scb[0];
+ uint8_t i;
- BT_HDR *p_buf;
- tBTA_PAN_SCB *p_scb = &bta_pan_cb.scb[0];
- uint8_t i;
-
-
- /* close all connections */
- PAN_SetRole (0, NULL, NULL, NULL, NULL);
+ /* close all connections */
+ PAN_SetRole(0, NULL, NULL, NULL, NULL);
#if (BTA_EIR_CANNED_UUID_LIST != TRUE)
- bta_sys_remove_uuid(UUID_SERVCLASS_NAP);
- bta_sys_remove_uuid(UUID_SERVCLASS_GN);
- bta_sys_remove_uuid(UUID_SERVCLASS_PANU);
-#endif // BTA_EIR_CANNED_UUID_LIST
- /* free all queued up data buffers */
- for (i = 0; i < BTA_PAN_NUM_CONN; i++, p_scb++)
- {
- if (p_scb->in_use)
- {
- while ((p_buf = (BT_HDR *)fixed_queue_try_dequeue(p_scb->data_queue)) != NULL)
- osi_free(p_buf);
+ bta_sys_remove_uuid(UUID_SERVCLASS_NAP);
+ bta_sys_remove_uuid(UUID_SERVCLASS_GN);
+ bta_sys_remove_uuid(UUID_SERVCLASS_PANU);
+#endif // BTA_EIR_CANNED_UUID_LIST
+ /* free all queued up data buffers */
+ for (i = 0; i < BTA_PAN_NUM_CONN; i++, p_scb++) {
+ if (p_scb->in_use) {
+ while ((p_buf = (BT_HDR*)fixed_queue_try_dequeue(p_scb->data_queue)) !=
+ NULL)
+ osi_free(p_buf);
- bta_pan_co_close(p_scb->handle, p_scb->app_id);
-
- }
+ bta_pan_co_close(p_scb->handle, p_scb->app_id);
}
+ }
-
-
- PAN_Deregister();
-
+ PAN_Deregister();
}
/*******************************************************************************
@@ -463,42 +432,33 @@
* Returns void
*
******************************************************************************/
-void bta_pan_open(tBTA_PAN_SCB *p_scb, tBTA_PAN_DATA *p_data)
-{
- tPAN_RESULT status;
- tBTA_PAN_OPEN data;
- tBTA_PAN_OPENING opening;
+void bta_pan_open(tBTA_PAN_SCB* p_scb, tBTA_PAN_DATA* p_data) {
+ tPAN_RESULT status;
+ tBTA_PAN_OPEN data;
+ tBTA_PAN_OPENING opening;
+ status = PAN_Connect(p_data->api_open.bd_addr, p_data->api_open.local_role,
+ p_data->api_open.peer_role, &p_scb->handle);
+ APPL_TRACE_DEBUG("%s pan connect status: %d", __func__, status);
- status = PAN_Connect (p_data->api_open.bd_addr, p_data->api_open.local_role, p_data->api_open.peer_role,
- &p_scb->handle);
- APPL_TRACE_DEBUG("%s pan connect status: %d", __func__, status);
+ if (status == PAN_SUCCESS) {
+ bdcpy(p_scb->bd_addr, p_data->api_open.bd_addr);
+ p_scb->local_role = p_data->api_open.local_role;
+ p_scb->peer_role = p_data->api_open.peer_role;
+ bdcpy(opening.bd_addr, p_data->api_open.bd_addr);
+ opening.handle = p_scb->handle;
+ bta_pan_cb.p_cback(BTA_PAN_OPENING_EVT, (tBTA_PAN*)&opening);
- if(status == PAN_SUCCESS)
- {
-
- bdcpy(p_scb->bd_addr, p_data->api_open.bd_addr);
- p_scb->local_role = p_data->api_open.local_role;
- p_scb->peer_role = p_data->api_open.peer_role;
- bdcpy(opening.bd_addr, p_data->api_open.bd_addr);
- opening.handle = p_scb->handle;
- bta_pan_cb.p_cback(BTA_PAN_OPENING_EVT, (tBTA_PAN *)&opening);
-
-
- }
- else
- {
- bta_pan_scb_dealloc(p_scb);
- bdcpy(data.bd_addr, p_data->api_open.bd_addr);
- data.status = BTA_PAN_FAIL;
- data.local_role = p_data->api_open.local_role;
- data.peer_role = p_data->api_open.peer_role;
- bta_pan_cb.p_cback(BTA_PAN_OPEN_EVT, (tBTA_PAN *)&data);
- }
-
+ } else {
+ bta_pan_scb_dealloc(p_scb);
+ bdcpy(data.bd_addr, p_data->api_open.bd_addr);
+ data.status = BTA_PAN_FAIL;
+ data.local_role = p_data->api_open.local_role;
+ data.peer_role = p_data->api_open.peer_role;
+ bta_pan_cb.p_cback(BTA_PAN_OPEN_EVT, (tBTA_PAN*)&data);
+ }
}
-
/*******************************************************************************
*
* Function bta_pan_close
@@ -510,21 +470,19 @@
* Returns void
*
******************************************************************************/
-void bta_pan_api_close (tBTA_PAN_SCB *p_scb,
- UNUSED_ATTR tBTA_PAN_DATA *p_data)
-{
- tBTA_PAN_CONN *p_buf = (tBTA_PAN_CONN *)osi_malloc(sizeof(tBTA_PAN_CONN));
+void bta_pan_api_close(tBTA_PAN_SCB* p_scb, UNUSED_ATTR tBTA_PAN_DATA* p_data) {
+ tBTA_PAN_CONN* p_buf = (tBTA_PAN_CONN*)osi_malloc(sizeof(tBTA_PAN_CONN));
- PAN_Disconnect(p_scb->handle);
+ PAN_Disconnect(p_scb->handle);
- /*
- * Send an event to BTA so that application will get the connection
- * close event.
- */
- p_buf->hdr.event = BTA_PAN_CONN_CLOSE_EVT;
- p_buf->hdr.layer_specific = p_scb->handle;
+ /*
+ * Send an event to BTA so that application will get the connection
+ * close event.
+ */
+ p_buf->hdr.event = BTA_PAN_CONN_CLOSE_EVT;
+ p_buf->hdr.layer_specific = p_scb->handle;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -536,46 +494,41 @@
* Returns void
*
******************************************************************************/
-void bta_pan_conn_open(tBTA_PAN_SCB *p_scb, tBTA_PAN_DATA *p_data)
-{
+void bta_pan_conn_open(tBTA_PAN_SCB* p_scb, tBTA_PAN_DATA* p_data) {
+ tBTA_PAN_OPEN data;
- tBTA_PAN_OPEN data;
+ APPL_TRACE_DEBUG("%s pan connection result: %d", __func__,
+ p_data->conn.result);
- APPL_TRACE_DEBUG("%s pan connection result: %d", __func__, p_data->conn.result);
+ bdcpy(data.bd_addr, p_scb->bd_addr);
+ data.handle = p_scb->handle;
+ data.local_role = p_scb->local_role;
+ data.peer_role = p_scb->peer_role;
- bdcpy(data.bd_addr, p_scb->bd_addr);
- data.handle = p_scb->handle;
- data.local_role = p_scb->local_role;
- data.peer_role = p_scb->peer_role;
-
- if(p_data->conn.result == PAN_SUCCESS)
- {
- data.status = BTA_PAN_SUCCESS;
- p_scb->pan_flow_enable = true;
- p_scb->app_flow_enable = true;
- bta_sys_conn_open(BTA_ID_PAN ,p_scb->app_id, p_scb->bd_addr);
- }
- else
- {
- bta_pan_scb_dealloc(p_scb);
- data.status = BTA_PAN_FAIL;
- }
-
+ if (p_data->conn.result == PAN_SUCCESS) {
+ data.status = BTA_PAN_SUCCESS;
p_scb->pan_flow_enable = true;
p_scb->app_flow_enable = true;
-
- /* If app_id is NAP/GN, check whether there are multiple connections.
- If there are, provide a special app_id to dm to enforce master role only. */
- if ((p_scb->app_id == bta_pan_cb.app_id[1] || p_scb->app_id == bta_pan_cb.app_id[2]) &&
- bta_pan_has_multiple_connections(p_scb->app_id))
- {
- p_scb->app_id = BTA_APP_ID_PAN_MULTI;
- }
-
bta_sys_conn_open(BTA_ID_PAN, p_scb->app_id, p_scb->bd_addr);
- bta_pan_cb.p_cback(BTA_PAN_OPEN_EVT, (tBTA_PAN *)&data);
+ } else {
+ bta_pan_scb_dealloc(p_scb);
+ data.status = BTA_PAN_FAIL;
+ }
+ p_scb->pan_flow_enable = true;
+ p_scb->app_flow_enable = true;
+ /* If app_id is NAP/GN, check whether there are multiple connections.
+ If there are, provide a special app_id to dm to enforce master role only.
+ */
+ if ((p_scb->app_id == bta_pan_cb.app_id[1] ||
+ p_scb->app_id == bta_pan_cb.app_id[2]) &&
+ bta_pan_has_multiple_connections(p_scb->app_id)) {
+ p_scb->app_id = BTA_APP_ID_PAN_MULTI;
+ }
+
+ bta_sys_conn_open(BTA_ID_PAN, p_scb->app_id, p_scb->bd_addr);
+ bta_pan_cb.p_cback(BTA_PAN_OPEN_EVT, (tBTA_PAN*)&data);
}
/*******************************************************************************
@@ -589,29 +542,23 @@
* Returns void
*
******************************************************************************/
-void bta_pan_conn_close(tBTA_PAN_SCB *p_scb, tBTA_PAN_DATA *p_data)
-{
+void bta_pan_conn_close(tBTA_PAN_SCB* p_scb, tBTA_PAN_DATA* p_data) {
+ tBTA_PAN_CLOSE data;
+ BT_HDR* p_buf;
- tBTA_PAN_CLOSE data;
- BT_HDR *p_buf;
+ data.handle = p_data->hdr.layer_specific;
- data.handle = p_data->hdr.layer_specific;
+ bta_sys_conn_close(BTA_ID_PAN, p_scb->app_id, p_scb->bd_addr);
- bta_sys_conn_close( BTA_ID_PAN ,p_scb->app_id, p_scb->bd_addr);
+ /* free all queued up data buffers */
+ while ((p_buf = (BT_HDR*)fixed_queue_try_dequeue(p_scb->data_queue)) != NULL)
+ osi_free(p_buf);
- /* free all queued up data buffers */
- while ((p_buf = (BT_HDR *)fixed_queue_try_dequeue(p_scb->data_queue)) != NULL)
- osi_free(p_buf);
+ bta_pan_scb_dealloc(p_scb);
- bta_pan_scb_dealloc(p_scb);
-
- bta_pan_cb.p_cback(BTA_PAN_CLOSE_EVT, (tBTA_PAN *)&data);
-
+ bta_pan_cb.p_cback(BTA_PAN_CLOSE_EVT, (tBTA_PAN*)&data);
}
-
-
-
/*******************************************************************************
*
* Function bta_pan_rx_path
@@ -623,24 +570,18 @@
* Returns void
*
******************************************************************************/
-void bta_pan_rx_path(tBTA_PAN_SCB *p_scb,
- UNUSED_ATTR tBTA_PAN_DATA *p_data)
-{
- /* if data path configured for rx pull */
- if ((bta_pan_cb.flow_mask & BTA_PAN_RX_MASK) == BTA_PAN_RX_PULL)
- {
- /* if we can accept data */
- if (p_scb->pan_flow_enable == true)
- {
- /* call application callout function for rx path */
- bta_pan_co_rx_path(p_scb->handle, p_scb->app_id);
- }
+void bta_pan_rx_path(tBTA_PAN_SCB* p_scb, UNUSED_ATTR tBTA_PAN_DATA* p_data) {
+ /* if data path configured for rx pull */
+ if ((bta_pan_cb.flow_mask & BTA_PAN_RX_MASK) == BTA_PAN_RX_PULL) {
+ /* if we can accept data */
+ if (p_scb->pan_flow_enable == true) {
+ /* call application callout function for rx path */
+ bta_pan_co_rx_path(p_scb->handle, p_scb->app_id);
}
- /* else data path configured for rx push */
- else
- {
-
- }
+ }
+ /* else data path configured for rx push */
+ else {
+ }
}
/*******************************************************************************
@@ -653,58 +594,49 @@
* Returns void
*
******************************************************************************/
-void bta_pan_tx_path(tBTA_PAN_SCB *p_scb,
- UNUSED_ATTR tBTA_PAN_DATA *p_data)
-{
- /* if data path configured for tx pull */
- if ((bta_pan_cb.flow_mask & BTA_PAN_TX_MASK) == BTA_PAN_TX_PULL)
- {
- bta_pan_pm_conn_busy(p_scb);
- /* call application callout function for tx path */
- bta_pan_co_tx_path(p_scb->handle, p_scb->app_id);
+void bta_pan_tx_path(tBTA_PAN_SCB* p_scb, UNUSED_ATTR tBTA_PAN_DATA* p_data) {
+ /* if data path configured for tx pull */
+ if ((bta_pan_cb.flow_mask & BTA_PAN_TX_MASK) == BTA_PAN_TX_PULL) {
+ bta_pan_pm_conn_busy(p_scb);
+ /* call application callout function for tx path */
+ bta_pan_co_tx_path(p_scb->handle, p_scb->app_id);
- /* free data that exceeds queue level */
- while (fixed_queue_length(p_scb->data_queue) > bta_pan_cb.q_level)
- osi_free(fixed_queue_try_dequeue(p_scb->data_queue));
- bta_pan_pm_conn_idle(p_scb);
+ /* free data that exceeds queue level */
+ while (fixed_queue_length(p_scb->data_queue) > bta_pan_cb.q_level)
+ osi_free(fixed_queue_try_dequeue(p_scb->data_queue));
+ bta_pan_pm_conn_idle(p_scb);
+ }
+ /* if configured for zero copy push */
+ else if ((bta_pan_cb.flow_mask & BTA_PAN_TX_MASK) == BTA_PAN_TX_PUSH_BUF) {
+ /* if app can accept data */
+ if (p_scb->app_flow_enable == true) {
+ BT_HDR* p_buf;
+
+ /* read data from the queue */
+ if ((p_buf = (BT_HDR*)fixed_queue_try_dequeue(p_scb->data_queue)) !=
+ NULL) {
+ /* send data to application */
+ bta_pan_co_tx_writebuf(p_scb->handle, p_scb->app_id,
+ ((tBTA_PAN_DATA_PARAMS*)p_buf)->src,
+ ((tBTA_PAN_DATA_PARAMS*)p_buf)->dst,
+ ((tBTA_PAN_DATA_PARAMS*)p_buf)->protocol, p_buf,
+ ((tBTA_PAN_DATA_PARAMS*)p_buf)->ext,
+ ((tBTA_PAN_DATA_PARAMS*)p_buf)->forward);
+ }
+ /* free data that exceeds queue level */
+ while (fixed_queue_length(p_scb->data_queue) > bta_pan_cb.q_level)
+ osi_free(fixed_queue_try_dequeue(p_scb->data_queue));
+
+ /* if there is more data to be passed to
+ upper layer */
+ if (!fixed_queue_is_empty(p_scb->data_queue)) {
+ p_buf = (BT_HDR*)osi_malloc(sizeof(BT_HDR));
+ p_buf->layer_specific = p_scb->handle;
+ p_buf->event = BTA_PAN_RX_FROM_BNEP_READY_EVT;
+ bta_sys_sendmsg(p_buf);
+ }
}
- /* if configured for zero copy push */
- else if ((bta_pan_cb.flow_mask & BTA_PAN_TX_MASK) == BTA_PAN_TX_PUSH_BUF)
- {
- /* if app can accept data */
- if (p_scb->app_flow_enable == true)
- {
- BT_HDR *p_buf;
-
- /* read data from the queue */
- if ((p_buf = (BT_HDR *)fixed_queue_try_dequeue(p_scb->data_queue)) != NULL)
- {
- /* send data to application */
- bta_pan_co_tx_writebuf(p_scb->handle,
- p_scb->app_id,
- ((tBTA_PAN_DATA_PARAMS *)p_buf)->src,
- ((tBTA_PAN_DATA_PARAMS *)p_buf)->dst,
- ((tBTA_PAN_DATA_PARAMS *)p_buf)->protocol,
- p_buf,
- ((tBTA_PAN_DATA_PARAMS *)p_buf)->ext,
- ((tBTA_PAN_DATA_PARAMS *)p_buf)->forward);
-
- }
- /* free data that exceeds queue level */
- while (fixed_queue_length(p_scb->data_queue) > bta_pan_cb.q_level)
- osi_free(fixed_queue_try_dequeue(p_scb->data_queue));
-
- /* if there is more data to be passed to
- upper layer */
- if (!fixed_queue_is_empty(p_scb->data_queue))
- {
- p_buf = (BT_HDR *)osi_malloc(sizeof(BT_HDR));
- p_buf->layer_specific = p_scb->handle;
- p_buf->event = BTA_PAN_RX_FROM_BNEP_READY_EVT;
- bta_sys_sendmsg(p_buf);
- }
- }
- }
+ }
}
/*******************************************************************************
@@ -717,9 +649,8 @@
* Returns void
*
******************************************************************************/
-void bta_pan_tx_flow(tBTA_PAN_SCB *p_scb, tBTA_PAN_DATA *p_data)
-{
- p_scb->app_flow_enable = p_data->ci_tx_flow.enable;
+void bta_pan_tx_flow(tBTA_PAN_SCB* p_scb, tBTA_PAN_DATA* p_data) {
+ p_scb->app_flow_enable = p_data->ci_tx_flow.enable;
}
/*******************************************************************************
@@ -732,21 +663,16 @@
* Returns void
*
******************************************************************************/
-void bta_pan_write_buf(tBTA_PAN_SCB *p_scb, tBTA_PAN_DATA *p_data)
-{
- if ((bta_pan_cb.flow_mask & BTA_PAN_RX_MASK) == BTA_PAN_RX_PUSH_BUF)
- {
- bta_pan_pm_conn_busy(p_scb);
+void bta_pan_write_buf(tBTA_PAN_SCB* p_scb, tBTA_PAN_DATA* p_data) {
+ if ((bta_pan_cb.flow_mask & BTA_PAN_RX_MASK) == BTA_PAN_RX_PUSH_BUF) {
+ bta_pan_pm_conn_busy(p_scb);
- PAN_WriteBuf (p_scb->handle,
- ((tBTA_PAN_DATA_PARAMS *)p_data)->dst,
- ((tBTA_PAN_DATA_PARAMS *)p_data)->src,
- ((tBTA_PAN_DATA_PARAMS *)p_data)->protocol,
- (BT_HDR *)p_data,
- ((tBTA_PAN_DATA_PARAMS *)p_data)->ext);
- bta_pan_pm_conn_idle(p_scb);
-
- }
+ PAN_WriteBuf(p_scb->handle, ((tBTA_PAN_DATA_PARAMS*)p_data)->dst,
+ ((tBTA_PAN_DATA_PARAMS*)p_data)->src,
+ ((tBTA_PAN_DATA_PARAMS*)p_data)->protocol, (BT_HDR*)p_data,
+ ((tBTA_PAN_DATA_PARAMS*)p_data)->ext);
+ bta_pan_pm_conn_idle(p_scb);
+ }
}
/*******************************************************************************
@@ -759,9 +685,8 @@
* Returns void
*
******************************************************************************/
-void bta_pan_free_buf(UNUSED_ATTR tBTA_PAN_SCB *p_scb, tBTA_PAN_DATA *p_data)
-{
- osi_free(p_data);
+void bta_pan_free_buf(UNUSED_ATTR tBTA_PAN_SCB* p_scb, tBTA_PAN_DATA* p_data) {
+ osi_free(p_data);
}
#endif /* PAN_INCLUDED */
diff --git a/bta/pan/bta_pan_api.cc b/bta/pan/bta_pan_api.cc
index e520085..7210018 100644
--- a/bta/pan/bta_pan_api.cc
+++ b/bta/pan/bta_pan_api.cc
@@ -26,22 +26,18 @@
#include "bt_target.h"
-#include "bta_api.h"
-#include "bta_sys.h"
-#include "pan_api.h"
#include "bt_common.h"
+#include "bt_utils.h"
+#include "bta_api.h"
#include "bta_pan_api.h"
#include "bta_pan_int.h"
-#include "bt_utils.h"
+#include "bta_sys.h"
#include "osi/include/osi.h"
+#include "pan_api.h"
#if (BTA_PAN_INCLUDED == TRUE)
-static const tBTA_SYS_REG bta_pan_reg =
-{
- bta_pan_hdl_event,
- BTA_PanDisable
-};
+static const tBTA_SYS_REG bta_pan_reg = {bta_pan_hdl_event, BTA_PanDisable};
/*******************************************************************************
*
@@ -55,22 +51,19 @@
* Returns void
*
******************************************************************************/
-void BTA_PanEnable(tBTA_PAN_CBACK p_cback)
-{
- tBTA_PAN_API_ENABLE *p_buf =
- (tBTA_PAN_API_ENABLE *)osi_malloc(sizeof(tBTA_PAN_API_ENABLE));
+void BTA_PanEnable(tBTA_PAN_CBACK p_cback) {
+ tBTA_PAN_API_ENABLE* p_buf =
+ (tBTA_PAN_API_ENABLE*)osi_malloc(sizeof(tBTA_PAN_API_ENABLE));
- /* register with BTA system manager */
- bta_sys_register(BTA_ID_PAN, &bta_pan_reg);
+ /* register with BTA system manager */
+ bta_sys_register(BTA_ID_PAN, &bta_pan_reg);
- p_buf->hdr.event = BTA_PAN_API_ENABLE_EVT;
- p_buf->p_cback = p_cback;
+ p_buf->hdr.event = BTA_PAN_API_ENABLE_EVT;
+ p_buf->p_cback = p_cback;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
-
-
/*******************************************************************************
*
* Function BTA_PanDisable
@@ -81,14 +74,13 @@
* Returns void
*
******************************************************************************/
-void BTA_PanDisable(void)
-{
- BT_HDR *p_buf = (BT_HDR *)osi_malloc(sizeof(BT_HDR));
+void BTA_PanDisable(void) {
+ BT_HDR* p_buf = (BT_HDR*)osi_malloc(sizeof(BT_HDR));
- bta_sys_deregister(BTA_ID_PAN);
- p_buf->event = BTA_PAN_API_DISABLE_EVT;
+ bta_sys_deregister(BTA_ID_PAN);
+ p_buf->event = BTA_PAN_API_DISABLE_EVT;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -96,46 +88,46 @@
* Function BTA_PanSetRole
*
* Description Sets PAN roles. When the enable operation is complete
- * the callback function will be called with a BTA_PAN_SET_ROLE_EVT.
+ * the callback function will be called with a
+ *BTA_PAN_SET_ROLE_EVT.
*
* Returns void
*
******************************************************************************/
-void BTA_PanSetRole(tBTA_PAN_ROLE role, tBTA_PAN_ROLE_INFO *p_user_info, tBTA_PAN_ROLE_INFO *p_gn_info,
- tBTA_PAN_ROLE_INFO *p_nap_info)
-{
- tBTA_PAN_API_SET_ROLE *p_buf =
- (tBTA_PAN_API_SET_ROLE *)osi_calloc(sizeof(tBTA_PAN_API_SET_ROLE));
+void BTA_PanSetRole(tBTA_PAN_ROLE role, tBTA_PAN_ROLE_INFO* p_user_info,
+ tBTA_PAN_ROLE_INFO* p_gn_info,
+ tBTA_PAN_ROLE_INFO* p_nap_info) {
+ tBTA_PAN_API_SET_ROLE* p_buf =
+ (tBTA_PAN_API_SET_ROLE*)osi_calloc(sizeof(tBTA_PAN_API_SET_ROLE));
- p_buf->hdr.event = BTA_PAN_API_SET_ROLE_EVT;
- p_buf->role = role;
+ p_buf->hdr.event = BTA_PAN_API_SET_ROLE_EVT;
+ p_buf->role = role;
- if (p_user_info && (role & BTA_PAN_ROLE_PANU)) {
- if (p_user_info->p_srv_name)
- strlcpy(p_buf->user_name, p_user_info->p_srv_name, BTA_SERVICE_NAME_LEN);
+ if (p_user_info && (role & BTA_PAN_ROLE_PANU)) {
+ if (p_user_info->p_srv_name)
+ strlcpy(p_buf->user_name, p_user_info->p_srv_name, BTA_SERVICE_NAME_LEN);
- p_buf->user_app_id = p_user_info->app_id;
- p_buf->user_sec_mask = p_user_info->sec_mask;
- }
+ p_buf->user_app_id = p_user_info->app_id;
+ p_buf->user_sec_mask = p_user_info->sec_mask;
+ }
- if (p_gn_info && (role & BTA_PAN_ROLE_GN)) {
- if (p_gn_info->p_srv_name)
- strlcpy(p_buf->gn_name, p_gn_info->p_srv_name, BTA_SERVICE_NAME_LEN);
+ if (p_gn_info && (role & BTA_PAN_ROLE_GN)) {
+ if (p_gn_info->p_srv_name)
+ strlcpy(p_buf->gn_name, p_gn_info->p_srv_name, BTA_SERVICE_NAME_LEN);
- p_buf->gn_app_id = p_gn_info->app_id;
- p_buf->gn_sec_mask = p_gn_info->sec_mask;
- }
+ p_buf->gn_app_id = p_gn_info->app_id;
+ p_buf->gn_sec_mask = p_gn_info->sec_mask;
+ }
- if (p_nap_info && (role & BTA_PAN_ROLE_NAP)) {
- if (p_nap_info->p_srv_name)
- strlcpy(p_buf->nap_name, p_nap_info->p_srv_name, BTA_SERVICE_NAME_LEN);
+ if (p_nap_info && (role & BTA_PAN_ROLE_NAP)) {
+ if (p_nap_info->p_srv_name)
+ strlcpy(p_buf->nap_name, p_nap_info->p_srv_name, BTA_SERVICE_NAME_LEN);
- p_buf->nap_app_id = p_nap_info->app_id;
- p_buf->nap_sec_mask = p_nap_info->sec_mask;
+ p_buf->nap_app_id = p_nap_info->app_id;
+ p_buf->nap_sec_mask = p_nap_info->sec_mask;
+ }
- }
-
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -150,17 +142,17 @@
* Returns void
*
******************************************************************************/
-void BTA_PanOpen(BD_ADDR bd_addr, tBTA_PAN_ROLE local_role, tBTA_PAN_ROLE peer_role)
-{
- tBTA_PAN_API_OPEN *p_buf =
- (tBTA_PAN_API_OPEN *)osi_malloc(sizeof(tBTA_PAN_API_OPEN));
+void BTA_PanOpen(BD_ADDR bd_addr, tBTA_PAN_ROLE local_role,
+ tBTA_PAN_ROLE peer_role) {
+ tBTA_PAN_API_OPEN* p_buf =
+ (tBTA_PAN_API_OPEN*)osi_malloc(sizeof(tBTA_PAN_API_OPEN));
- p_buf->hdr.event = BTA_PAN_API_OPEN_EVT;
- p_buf->local_role = local_role;
- p_buf->peer_role = peer_role;
- bdcpy(p_buf->bd_addr, bd_addr);
+ p_buf->hdr.event = BTA_PAN_API_OPEN_EVT;
+ p_buf->local_role = local_role;
+ p_buf->peer_role = peer_role;
+ bdcpy(p_buf->bd_addr, bd_addr);
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -173,37 +165,29 @@
* Returns void
*
******************************************************************************/
-void BTA_PanClose(uint16_t handle)
-{
- BT_HDR *p_buf = (BT_HDR *)osi_malloc(sizeof(BT_HDR));
+void BTA_PanClose(uint16_t handle) {
+ BT_HDR* p_buf = (BT_HDR*)osi_malloc(sizeof(BT_HDR));
- p_buf->event = BTA_PAN_API_CLOSE_EVT;
- p_buf->layer_specific = handle;
+ p_buf->event = BTA_PAN_API_CLOSE_EVT;
+ p_buf->layer_specific = handle;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
#else
-void BTA_PanEnable(UNUSED_ATTR tBTA_PAN_CBACK p_cback)
-{
-}
+void BTA_PanEnable(UNUSED_ATTR tBTA_PAN_CBACK p_cback) {}
-void BTA_PanDisable(void)
-{
-}
+void BTA_PanDisable(void) {}
-void BTA_PanSetRole(UNUSED_ATTR tBTA_PAN_ROLE role, UNUSED_ATTR tBTA_PAN_ROLE_INFO *p_user_info, UNUSED_ATTR tBTA_PAN_ROLE_INFO *p_gn_info,
- UNUSED_ATTR tBTA_PAN_ROLE_INFO *p_nap_info)
-{
-}
+void BTA_PanSetRole(UNUSED_ATTR tBTA_PAN_ROLE role,
+ UNUSED_ATTR tBTA_PAN_ROLE_INFO* p_user_info,
+ UNUSED_ATTR tBTA_PAN_ROLE_INFO* p_gn_info,
+ UNUSED_ATTR tBTA_PAN_ROLE_INFO* p_nap_info) {}
-void BTA_PanOpen(UNUSED_ATTR BD_ADDR bd_addr, UNUSED_ATTR tBTA_PAN_ROLE local_role,
- UNUSED_ATTR tBTA_PAN_ROLE peer_role)
-{
-}
+void BTA_PanOpen(UNUSED_ATTR BD_ADDR bd_addr,
+ UNUSED_ATTR tBTA_PAN_ROLE local_role,
+ UNUSED_ATTR tBTA_PAN_ROLE peer_role) {}
-void BTA_PanClose(UNUSED_ATTR uint16_t handle)
-{
-}
+void BTA_PanClose(UNUSED_ATTR uint16_t handle) {}
#endif /* BTA_PAN_INCLUDED */
diff --git a/bta/pan/bta_pan_ci.cc b/bta/pan/bta_pan_ci.cc
index 353e8e3..8f9054a 100644
--- a/bta/pan/bta_pan_ci.cc
+++ b/bta/pan/bta_pan_ci.cc
@@ -27,13 +27,13 @@
#include <string.h>
#include "bt_common.h"
-#include "pan_api.h"
+#include "bt_utils.h"
#include "bta_api.h"
#include "bta_pan_api.h"
#include "bta_pan_ci.h"
#include "bta_pan_int.h"
-#include "bt_utils.h"
#include "osi/include/osi.h"
+#include "pan_api.h"
#if (BTA_PAN_INCLUDED == TRUE)
@@ -42,7 +42,8 @@
* Function bta_pan_ci_tx_ready
*
* Description This function sends an event to PAN indicating the phone is
- * ready for more data and PAN should call bta_pan_co_tx_path().
+ * ready for more data and PAN should call
+ *bta_pan_co_tx_path().
* This function is used when the TX data path is configured
* to use a pull interface.
*
@@ -50,14 +51,13 @@
* Returns void
*
******************************************************************************/
-void bta_pan_ci_tx_ready(uint16_t handle)
-{
- BT_HDR *p_buf = (BT_HDR *)osi_malloc(sizeof(BT_HDR));
+void bta_pan_ci_tx_ready(uint16_t handle) {
+ BT_HDR* p_buf = (BT_HDR*)osi_malloc(sizeof(BT_HDR));
- p_buf->layer_specific = handle;
- p_buf->event = BTA_PAN_CI_TX_READY_EVT;
+ p_buf->layer_specific = handle;
+ p_buf->event = BTA_PAN_CI_TX_READY_EVT;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -73,14 +73,13 @@
* Returns void
*
******************************************************************************/
-void bta_pan_ci_rx_ready(uint16_t handle)
-{
- BT_HDR *p_buf = (BT_HDR *)osi_malloc(sizeof(BT_HDR));
+void bta_pan_ci_rx_ready(uint16_t handle) {
+ BT_HDR* p_buf = (BT_HDR*)osi_malloc(sizeof(BT_HDR));
- p_buf->layer_specific = handle;
- p_buf->event = BTA_PAN_CI_RX_READY_EVT;
+ p_buf->layer_specific = handle;
+ p_buf->event = BTA_PAN_CI_RX_READY_EVT;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -98,16 +97,15 @@
* Returns void
*
******************************************************************************/
-void bta_pan_ci_tx_flow(uint16_t handle, bool enable)
-{
- tBTA_PAN_CI_TX_FLOW *p_buf =
- (tBTA_PAN_CI_TX_FLOW *)osi_malloc(sizeof(tBTA_PAN_CI_TX_FLOW));
+void bta_pan_ci_tx_flow(uint16_t handle, bool enable) {
+ tBTA_PAN_CI_TX_FLOW* p_buf =
+ (tBTA_PAN_CI_TX_FLOW*)osi_malloc(sizeof(tBTA_PAN_CI_TX_FLOW));
- p_buf->hdr.layer_specific = handle;
- p_buf->hdr.event = BTA_PAN_CI_TX_FLOW_EVT;
- p_buf->enable = enable;
+ p_buf->hdr.layer_specific = handle;
+ p_buf->hdr.event = BTA_PAN_CI_TX_FLOW_EVT;
+ p_buf->enable = enable;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -122,27 +120,27 @@
* Returns void
*
******************************************************************************/
-void bta_pan_ci_rx_write(uint16_t handle, BD_ADDR dst, BD_ADDR src, uint16_t protocol,
- uint8_t *p_data, uint16_t len, bool ext)
-{
- BT_HDR *p_buf = (BT_HDR *)osi_malloc(PAN_BUF_SIZE);
+void bta_pan_ci_rx_write(uint16_t handle, BD_ADDR dst, BD_ADDR src,
+ uint16_t protocol, uint8_t* p_data, uint16_t len,
+ bool ext) {
+ BT_HDR* p_buf = (BT_HDR*)osi_malloc(PAN_BUF_SIZE);
- p_buf->offset = PAN_MINIMUM_OFFSET;
+ p_buf->offset = PAN_MINIMUM_OFFSET;
- /* copy all other params before the data */
- bdcpy(((tBTA_PAN_DATA_PARAMS *)p_buf)->src, src);
- bdcpy(((tBTA_PAN_DATA_PARAMS *)p_buf)->dst, dst);
- ((tBTA_PAN_DATA_PARAMS *)p_buf)->protocol = protocol;
- ((tBTA_PAN_DATA_PARAMS *)p_buf)->ext = ext;
- p_buf->len=len;
+ /* copy all other params before the data */
+ bdcpy(((tBTA_PAN_DATA_PARAMS*)p_buf)->src, src);
+ bdcpy(((tBTA_PAN_DATA_PARAMS*)p_buf)->dst, dst);
+ ((tBTA_PAN_DATA_PARAMS*)p_buf)->protocol = protocol;
+ ((tBTA_PAN_DATA_PARAMS*)p_buf)->ext = ext;
+ p_buf->len = len;
- /* copy data */
- memcpy((uint8_t *)(p_buf + 1) + p_buf->offset, p_data, len);
+ /* copy data */
+ memcpy((uint8_t*)(p_buf + 1) + p_buf->offset, p_data, len);
- p_buf->layer_specific = handle;
- p_buf->event = BTA_PAN_CI_RX_WRITEBUF_EVT;
+ p_buf->layer_specific = handle;
+ p_buf->event = BTA_PAN_CI_RX_WRITEBUF_EVT;
- bta_sys_sendmsg(p_buf);
+ bta_sys_sendmsg(p_buf);
}
/*******************************************************************************
@@ -159,24 +157,19 @@
* Returns void
*
******************************************************************************/
-void bta_pan_ci_rx_writebuf(uint16_t handle, BD_ADDR dst, BD_ADDR src, uint16_t protocol,
- BT_HDR *p_buf, bool ext)
-{
+void bta_pan_ci_rx_writebuf(uint16_t handle, BD_ADDR dst, BD_ADDR src,
+ uint16_t protocol, BT_HDR* p_buf, bool ext) {
+ /* copy all other params before the data */
+ bdcpy(((tBTA_PAN_DATA_PARAMS*)p_buf)->src, src);
+ bdcpy(((tBTA_PAN_DATA_PARAMS*)p_buf)->dst, dst);
+ ((tBTA_PAN_DATA_PARAMS*)p_buf)->protocol = protocol;
+ ((tBTA_PAN_DATA_PARAMS*)p_buf)->ext = ext;
- /* copy all other params before the data */
- bdcpy(((tBTA_PAN_DATA_PARAMS *)p_buf)->src, src);
- bdcpy(((tBTA_PAN_DATA_PARAMS *)p_buf)->dst, dst);
- ((tBTA_PAN_DATA_PARAMS *)p_buf)->protocol = protocol;
- ((tBTA_PAN_DATA_PARAMS *)p_buf)->ext = ext;
-
- p_buf->layer_specific = handle;
- p_buf->event = BTA_PAN_CI_RX_WRITEBUF_EVT;
- bta_sys_sendmsg(p_buf);
+ p_buf->layer_specific = handle;
+ p_buf->event = BTA_PAN_CI_RX_WRITEBUF_EVT;
+ bta_sys_sendmsg(p_buf);
}
-
-
-
/*******************************************************************************
*
* Function bta_pan_ci_readbuf
@@ -187,28 +180,25 @@
* Returns void
*
******************************************************************************/
-BT_HDR * bta_pan_ci_readbuf(uint16_t handle, BD_ADDR src, BD_ADDR dst, uint16_t* p_protocol,
- bool* p_ext, bool* p_forward)
-{
- tBTA_PAN_SCB * p_scb;
- BT_HDR * p_buf;
+BT_HDR* bta_pan_ci_readbuf(uint16_t handle, BD_ADDR src, BD_ADDR dst,
+ uint16_t* p_protocol, bool* p_ext, bool* p_forward) {
+ tBTA_PAN_SCB* p_scb;
+ BT_HDR* p_buf;
- p_scb = bta_pan_scb_by_handle(handle);
+ p_scb = bta_pan_scb_by_handle(handle);
- p_buf = (BT_HDR *)fixed_queue_try_dequeue(p_scb->data_queue);
- if (p_buf != NULL)
- {
- bdcpy(src,((tBTA_PAN_DATA_PARAMS *)p_buf)->src);
- bdcpy(dst,((tBTA_PAN_DATA_PARAMS *)p_buf)->dst);
- *p_protocol = ((tBTA_PAN_DATA_PARAMS *)p_buf)->protocol;
- *p_ext = ((tBTA_PAN_DATA_PARAMS *)p_buf)->ext;
- *p_forward = ((tBTA_PAN_DATA_PARAMS *)p_buf)->forward;
- }
+ p_buf = (BT_HDR*)fixed_queue_try_dequeue(p_scb->data_queue);
+ if (p_buf != NULL) {
+ bdcpy(src, ((tBTA_PAN_DATA_PARAMS*)p_buf)->src);
+ bdcpy(dst, ((tBTA_PAN_DATA_PARAMS*)p_buf)->dst);
+ *p_protocol = ((tBTA_PAN_DATA_PARAMS*)p_buf)->protocol;
+ *p_ext = ((tBTA_PAN_DATA_PARAMS*)p_buf)->ext;
+ *p_forward = ((tBTA_PAN_DATA_PARAMS*)p_buf)->forward;
+ }
- return p_buf;
+ return p_buf;
}
-
/*******************************************************************************
*
* Function bta_pan_ci_set_mfilters
@@ -219,15 +209,12 @@
* Returns void
*
******************************************************************************/
-void bta_pan_ci_set_mfilters(uint16_t handle, uint16_t num_mcast_filters, uint8_t *p_start_array,
- uint8_t *p_end_array)
-{
-
- PAN_SetMulticastFilters(handle, num_mcast_filters, p_start_array, p_end_array);
-
+void bta_pan_ci_set_mfilters(uint16_t handle, uint16_t num_mcast_filters,
+ uint8_t* p_start_array, uint8_t* p_end_array) {
+ PAN_SetMulticastFilters(handle, num_mcast_filters, p_start_array,
+ p_end_array);
}
-
/*******************************************************************************
*
* Function bta_pan_ci_set_mfilters
@@ -238,47 +225,39 @@
* Returns void
*
******************************************************************************/
-void bta_pan_ci_set_pfilters(uint16_t handle, uint16_t num_filters, uint16_t *p_start_array, uint16_t *p_end_array)
-{
-
- PAN_SetProtocolFilters(handle, num_filters, p_start_array, p_end_array );
-
+void bta_pan_ci_set_pfilters(uint16_t handle, uint16_t num_filters,
+ uint16_t* p_start_array, uint16_t* p_end_array) {
+ PAN_SetProtocolFilters(handle, num_filters, p_start_array, p_end_array);
}
#else
-void bta_pan_ci_tx_ready(UNUSED_ATTR uint16_t handle)
-{
+void bta_pan_ci_tx_ready(UNUSED_ATTR uint16_t handle) {}
+
+void bta_pan_ci_rx_ready(UNUSED_ATTR uint16_t handle) {}
+
+void bta_pan_ci_tx_flow(UNUSED_ATTR uint16_t handle, UNUSED_ATTR bool enable) {}
+
+void bta_pan_ci_rx_writebuf(UNUSED_ATTR uint16_t handle,
+ UNUSED_ATTR BD_ADDR src, UNUSED_ATTR BD_ADDR dst,
+ UNUSED_ATTR uint16_t protocol,
+ UNUSED_ATTR BT_HDR* p_buf, UNUSED_ATTR bool ext) {}
+
+BT_HDR* bta_pan_ci_readbuf(UNUSED_ATTR uint16_t handle, UNUSED_ATTR BD_ADDR src,
+ UNUSED_ATTR BD_ADDR dst,
+ UNUSED_ATTR uint16_t* p_protocol,
+ UNUSED_ATTR bool* p_ext,
+ UNUSED_ATTR bool* p_forward) {
+ return NULL;
}
-void bta_pan_ci_rx_ready(UNUSED_ATTR uint16_t handle)
-{
-}
+void bta_pan_ci_set_pfilters(UNUSED_ATTR uint16_t handle,
+ UNUSED_ATTR uint16_t num_filters,
+ UNUSED_ATTR uint16_t* p_start_array,
+ UNUSED_ATTR uint16_t* p_end_array) {}
-void bta_pan_ci_tx_flow(UNUSED_ATTR uint16_t handle,
- UNUSED_ATTR bool enable)
-{
-}
-
-void bta_pan_ci_rx_writebuf(UNUSED_ATTR uint16_t handle, UNUSED_ATTR BD_ADDR src, UNUSED_ATTR BD_ADDR dst, UNUSED_ATTR uint16_t protocol, UNUSED_ATTR BT_HDR *p_buf,
- UNUSED_ATTR bool ext)
-{
-}
-
-BT_HDR * bta_pan_ci_readbuf(UNUSED_ATTR uint16_t handle, UNUSED_ATTR BD_ADDR src, UNUSED_ATTR BD_ADDR dst, UNUSED_ATTR uint16_t *p_protocol,
- UNUSED_ATTR bool *p_ext,
- UNUSED_ATTR bool *p_forward)
-{
- return NULL;
-}
-
-void bta_pan_ci_set_pfilters(UNUSED_ATTR uint16_t handle, UNUSED_ATTR uint16_t num_filters, UNUSED_ATTR uint16_t *p_start_array,
- UNUSED_ATTR uint16_t *p_end_array)
-{
-}
-
-void bta_pan_ci_set_mfilters(UNUSED_ATTR uint16_t handle, UNUSED_ATTR uint16_t num_mcast_filters, UNUSED_ATTR uint8_t *p_start_array,
- UNUSED_ATTR uint8_t *p_end_array)
-{
-}
+void bta_pan_ci_set_mfilters(UNUSED_ATTR uint16_t handle,
+ UNUSED_ATTR uint16_t num_mcast_filters,
+ UNUSED_ATTR uint8_t* p_start_array,
+ UNUSED_ATTR uint8_t* p_end_array) {}
#endif /* BTA_PAN_API */
diff --git a/bta/pan/bta_pan_int.h b/bta/pan/bta_pan_int.h
index 85ee3b8..71658f2 100644
--- a/bta/pan/bta_pan_int.h
+++ b/bta/pan/bta_pan_int.h
@@ -24,192 +24,163 @@
#ifndef BTA_PAN_INT_H
#define BTA_PAN_INT_H
-#include "osi/include/fixed_queue.h"
-#include "bta_sys.h"
#include "bta_pan_api.h"
+#include "bta_sys.h"
+#include "osi/include/fixed_queue.h"
/*****************************************************************************
* Constants
****************************************************************************/
-
-
-
/* PAN events */
-enum
-{
- /* these events are handled by the state machine */
- BTA_PAN_API_CLOSE_EVT = BTA_SYS_EVT_START(BTA_ID_PAN),
- BTA_PAN_CI_TX_READY_EVT,
- BTA_PAN_CI_RX_READY_EVT,
- BTA_PAN_CI_TX_FLOW_EVT,
- BTA_PAN_CI_RX_WRITE_EVT,
- BTA_PAN_CI_RX_WRITEBUF_EVT,
- BTA_PAN_CONN_OPEN_EVT,
- BTA_PAN_CONN_CLOSE_EVT,
- BTA_PAN_BNEP_FLOW_ENABLE_EVT,
- BTA_PAN_RX_FROM_BNEP_READY_EVT,
+enum {
+ /* these events are handled by the state machine */
+ BTA_PAN_API_CLOSE_EVT = BTA_SYS_EVT_START(BTA_ID_PAN),
+ BTA_PAN_CI_TX_READY_EVT,
+ BTA_PAN_CI_RX_READY_EVT,
+ BTA_PAN_CI_TX_FLOW_EVT,
+ BTA_PAN_CI_RX_WRITE_EVT,
+ BTA_PAN_CI_RX_WRITEBUF_EVT,
+ BTA_PAN_CONN_OPEN_EVT,
+ BTA_PAN_CONN_CLOSE_EVT,
+ BTA_PAN_BNEP_FLOW_ENABLE_EVT,
+ BTA_PAN_RX_FROM_BNEP_READY_EVT,
- /* these events are handled outside of the state machine */
- BTA_PAN_API_ENABLE_EVT,
- BTA_PAN_API_DISABLE_EVT,
- BTA_PAN_API_SET_ROLE_EVT,
- BTA_PAN_API_OPEN_EVT
+ /* these events are handled outside of the state machine */
+ BTA_PAN_API_ENABLE_EVT,
+ BTA_PAN_API_DISABLE_EVT,
+ BTA_PAN_API_SET_ROLE_EVT,
+ BTA_PAN_API_OPEN_EVT
};
/* state machine states */
-enum
-{
- BTA_PAN_IDLE_ST,
- BTA_PAN_OPEN_ST,
- BTA_PAN_CLOSING_ST
-};
-
-
-
+enum { BTA_PAN_IDLE_ST, BTA_PAN_OPEN_ST, BTA_PAN_CLOSING_ST };
/*****************************************************************************
* Data types
****************************************************************************/
/* data type for BTA_PAN_API_ENABLE_EVT */
-typedef struct
-{
- BT_HDR hdr; /* Event header */
- tBTA_PAN_CBACK *p_cback; /* PAN callback function */
+typedef struct {
+ BT_HDR hdr; /* Event header */
+ tBTA_PAN_CBACK* p_cback; /* PAN callback function */
} tBTA_PAN_API_ENABLE;
/* data type for BTA_PAN_API_REG_ROLE_EVT */
-typedef struct
-{
- BT_HDR hdr; /* Event header */
- char user_name[BTA_SERVICE_NAME_LEN+1]; /* Service name */
- char gn_name[BTA_SERVICE_NAME_LEN+1]; /* Service name */
- char nap_name[BTA_SERVICE_NAME_LEN+1]; /* Service name */
- tBTA_PAN_ROLE role;
- uint8_t user_app_id;
- uint8_t gn_app_id;
- uint8_t nap_app_id;
- tBTA_SEC user_sec_mask; /* Security mask */
- tBTA_SEC gn_sec_mask; /* Security mask */
- tBTA_SEC nap_sec_mask; /* Security mask */
-
+typedef struct {
+ BT_HDR hdr; /* Event header */
+ char user_name[BTA_SERVICE_NAME_LEN + 1]; /* Service name */
+ char gn_name[BTA_SERVICE_NAME_LEN + 1]; /* Service name */
+ char nap_name[BTA_SERVICE_NAME_LEN + 1]; /* Service name */
+ tBTA_PAN_ROLE role;
+ uint8_t user_app_id;
+ uint8_t gn_app_id;
+ uint8_t nap_app_id;
+ tBTA_SEC user_sec_mask; /* Security mask */
+ tBTA_SEC gn_sec_mask; /* Security mask */
+ tBTA_SEC nap_sec_mask; /* Security mask */
} tBTA_PAN_API_SET_ROLE;
/* data type for BTA_PAN_API_OPEN_EVT */
-typedef struct
-{
- BT_HDR hdr; /* Event header */
- tBTA_PAN_ROLE local_role; /* local role */
- tBTA_PAN_ROLE peer_role; /* peer role */
- BD_ADDR bd_addr; /* peer bdaddr */
+typedef struct {
+ BT_HDR hdr; /* Event header */
+ tBTA_PAN_ROLE local_role; /* local role */
+ tBTA_PAN_ROLE peer_role; /* peer role */
+ BD_ADDR bd_addr; /* peer bdaddr */
} tBTA_PAN_API_OPEN;
/* data type for BTA_PAN_CI_TX_FLOW_EVT */
-typedef struct
-{
- BT_HDR hdr; /* Event header */
- bool enable; /* Flow control setting */
+typedef struct {
+ BT_HDR hdr; /* Event header */
+ bool enable; /* Flow control setting */
} tBTA_PAN_CI_TX_FLOW;
/* data type for BTA_PAN_CONN_OPEN_EVT */
-typedef struct
-{
- BT_HDR hdr; /* Event header */
- tPAN_RESULT result;
+typedef struct {
+ BT_HDR hdr; /* Event header */
+ tPAN_RESULT result;
} tBTA_PAN_CONN;
-
-
-
/* union of all data types */
-typedef union
-{
- BT_HDR hdr;
- tBTA_PAN_API_ENABLE api_enable;
- tBTA_PAN_API_SET_ROLE api_set_role;
- tBTA_PAN_API_OPEN api_open;
- tBTA_PAN_CI_TX_FLOW ci_tx_flow;
- tBTA_PAN_CONN conn;
+typedef union {
+ BT_HDR hdr;
+ tBTA_PAN_API_ENABLE api_enable;
+ tBTA_PAN_API_SET_ROLE api_set_role;
+ tBTA_PAN_API_OPEN api_open;
+ tBTA_PAN_CI_TX_FLOW ci_tx_flow;
+ tBTA_PAN_CONN conn;
} tBTA_PAN_DATA;
/* state machine control block */
-typedef struct
-{
- BD_ADDR bd_addr; /* peer bdaddr */
- fixed_queue_t *data_queue; /* Queue of buffers waiting to be passed to application */
- uint16_t handle; /* BTA PAN/BNEP handle */
- bool in_use; /* scb in use */
- tBTA_SEC sec_mask; /* Security mask */
- bool pan_flow_enable;/* BNEP flow control state */
- bool app_flow_enable;/* Application flow control state */
- uint8_t state; /* State machine state */
- tBTA_PAN_ROLE local_role; /* local role */
- tBTA_PAN_ROLE peer_role; /* peer role */
- uint8_t app_id; /* application id for the connection */
+typedef struct {
+ BD_ADDR bd_addr; /* peer bdaddr */
+ fixed_queue_t*
+ data_queue; /* Queue of buffers waiting to be passed to application */
+ uint16_t handle; /* BTA PAN/BNEP handle */
+ bool in_use; /* scb in use */
+ tBTA_SEC sec_mask; /* Security mask */
+ bool pan_flow_enable; /* BNEP flow control state */
+ bool app_flow_enable; /* Application flow control state */
+ uint8_t state; /* State machine state */
+ tBTA_PAN_ROLE local_role; /* local role */
+ tBTA_PAN_ROLE peer_role; /* peer role */
+ uint8_t app_id; /* application id for the connection */
} tBTA_PAN_SCB;
-
-
/* main control block */
-typedef struct
-{
- tBTA_PAN_SCB scb[BTA_PAN_NUM_CONN]; /* state machine control blocks */
- tBTA_PAN_CBACK *p_cback; /* PAN callback function */
- uint8_t app_id[3]; /* application id for PAN roles */
- uint8_t flow_mask; /* Data flow mask */
- uint8_t q_level; /* queue level set by application for TX data */
+typedef struct {
+ tBTA_PAN_SCB scb[BTA_PAN_NUM_CONN]; /* state machine control blocks */
+ tBTA_PAN_CBACK* p_cback; /* PAN callback function */
+ uint8_t app_id[3]; /* application id for PAN roles */
+ uint8_t flow_mask; /* Data flow mask */
+ uint8_t q_level; /* queue level set by application for TX data */
} tBTA_PAN_CB;
-
/* pan data param */
-typedef struct
-{
- BT_HDR hdr;
- BD_ADDR src;
- BD_ADDR dst;
- uint16_t protocol;
- bool ext;
- bool forward;
+typedef struct {
+ BT_HDR hdr;
+ BD_ADDR src;
+ BD_ADDR dst;
+ uint16_t protocol;
+ bool ext;
+ bool forward;
} tBTA_PAN_DATA_PARAMS;
-
/*****************************************************************************
* Global data
****************************************************************************/
/* PAN control block */
-extern tBTA_PAN_CB bta_pan_cb;
+extern tBTA_PAN_CB bta_pan_cb;
/*****************************************************************************
* Function prototypes
****************************************************************************/
-extern tBTA_PAN_SCB *bta_pan_scb_alloc(void);
-extern void bta_pan_scb_dealloc(tBTA_PAN_SCB *p_scb);
-extern uint8_t bta_pan_scb_to_idx(tBTA_PAN_SCB *p_scb);
-extern tBTA_PAN_SCB *bta_pan_scb_by_handle(uint16_t handle);
-extern bool bta_pan_hdl_event(BT_HDR *p_msg);
+extern tBTA_PAN_SCB* bta_pan_scb_alloc(void);
+extern void bta_pan_scb_dealloc(tBTA_PAN_SCB* p_scb);
+extern uint8_t bta_pan_scb_to_idx(tBTA_PAN_SCB* p_scb);
+extern tBTA_PAN_SCB* bta_pan_scb_by_handle(uint16_t handle);
+extern bool bta_pan_hdl_event(BT_HDR* p_msg);
/* action functions */
-extern void bta_pan_enable(tBTA_PAN_DATA *p_data);
+extern void bta_pan_enable(tBTA_PAN_DATA* p_data);
extern void bta_pan_disable(void);
-extern void bta_pan_set_role(tBTA_PAN_DATA *p_data);
-extern void bta_pan_open(tBTA_PAN_SCB *p_scb, tBTA_PAN_DATA *p_data);
-extern void bta_pan_api_close(tBTA_PAN_SCB *p_scb, tBTA_PAN_DATA *p_data);
-extern void bta_pan_set_shutdown(tBTA_PAN_SCB *p_scb, tBTA_PAN_DATA *p_data);
-extern void bta_pan_rx_path(tBTA_PAN_SCB *p_scb, tBTA_PAN_DATA *p_data);
-extern void bta_pan_tx_path(tBTA_PAN_SCB *p_scb, tBTA_PAN_DATA *p_data);
-extern void bta_pan_tx_flow(tBTA_PAN_SCB *p_scb, tBTA_PAN_DATA *p_data);
-extern void bta_pan_conn_open(tBTA_PAN_SCB *p_scb, tBTA_PAN_DATA *p_data);
-extern void bta_pan_conn_close(tBTA_PAN_SCB *p_scb, tBTA_PAN_DATA *p_data);
-extern void bta_pan_writebuf(tBTA_PAN_SCB *p_scb, tBTA_PAN_DATA *p_data);
-extern void bta_pan_write_buf(tBTA_PAN_SCB *p_scb, tBTA_PAN_DATA *p_data);
-extern void bta_pan_free_buf(tBTA_PAN_SCB *p_scb, tBTA_PAN_DATA *p_data);
-
+extern void bta_pan_set_role(tBTA_PAN_DATA* p_data);
+extern void bta_pan_open(tBTA_PAN_SCB* p_scb, tBTA_PAN_DATA* p_data);
+extern void bta_pan_api_close(tBTA_PAN_SCB* p_scb, tBTA_PAN_DATA* p_data);
+extern void bta_pan_set_shutdown(tBTA_PAN_SCB* p_scb, tBTA_PAN_DATA* p_data);
+extern void bta_pan_rx_path(tBTA_PAN_SCB* p_scb, tBTA_PAN_DATA* p_data);
+extern void bta_pan_tx_path(tBTA_PAN_SCB* p_scb, tBTA_PAN_DATA* p_data);
+extern void bta_pan_tx_flow(tBTA_PAN_SCB* p_scb, tBTA_PAN_DATA* p_data);
+extern void bta_pan_conn_open(tBTA_PAN_SCB* p_scb, tBTA_PAN_DATA* p_data);
+extern void bta_pan_conn_close(tBTA_PAN_SCB* p_scb, tBTA_PAN_DATA* p_data);
+extern void bta_pan_writebuf(tBTA_PAN_SCB* p_scb, tBTA_PAN_DATA* p_data);
+extern void bta_pan_write_buf(tBTA_PAN_SCB* p_scb, tBTA_PAN_DATA* p_data);
+extern void bta_pan_free_buf(tBTA_PAN_SCB* p_scb, tBTA_PAN_DATA* p_data);
#endif /* BTA_PAN_INT_H */
diff --git a/bta/pan/bta_pan_main.cc b/bta/pan/bta_pan_main.cc
index 2bdf8c9..d003bce 100644
--- a/bta/pan/bta_pan_main.cc
+++ b/bta/pan/bta_pan_main.cc
@@ -28,128 +28,101 @@
#include <string.h>
-#include "bta_api.h"
-#include "bta_sys.h"
#include "bt_common.h"
-#include "pan_api.h"
+#include "bta_api.h"
#include "bta_pan_api.h"
#include "bta_pan_int.h"
+#include "bta_sys.h"
#include "osi/include/osi.h"
+#include "pan_api.h"
#include "utl.h"
/*****************************************************************************
* Constants and types
****************************************************************************/
-
-
/* state machine action enumeration list */
-enum
-{
- BTA_PAN_API_CLOSE,
- BTA_PAN_TX_PATH,
- BTA_PAN_RX_PATH,
- BTA_PAN_TX_FLOW,
- BTA_PAN_WRITE_BUF,
- BTA_PAN_CONN_OPEN,
- BTA_PAN_CONN_CLOSE,
- BTA_PAN_FREE_BUF,
- BTA_PAN_IGNORE
+enum {
+ BTA_PAN_API_CLOSE,
+ BTA_PAN_TX_PATH,
+ BTA_PAN_RX_PATH,
+ BTA_PAN_TX_FLOW,
+ BTA_PAN_WRITE_BUF,
+ BTA_PAN_CONN_OPEN,
+ BTA_PAN_CONN_CLOSE,
+ BTA_PAN_FREE_BUF,
+ BTA_PAN_IGNORE
};
-
-
/* type for action functions */
-typedef void (*tBTA_PAN_ACTION)(tBTA_PAN_SCB *p_scb, tBTA_PAN_DATA *p_data);
-
-
-
+typedef void (*tBTA_PAN_ACTION)(tBTA_PAN_SCB* p_scb, tBTA_PAN_DATA* p_data);
/* action function list */
-const tBTA_PAN_ACTION bta_pan_action[] =
-{
- bta_pan_api_close,
- bta_pan_tx_path,
- bta_pan_rx_path,
- bta_pan_tx_flow,
- bta_pan_write_buf,
- bta_pan_conn_open,
- bta_pan_conn_close,
- bta_pan_free_buf,
+const tBTA_PAN_ACTION bta_pan_action[] = {
+ bta_pan_api_close, bta_pan_tx_path, bta_pan_rx_path, bta_pan_tx_flow,
+ bta_pan_write_buf, bta_pan_conn_open, bta_pan_conn_close, bta_pan_free_buf,
};
/* state table information */
-#define BTA_PAN_ACTIONS 1 /* number of actions */
-#define BTA_PAN_NEXT_STATE 1 /* position of next state */
-#define BTA_PAN_NUM_COLS 2 /* number of columns in state tables */
-
-
+#define BTA_PAN_ACTIONS 1 /* number of actions */
+#define BTA_PAN_NEXT_STATE 1 /* position of next state */
+#define BTA_PAN_NUM_COLS 2 /* number of columns in state tables */
/* state table for listen state */
-const uint8_t bta_pan_st_idle[][BTA_PAN_NUM_COLS] =
-{
- /* API_CLOSE */ {BTA_PAN_API_CLOSE, BTA_PAN_IDLE_ST},
- /* CI_TX_READY */ {BTA_PAN_IGNORE, BTA_PAN_IDLE_ST},
- /* CI_RX_READY */ {BTA_PAN_IGNORE, BTA_PAN_IDLE_ST},
- /* CI_TX_FLOW */ {BTA_PAN_IGNORE, BTA_PAN_IDLE_ST},
- /* CI_RX_WRITE */ {BTA_PAN_IGNORE, BTA_PAN_IDLE_ST},
- /* CI_RX_WRITEBUF */ {BTA_PAN_IGNORE, BTA_PAN_IDLE_ST},
- /* PAN_CONN_OPEN */ {BTA_PAN_CONN_OPEN, BTA_PAN_OPEN_ST},
- /* PAN_CONN_CLOSE */ {BTA_PAN_CONN_OPEN, BTA_PAN_IDLE_ST},
- /* FLOW_ENABLE */ {BTA_PAN_IGNORE, BTA_PAN_IDLE_ST},
- /* BNEP_DATA */ {BTA_PAN_IGNORE, BTA_PAN_IDLE_ST}
+const uint8_t bta_pan_st_idle[][BTA_PAN_NUM_COLS] = {
+ /* API_CLOSE */ {BTA_PAN_API_CLOSE, BTA_PAN_IDLE_ST},
+ /* CI_TX_READY */ {BTA_PAN_IGNORE, BTA_PAN_IDLE_ST},
+ /* CI_RX_READY */ {BTA_PAN_IGNORE, BTA_PAN_IDLE_ST},
+ /* CI_TX_FLOW */ {BTA_PAN_IGNORE, BTA_PAN_IDLE_ST},
+ /* CI_RX_WRITE */ {BTA_PAN_IGNORE, BTA_PAN_IDLE_ST},
+ /* CI_RX_WRITEBUF */ {BTA_PAN_IGNORE, BTA_PAN_IDLE_ST},
+ /* PAN_CONN_OPEN */ {BTA_PAN_CONN_OPEN, BTA_PAN_OPEN_ST},
+ /* PAN_CONN_CLOSE */ {BTA_PAN_CONN_OPEN, BTA_PAN_IDLE_ST},
+ /* FLOW_ENABLE */ {BTA_PAN_IGNORE, BTA_PAN_IDLE_ST},
+ /* BNEP_DATA */ {BTA_PAN_IGNORE, BTA_PAN_IDLE_ST}
};
-
-
/* state table for open state */
-const uint8_t bta_pan_st_open[][BTA_PAN_NUM_COLS] =
-{
- /* API_CLOSE */ {BTA_PAN_API_CLOSE, BTA_PAN_OPEN_ST},
- /* CI_TX_READY */ {BTA_PAN_TX_PATH, BTA_PAN_OPEN_ST},
- /* CI_RX_READY */ {BTA_PAN_RX_PATH, BTA_PAN_OPEN_ST},
- /* CI_TX_FLOW */ {BTA_PAN_TX_FLOW, BTA_PAN_OPEN_ST},
- /* CI_RX_WRITE */ {BTA_PAN_IGNORE, BTA_PAN_OPEN_ST},
- /* CI_RX_WRITEBUF */ {BTA_PAN_WRITE_BUF, BTA_PAN_OPEN_ST},
- /* PAN_CONN_OPEN */ {BTA_PAN_IGNORE, BTA_PAN_OPEN_ST},
- /* PAN_CONN_CLOSE */ {BTA_PAN_CONN_CLOSE, BTA_PAN_IDLE_ST},
- /* FLOW_ENABLE */ {BTA_PAN_RX_PATH, BTA_PAN_OPEN_ST},
- /* BNEP_DATA */ {BTA_PAN_TX_PATH, BTA_PAN_OPEN_ST}
-};
+const uint8_t bta_pan_st_open[][BTA_PAN_NUM_COLS] = {
+ /* API_CLOSE */ {BTA_PAN_API_CLOSE, BTA_PAN_OPEN_ST},
+ /* CI_TX_READY */ {BTA_PAN_TX_PATH, BTA_PAN_OPEN_ST},
+ /* CI_RX_READY */ {BTA_PAN_RX_PATH, BTA_PAN_OPEN_ST},
+ /* CI_TX_FLOW */ {BTA_PAN_TX_FLOW, BTA_PAN_OPEN_ST},
+ /* CI_RX_WRITE */ {BTA_PAN_IGNORE, BTA_PAN_OPEN_ST},
+ /* CI_RX_WRITEBUF */ {BTA_PAN_WRITE_BUF, BTA_PAN_OPEN_ST},
+ /* PAN_CONN_OPEN */ {BTA_PAN_IGNORE, BTA_PAN_OPEN_ST},
+ /* PAN_CONN_CLOSE */ {BTA_PAN_CONN_CLOSE, BTA_PAN_IDLE_ST},
+ /* FLOW_ENABLE */ {BTA_PAN_RX_PATH, BTA_PAN_OPEN_ST},
+ /* BNEP_DATA */ {BTA_PAN_TX_PATH, BTA_PAN_OPEN_ST}};
/* state table for closing state */
-const uint8_t bta_pan_st_closing[][BTA_PAN_NUM_COLS] =
-{
- /* API_CLOSE */ {BTA_PAN_IGNORE, BTA_PAN_CLOSING_ST},
- /* CI_TX_READY */ {BTA_PAN_TX_PATH, BTA_PAN_CLOSING_ST},
- /* CI_RX_READY */ {BTA_PAN_RX_PATH, BTA_PAN_CLOSING_ST},
- /* CI_TX_FLOW */ {BTA_PAN_TX_FLOW, BTA_PAN_CLOSING_ST},
- /* CI_RX_WRITE */ {BTA_PAN_IGNORE, BTA_PAN_CLOSING_ST},
- /* CI_RX_WRITEBUF */ {BTA_PAN_FREE_BUF, BTA_PAN_CLOSING_ST},
- /* PAN_CONN_OPEN */ {BTA_PAN_IGNORE, BTA_PAN_CLOSING_ST},
- /* PAN_CONN_CLOSE */ {BTA_PAN_CONN_CLOSE, BTA_PAN_IDLE_ST},
- /* FLOW_ENABLE */ {BTA_PAN_RX_PATH, BTA_PAN_CLOSING_ST},
- /* BNEP_DATA */ {BTA_PAN_TX_PATH, BTA_PAN_CLOSING_ST}
-};
+const uint8_t bta_pan_st_closing[][BTA_PAN_NUM_COLS] = {
+ /* API_CLOSE */ {BTA_PAN_IGNORE, BTA_PAN_CLOSING_ST},
+ /* CI_TX_READY */ {BTA_PAN_TX_PATH, BTA_PAN_CLOSING_ST},
+ /* CI_RX_READY */ {BTA_PAN_RX_PATH, BTA_PAN_CLOSING_ST},
+ /* CI_TX_FLOW */ {BTA_PAN_TX_FLOW, BTA_PAN_CLOSING_ST},
+ /* CI_RX_WRITE */ {BTA_PAN_IGNORE, BTA_PAN_CLOSING_ST},
+ /* CI_RX_WRITEBUF */ {BTA_PAN_FREE_BUF, BTA_PAN_CLOSING_ST},
+ /* PAN_CONN_OPEN */ {BTA_PAN_IGNORE, BTA_PAN_CLOSING_ST},
+ /* PAN_CONN_CLOSE */ {BTA_PAN_CONN_CLOSE, BTA_PAN_IDLE_ST},
+ /* FLOW_ENABLE */ {BTA_PAN_RX_PATH, BTA_PAN_CLOSING_ST},
+ /* BNEP_DATA */ {BTA_PAN_TX_PATH, BTA_PAN_CLOSING_ST}};
/* type for state table */
typedef const uint8_t (*tBTA_PAN_ST_TBL)[BTA_PAN_NUM_COLS];
/* state table */
-const tBTA_PAN_ST_TBL bta_pan_st_tbl[] = {
- bta_pan_st_idle,
- bta_pan_st_open,
- bta_pan_st_closing
-};
+const tBTA_PAN_ST_TBL bta_pan_st_tbl[] = {bta_pan_st_idle, bta_pan_st_open,
+ bta_pan_st_closing};
/*****************************************************************************
* Global data
****************************************************************************/
/* PAN control block */
-tBTA_PAN_CB bta_pan_cb;
+tBTA_PAN_CB bta_pan_cb;
/*******************************************************************************
*
@@ -161,28 +134,24 @@
* Returns pointer to the scb, or NULL if none could be allocated.
*
******************************************************************************/
-tBTA_PAN_SCB *bta_pan_scb_alloc(void)
-{
- tBTA_PAN_SCB *p_scb = &bta_pan_cb.scb[0];
- int i;
+tBTA_PAN_SCB* bta_pan_scb_alloc(void) {
+ tBTA_PAN_SCB* p_scb = &bta_pan_cb.scb[0];
+ int i;
- for (i = 0; i < BTA_PAN_NUM_CONN; i++, p_scb++)
- {
- if (!p_scb->in_use)
- {
- p_scb->in_use = true;
- APPL_TRACE_DEBUG("bta_pan_scb_alloc %d", i);
- break;
- }
+ for (i = 0; i < BTA_PAN_NUM_CONN; i++, p_scb++) {
+ if (!p_scb->in_use) {
+ p_scb->in_use = true;
+ APPL_TRACE_DEBUG("bta_pan_scb_alloc %d", i);
+ break;
}
+ }
- if (i == BTA_PAN_NUM_CONN)
- {
- /* out of scbs */
- p_scb = NULL;
- APPL_TRACE_WARNING("Out of scbs");
- }
- return p_scb;
+ if (i == BTA_PAN_NUM_CONN) {
+ /* out of scbs */
+ p_scb = NULL;
+ APPL_TRACE_WARNING("Out of scbs");
+ }
+ return p_scb;
}
/*******************************************************************************
@@ -195,34 +164,31 @@
* Returns void
*
******************************************************************************/
-static void bta_pan_sm_execute(tBTA_PAN_SCB *p_scb, uint16_t event, tBTA_PAN_DATA *p_data)
-{
- tBTA_PAN_ST_TBL state_table;
- uint8_t action;
- int i;
+static void bta_pan_sm_execute(tBTA_PAN_SCB* p_scb, uint16_t event,
+ tBTA_PAN_DATA* p_data) {
+ tBTA_PAN_ST_TBL state_table;
+ uint8_t action;
+ int i;
- APPL_TRACE_EVENT("PAN scb=%d event=0x%x state=%d", bta_pan_scb_to_idx(p_scb), event, p_scb->state);
+ APPL_TRACE_EVENT("PAN scb=%d event=0x%x state=%d", bta_pan_scb_to_idx(p_scb),
+ event, p_scb->state);
- /* look up the state table for the current state */
- state_table = bta_pan_st_tbl[p_scb->state];
+ /* look up the state table for the current state */
+ state_table = bta_pan_st_tbl[p_scb->state];
- event &= 0x00FF;
+ event &= 0x00FF;
- /* set next state */
- p_scb->state = state_table[event][BTA_PAN_NEXT_STATE];
+ /* set next state */
+ p_scb->state = state_table[event][BTA_PAN_NEXT_STATE];
- /* execute action functions */
- for (i = 0; i < BTA_PAN_ACTIONS; i++)
- {
- if ((action = state_table[event][i]) != BTA_PAN_IGNORE)
- {
- (*bta_pan_action[action])(p_scb, p_data);
- }
- else
- {
- break;
- }
+ /* execute action functions */
+ for (i = 0; i < BTA_PAN_ACTIONS; i++) {
+ if ((action = state_table[event][i]) != BTA_PAN_IGNORE) {
+ (*bta_pan_action[action])(p_scb, p_data);
+ } else {
+ break;
}
+ }
}
/*******************************************************************************
@@ -235,14 +201,13 @@
* Returns void
*
******************************************************************************/
-static void bta_pan_api_enable(tBTA_PAN_DATA *p_data)
-{
- /* initialize control block */
- memset(&bta_pan_cb, 0, sizeof(bta_pan_cb));
+static void bta_pan_api_enable(tBTA_PAN_DATA* p_data) {
+ /* initialize control block */
+ memset(&bta_pan_cb, 0, sizeof(bta_pan_cb));
- /* store callback function */
- bta_pan_cb.p_cback = p_data->api_enable.p_cback;
- bta_pan_enable(p_data);
+ /* store callback function */
+ bta_pan_cb.p_cback = p_data->api_enable.p_cback;
+ bta_pan_enable(p_data);
}
/*******************************************************************************
@@ -255,12 +220,10 @@
* Returns void
*
******************************************************************************/
-static void bta_pan_api_disable(UNUSED_ATTR tBTA_PAN_DATA *p_data)
-{
- bta_pan_disable();
+static void bta_pan_api_disable(UNUSED_ATTR tBTA_PAN_DATA* p_data) {
+ bta_pan_disable();
}
-
/*******************************************************************************
*
* Function bta_pan_api_open
@@ -271,23 +234,18 @@
* Returns void
*
******************************************************************************/
-static void bta_pan_api_open(tBTA_PAN_DATA *p_data)
-{
- tBTA_PAN_SCB *p_scb;
- tBTA_PAN_OPEN data;
+static void bta_pan_api_open(tBTA_PAN_DATA* p_data) {
+ tBTA_PAN_SCB* p_scb;
+ tBTA_PAN_OPEN data;
- /* allocate an scb */
- if ((p_scb = bta_pan_scb_alloc()) != NULL)
- {
- bta_pan_open(p_scb, p_data);
- }
- else
- {
- bdcpy(data.bd_addr, p_data->api_open.bd_addr);
- data.status = BTA_PAN_FAIL;
- bta_pan_cb.p_cback(BTA_PAN_OPEN_EVT, (tBTA_PAN *)&data);
-
- }
+ /* allocate an scb */
+ if ((p_scb = bta_pan_scb_alloc()) != NULL) {
+ bta_pan_open(p_scb, p_data);
+ } else {
+ bdcpy(data.bd_addr, p_data->api_open.bd_addr);
+ data.status = BTA_PAN_FAIL;
+ bta_pan_cb.p_cback(BTA_PAN_OPEN_EVT, (tBTA_PAN*)&data);
+ }
}
/*******************************************************************************
*
@@ -299,11 +257,10 @@
* Returns void
*
******************************************************************************/
-void bta_pan_scb_dealloc(tBTA_PAN_SCB *p_scb)
-{
- APPL_TRACE_DEBUG("bta_pan_scb_dealloc %d", bta_pan_scb_to_idx(p_scb));
- fixed_queue_free(p_scb->data_queue, NULL);
- memset(p_scb, 0, sizeof(tBTA_PAN_SCB));
+void bta_pan_scb_dealloc(tBTA_PAN_SCB* p_scb) {
+ APPL_TRACE_DEBUG("bta_pan_scb_dealloc %d", bta_pan_scb_to_idx(p_scb));
+ fixed_queue_free(p_scb->data_queue, NULL);
+ memset(p_scb, 0, sizeof(tBTA_PAN_SCB));
}
/*******************************************************************************
@@ -316,14 +273,10 @@
* Returns Index of scb.
*
******************************************************************************/
-uint8_t bta_pan_scb_to_idx(tBTA_PAN_SCB *p_scb)
-{
-
- return ((uint8_t) (p_scb - bta_pan_cb.scb)) + 1;
+uint8_t bta_pan_scb_to_idx(tBTA_PAN_SCB* p_scb) {
+ return ((uint8_t)(p_scb - bta_pan_cb.scb)) + 1;
}
-
-
/*******************************************************************************
*
* Function bta_pan_scb_by_handle
@@ -334,23 +287,20 @@
* Returns Pointer to scb or NULL if not found.
*
******************************************************************************/
-tBTA_PAN_SCB *bta_pan_scb_by_handle(uint16_t handle)
-{
- tBTA_PAN_SCB *p_scb = &bta_pan_cb.scb[0];
- uint8_t i;
+tBTA_PAN_SCB* bta_pan_scb_by_handle(uint16_t handle) {
+ tBTA_PAN_SCB* p_scb = &bta_pan_cb.scb[0];
+ uint8_t i;
- for (i = 0; i < BTA_PAN_NUM_CONN; i++, p_scb++)
- {
- if (p_scb->handle == handle)
- {
- return p_scb;;
- }
+ for (i = 0; i < BTA_PAN_NUM_CONN; i++, p_scb++) {
+ if (p_scb->handle == handle) {
+ return p_scb;
+ ;
}
+ }
+ APPL_TRACE_WARNING("No scb for handle %d", handle);
- APPL_TRACE_WARNING("No scb for handle %d", handle);
-
- return NULL;
+ return NULL;
}
/*******************************************************************************
@@ -363,52 +313,46 @@
* Returns void
*
******************************************************************************/
-bool bta_pan_hdl_event(BT_HDR *p_msg)
-{
- tBTA_PAN_SCB *p_scb;
- bool freebuf = true;
+bool bta_pan_hdl_event(BT_HDR* p_msg) {
+ tBTA_PAN_SCB* p_scb;
+ bool freebuf = true;
- switch (p_msg->event)
- {
- /* handle enable event */
- case BTA_PAN_API_ENABLE_EVT:
- bta_pan_api_enable((tBTA_PAN_DATA *) p_msg);
- break;
+ switch (p_msg->event) {
+ /* handle enable event */
+ case BTA_PAN_API_ENABLE_EVT:
+ bta_pan_api_enable((tBTA_PAN_DATA*)p_msg);
+ break;
- /* handle disable event */
- case BTA_PAN_API_DISABLE_EVT:
- bta_pan_api_disable((tBTA_PAN_DATA *) p_msg);
- break;
+ /* handle disable event */
+ case BTA_PAN_API_DISABLE_EVT:
+ bta_pan_api_disable((tBTA_PAN_DATA*)p_msg);
+ break;
- /* handle set role event */
- case BTA_PAN_API_SET_ROLE_EVT:
- bta_pan_set_role((tBTA_PAN_DATA *) p_msg);
- break;
+ /* handle set role event */
+ case BTA_PAN_API_SET_ROLE_EVT:
+ bta_pan_set_role((tBTA_PAN_DATA*)p_msg);
+ break;
- /* handle open event */
- case BTA_PAN_API_OPEN_EVT:
- bta_pan_api_open((tBTA_PAN_DATA *) p_msg);
- break;
+ /* handle open event */
+ case BTA_PAN_API_OPEN_EVT:
+ bta_pan_api_open((tBTA_PAN_DATA*)p_msg);
+ break;
+ /* events that require buffer not be released */
+ case BTA_PAN_CI_RX_WRITEBUF_EVT:
+ freebuf = false;
+ if ((p_scb = bta_pan_scb_by_handle(p_msg->layer_specific)) != NULL) {
+ bta_pan_sm_execute(p_scb, p_msg->event, (tBTA_PAN_DATA*)p_msg);
+ }
+ break;
- /* events that require buffer not be released */
- case BTA_PAN_CI_RX_WRITEBUF_EVT:
- freebuf = false;
- if ((p_scb = bta_pan_scb_by_handle(p_msg->layer_specific)) != NULL)
- {
- bta_pan_sm_execute(p_scb, p_msg->event, (tBTA_PAN_DATA *) p_msg);
- }
- break;
-
- /* all other events */
- default:
- if ((p_scb = bta_pan_scb_by_handle(p_msg->layer_specific)) != NULL)
- {
- bta_pan_sm_execute(p_scb, p_msg->event, (tBTA_PAN_DATA *) p_msg);
- }
- break;
-
- }
- return freebuf;
+ /* all other events */
+ default:
+ if ((p_scb = bta_pan_scb_by_handle(p_msg->layer_specific)) != NULL) {
+ bta_pan_sm_execute(p_scb, p_msg->event, (tBTA_PAN_DATA*)p_msg);
+ }
+ break;
+ }
+ return freebuf;
}
#endif /* BTA_PAN_INCLUDED */
diff --git a/bta/pb/bta_pbs_int.h b/bta/pb/bta_pbs_int.h
index 8e520a6..ae21ce4 100644
--- a/bta/pb/bta_pbs_int.h
+++ b/bta/pb/bta_pbs_int.h
@@ -32,27 +32,28 @@
****************************************************************************/
/* Profile supported features */
-#define BTA_PBS_SUPF_DOWNLOAD 0x0001
-#define BTA_PBS_SURF_BROWSE 0x0002
+#define BTA_PBS_SUPF_DOWNLOAD 0x0001
+#define BTA_PBS_SURF_BROWSE 0x0002
/* Profile supported repositories */
-#define BTA_PBS_REPOSIT_LOCAL 0x01 /* Local PhoneBook */
-#define BTA_PBS_REPOSIT_SIM 0x02 /* SIM card PhoneBook */
+#define BTA_PBS_REPOSIT_LOCAL 0x01 /* Local PhoneBook */
+#define BTA_PBS_REPOSIT_SIM 0x02 /* SIM card PhoneBook */
-#define BTA_PBS_TARGET_UUID "\x79\x61\x35\xf0\xf0\xc5\x11\xd8\x09\x66\x08\x00\x20\x0c\x9a\x66"
-#define BTA_PBS_UUID_LENGTH 16
-#define BTA_PBS_MAX_AUTH_KEY_SIZE 16 /* Must not be greater than OBX_MAX_AUTH_KEY_SIZE */
+#define BTA_PBS_TARGET_UUID \
+ "\x79\x61\x35\xf0\xf0\xc5\x11\xd8\x09\x66\x08\x00\x20\x0c\x9a\x66"
+#define BTA_PBS_UUID_LENGTH 16
+#define BTA_PBS_MAX_AUTH_KEY_SIZE \
+ 16 /* Must not be greater than OBX_MAX_AUTH_KEY_SIZE */
-#define BTA_PBS_DEFAULT_VERSION 0x0101 /* for PBAP PSE version 1.1 */
-
+#define BTA_PBS_DEFAULT_VERSION 0x0101 /* for PBAP PSE version 1.1 */
/* Configuration structure */
-typedef struct
-{
- uint8_t realm_charset; /* Server only */
- bool userid_req; /* true if user id is required during obex authentication (Server only) */
- uint8_t supported_features; /* Server supported features */
- uint8_t supported_repositories; /* Server supported repositories */
+typedef struct {
+ uint8_t realm_charset; /* Server only */
+ bool userid_req; /* true if user id is required during obex authentication
+ (Server only) */
+ uint8_t supported_features; /* Server supported features */
+ uint8_t supported_repositories; /* Server supported repositories */
} tBTA_PBS_CFG;
diff --git a/bta/sdp/bta_sdp.cc b/bta/sdp/bta_sdp.cc
index ef5c8d9..735d0b7 100644
--- a/bta/sdp/bta_sdp.cc
+++ b/bta/sdp/bta_sdp.cc
@@ -25,9 +25,9 @@
#include <stdlib.h>
#include "bta_api.h"
-#include "bta_sys.h"
#include "bta_sdp_api.h"
#include "bta_sdp_int.h"
+#include "bta_sys.h"
/*****************************************************************************
* Constants and types
@@ -36,18 +36,17 @@
tBTA_SDP_CB bta_sdp_cb;
/* state machine action enumeration list */
-#define BTA_SDP_NUM_ACTIONS (BTA_SDP_MAX_INT_EVT & 0x00ff)
+#define BTA_SDP_NUM_ACTIONS (BTA_SDP_MAX_INT_EVT & 0x00ff)
/* type for action functions */
-typedef void (*tBTA_SDP_ACTION)(tBTA_SDP_MSG *p_data);
+typedef void (*tBTA_SDP_ACTION)(tBTA_SDP_MSG* p_data);
/* action function list */
-const tBTA_SDP_ACTION bta_sdp_action[] =
-{
- bta_sdp_enable, /* BTA_SDP_API_ENABLE_EVT */
- bta_sdp_search, /* BTA_SDP_API_SEARCH_EVT */
- bta_sdp_create_record, /* BTA_SDP_API_CREATE_RECORD_USER_EVT */
- bta_sdp_remove_record, /* BTA_SDP_API_REMOVE_RECORD_USER_EVT */
+const tBTA_SDP_ACTION bta_sdp_action[] = {
+ bta_sdp_enable, /* BTA_SDP_API_ENABLE_EVT */
+ bta_sdp_search, /* BTA_SDP_API_SEARCH_EVT */
+ bta_sdp_create_record, /* BTA_SDP_API_CREATE_RECORD_USER_EVT */
+ bta_sdp_remove_record, /* BTA_SDP_API_REMOVE_RECORD_USER_EVT */
};
/*******************************************************************************
@@ -57,19 +56,17 @@
*
* Returns void
******************************************************************************/
-bool bta_sdp_sm_execute(BT_HDR *p_msg)
-{
- if(p_msg == NULL) return false;
+bool bta_sdp_sm_execute(BT_HDR* p_msg) {
+ if (p_msg == NULL) return false;
- bool ret = false;
- uint16_t action = (p_msg->event & 0x00ff);
+ bool ret = false;
+ uint16_t action = (p_msg->event & 0x00ff);
- /* execute action functions */
- if(action < BTA_SDP_NUM_ACTIONS)
- {
- (*bta_sdp_action[action])((tBTA_SDP_MSG*)p_msg);
- ret = true;
- }
+ /* execute action functions */
+ if (action < BTA_SDP_NUM_ACTIONS) {
+ (*bta_sdp_action[action])((tBTA_SDP_MSG*)p_msg);
+ ret = true;
+ }
- return(ret);
+ return (ret);
}
diff --git a/bta/sdp/bta_sdp_act.cc b/bta/sdp/bta_sdp_act.cc
index cb3cc13..3787298 100644
--- a/bta/sdp/bta_sdp_act.cc
+++ b/bta/sdp/bta_sdp_act.cc
@@ -20,38 +20,43 @@
* This file contains action functions for SDP search.
******************************************************************************/
+#include <arpa/inet.h>
#include <hardware/bluetooth.h>
#include <hardware/bt_sdp.h>
-#include <arpa/inet.h>
#include <stdlib.h>
#include <string.h>
-#include "osi/include/allocator.h"
-#include "bt_types.h"
#include "bt_common.h"
-#include "utl.h"
-#include "bta_sys.h"
+#include "bt_types.h"
#include "bta_api.h"
#include "bta_sdp_api.h"
#include "bta_sdp_int.h"
+#include "bta_sys.h"
#include "btm_api.h"
#include "btm_int.h"
+#include "osi/include/allocator.h"
#include "sdp_api.h"
+#include "utl.h"
/*****************************************************************************
* Constants
****************************************************************************/
-static const uint8_t UUID_OBEX_OBJECT_PUSH[] = {0x00, 0x00, 0x11, 0x05, 0x00, 0x00, 0x10, 0x00,
- 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB};
-static const uint8_t UUID_PBAP_PSE[] = {0x00, 0x00, 0x11, 0x2F, 0x00, 0x00, 0x10, 0x00,
- 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB};
-static const uint8_t UUID_MAP_MAS[] = {0x00, 0x00, 0x11, 0x32, 0x00, 0x00, 0x10, 0x00,
- 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB};
-static const uint8_t UUID_MAP_MNS[] = {0x00, 0x00, 0x11, 0x33, 0x00, 0x00, 0x10, 0x00,
- 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB};
-static const uint8_t UUID_SAP[] = {0x00, 0x00, 0x11, 0x2D, 0x00, 0x00, 0x10, 0x00,
- 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB};
+static const uint8_t UUID_OBEX_OBJECT_PUSH[] = {
+ 0x00, 0x00, 0x11, 0x05, 0x00, 0x00, 0x10, 0x00,
+ 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB};
+static const uint8_t UUID_PBAP_PSE[] = {0x00, 0x00, 0x11, 0x2F, 0x00, 0x00,
+ 0x10, 0x00, 0x80, 0x00, 0x00, 0x80,
+ 0x5F, 0x9B, 0x34, 0xFB};
+static const uint8_t UUID_MAP_MAS[] = {0x00, 0x00, 0x11, 0x32, 0x00, 0x00,
+ 0x10, 0x00, 0x80, 0x00, 0x00, 0x80,
+ 0x5F, 0x9B, 0x34, 0xFB};
+static const uint8_t UUID_MAP_MNS[] = {0x00, 0x00, 0x11, 0x33, 0x00, 0x00,
+ 0x10, 0x00, 0x80, 0x00, 0x00, 0x80,
+ 0x5F, 0x9B, 0x34, 0xFB};
+static const uint8_t UUID_SAP[] = {0x00, 0x00, 0x11, 0x2D, 0x00, 0x00,
+ 0x10, 0x00, 0x80, 0x00, 0x00, 0x80,
+ 0x5F, 0x9B, 0x34, 0xFB};
// TODO:
// Both the fact that the UUIDs are declared in multiple places, plus the fact
// that there is a mess of UUID comparison and shortening methods will have to
@@ -59,316 +64,309 @@
// The btcore->uuid module should be used for all instances.
#define UUID_MAX_LENGTH 16
-#define IS_UUID(u1,u2) !memcmp(u1,u2,UUID_MAX_LENGTH)
+#define IS_UUID(u1, u2) !memcmp(u1, u2, UUID_MAX_LENGTH)
-static inline tBT_UUID shorten_sdp_uuid(const tBT_UUID* u)
-{
- static uint8_t bt_base_uuid[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00,
- 0x80, 0x00, 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB };
+static inline tBT_UUID shorten_sdp_uuid(const tBT_UUID* u) {
+ static uint8_t bt_base_uuid[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x10, 0x00, 0x80, 0x00, 0x00, 0x80,
+ 0x5F, 0x9B, 0x34, 0xFB};
- APPL_TRACE_DEBUG("%s() - uuid len:%d", __func__, u->len);
- if(u->len != 16)
- return *u;
+ APPL_TRACE_DEBUG("%s() - uuid len:%d", __func__, u->len);
+ if (u->len != 16) return *u;
- if(memcmp(&u->uu.uuid128[4], &bt_base_uuid[4], 12) != 0)
- return *u;
+ if (memcmp(&u->uu.uuid128[4], &bt_base_uuid[4], 12) != 0) return *u;
- tBT_UUID su;
- memset(&su, 0, sizeof(su));
- if(u->uu.uuid128[0] == 0 && u->uu.uuid128[1] == 0)
- {
- su.len = 2;
- uint16_t u16;
- memcpy(&u16, &u->uu.uuid128[2], sizeof(u16));
- su.uu.uuid16 = ntohs(u16);
+ tBT_UUID su;
+ memset(&su, 0, sizeof(su));
+ if (u->uu.uuid128[0] == 0 && u->uu.uuid128[1] == 0) {
+ su.len = 2;
+ uint16_t u16;
+ memcpy(&u16, &u->uu.uuid128[2], sizeof(u16));
+ su.uu.uuid16 = ntohs(u16);
+ } else {
+ su.len = 4;
+ uint32_t u32;
+ memcpy(&u32, &u->uu.uuid128[0], sizeof(u32));
+ su.uu.uuid32 = ntohl(u32);
+ }
+ return su;
+}
+
+static void bta_create_mns_sdp_record(bluetooth_sdp_record* record,
+ tSDP_DISC_REC* p_rec) {
+ tSDP_DISC_ATTR* p_attr;
+ tSDP_PROTOCOL_ELEM pe;
+ uint16_t pversion = 0;
+ record->mns.hdr.type = SDP_TYPE_MAP_MNS;
+ record->mns.hdr.service_name_length = 0;
+ record->mns.hdr.service_name = NULL;
+ record->mns.hdr.rfcomm_channel_number = 0;
+ record->mns.hdr.l2cap_psm = -1;
+ record->mns.hdr.profile_version = 0;
+ record->mns.supported_features = 0x0000001F; // default value if not found
+
+ if ((p_attr = SDP_FindAttributeInRec(
+ p_rec, ATTR_ID_MAP_SUPPORTED_FEATURES)) != NULL) {
+ record->mns.supported_features = p_attr->attr_value.v.u32;
+ }
+
+ if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_SERVICE_NAME)) != NULL) {
+ record->mns.hdr.service_name_length =
+ SDP_DISC_ATTR_LEN(p_attr->attr_len_type);
+ record->mns.hdr.service_name = (char*)p_attr->attr_value.v.array;
+ }
+
+ if (SDP_FindProfileVersionInRec(p_rec, UUID_SERVCLASS_MAP_PROFILE,
+ &pversion)) {
+ record->mns.hdr.profile_version = pversion;
+ }
+
+ if (SDP_FindProtocolListElemInRec(p_rec, UUID_PROTOCOL_RFCOMM, &pe)) {
+ record->mns.hdr.rfcomm_channel_number = pe.params[0];
+ }
+
+ if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_GOEP_L2CAP_PSM)) !=
+ NULL) {
+ record->mns.hdr.l2cap_psm = p_attr->attr_value.v.u16;
+ }
+}
+
+static void bta_create_mas_sdp_record(bluetooth_sdp_record* record,
+ tSDP_DISC_REC* p_rec) {
+ tSDP_DISC_ATTR* p_attr;
+ tSDP_PROTOCOL_ELEM pe;
+ uint16_t pversion = -1;
+
+ record->mas.hdr.type = SDP_TYPE_MAP_MAS;
+ record->mas.hdr.service_name_length = 0;
+ record->mas.hdr.service_name = NULL;
+ record->mas.hdr.rfcomm_channel_number = 0;
+ record->mas.hdr.l2cap_psm = -1;
+ record->mas.hdr.profile_version = 0;
+ record->mas.mas_instance_id = 0;
+ record->mas.supported_features = 0x0000001F;
+ record->mas.supported_message_types = 0;
+
+ if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_MAS_INSTANCE_ID)) !=
+ NULL) {
+ record->mas.mas_instance_id = p_attr->attr_value.v.u8;
+ }
+
+ if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_SUPPORTED_MSG_TYPE)) !=
+ NULL) {
+ record->mas.supported_message_types = p_attr->attr_value.v.u8;
+ }
+
+ if ((p_attr = SDP_FindAttributeInRec(
+ p_rec, ATTR_ID_MAP_SUPPORTED_FEATURES)) != NULL) {
+ record->mas.supported_features = p_attr->attr_value.v.u32;
+ }
+
+ if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_SERVICE_NAME)) != NULL) {
+ record->mas.hdr.service_name_length =
+ SDP_DISC_ATTR_LEN(p_attr->attr_len_type);
+ record->mas.hdr.service_name = (char*)p_attr->attr_value.v.array;
+ }
+
+ if (SDP_FindProfileVersionInRec(p_rec, UUID_SERVCLASS_MAP_PROFILE,
+ &pversion)) {
+ record->mas.hdr.profile_version = pversion;
+ }
+
+ if (SDP_FindProtocolListElemInRec(p_rec, UUID_PROTOCOL_RFCOMM, &pe)) {
+ record->mas.hdr.rfcomm_channel_number = pe.params[0];
+ }
+
+ if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_GOEP_L2CAP_PSM)) !=
+ NULL) {
+ record->mas.hdr.l2cap_psm = p_attr->attr_value.v.u16;
+ }
+}
+
+static void bta_create_pse_sdp_record(bluetooth_sdp_record* record,
+ tSDP_DISC_REC* p_rec) {
+ tSDP_DISC_ATTR* p_attr;
+ uint16_t pversion;
+ tSDP_PROTOCOL_ELEM pe;
+
+ record->pse.hdr.type = SDP_TYPE_PBAP_PSE;
+ record->pse.hdr.service_name_length = 0;
+ record->pse.hdr.service_name = NULL;
+ record->pse.hdr.rfcomm_channel_number = 0;
+ record->pse.hdr.l2cap_psm = -1;
+ record->pse.hdr.profile_version = 0;
+ record->pse.supported_features = 0x00000003;
+ record->pse.supported_repositories = 0;
+
+ if ((p_attr = SDP_FindAttributeInRec(
+ p_rec, ATTR_ID_SUPPORTED_REPOSITORIES)) != NULL) {
+ record->pse.supported_repositories = p_attr->attr_value.v.u8;
+ }
+ if ((p_attr = SDP_FindAttributeInRec(
+ p_rec, ATTR_ID_PBAP_SUPPORTED_FEATURES)) != NULL) {
+ record->pse.supported_features = p_attr->attr_value.v.u32;
+ }
+
+ if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_SERVICE_NAME)) != NULL) {
+ record->pse.hdr.service_name_length =
+ SDP_DISC_ATTR_LEN(p_attr->attr_len_type);
+ record->pse.hdr.service_name = (char*)p_attr->attr_value.v.array;
+ }
+
+ if (SDP_FindProfileVersionInRec(p_rec, UUID_SERVCLASS_PHONE_ACCESS,
+ &pversion)) {
+ record->pse.hdr.profile_version = pversion;
+ }
+
+ if (SDP_FindProtocolListElemInRec(p_rec, UUID_PROTOCOL_RFCOMM, &pe)) {
+ record->pse.hdr.rfcomm_channel_number = pe.params[0];
+ }
+
+ if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_GOEP_L2CAP_PSM)) !=
+ NULL) {
+ record->pse.hdr.l2cap_psm = p_attr->attr_value.v.u16;
+ }
+}
+
+static void bta_create_ops_sdp_record(bluetooth_sdp_record* record,
+ tSDP_DISC_REC* p_rec) {
+ tSDP_DISC_ATTR *p_attr, *p_sattr;
+ tSDP_PROTOCOL_ELEM pe;
+ uint16_t pversion = -1;
+
+ record->ops.hdr.type = SDP_TYPE_OPP_SERVER;
+ record->ops.hdr.service_name_length = 0;
+ record->ops.hdr.service_name = NULL;
+ record->ops.hdr.rfcomm_channel_number = 0;
+ record->ops.hdr.l2cap_psm = -1;
+ record->ops.hdr.profile_version = 0;
+ record->ops.supported_formats_list_len = 0;
+
+ if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_SERVICE_NAME)) != NULL) {
+ record->ops.hdr.service_name_length =
+ SDP_DISC_ATTR_LEN(p_attr->attr_len_type);
+ record->ops.hdr.service_name = (char*)p_attr->attr_value.v.array;
+ }
+
+ if (SDP_FindProfileVersionInRec(p_rec, UUID_SERVCLASS_OBEX_OBJECT_PUSH,
+ &pversion)) {
+ record->ops.hdr.profile_version = pversion;
+ }
+
+ if (SDP_FindProtocolListElemInRec(p_rec, UUID_PROTOCOL_RFCOMM, &pe)) {
+ record->ops.hdr.rfcomm_channel_number = pe.params[0];
+ }
+
+ if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_GOEP_L2CAP_PSM)) !=
+ NULL) {
+ record->ops.hdr.l2cap_psm = p_attr->attr_value.v.u16;
+ }
+ if ((p_attr = SDP_FindAttributeInRec(
+ p_rec, ATTR_ID_SUPPORTED_FORMATS_LIST)) != NULL) {
+ /* Safety check - each entry should itself be a sequence */
+ if (SDP_DISC_ATTR_TYPE(p_attr->attr_len_type) != DATA_ELE_SEQ_DESC_TYPE) {
+ record->ops.supported_formats_list_len = 0;
+ APPL_TRACE_ERROR(
+ "%s() - supported_formats_list - wrong attribute length/type:"
+ " 0x%02x - expected 0x06",
+ __func__, p_attr->attr_len_type);
} else {
- su.len = 4;
- uint32_t u32;
- memcpy(&u32, &u->uu.uuid128[0], sizeof(u32));
- su.uu.uuid32 = ntohl(u32);
- }
- return su;
-}
+ int count = 0;
+ /* 1 byte for type/length 1 byte for value */
+ record->ops.supported_formats_list_len =
+ SDP_DISC_ATTR_LEN(p_attr->attr_len_type) / 2;
-static void bta_create_mns_sdp_record(bluetooth_sdp_record *record, tSDP_DISC_REC *p_rec)
-{
- tSDP_DISC_ATTR *p_attr;
- tSDP_PROTOCOL_ELEM pe;
- uint16_t pversion = 0;
- record->mns.hdr.type = SDP_TYPE_MAP_MNS;
- record->mns.hdr.service_name_length = 0;
- record->mns.hdr.service_name = NULL;
- record->mns.hdr.rfcomm_channel_number = 0;
- record->mns.hdr.l2cap_psm = -1;
- record->mns.hdr.profile_version = 0;
- record->mns.supported_features = 0x0000001F; //default value if not found
-
- if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_MAP_SUPPORTED_FEATURES)) != NULL)
- {
- record->mns.supported_features = p_attr->attr_value.v.u32;
- }
-
- if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_SERVICE_NAME)) != NULL)
- {
- record->mns.hdr.service_name_length = SDP_DISC_ATTR_LEN(p_attr->attr_len_type);
- record->mns.hdr.service_name = (char *)p_attr->attr_value.v.array;
- }
-
- if (SDP_FindProfileVersionInRec(p_rec, UUID_SERVCLASS_MAP_PROFILE, &pversion))
- {
- record->mns.hdr.profile_version = pversion;
- }
-
- if (SDP_FindProtocolListElemInRec(p_rec, UUID_PROTOCOL_RFCOMM, &pe))
- {
- record->mns.hdr.rfcomm_channel_number = pe.params[0];
- }
-
- if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_GOEP_L2CAP_PSM)) != NULL)
- {
- record->mns.hdr.l2cap_psm = p_attr->attr_value.v.u16;
- }
-}
-
-static void bta_create_mas_sdp_record(bluetooth_sdp_record *record, tSDP_DISC_REC *p_rec)
-{
- tSDP_DISC_ATTR *p_attr;
- tSDP_PROTOCOL_ELEM pe;
- uint16_t pversion = -1;
-
- record->mas.hdr.type = SDP_TYPE_MAP_MAS;
- record->mas.hdr.service_name_length = 0;
- record->mas.hdr.service_name = NULL;
- record->mas.hdr.rfcomm_channel_number = 0;
- record->mas.hdr.l2cap_psm = -1;
- record->mas.hdr.profile_version = 0;
- record->mas.mas_instance_id = 0;
- record->mas.supported_features = 0x0000001F;
- record->mas.supported_message_types = 0;
-
- if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_MAS_INSTANCE_ID)) != NULL)
- {
- record->mas.mas_instance_id = p_attr->attr_value.v.u8;
- }
-
- if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_SUPPORTED_MSG_TYPE)) != NULL)
- {
- record->mas.supported_message_types = p_attr->attr_value.v.u8;
- }
-
- if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_MAP_SUPPORTED_FEATURES)) != NULL)
- {
- record->mas.supported_features = p_attr->attr_value.v.u32;
- }
-
- if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_SERVICE_NAME)) != NULL)
- {
- record->mas.hdr.service_name_length = SDP_DISC_ATTR_LEN(p_attr->attr_len_type);
- record->mas.hdr.service_name = (char *)p_attr->attr_value.v.array;
- }
-
- if (SDP_FindProfileVersionInRec(p_rec, UUID_SERVCLASS_MAP_PROFILE, &pversion))
- {
- record->mas.hdr.profile_version = pversion;
- }
-
- if (SDP_FindProtocolListElemInRec(p_rec, UUID_PROTOCOL_RFCOMM, &pe))
- {
- record->mas.hdr.rfcomm_channel_number = pe.params[0];
- }
-
- if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_GOEP_L2CAP_PSM)) != NULL)
- {
- record->mas.hdr.l2cap_psm = p_attr->attr_value.v.u16;
- }
-}
-
-static void bta_create_pse_sdp_record(bluetooth_sdp_record *record, tSDP_DISC_REC *p_rec)
-{
- tSDP_DISC_ATTR *p_attr;
- uint16_t pversion;
- tSDP_PROTOCOL_ELEM pe;
-
- record->pse.hdr.type = SDP_TYPE_PBAP_PSE;
- record->pse.hdr.service_name_length = 0;
- record->pse.hdr.service_name = NULL;
- record->pse.hdr.rfcomm_channel_number = 0;
- record->pse.hdr.l2cap_psm = -1;
- record->pse.hdr.profile_version = 0;
- record->pse.supported_features = 0x00000003;
- record->pse.supported_repositories = 0;
-
- if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_SUPPORTED_REPOSITORIES)) != NULL)
- {
- record->pse.supported_repositories = p_attr->attr_value.v.u8;
- }
- if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_PBAP_SUPPORTED_FEATURES)) != NULL)
- {
- record->pse.supported_features = p_attr->attr_value.v.u32;
- }
-
- if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_SERVICE_NAME)) != NULL)
- {
- record->pse.hdr.service_name_length = SDP_DISC_ATTR_LEN(p_attr->attr_len_type);
- record->pse.hdr.service_name = (char *)p_attr->attr_value.v.array;
- }
-
- if (SDP_FindProfileVersionInRec(p_rec, UUID_SERVCLASS_PHONE_ACCESS, &pversion))
- {
- record->pse.hdr.profile_version = pversion;
- }
-
- if (SDP_FindProtocolListElemInRec(p_rec, UUID_PROTOCOL_RFCOMM, &pe))
- {
- record->pse.hdr.rfcomm_channel_number = pe.params[0];
- }
-
- if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_GOEP_L2CAP_PSM)) != NULL)
- {
- record->pse.hdr.l2cap_psm = p_attr->attr_value.v.u16;
- }
-}
-
-static void bta_create_ops_sdp_record(bluetooth_sdp_record *record, tSDP_DISC_REC *p_rec)
-{
- tSDP_DISC_ATTR *p_attr, *p_sattr;
- tSDP_PROTOCOL_ELEM pe;
- uint16_t pversion = -1;
-
- record->ops.hdr.type = SDP_TYPE_OPP_SERVER;
- record->ops.hdr.service_name_length = 0;
- record->ops.hdr.service_name = NULL;
- record->ops.hdr.rfcomm_channel_number = 0;
- record->ops.hdr.l2cap_psm = -1;
- record->ops.hdr.profile_version = 0;
- record->ops.supported_formats_list_len = 0;
-
- if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_SERVICE_NAME)) != NULL)
- {
- record->ops.hdr.service_name_length = SDP_DISC_ATTR_LEN(p_attr->attr_len_type);
- record->ops.hdr.service_name = (char *)p_attr->attr_value.v.array;
- }
-
- if (SDP_FindProfileVersionInRec(p_rec, UUID_SERVCLASS_OBEX_OBJECT_PUSH, &pversion))
- {
- record->ops.hdr.profile_version = pversion;
- }
-
- if (SDP_FindProtocolListElemInRec(p_rec, UUID_PROTOCOL_RFCOMM, &pe))
- {
- record->ops.hdr.rfcomm_channel_number = pe.params[0];
- }
-
- if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_GOEP_L2CAP_PSM)) != NULL)
- {
- record->ops.hdr.l2cap_psm = p_attr->attr_value.v.u16;
- }
- if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_SUPPORTED_FORMATS_LIST)) != NULL)
- {
- /* Safety check - each entry should itself be a sequence */
- if (SDP_DISC_ATTR_TYPE(p_attr->attr_len_type) != DATA_ELE_SEQ_DESC_TYPE) {
- record->ops.supported_formats_list_len = 0;
- APPL_TRACE_ERROR("%s() - supported_formats_list - wrong attribute length/type:"
- " 0x%02x - expected 0x06", __func__, p_attr->attr_len_type);
+ /* Extract each value into */
+ for (p_sattr = p_attr->attr_value.v.p_sub_attr; p_sattr != NULL;
+ p_sattr = p_sattr->p_next_attr) {
+ if ((SDP_DISC_ATTR_TYPE(p_sattr->attr_len_type) == UINT_DESC_TYPE) &&
+ (SDP_DISC_ATTR_LEN(p_sattr->attr_len_type) == 1)) {
+ if (count == sizeof(record->ops.supported_formats_list)) {
+ APPL_TRACE_ERROR(
+ "%s() - supported_formats_list - count overflow - "
+ "too many sub attributes!!",
+ __func__);
+ /* If you hit this, new formats have been added,
+ * update SDP_OPP_SUPPORTED_FORMATS_MAX_LENGTH */
+ break;
+ }
+ record->ops.supported_formats_list[count] = p_sattr->attr_value.v.u8;
+ count++;
} else {
- int count = 0;
- /* 1 byte for type/length 1 byte for value */
- record->ops.supported_formats_list_len = SDP_DISC_ATTR_LEN(p_attr->attr_len_type)/2;
-
- /* Extract each value into */
- for (p_sattr = p_attr->attr_value.v.p_sub_attr;
- p_sattr != NULL; p_sattr = p_sattr->p_next_attr)
- {
- if ((SDP_DISC_ATTR_TYPE(p_sattr->attr_len_type) == UINT_DESC_TYPE)
- && (SDP_DISC_ATTR_LEN(p_sattr->attr_len_type) == 1))
- {
- if (count == sizeof(record->ops.supported_formats_list)) {
- APPL_TRACE_ERROR("%s() - supported_formats_list - count overflow - "
- "too many sub attributes!!", __func__);
- /* If you hit this, new formats have been added,
- * update SDP_OPP_SUPPORTED_FORMATS_MAX_LENGTH */
- break;
- }
- record->ops.supported_formats_list[count] = p_sattr->attr_value.v.u8;
- count++;
- } else {
- APPL_TRACE_ERROR("%s() - supported_formats_list - wrong sub attribute "
- "length/type: 0x%02x - expected 0x80", __func__,
- p_sattr->attr_len_type);
- break;
- }
- }
- if (record->ops.supported_formats_list_len != count) {
- APPL_TRACE_WARNING("%s() - supported_formats_list - Length of attribute different "
- "from the actual number of sub-attributes in the sequence "
- "att-length: %d - number of elements: %d", __func__,
- record->ops.supported_formats_list_len , count);
-
- }
- record->ops.supported_formats_list_len = count;
+ APPL_TRACE_ERROR(
+ "%s() - supported_formats_list - wrong sub attribute "
+ "length/type: 0x%02x - expected 0x80",
+ __func__, p_sattr->attr_len_type);
+ break;
}
+ }
+ if (record->ops.supported_formats_list_len != count) {
+ APPL_TRACE_WARNING(
+ "%s() - supported_formats_list - Length of attribute different "
+ "from the actual number of sub-attributes in the sequence "
+ "att-length: %d - number of elements: %d",
+ __func__, record->ops.supported_formats_list_len, count);
+ }
+ record->ops.supported_formats_list_len = count;
}
+ }
}
-static void bta_create_sap_sdp_record(bluetooth_sdp_record *record, tSDP_DISC_REC *p_rec)
-{
- tSDP_DISC_ATTR *p_attr;
- tSDP_PROTOCOL_ELEM pe;
- uint16_t pversion = -1;
+static void bta_create_sap_sdp_record(bluetooth_sdp_record* record,
+ tSDP_DISC_REC* p_rec) {
+ tSDP_DISC_ATTR* p_attr;
+ tSDP_PROTOCOL_ELEM pe;
+ uint16_t pversion = -1;
- record->sap.hdr.type = SDP_TYPE_MAP_MAS;
- record->sap.hdr.service_name_length = 0;
- record->sap.hdr.service_name = NULL;
- record->sap.hdr.rfcomm_channel_number = 0;
- record->sap.hdr.l2cap_psm = -1;
- record->sap.hdr.profile_version = 0;
+ record->sap.hdr.type = SDP_TYPE_MAP_MAS;
+ record->sap.hdr.service_name_length = 0;
+ record->sap.hdr.service_name = NULL;
+ record->sap.hdr.rfcomm_channel_number = 0;
+ record->sap.hdr.l2cap_psm = -1;
+ record->sap.hdr.profile_version = 0;
- if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_SERVICE_NAME)) != NULL)
- {
- record->sap.hdr.service_name_length = SDP_DISC_ATTR_LEN(p_attr->attr_len_type);
- record->sap.hdr.service_name = (char *)p_attr->attr_value.v.array;
- }
+ if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_SERVICE_NAME)) != NULL) {
+ record->sap.hdr.service_name_length =
+ SDP_DISC_ATTR_LEN(p_attr->attr_len_type);
+ record->sap.hdr.service_name = (char*)p_attr->attr_value.v.array;
+ }
- if (SDP_FindProfileVersionInRec(p_rec, UUID_SERVCLASS_SAP, &pversion))
- {
- record->sap.hdr.profile_version = pversion;
- }
+ if (SDP_FindProfileVersionInRec(p_rec, UUID_SERVCLASS_SAP, &pversion)) {
+ record->sap.hdr.profile_version = pversion;
+ }
- if (SDP_FindProtocolListElemInRec(p_rec, UUID_PROTOCOL_RFCOMM, &pe))
- {
- record->sap.hdr.rfcomm_channel_number = pe.params[0];
- }
+ if (SDP_FindProtocolListElemInRec(p_rec, UUID_PROTOCOL_RFCOMM, &pe)) {
+ record->sap.hdr.rfcomm_channel_number = pe.params[0];
+ }
}
-static void bta_create_raw_sdp_record(bluetooth_sdp_record *record, tSDP_DISC_REC *p_rec)
-{
- tSDP_DISC_ATTR *p_attr;
- tSDP_PROTOCOL_ELEM pe;
+static void bta_create_raw_sdp_record(bluetooth_sdp_record* record,
+ tSDP_DISC_REC* p_rec) {
+ tSDP_DISC_ATTR* p_attr;
+ tSDP_PROTOCOL_ELEM pe;
- record->hdr.type = SDP_TYPE_RAW;
- record->hdr.service_name_length = 0;
- record->hdr.service_name = NULL;
- record->hdr.rfcomm_channel_number = -1;
- record->hdr.l2cap_psm = -1;
- record->hdr.profile_version = -1;
+ record->hdr.type = SDP_TYPE_RAW;
+ record->hdr.service_name_length = 0;
+ record->hdr.service_name = NULL;
+ record->hdr.rfcomm_channel_number = -1;
+ record->hdr.l2cap_psm = -1;
+ record->hdr.profile_version = -1;
- /* Try to extract a service name */
- if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_SERVICE_NAME)) != NULL)
- {
- record->pse.hdr.service_name_length = SDP_DISC_ATTR_LEN(p_attr->attr_len_type);
- record->pse.hdr.service_name = (char *)p_attr->attr_value.v.array;
- }
+ /* Try to extract a service name */
+ if ((p_attr = SDP_FindAttributeInRec(p_rec, ATTR_ID_SERVICE_NAME)) != NULL) {
+ record->pse.hdr.service_name_length =
+ SDP_DISC_ATTR_LEN(p_attr->attr_len_type);
+ record->pse.hdr.service_name = (char*)p_attr->attr_value.v.array;
+ }
- /* Try to extract an RFCOMM channel */
- if (SDP_FindProtocolListElemInRec(p_rec, UUID_PROTOCOL_RFCOMM, &pe))
- {
- record->pse.hdr.rfcomm_channel_number = pe.params[0];
- }
- record->hdr.user1_ptr_len = p_bta_sdp_cfg->p_sdp_db->raw_size;
- record->hdr.user1_ptr = p_bta_sdp_cfg->p_sdp_db->raw_data;
+ /* Try to extract an RFCOMM channel */
+ if (SDP_FindProtocolListElemInRec(p_rec, UUID_PROTOCOL_RFCOMM, &pe)) {
+ record->pse.hdr.rfcomm_channel_number = pe.params[0];
+ }
+ record->hdr.user1_ptr_len = p_bta_sdp_cfg->p_sdp_db->raw_size;
+ record->hdr.user1_ptr = p_bta_sdp_cfg->p_sdp_db->raw_data;
}
-
/*******************************************************************************
*
* Function bta_sdp_search_cback
@@ -378,71 +376,74 @@
* Returns void
*
******************************************************************************/
-static void bta_sdp_search_cback(uint16_t result, void * user_data)
-{
- tSDP_DISC_REC *p_rec = NULL;
- tBTA_SDP_SEARCH_COMP evt_data;
- tBTA_SDP_STATUS status = BTA_SDP_FAILURE;
- int count = 0;
- tBT_UUID su;
- APPL_TRACE_DEBUG("%s() - res: 0x%x", __func__, result);
+static void bta_sdp_search_cback(uint16_t result, void* user_data) {
+ tSDP_DISC_REC* p_rec = NULL;
+ tBTA_SDP_SEARCH_COMP evt_data;
+ tBTA_SDP_STATUS status = BTA_SDP_FAILURE;
+ int count = 0;
+ tBT_UUID su;
+ APPL_TRACE_DEBUG("%s() - res: 0x%x", __func__, result);
- memset(&evt_data, 0, sizeof(evt_data));
- bta_sdp_cb.sdp_active = BTA_SDP_ACTIVE_NONE;
+ memset(&evt_data, 0, sizeof(evt_data));
+ bta_sdp_cb.sdp_active = BTA_SDP_ACTIVE_NONE;
- if (bta_sdp_cb.p_dm_cback == NULL) return;
+ if (bta_sdp_cb.p_dm_cback == NULL) return;
- bdcpy(evt_data.remote_addr, bta_sdp_cb.remote_addr);
- tBT_UUID *uuid = (tBT_UUID*)user_data;
- memcpy(&evt_data.uuid, uuid, sizeof(tBT_UUID));
- su = shorten_sdp_uuid(uuid);
+ bdcpy(evt_data.remote_addr, bta_sdp_cb.remote_addr);
+ tBT_UUID* uuid = (tBT_UUID*)user_data;
+ memcpy(&evt_data.uuid, uuid, sizeof(tBT_UUID));
+ su = shorten_sdp_uuid(uuid);
- if (result == SDP_SUCCESS || result == SDP_DB_FULL)
- {
- do {
- p_rec = SDP_FindServiceUUIDInDb(p_bta_sdp_cfg->p_sdp_db, &su, p_rec);
- /* generate the matching record data pointer */
- if(p_rec != NULL){
- status = BTA_SDP_SUCCESS;
- if (IS_UUID(UUID_MAP_MAS,uuid->uu.uuid128)) {
- APPL_TRACE_DEBUG("%s() - found MAP (MAS) uuid", __func__);
- bta_create_mas_sdp_record(&evt_data.records[count], p_rec);
- } else if (IS_UUID(UUID_MAP_MNS,uuid->uu.uuid128)) {
- APPL_TRACE_DEBUG("%s() - found MAP (MNS) uuid", __func__);
- bta_create_mns_sdp_record(&evt_data.records[count], p_rec);
- } else if (IS_UUID(UUID_PBAP_PSE,uuid->uu.uuid128)){
- APPL_TRACE_DEBUG("%s() - found PBAP (PSE) uuid", __func__);
- bta_create_pse_sdp_record(&evt_data.records[count], p_rec);
- } else if (IS_UUID(UUID_OBEX_OBJECT_PUSH,uuid->uu.uuid128)){
- APPL_TRACE_DEBUG("%s() - found Object Push Server (OPS) uuid", __func__);
- bta_create_ops_sdp_record(&evt_data.records[count], p_rec);
- } else if (IS_UUID(UUID_SAP,uuid->uu.uuid128)) {
- APPL_TRACE_DEBUG("%s() - found SAP uuid", __func__);
- bta_create_sap_sdp_record(&evt_data.records[count], p_rec);
- } else {
+ if (result == SDP_SUCCESS || result == SDP_DB_FULL) {
+ do {
+ p_rec = SDP_FindServiceUUIDInDb(p_bta_sdp_cfg->p_sdp_db, &su, p_rec);
+ /* generate the matching record data pointer */
+ if (p_rec != NULL) {
+ status = BTA_SDP_SUCCESS;
+ if (IS_UUID(UUID_MAP_MAS, uuid->uu.uuid128)) {
+ APPL_TRACE_DEBUG("%s() - found MAP (MAS) uuid", __func__);
+ bta_create_mas_sdp_record(&evt_data.records[count], p_rec);
+ } else if (IS_UUID(UUID_MAP_MNS, uuid->uu.uuid128)) {
+ APPL_TRACE_DEBUG("%s() - found MAP (MNS) uuid", __func__);
+ bta_create_mns_sdp_record(&evt_data.records[count], p_rec);
+ } else if (IS_UUID(UUID_PBAP_PSE, uuid->uu.uuid128)) {
+ APPL_TRACE_DEBUG("%s() - found PBAP (PSE) uuid", __func__);
+ bta_create_pse_sdp_record(&evt_data.records[count], p_rec);
+ } else if (IS_UUID(UUID_OBEX_OBJECT_PUSH, uuid->uu.uuid128)) {
+ APPL_TRACE_DEBUG("%s() - found Object Push Server (OPS) uuid",
+ __func__);
+ bta_create_ops_sdp_record(&evt_data.records[count], p_rec);
+ } else if (IS_UUID(UUID_SAP, uuid->uu.uuid128)) {
+ APPL_TRACE_DEBUG("%s() - found SAP uuid", __func__);
+ bta_create_sap_sdp_record(&evt_data.records[count], p_rec);
+ } else {
+ /* we do not have specific structure for this */
+ APPL_TRACE_DEBUG("%s() - profile not identified. using raw data",
+ __func__);
+ bta_create_raw_sdp_record(&evt_data.records[count], p_rec);
+ p_rec = NULL; // Terminate loop
+ /* For raw, we only extract the first entry, and then return the
+ entire
+ raw data chunk.
+ TODO: Find a way to split the raw data into record chunks, and
+ iterate
+ to extract generic data for each chunk - e.g. rfcomm channel
+ and
+ service name. */
+ }
+ count++;
+ } else {
+ APPL_TRACE_DEBUG("%s() - UUID not found", __func__);
+ }
+ } while (p_rec != NULL && count < BTA_SDP_MAX_RECORDS);
- /* we do not have specific structure for this */
- APPL_TRACE_DEBUG("%s() - profile not identified. using raw data", __func__);
- bta_create_raw_sdp_record(&evt_data.records[count], p_rec);
- p_rec = NULL; // Terminate loop
- /* For raw, we only extract the first entry, and then return the entire
- raw data chunk.
- TODO: Find a way to split the raw data into record chunks, and iterate
- to extract generic data for each chunk - e.g. rfcomm channel and
- service name. */
- }
- count++;
- } else {
- APPL_TRACE_DEBUG("%s() - UUID not found", __func__);
- }
- } while (p_rec != NULL && count < BTA_SDP_MAX_RECORDS);
+ evt_data.record_count = count;
+ }
+ evt_data.status = status;
- evt_data.record_count = count;
- }
- evt_data.status = status;
-
- bta_sdp_cb.p_dm_cback(BTA_SDP_SEARCH_COMP_EVT, (tBTA_SDP*) &evt_data, (void*)&uuid->uu.uuid128);
- osi_free(user_data); // We no longer need the user data to track the search
+ bta_sdp_cb.p_dm_cback(BTA_SDP_SEARCH_COMP_EVT, (tBTA_SDP*)&evt_data,
+ (void*)&uuid->uu.uuid128);
+ osi_free(user_data); // We no longer need the user data to track the search
}
/*******************************************************************************
@@ -454,12 +455,11 @@
* Returns void
*
******************************************************************************/
-void bta_sdp_enable(tBTA_SDP_MSG *p_data)
-{
- APPL_TRACE_DEBUG("%s in, sdp_active:%d", __func__, bta_sdp_cb.sdp_active);
- tBTA_SDP_STATUS status = BTA_SDP_SUCCESS;
- bta_sdp_cb.p_dm_cback = p_data->enable.p_cback;
- bta_sdp_cb.p_dm_cback(BTA_SDP_ENABLE_EVT, (tBTA_SDP *)&status, NULL);
+void bta_sdp_enable(tBTA_SDP_MSG* p_data) {
+ APPL_TRACE_DEBUG("%s in, sdp_active:%d", __func__, bta_sdp_cb.sdp_active);
+ tBTA_SDP_STATUS status = BTA_SDP_SUCCESS;
+ bta_sdp_cb.p_dm_cback = p_data->enable.p_cback;
+ bta_sdp_cb.p_dm_cback(BTA_SDP_ENABLE_EVT, (tBTA_SDP*)&status, NULL);
}
/*******************************************************************************
@@ -471,65 +471,63 @@
* Returns void
*
******************************************************************************/
-void bta_sdp_search(tBTA_SDP_MSG *p_data)
-{
- if (p_data == NULL) {
- APPL_TRACE_DEBUG("SDP control block handle is null");
- return;
+void bta_sdp_search(tBTA_SDP_MSG* p_data) {
+ if (p_data == NULL) {
+ APPL_TRACE_DEBUG("SDP control block handle is null");
+ return;
+ }
+ tBTA_SDP_STATUS status = BTA_SDP_FAILURE;
+
+ APPL_TRACE_DEBUG("%s in, sdp_active:%d", __func__, bta_sdp_cb.sdp_active);
+
+ if (bta_sdp_cb.sdp_active != BTA_SDP_ACTIVE_NONE) {
+ /* SDP is still in progress */
+ status = BTA_SDP_BUSY;
+ if (bta_sdp_cb.p_dm_cback) {
+ tBTA_SDP_SEARCH_COMP result;
+ memset(&result, 0, sizeof(result));
+ result.uuid = p_data->get_search.uuid;
+ bdcpy(result.remote_addr, p_data->get_search.bd_addr);
+ result.status = status;
+ bta_sdp_cb.p_dm_cback(BTA_SDP_SEARCH_COMP_EVT, (tBTA_SDP*)&result, NULL);
}
- tBTA_SDP_STATUS status = BTA_SDP_FAILURE;
+ return;
+ }
- APPL_TRACE_DEBUG("%s in, sdp_active:%d", __func__, bta_sdp_cb.sdp_active);
+ bta_sdp_cb.sdp_active = BTA_SDP_ACTIVE_YES;
+ bdcpy(bta_sdp_cb.remote_addr, p_data->get_search.bd_addr);
+ /* set the uuid used in the search */
+ tBT_UUID* bta_sdp_search_uuid =
+ static_cast<tBT_UUID*>(osi_malloc(sizeof(tBT_UUID)));
+ memcpy(bta_sdp_search_uuid, &(p_data->get_search.uuid), sizeof(tBT_UUID));
- if (bta_sdp_cb.sdp_active != BTA_SDP_ACTIVE_NONE)
- {
- /* SDP is still in progress */
- status = BTA_SDP_BUSY;
- if(bta_sdp_cb.p_dm_cback) {
- tBTA_SDP_SEARCH_COMP result;
- memset(&result, 0, sizeof(result));
- result.uuid = p_data->get_search.uuid;
- bdcpy(result.remote_addr, p_data->get_search.bd_addr);
- result.status = status;
- bta_sdp_cb.p_dm_cback(BTA_SDP_SEARCH_COMP_EVT, (tBTA_SDP *)&result, NULL);
- }
- return;
+ /* initialize the search for the uuid */
+ APPL_TRACE_DEBUG("%s init discovery with UUID(len: %d):", __func__,
+ bta_sdp_search_uuid->len);
+ for (int x = 0; x < bta_sdp_search_uuid->len; x++) {
+ APPL_TRACE_DEBUG("%X", bta_sdp_search_uuid->uu.uuid128[x]);
+ }
+ SDP_InitDiscoveryDb(p_bta_sdp_cfg->p_sdp_db, p_bta_sdp_cfg->sdp_db_size, 1,
+ bta_sdp_search_uuid, 0, NULL);
+
+ if (!SDP_ServiceSearchAttributeRequest2(
+ p_data->get_search.bd_addr, p_bta_sdp_cfg->p_sdp_db,
+ bta_sdp_search_cback, (void*)bta_sdp_search_uuid)) {
+ bta_sdp_cb.sdp_active = BTA_SDP_ACTIVE_NONE;
+
+ /* failed to start SDP. report the failure right away */
+ if (bta_sdp_cb.p_dm_cback) {
+ tBTA_SDP_SEARCH_COMP result;
+ memset(&result, 0, sizeof(result));
+ result.uuid = p_data->get_search.uuid;
+ bdcpy(result.remote_addr, p_data->get_search.bd_addr);
+ result.status = status;
+ bta_sdp_cb.p_dm_cback(BTA_SDP_SEARCH_COMP_EVT, (tBTA_SDP*)&result, NULL);
}
-
- bta_sdp_cb.sdp_active = BTA_SDP_ACTIVE_YES;
- bdcpy(bta_sdp_cb.remote_addr, p_data->get_search.bd_addr);
- /* set the uuid used in the search */
- tBT_UUID *bta_sdp_search_uuid =
- static_cast<tBT_UUID *>(osi_malloc(sizeof(tBT_UUID)));
- memcpy(bta_sdp_search_uuid, &(p_data->get_search.uuid),sizeof(tBT_UUID));
-
- /* initialize the search for the uuid */
- APPL_TRACE_DEBUG("%s init discovery with UUID(len: %d):",
- __func__, bta_sdp_search_uuid->len);
- for (int x = 0; x<bta_sdp_search_uuid->len;x++){
- APPL_TRACE_DEBUG("%X",bta_sdp_search_uuid->uu.uuid128[x]);
- }
- SDP_InitDiscoveryDb (p_bta_sdp_cfg->p_sdp_db, p_bta_sdp_cfg->sdp_db_size, 1,
- bta_sdp_search_uuid, 0, NULL);
-
- if (!SDP_ServiceSearchAttributeRequest2(p_data->get_search.bd_addr, p_bta_sdp_cfg->p_sdp_db,
- bta_sdp_search_cback, (void*)bta_sdp_search_uuid))
- {
- bta_sdp_cb.sdp_active = BTA_SDP_ACTIVE_NONE;
-
- /* failed to start SDP. report the failure right away */
- if (bta_sdp_cb.p_dm_cback) {
- tBTA_SDP_SEARCH_COMP result;
- memset(&result, 0, sizeof(result));
- result.uuid = p_data->get_search.uuid;
- bdcpy(result.remote_addr, p_data->get_search.bd_addr);
- result.status = status;
- bta_sdp_cb.p_dm_cback(BTA_SDP_SEARCH_COMP_EVT, (tBTA_SDP *)&result, NULL);
- }
- }
- /*
- else report the result when the cback is called
- */
+ }
+ /*
+ else report the result when the cback is called
+ */
}
/*******************************************************************************
@@ -541,11 +539,11 @@
* Returns void
*
******************************************************************************/
-void bta_sdp_create_record(tBTA_SDP_MSG *p_data)
-{
- APPL_TRACE_DEBUG("%s() event: %d", __func__, p_data->record.hdr.event);
- if (bta_sdp_cb.p_dm_cback)
- bta_sdp_cb.p_dm_cback(BTA_SDP_CREATE_RECORD_USER_EVT, NULL, p_data->record.user_data);
+void bta_sdp_create_record(tBTA_SDP_MSG* p_data) {
+ APPL_TRACE_DEBUG("%s() event: %d", __func__, p_data->record.hdr.event);
+ if (bta_sdp_cb.p_dm_cback)
+ bta_sdp_cb.p_dm_cback(BTA_SDP_CREATE_RECORD_USER_EVT, NULL,
+ p_data->record.user_data);
}
/*******************************************************************************
@@ -557,9 +555,9 @@
* Returns void
*
******************************************************************************/
-void bta_sdp_remove_record(tBTA_SDP_MSG *p_data)
-{
- APPL_TRACE_DEBUG("%s() event: %d", __func__, p_data->record.hdr.event);
- if (bta_sdp_cb.p_dm_cback)
- bta_sdp_cb.p_dm_cback(BTA_SDP_REMOVE_RECORD_USER_EVT, NULL, p_data->record.user_data);
+void bta_sdp_remove_record(tBTA_SDP_MSG* p_data) {
+ APPL_TRACE_DEBUG("%s() event: %d", __func__, p_data->record.hdr.event);
+ if (bta_sdp_cb.p_dm_cback)
+ bta_sdp_cb.p_dm_cback(BTA_SDP_REMOVE_RECORD_USER_EVT, NULL,
+ p_data->record.user_data);
}
diff --git a/bta/sdp/bta_sdp_api.cc b/bta/sdp/bta_sdp_api.cc
index 2f242fa..340d3f4 100644
--- a/bta/sdp/bta_sdp_api.cc
+++ b/bta/sdp/bta_sdp_api.cc
@@ -24,11 +24,11 @@
#include <string.h>
+#include "bt_common.h"
#include "bta_api.h"
-#include "bta_sys.h"
#include "bta_sdp_api.h"
#include "bta_sdp_int.h"
-#include "bt_common.h"
+#include "bta_sys.h"
#include "port_api.h"
#include "sdp_api.h"
@@ -36,11 +36,7 @@
* Constants
****************************************************************************/
-static const tBTA_SYS_REG bta_sdp_reg =
-{
- bta_sdp_sm_execute,
- NULL
-};
+static const tBTA_SYS_REG bta_sdp_reg = {bta_sdp_sm_execute, NULL};
/*******************************************************************************
*
@@ -56,35 +52,34 @@
* BTA_SDP_FAIL if internal failure.
*
******************************************************************************/
-tBTA_SDP_STATUS BTA_SdpEnable(tBTA_SDP_DM_CBACK *p_cback)
-{
- tBTA_SDP_STATUS status = BTA_SDP_FAILURE;
+tBTA_SDP_STATUS BTA_SdpEnable(tBTA_SDP_DM_CBACK* p_cback) {
+ tBTA_SDP_STATUS status = BTA_SDP_FAILURE;
- APPL_TRACE_API(__func__);
- if(p_cback && false == bta_sys_is_register(BTA_ID_SDP))
- {
- memset(&bta_sdp_cb, 0, sizeof(tBTA_SDP_CB));
+ APPL_TRACE_API(__func__);
+ if (p_cback && false == bta_sys_is_register(BTA_ID_SDP)) {
+ memset(&bta_sdp_cb, 0, sizeof(tBTA_SDP_CB));
- /* register with BTA system manager */
- bta_sys_register(BTA_ID_SDP, &bta_sdp_reg);
+ /* register with BTA system manager */
+ bta_sys_register(BTA_ID_SDP, &bta_sdp_reg);
- if (p_cback) {
- tBTA_SDP_API_ENABLE *p_buf =
- (tBTA_SDP_API_ENABLE *)osi_malloc(sizeof(tBTA_SDP_API_ENABLE));
- p_buf->hdr.event = BTA_SDP_API_ENABLE_EVT;
- p_buf->p_cback = p_cback;
- bta_sys_sendmsg(p_buf);
- status = BTA_SDP_SUCCESS;
- }
+ if (p_cback) {
+ tBTA_SDP_API_ENABLE* p_buf =
+ (tBTA_SDP_API_ENABLE*)osi_malloc(sizeof(tBTA_SDP_API_ENABLE));
+ p_buf->hdr.event = BTA_SDP_API_ENABLE_EVT;
+ p_buf->p_cback = p_cback;
+ bta_sys_sendmsg(p_buf);
+ status = BTA_SDP_SUCCESS;
}
- return status;
+ }
+ return status;
}
/*******************************************************************************
*
* Function BTA_SdpSearch
*
- * Description This function performs service discovery for a specific service
+ * Description This function performs service discovery for a specific
+ *service
* on given peer device. When the operation is completed
* the tBTA_SDP_DM_CBACK callback function will be called with
* a BTA_SDP_SEARCH_COMPLETE_EVT.
@@ -93,21 +88,20 @@
* BTA_SDP_FAILURE, otherwise.
*
******************************************************************************/
-tBTA_SDP_STATUS BTA_SdpSearch(BD_ADDR bd_addr, tSDP_UUID *uuid)
-{
- tBTA_SDP_API_SEARCH *p_msg =
- (tBTA_SDP_API_SEARCH *)osi_malloc(sizeof(tBTA_SDP_API_SEARCH));
+tBTA_SDP_STATUS BTA_SdpSearch(BD_ADDR bd_addr, tSDP_UUID* uuid) {
+ tBTA_SDP_API_SEARCH* p_msg =
+ (tBTA_SDP_API_SEARCH*)osi_malloc(sizeof(tBTA_SDP_API_SEARCH));
- APPL_TRACE_API("%s", __func__);
+ APPL_TRACE_API("%s", __func__);
- p_msg->hdr.event = BTA_SDP_API_SEARCH_EVT;
- bdcpy(p_msg->bd_addr, bd_addr);
- // p_msg->uuid = uuid;
- memcpy(&(p_msg->uuid), uuid, sizeof(tSDP_UUID));
+ p_msg->hdr.event = BTA_SDP_API_SEARCH_EVT;
+ bdcpy(p_msg->bd_addr, bd_addr);
+ // p_msg->uuid = uuid;
+ memcpy(&(p_msg->uuid), uuid, sizeof(tSDP_UUID));
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
- return BTA_SDP_SUCCESS;
+ return BTA_SDP_SUCCESS;
}
/*******************************************************************************
@@ -122,19 +116,18 @@
* BTA_SDP_FAILURE, otherwise.
*
******************************************************************************/
-tBTA_SDP_STATUS BTA_SdpCreateRecordByUser(void* user_data)
-{
- tBTA_SDP_API_RECORD_USER *p_msg =
- (tBTA_SDP_API_RECORD_USER *)osi_malloc(sizeof(tBTA_SDP_API_RECORD_USER));
+tBTA_SDP_STATUS BTA_SdpCreateRecordByUser(void* user_data) {
+ tBTA_SDP_API_RECORD_USER* p_msg =
+ (tBTA_SDP_API_RECORD_USER*)osi_malloc(sizeof(tBTA_SDP_API_RECORD_USER));
- APPL_TRACE_API("%s", __func__);
+ APPL_TRACE_API("%s", __func__);
- p_msg->hdr.event = BTA_SDP_API_CREATE_RECORD_USER_EVT;
- p_msg->user_data = user_data;
+ p_msg->hdr.event = BTA_SDP_API_CREATE_RECORD_USER_EVT;
+ p_msg->user_data = user_data;
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
- return BTA_SDP_SUCCESS;
+ return BTA_SDP_SUCCESS;
}
/*******************************************************************************
@@ -149,17 +142,16 @@
* BTA_SDP_FAILURE, otherwise.
*
******************************************************************************/
-tBTA_SDP_STATUS BTA_SdpRemoveRecordByUser(void* user_data)
-{
- tBTA_SDP_API_RECORD_USER *p_msg =
- (tBTA_SDP_API_RECORD_USER *)osi_malloc(sizeof(tBTA_SDP_API_RECORD_USER));
+tBTA_SDP_STATUS BTA_SdpRemoveRecordByUser(void* user_data) {
+ tBTA_SDP_API_RECORD_USER* p_msg =
+ (tBTA_SDP_API_RECORD_USER*)osi_malloc(sizeof(tBTA_SDP_API_RECORD_USER));
- APPL_TRACE_API("%s", __func__);
+ APPL_TRACE_API("%s", __func__);
- p_msg->hdr.event = BTA_SDP_API_REMOVE_RECORD_USER_EVT;
- p_msg->user_data = user_data;
+ p_msg->hdr.event = BTA_SDP_API_REMOVE_RECORD_USER_EVT;
+ p_msg->user_data = user_data;
- bta_sys_sendmsg(p_msg);
+ bta_sys_sendmsg(p_msg);
- return BTA_SDP_SUCCESS;
+ return BTA_SDP_SUCCESS;
}
diff --git a/bta/sdp/bta_sdp_cfg.cc b/bta/sdp/bta_sdp_cfg.cc
index 9bc0aa3..5be6755 100644
--- a/bta/sdp/bta_sdp_cfg.cc
+++ b/bta/sdp/bta_sdp_cfg.cc
@@ -25,16 +25,16 @@
#include "bta_sdp_api.h"
#ifndef BTA_SDP_DB_SIZE
-#define BTA_SDP_DB_SIZE 4500
+#define BTA_SDP_DB_SIZE 4500
#endif
-static uint8_t __attribute__ ((aligned(4))) bta_sdp_db_data[BTA_SDP_DB_SIZE];
+static uint8_t __attribute__((aligned(4))) bta_sdp_db_data[BTA_SDP_DB_SIZE];
/* SDP configuration structure */
-const tBTA_SDP_CFG bta_sdp_cfg =
-{
+const tBTA_SDP_CFG bta_sdp_cfg = {
BTA_SDP_DB_SIZE,
- (tSDP_DISCOVERY_DB *)bta_sdp_db_data /* The data buffer to keep SDP database */
+ (tSDP_DISCOVERY_DB*)
+ bta_sdp_db_data /* The data buffer to keep SDP database */
};
-tBTA_SDP_CFG *p_bta_sdp_cfg = (tBTA_SDP_CFG *) &bta_sdp_cfg;
+tBTA_SDP_CFG* p_bta_sdp_cfg = (tBTA_SDP_CFG*)&bta_sdp_cfg;
diff --git a/bta/sdp/bta_sdp_int.h b/bta/sdp/bta_sdp_int.h
index 325060b..21d814b 100644
--- a/bta/sdp/bta_sdp_int.h
+++ b/bta/sdp/bta_sdp_int.h
@@ -27,84 +27,74 @@
#ifndef BTA_SDP_INT_H
#define BTA_SDP_INT_H
-#include "bta_sys.h"
#include "bta_api.h"
#include "bta_sdp_api.h"
+#include "bta_sys.h"
/*****************************************************************************
* Constants
****************************************************************************/
-enum
-{
- /* these events are handled by the state machine */
- BTA_SDP_API_ENABLE_EVT = BTA_SYS_EVT_START(BTA_ID_SDP),
- BTA_SDP_API_SEARCH_EVT,
- BTA_SDP_API_CREATE_RECORD_USER_EVT,
- BTA_SDP_API_REMOVE_RECORD_USER_EVT,
- BTA_SDP_MAX_INT_EVT
+enum {
+ /* these events are handled by the state machine */
+ BTA_SDP_API_ENABLE_EVT = BTA_SYS_EVT_START(BTA_ID_SDP),
+ BTA_SDP_API_SEARCH_EVT,
+ BTA_SDP_API_CREATE_RECORD_USER_EVT,
+ BTA_SDP_API_REMOVE_RECORD_USER_EVT,
+ BTA_SDP_MAX_INT_EVT
};
-enum
-{
- BTA_SDP_ACTIVE_NONE = 0,
- BTA_SDP_ACTIVE_YES /* waiting for SDP result */
+enum {
+ BTA_SDP_ACTIVE_NONE = 0,
+ BTA_SDP_ACTIVE_YES /* waiting for SDP result */
};
-
-
/* data type for BTA_SDP_API_ENABLE_EVT */
-typedef struct
-{
- BT_HDR hdr;
- tBTA_SDP_DM_CBACK *p_cback;
+typedef struct {
+ BT_HDR hdr;
+ tBTA_SDP_DM_CBACK* p_cback;
} tBTA_SDP_API_ENABLE;
/* data type for BTA_SDP_API_SEARCH_EVT */
-typedef struct
-{
- BT_HDR hdr;
- BD_ADDR bd_addr;
- tSDP_UUID uuid;
+typedef struct {
+ BT_HDR hdr;
+ BD_ADDR bd_addr;
+ tSDP_UUID uuid;
} tBTA_SDP_API_SEARCH;
/* data type for BTA_SDP_API_SEARCH_EVT */
-typedef struct
-{
- BT_HDR hdr;
- void* user_data;
+typedef struct {
+ BT_HDR hdr;
+ void* user_data;
} tBTA_SDP_API_RECORD_USER;
/* union of all data types */
-typedef union
-{
- /* GKI event buffer header */
- BT_HDR hdr;
- tBTA_SDP_API_ENABLE enable;
- tBTA_SDP_API_SEARCH get_search;
- tBTA_SDP_API_RECORD_USER record;
+typedef union {
+ /* GKI event buffer header */
+ BT_HDR hdr;
+ tBTA_SDP_API_ENABLE enable;
+ tBTA_SDP_API_SEARCH get_search;
+ tBTA_SDP_API_RECORD_USER record;
} tBTA_SDP_MSG;
/* SDP control block */
-typedef struct
-{
- uint8_t sdp_active; /* see BTA_SDP_SDP_ACT_* */
- BD_ADDR remote_addr;
- tBTA_SDP_DM_CBACK *p_dm_cback;
+typedef struct {
+ uint8_t sdp_active; /* see BTA_SDP_SDP_ACT_* */
+ BD_ADDR remote_addr;
+ tBTA_SDP_DM_CBACK* p_dm_cback;
} tBTA_SDP_CB;
-
/* SDP control block */
extern tBTA_SDP_CB bta_sdp_cb;
/* config struct */
-extern tBTA_SDP_CFG *p_bta_sdp_cfg;
+extern tBTA_SDP_CFG* p_bta_sdp_cfg;
-extern bool bta_sdp_sm_execute(BT_HDR *p_msg);
+extern bool bta_sdp_sm_execute(BT_HDR* p_msg);
-extern void bta_sdp_enable (tBTA_SDP_MSG *p_data);
-extern void bta_sdp_search (tBTA_SDP_MSG *p_data);
-extern void bta_sdp_create_record(tBTA_SDP_MSG *p_data);
-extern void bta_sdp_remove_record(tBTA_SDP_MSG *p_data);
+extern void bta_sdp_enable(tBTA_SDP_MSG* p_data);
+extern void bta_sdp_search(tBTA_SDP_MSG* p_data);
+extern void bta_sdp_create_record(tBTA_SDP_MSG* p_data);
+extern void bta_sdp_remove_record(tBTA_SDP_MSG* p_data);
#endif /* BTA_SDP_INT_H */
diff --git a/bta/sys/bta_sys.h b/bta/sys/bta_sys.h
index 20efc35..c97d8f1 100644
--- a/bta/sys/bta_sys.h
+++ b/bta/sys/bta_sys.h
@@ -24,9 +24,9 @@
#ifndef BTA_SYS_H
#define BTA_SYS_H
+#include "bt_common.h"
#include "bt_target.h"
#include "osi/include/alarm.h"
-#include "bt_common.h"
#ifdef __cplusplus
extern "C" {
@@ -37,137 +37,134 @@
****************************************************************************/
/* vendor specific event handler function type */
-typedef bool (tBTA_SYS_VS_EVT_HDLR)(uint16_t evt, void *p);
+typedef bool(tBTA_SYS_VS_EVT_HDLR)(uint16_t evt, void* p);
/* event handler function type */
-typedef bool (tBTA_SYS_EVT_HDLR)(BT_HDR *p_msg);
+typedef bool(tBTA_SYS_EVT_HDLR)(BT_HDR* p_msg);
/* disable function type */
-typedef void (tBTA_SYS_DISABLE)(void);
-
+typedef void(tBTA_SYS_DISABLE)(void);
/* HW modules */
-enum
-{
- BTA_SYS_HW_BLUETOOTH,
- BTA_SYS_HW_RT,
+enum {
+ BTA_SYS_HW_BLUETOOTH,
+ BTA_SYS_HW_RT,
- BTA_SYS_MAX_HW_MODULES
+ BTA_SYS_MAX_HW_MODULES
};
typedef uint16_t tBTA_SYS_HW_MODULE;
#ifndef BTA_DM_NUM_JV_ID
-#define BTA_DM_NUM_JV_ID 2
+#define BTA_DM_NUM_JV_ID 2
#endif
/* SW sub-systems */
-#define BTA_ID_SYS 0 /* system manager */
+#define BTA_ID_SYS 0 /* system manager */
/* BLUETOOTH PART - from 0 to BTA_ID_BLUETOOTH_MAX */
-#define BTA_ID_DM 1 /* device manager */
-#define BTA_ID_DM_SEARCH 2 /* device manager search */
-#define BTA_ID_DM_SEC 3 /* device manager security */
-#define BTA_ID_DG 4 /* data gateway */
-#define BTA_ID_AG 5 /* audio gateway */
-#define BTA_ID_OPC 6 /* object push client */
-#define BTA_ID_OPS 7 /* object push server */
-#define BTA_ID_FTS 8 /* file transfer server */
-#define BTA_ID_CT 9 /* cordless telephony terminal */
-#define BTA_ID_FTC 10 /* file transfer client */
-#define BTA_ID_SS 11 /* synchronization server */
-#define BTA_ID_PR 12 /* Printer client */
-#define BTA_ID_BIC 13 /* Basic Imaging Client */
-#define BTA_ID_PAN 14 /* Personal Area Networking */
-#define BTA_ID_BIS 15 /* Basic Imaging Server */
-#define BTA_ID_ACC 16 /* Advanced Camera Client */
-#define BTA_ID_SC 17 /* SIM Card Access server */
-#define BTA_ID_AV 18 /* Advanced audio/video */
-#define BTA_ID_AVK 19 /* Audio/video sink */
-#define BTA_ID_HD 20 /* HID Device */
-#define BTA_ID_CG 21 /* Cordless Gateway */
-#define BTA_ID_BP 22 /* Basic Printing Client */
-#define BTA_ID_HH 23 /* Human Interface Device Host */
-#define BTA_ID_PBS 24 /* Phone Book Access Server */
-#define BTA_ID_PBC 25 /* Phone Book Access Client */
-#define BTA_ID_JV 26 /* Java */
-#define BTA_ID_HS 27 /* Headset */
-#define BTA_ID_MSE 28 /* Message Server Equipment */
-#define BTA_ID_MCE 29 /* Message Client Equipment */
-#define BTA_ID_HL 30 /* Health Device Profile*/
-#define BTA_ID_GATTC 31 /* GATT Client */
-#define BTA_ID_GATTS 32 /* GATT Client */
-#define BTA_ID_SDP 33 /* SDP Client */
-#define BTA_ID_BLUETOOTH_MAX 34 /* last BT profile */
+#define BTA_ID_DM 1 /* device manager */
+#define BTA_ID_DM_SEARCH 2 /* device manager search */
+#define BTA_ID_DM_SEC 3 /* device manager security */
+#define BTA_ID_DG 4 /* data gateway */
+#define BTA_ID_AG 5 /* audio gateway */
+#define BTA_ID_OPC 6 /* object push client */
+#define BTA_ID_OPS 7 /* object push server */
+#define BTA_ID_FTS 8 /* file transfer server */
+#define BTA_ID_CT 9 /* cordless telephony terminal */
+#define BTA_ID_FTC 10 /* file transfer client */
+#define BTA_ID_SS 11 /* synchronization server */
+#define BTA_ID_PR 12 /* Printer client */
+#define BTA_ID_BIC 13 /* Basic Imaging Client */
+#define BTA_ID_PAN 14 /* Personal Area Networking */
+#define BTA_ID_BIS 15 /* Basic Imaging Server */
+#define BTA_ID_ACC 16 /* Advanced Camera Client */
+#define BTA_ID_SC 17 /* SIM Card Access server */
+#define BTA_ID_AV 18 /* Advanced audio/video */
+#define BTA_ID_AVK 19 /* Audio/video sink */
+#define BTA_ID_HD 20 /* HID Device */
+#define BTA_ID_CG 21 /* Cordless Gateway */
+#define BTA_ID_BP 22 /* Basic Printing Client */
+#define BTA_ID_HH 23 /* Human Interface Device Host */
+#define BTA_ID_PBS 24 /* Phone Book Access Server */
+#define BTA_ID_PBC 25 /* Phone Book Access Client */
+#define BTA_ID_JV 26 /* Java */
+#define BTA_ID_HS 27 /* Headset */
+#define BTA_ID_MSE 28 /* Message Server Equipment */
+#define BTA_ID_MCE 29 /* Message Client Equipment */
+#define BTA_ID_HL 30 /* Health Device Profile*/
+#define BTA_ID_GATTC 31 /* GATT Client */
+#define BTA_ID_GATTS 32 /* GATT Client */
+#define BTA_ID_SDP 33 /* SDP Client */
+#define BTA_ID_BLUETOOTH_MAX 34 /* last BT profile */
/* GENERIC */
-#define BTA_ID_PRM 38
-#define BTA_ID_SYSTEM 39 /* platform-specific */
-#define BTA_ID_SWRAP 40 /* Insight script wrapper */
-#define BTA_ID_MIP 41 /* Multicase Individual Polling */
-#define BTA_ID_RT 42 /* Audio Routing module: This module is always on. */
-#define BTA_ID_CLOSURE 43 /* Generic C++ closure */
+#define BTA_ID_PRM 38
+#define BTA_ID_SYSTEM 39 /* platform-specific */
+#define BTA_ID_SWRAP 40 /* Insight script wrapper */
+#define BTA_ID_MIP 41 /* Multicase Individual Polling */
+#define BTA_ID_RT 42 /* Audio Routing module: This module is always on. */
+#define BTA_ID_CLOSURE 43 /* Generic C++ closure */
/* JV */
-#define BTA_ID_JV1 44 /* JV1 */
-#define BTA_ID_JV2 45 /* JV2 */
+#define BTA_ID_JV1 44 /* JV1 */
+#define BTA_ID_JV2 45 /* JV2 */
-#define BTA_ID_MAX (44 + BTA_DM_NUM_JV_ID)
+#define BTA_ID_MAX (44 + BTA_DM_NUM_JV_ID)
typedef uint8_t tBTA_SYS_ID;
-
-#define BTA_SYS_CONN_OPEN 0x00
-#define BTA_SYS_CONN_CLOSE 0x01
-#define BTA_SYS_APP_OPEN 0x02
-#define BTA_SYS_APP_CLOSE 0x03
-#define BTA_SYS_SCO_OPEN 0x04
-#define BTA_SYS_SCO_CLOSE 0x05
-#define BTA_SYS_CONN_IDLE 0x06
-#define BTA_SYS_CONN_BUSY 0x07
+#define BTA_SYS_CONN_OPEN 0x00
+#define BTA_SYS_CONN_CLOSE 0x01
+#define BTA_SYS_APP_OPEN 0x02
+#define BTA_SYS_APP_CLOSE 0x03
+#define BTA_SYS_SCO_OPEN 0x04
+#define BTA_SYS_SCO_CLOSE 0x05
+#define BTA_SYS_CONN_IDLE 0x06
+#define BTA_SYS_CONN_BUSY 0x07
/* for link policy */
-#define BTA_SYS_PLCY_SET 0x10 /* set the link policy to the given addr */
-#define BTA_SYS_PLCY_CLR 0x11 /* clear the link policy to the given addr */
-#define BTA_SYS_PLCY_DEF_SET 0x12 /* set the default link policy */
-#define BTA_SYS_PLCY_DEF_CLR 0x13 /* clear the default link policy */
-#define BTA_SYS_ROLE_CHANGE 0x14 /* role change */
+#define BTA_SYS_PLCY_SET 0x10 /* set the link policy to the given addr */
+#define BTA_SYS_PLCY_CLR 0x11 /* clear the link policy to the given addr */
+#define BTA_SYS_PLCY_DEF_SET 0x12 /* set the default link policy */
+#define BTA_SYS_PLCY_DEF_CLR 0x13 /* clear the default link policy */
+#define BTA_SYS_ROLE_CHANGE 0x14 /* role change */
typedef uint8_t tBTA_SYS_CONN_STATUS;
/* Bitmask of sys features */
-#define BTA_SYS_FEAT_PCM2 0x0001
-#define BTA_SYS_FEAT_PCM2_MASTER 0x0002
+#define BTA_SYS_FEAT_PCM2 0x0001
+#define BTA_SYS_FEAT_PCM2_MASTER 0x0002
/* tBTA_PREF_ROLES */
typedef uint8_t tBTA_SYS_PREF_ROLES;
/* conn callback for role / low power manager*/
-typedef void (tBTA_SYS_CONN_CBACK)(tBTA_SYS_CONN_STATUS status,uint8_t id, uint8_t app_id, BD_ADDR peer_addr);
+typedef void(tBTA_SYS_CONN_CBACK)(tBTA_SYS_CONN_STATUS status, uint8_t id,
+ uint8_t app_id, BD_ADDR peer_addr);
/* conn callback for role / low power manager*/
-typedef void (tBTA_SYS_SSR_CFG_CBACK)(uint8_t id, uint8_t app_id, uint16_t latency, uint16_t tout);
+typedef void(tBTA_SYS_SSR_CFG_CBACK)(uint8_t id, uint8_t app_id,
+ uint16_t latency, uint16_t tout);
#if (BTA_EIR_CANNED_UUID_LIST != TRUE)
/* eir callback for adding/removeing UUID */
-typedef void (tBTA_SYS_EIR_CBACK)(uint16_t uuid16, bool adding);
+typedef void(tBTA_SYS_EIR_CBACK)(uint16_t uuid16, bool adding);
#endif
/* registration structure */
-typedef struct
-{
- tBTA_SYS_EVT_HDLR *evt_hdlr;
- tBTA_SYS_DISABLE *disable;
+typedef struct {
+ tBTA_SYS_EVT_HDLR* evt_hdlr;
+ tBTA_SYS_DISABLE* disable;
} tBTA_SYS_REG;
/* data type to send events to BTA SYS HW manager */
-typedef struct
-{
- BT_HDR hdr;
- tBTA_SYS_HW_MODULE hw_module;
+typedef struct {
+ BT_HDR hdr;
+ tBTA_SYS_HW_MODULE hw_module;
} tBTA_SYS_HW_MSG;
-typedef void (*tBTA_SYS_REGISTER)(uint8_t id, const tBTA_SYS_REG *p_reg);
-typedef void (*tBTA_SYS_SENDMSG)(void *p_msg);
+typedef void (*tBTA_SYS_REGISTER)(uint8_t id, const tBTA_SYS_REG* p_reg);
+typedef void (*tBTA_SYS_SENDMSG)(void* p_msg);
/*****************************************************************************
* Global data
@@ -181,42 +178,39 @@
****************************************************************************/
/* Calculate start of event enumeration; id is top 8 bits of event */
-#define BTA_SYS_EVT_START(id) ((id) << 8)
+#define BTA_SYS_EVT_START(id) ((id) << 8)
/*****************************************************************************
* events for BTA SYS HW manager
****************************************************************************/
-/* events sent to SYS HW manager - must be kept synchronized with tables in bta_sys_main.cc */
-enum
-{
- /* device manager local device API events */
- BTA_SYS_API_ENABLE_EVT = BTA_SYS_EVT_START(BTA_ID_SYS),
- BTA_SYS_EVT_ENABLED_EVT,
- BTA_SYS_EVT_STACK_ENABLED_EVT,
- BTA_SYS_API_DISABLE_EVT,
- BTA_SYS_EVT_DISABLED_EVT,
- BTA_SYS_ERROR_EVT,
+/* events sent to SYS HW manager - must be kept synchronized with tables in
+ * bta_sys_main.cc */
+enum {
+ /* device manager local device API events */
+ BTA_SYS_API_ENABLE_EVT = BTA_SYS_EVT_START(BTA_ID_SYS),
+ BTA_SYS_EVT_ENABLED_EVT,
+ BTA_SYS_EVT_STACK_ENABLED_EVT,
+ BTA_SYS_API_DISABLE_EVT,
+ BTA_SYS_EVT_DISABLED_EVT,
+ BTA_SYS_ERROR_EVT,
- BTA_SYS_MAX_EVT
+ BTA_SYS_MAX_EVT
};
-
-
/* SYS HW status events - returned by SYS HW manager to other modules. */
-enum
-{
- BTA_SYS_HW_OFF_EVT,
- BTA_SYS_HW_ON_EVT,
- BTA_SYS_HW_STARTING_EVT,
- BTA_SYS_HW_STOPPING_EVT,
- BTA_SYS_HW_ERROR_EVT
+enum {
+ BTA_SYS_HW_OFF_EVT,
+ BTA_SYS_HW_ON_EVT,
+ BTA_SYS_HW_STARTING_EVT,
+ BTA_SYS_HW_STOPPING_EVT,
+ BTA_SYS_HW_ERROR_EVT
};
typedef uint8_t tBTA_SYS_HW_EVT;
/* HW enable callback type */
-typedef void (tBTA_SYS_HW_CBACK)(tBTA_SYS_HW_EVT status);
+typedef void(tBTA_SYS_HW_CBACK)(tBTA_SYS_HW_EVT status);
/*****************************************************************************
* Function declarations
@@ -224,27 +218,26 @@
extern void bta_sys_init(void);
extern void bta_sys_free(void);
-extern void bta_sys_event(BT_HDR *p_msg);
+extern void bta_sys_event(BT_HDR* p_msg);
extern void bta_sys_set_trace_level(uint8_t level);
-extern void bta_sys_register(uint8_t id, const tBTA_SYS_REG *p_reg);
+extern void bta_sys_register(uint8_t id, const tBTA_SYS_REG* p_reg);
extern void bta_sys_deregister(uint8_t id);
extern bool bta_sys_is_register(uint8_t id);
extern uint16_t bta_sys_get_sys_features(void);
-extern void bta_sys_sendmsg(void *p_msg);
-extern void bta_sys_start_timer(alarm_t *alarm, period_ms_t interval,
+extern void bta_sys_sendmsg(void* p_msg);
+extern void bta_sys_start_timer(alarm_t* alarm, period_ms_t interval,
uint16_t event, uint16_t layer_specific);
extern void bta_sys_disable(tBTA_SYS_HW_MODULE module);
-extern void bta_sys_hw_register( tBTA_SYS_HW_MODULE module, tBTA_SYS_HW_CBACK *cback);
-extern void bta_sys_hw_unregister( tBTA_SYS_HW_MODULE module );
+extern void bta_sys_hw_register(tBTA_SYS_HW_MODULE module,
+ tBTA_SYS_HW_CBACK* cback);
+extern void bta_sys_hw_unregister(tBTA_SYS_HW_MODULE module);
+extern void bta_sys_rm_register(tBTA_SYS_CONN_CBACK* p_cback);
+extern void bta_sys_pm_register(tBTA_SYS_CONN_CBACK* p_cback);
-extern void bta_sys_rm_register(tBTA_SYS_CONN_CBACK * p_cback);
-extern void bta_sys_pm_register(tBTA_SYS_CONN_CBACK * p_cback);
-
-extern void bta_sys_policy_register(tBTA_SYS_CONN_CBACK * p_cback);
-extern void bta_sys_sco_register(tBTA_SYS_CONN_CBACK * p_cback);
-
+extern void bta_sys_policy_register(tBTA_SYS_CONN_CBACK* p_cback);
+extern void bta_sys_sco_register(tBTA_SYS_CONN_CBACK* p_cback);
extern void bta_sys_conn_open(uint8_t id, uint8_t app_id, BD_ADDR peer_addr);
extern void bta_sys_conn_close(uint8_t id, uint8_t app_id, BD_ADDR peer_addr);
@@ -258,17 +251,20 @@
extern void bta_sys_busy(uint8_t id, uint8_t app_id, BD_ADDR peer_addr);
#if (BTM_SSR_INCLUDED == TRUE)
-extern void bta_sys_ssr_cfg_register(tBTA_SYS_SSR_CFG_CBACK * p_cback);
-extern void bta_sys_chg_ssr_config (uint8_t id, uint8_t app_id, uint16_t max_latency, uint16_t min_tout);
+extern void bta_sys_ssr_cfg_register(tBTA_SYS_SSR_CFG_CBACK* p_cback);
+extern void bta_sys_chg_ssr_config(uint8_t id, uint8_t app_id,
+ uint16_t max_latency, uint16_t min_tout);
#endif
-extern void bta_sys_role_chg_register(tBTA_SYS_CONN_CBACK * p_cback);
-extern void bta_sys_notify_role_chg(BD_ADDR_PTR p_bda, uint8_t new_role, uint8_t hci_status);
-extern void bta_sys_collision_register(uint8_t bta_id, tBTA_SYS_CONN_CBACK *p_cback);
-extern void bta_sys_notify_collision (BD_ADDR_PTR p_bda);
+extern void bta_sys_role_chg_register(tBTA_SYS_CONN_CBACK* p_cback);
+extern void bta_sys_notify_role_chg(BD_ADDR_PTR p_bda, uint8_t new_role,
+ uint8_t hci_status);
+extern void bta_sys_collision_register(uint8_t bta_id,
+ tBTA_SYS_CONN_CBACK* p_cback);
+extern void bta_sys_notify_collision(BD_ADDR_PTR p_bda);
#if (BTA_EIR_CANNED_UUID_LIST != TRUE)
-extern void bta_sys_eir_register(tBTA_SYS_EIR_CBACK * p_cback);
+extern void bta_sys_eir_register(tBTA_SYS_EIR_CBACK* p_cback);
extern void bta_sys_add_uuid(uint16_t uuid16);
extern void bta_sys_remove_uuid(uint16_t uuid16);
#else
@@ -277,10 +273,10 @@
#define bta_sys_remove_uuid(ut)
#endif
-extern void bta_sys_set_policy (uint8_t id, uint8_t policy, BD_ADDR peer_addr);
-extern void bta_sys_clear_policy (uint8_t id, uint8_t policy, BD_ADDR peer_addr);
-extern void bta_sys_set_default_policy (uint8_t id, uint8_t policy);
-extern void bta_sys_clear_default_policy (uint8_t id, uint8_t policy);
+extern void bta_sys_set_policy(uint8_t id, uint8_t policy, BD_ADDR peer_addr);
+extern void bta_sys_clear_policy(uint8_t id, uint8_t policy, BD_ADDR peer_addr);
+extern void bta_sys_set_default_policy(uint8_t id, uint8_t policy);
+extern void bta_sys_clear_default_policy(uint8_t id, uint8_t policy);
#ifdef __cplusplus
}
diff --git a/bta/sys/bta_sys_conn.cc b/bta/sys/bta_sys_conn.cc
index 0321fa7..7f897ff 100644
--- a/bta/sys/bta_sys_conn.cc
+++ b/bta/sys/bta_sys_conn.cc
@@ -24,10 +24,10 @@
#include <stddef.h>
+#include "bt_common.h"
#include "bta_api.h"
#include "bta_sys.h"
#include "bta_sys_int.h"
-#include "bt_common.h"
#include "osi/include/osi.h"
#include "utl.h"
@@ -41,12 +41,10 @@
* Returns void
*
******************************************************************************/
-void bta_sys_rm_register(tBTA_SYS_CONN_CBACK * p_cback)
-{
- bta_sys_cb.prm_cb = p_cback;
+void bta_sys_rm_register(tBTA_SYS_CONN_CBACK* p_cback) {
+ bta_sys_cb.prm_cb = p_cback;
}
-
/*******************************************************************************
*
* Function bta_sys_policy_register
@@ -57,9 +55,8 @@
* Returns void
*
******************************************************************************/
-void bta_sys_policy_register(tBTA_SYS_CONN_CBACK * p_cback)
-{
- bta_sys_cb.p_policy_cb = p_cback;
+void bta_sys_policy_register(tBTA_SYS_CONN_CBACK* p_cback) {
+ bta_sys_cb.p_policy_cb = p_cback;
}
/*******************************************************************************
@@ -72,9 +69,8 @@
* Returns void
*
******************************************************************************/
-void bta_sys_role_chg_register(tBTA_SYS_CONN_CBACK * p_cback)
-{
- bta_sys_cb.p_role_cb = p_cback;
+void bta_sys_role_chg_register(tBTA_SYS_CONN_CBACK* p_cback) {
+ bta_sys_cb.p_role_cb = p_cback;
}
/*******************************************************************************
*
@@ -87,9 +83,8 @@
*
******************************************************************************/
#if (BTM_SSR_INCLUDED == TRUE)
-void bta_sys_ssr_cfg_register(tBTA_SYS_SSR_CFG_CBACK * p_cback)
-{
- bta_sys_cb.p_ssr_cb = p_cback;
+void bta_sys_ssr_cfg_register(tBTA_SYS_SSR_CFG_CBACK* p_cback) {
+ bta_sys_cb.p_ssr_cb = p_cback;
}
#endif
/*******************************************************************************
@@ -102,12 +97,11 @@
* Returns void
*
******************************************************************************/
-void bta_sys_notify_role_chg(BD_ADDR_PTR p_bda, uint8_t new_role, uint8_t hci_status)
-{
- if (bta_sys_cb.p_role_cb)
- {
- bta_sys_cb.p_role_cb(BTA_SYS_ROLE_CHANGE, new_role, hci_status, p_bda);
- }
+void bta_sys_notify_role_chg(BD_ADDR_PTR p_bda, uint8_t new_role,
+ uint8_t hci_status) {
+ if (bta_sys_cb.p_role_cb) {
+ bta_sys_cb.p_role_cb(BTA_SYS_ROLE_CHANGE, new_role, hci_status, p_bda);
+ }
}
/*******************************************************************************
@@ -120,20 +114,17 @@
* Returns void
*
******************************************************************************/
-void bta_sys_collision_register(uint8_t bta_id, tBTA_SYS_CONN_CBACK *p_cback)
-{
- uint8_t index;
+void bta_sys_collision_register(uint8_t bta_id, tBTA_SYS_CONN_CBACK* p_cback) {
+ uint8_t index;
- for (index = 0; index < MAX_COLLISION_REG; index++)
- {
- if ((bta_sys_cb.colli_reg.id[index] == bta_id) ||
- (bta_sys_cb.colli_reg.id[index] == 0))
- {
- bta_sys_cb.colli_reg.id[index] = bta_id;
- bta_sys_cb.colli_reg.p_coll_cback[index] = p_cback;
- return;
- }
+ for (index = 0; index < MAX_COLLISION_REG; index++) {
+ if ((bta_sys_cb.colli_reg.id[index] == bta_id) ||
+ (bta_sys_cb.colli_reg.id[index] == 0)) {
+ bta_sys_cb.colli_reg.id[index] = bta_id;
+ bta_sys_cb.colli_reg.p_coll_cback[index] = p_cback;
+ return;
}
+ }
}
/*******************************************************************************
@@ -146,18 +137,15 @@
* Returns void
*
******************************************************************************/
-void bta_sys_notify_collision (BD_ADDR_PTR p_bda)
-{
- uint8_t index;
+void bta_sys_notify_collision(BD_ADDR_PTR p_bda) {
+ uint8_t index;
- for (index = 0; index < MAX_COLLISION_REG; index++)
- {
- if ((bta_sys_cb.colli_reg.id[index] != 0) &&
- (bta_sys_cb.colli_reg.p_coll_cback[index] != NULL))
- {
- bta_sys_cb.colli_reg.p_coll_cback[index] (0, BTA_ID_SYS, 0, p_bda);
- }
+ for (index = 0; index < MAX_COLLISION_REG; index++) {
+ if ((bta_sys_cb.colli_reg.id[index] != 0) &&
+ (bta_sys_cb.colli_reg.p_coll_cback[index] != NULL)) {
+ bta_sys_cb.colli_reg.p_coll_cback[index](0, BTA_ID_SYS, 0, p_bda);
}
+ }
}
/*******************************************************************************
@@ -170,9 +158,8 @@
* Returns void
*
******************************************************************************/
-void bta_sys_sco_register(tBTA_SYS_CONN_CBACK * p_cback)
-{
- bta_sys_cb.p_sco_cb = p_cback;
+void bta_sys_sco_register(tBTA_SYS_CONN_CBACK* p_cback) {
+ bta_sys_cb.p_sco_cb = p_cback;
}
/*******************************************************************************
@@ -185,9 +172,8 @@
* Returns void
*
******************************************************************************/
-void bta_sys_pm_register(tBTA_SYS_CONN_CBACK * p_cback)
-{
- bta_sys_cb.ppm_cb = p_cback;
+void bta_sys_pm_register(tBTA_SYS_CONN_CBACK* p_cback) {
+ bta_sys_cb.ppm_cb = p_cback;
}
/*******************************************************************************
@@ -201,25 +187,16 @@
* Returns void
*
******************************************************************************/
-void bta_sys_conn_open(uint8_t id, uint8_t app_id, BD_ADDR peer_addr)
-{
- if(bta_sys_cb.prm_cb)
- {
+void bta_sys_conn_open(uint8_t id, uint8_t app_id, BD_ADDR peer_addr) {
+ if (bta_sys_cb.prm_cb) {
+ bta_sys_cb.prm_cb(BTA_SYS_CONN_OPEN, id, app_id, peer_addr);
+ }
- bta_sys_cb.prm_cb(BTA_SYS_CONN_OPEN, id, app_id, peer_addr);
-
- }
-
- if(bta_sys_cb.ppm_cb)
- {
-
- bta_sys_cb.ppm_cb(BTA_SYS_CONN_OPEN, id, app_id, peer_addr);
-
- }
+ if (bta_sys_cb.ppm_cb) {
+ bta_sys_cb.ppm_cb(BTA_SYS_CONN_OPEN, id, app_id, peer_addr);
+ }
}
-
-
/*******************************************************************************
*
* Function bta_sys_conn_close
@@ -231,45 +208,34 @@
* Returns void
*
******************************************************************************/
-void bta_sys_conn_close(uint8_t id, uint8_t app_id, BD_ADDR peer_addr)
-{
- if(bta_sys_cb.prm_cb)
- {
+void bta_sys_conn_close(uint8_t id, uint8_t app_id, BD_ADDR peer_addr) {
+ if (bta_sys_cb.prm_cb) {
+ bta_sys_cb.prm_cb(BTA_SYS_CONN_CLOSE, id, app_id, peer_addr);
+ }
- bta_sys_cb.prm_cb(BTA_SYS_CONN_CLOSE, id, app_id, peer_addr);
-
- }
-
- if(bta_sys_cb.ppm_cb)
- {
-
- bta_sys_cb.ppm_cb(BTA_SYS_CONN_CLOSE, id, app_id, peer_addr);
-
- }
+ if (bta_sys_cb.ppm_cb) {
+ bta_sys_cb.ppm_cb(BTA_SYS_CONN_CLOSE, id, app_id, peer_addr);
+ }
}
-
/*******************************************************************************
*
* Function bta_sys_app_open
*
- * Description Called by BTA subsystems when application initiates connection
+ * Description Called by BTA subsystems when application initiates
+ *connection
* to a peer device
*
*
* Returns void
*
******************************************************************************/
-void bta_sys_app_open(uint8_t id, uint8_t app_id, BD_ADDR peer_addr)
-{
- if(bta_sys_cb.ppm_cb)
- {
- bta_sys_cb.ppm_cb(BTA_SYS_APP_OPEN, id, app_id, peer_addr);
- }
+void bta_sys_app_open(uint8_t id, uint8_t app_id, BD_ADDR peer_addr) {
+ if (bta_sys_cb.ppm_cb) {
+ bta_sys_cb.ppm_cb(BTA_SYS_APP_OPEN, id, app_id, peer_addr);
+ }
}
-
-
/*******************************************************************************
*
* Function bta_sys_app_close
@@ -280,64 +246,57 @@
* Returns void
*
******************************************************************************/
-void bta_sys_app_close(uint8_t id, uint8_t app_id, BD_ADDR peer_addr)
-{
- if(bta_sys_cb.ppm_cb)
- {
- bta_sys_cb.ppm_cb(BTA_SYS_APP_CLOSE, id, app_id, peer_addr);
- }
+void bta_sys_app_close(uint8_t id, uint8_t app_id, BD_ADDR peer_addr) {
+ if (bta_sys_cb.ppm_cb) {
+ bta_sys_cb.ppm_cb(BTA_SYS_APP_CLOSE, id, app_id, peer_addr);
+ }
}
-
/*******************************************************************************
*
* Function bta_sys_sco_open
*
- * Description Called by BTA subsystems when sco connection for that service
+ * Description Called by BTA subsystems when sco connection for that
+ *service
* is open
*
* Returns void
*
******************************************************************************/
-void bta_sys_sco_open(uint8_t id, uint8_t app_id, BD_ADDR peer_addr)
-{
- /* AG triggers p_sco_cb by bta_sys_sco_use. */
- if((id != BTA_ID_AG) && (bta_sys_cb.p_sco_cb))
- {
- /* without querying BTM_GetNumScoLinks() */
- bta_sys_cb.p_sco_cb(BTA_SYS_SCO_OPEN, 1, app_id, peer_addr);
- }
+void bta_sys_sco_open(uint8_t id, uint8_t app_id, BD_ADDR peer_addr) {
+ /* AG triggers p_sco_cb by bta_sys_sco_use. */
+ if ((id != BTA_ID_AG) && (bta_sys_cb.p_sco_cb)) {
+ /* without querying BTM_GetNumScoLinks() */
+ bta_sys_cb.p_sco_cb(BTA_SYS_SCO_OPEN, 1, app_id, peer_addr);
+ }
- if(bta_sys_cb.ppm_cb)
- {
- bta_sys_cb.ppm_cb(BTA_SYS_SCO_OPEN, id, app_id, peer_addr);
- }
+ if (bta_sys_cb.ppm_cb) {
+ bta_sys_cb.ppm_cb(BTA_SYS_SCO_OPEN, id, app_id, peer_addr);
+ }
}
/*******************************************************************************
*
* Function bta_sys_sco_close
*
- * Description Called by BTA subsystems when sco connection for that service
+ * Description Called by BTA subsystems when sco connection for that
+ *service
* is closed
*
* Returns void
*
******************************************************************************/
-void bta_sys_sco_close(uint8_t id, uint8_t app_id, BD_ADDR peer_addr)
-{
- uint8_t num_sco_links;
+void bta_sys_sco_close(uint8_t id, uint8_t app_id, BD_ADDR peer_addr) {
+ uint8_t num_sco_links;
- if((id != BTA_ID_AG) && (bta_sys_cb.p_sco_cb))
- {
- num_sco_links = BTM_GetNumScoLinks();
- bta_sys_cb.p_sco_cb(BTA_SYS_SCO_CLOSE, num_sco_links, app_id, peer_addr);
- }
+ if ((id != BTA_ID_AG) && (bta_sys_cb.p_sco_cb)) {
+ num_sco_links = BTM_GetNumScoLinks();
+ bta_sys_cb.p_sco_cb(BTA_SYS_SCO_CLOSE, num_sco_links, app_id, peer_addr);
+ }
- if(bta_sys_cb.ppm_cb)
- {
- bta_sys_cb.ppm_cb(BTA_SYS_SCO_CLOSE, id, app_id, peer_addr);
- }
+ if (bta_sys_cb.ppm_cb) {
+ bta_sys_cb.ppm_cb(BTA_SYS_SCO_CLOSE, id, app_id, peer_addr);
+ }
}
/*******************************************************************************
@@ -351,54 +310,51 @@
*
******************************************************************************/
void bta_sys_sco_use(UNUSED_ATTR uint8_t id, uint8_t app_id,
- BD_ADDR peer_addr)
-{
- /* AV streaming need to be suspended before SCO is connected. */
- if(bta_sys_cb.p_sco_cb)
- {
- /* without querying BTM_GetNumScoLinks() */
- bta_sys_cb.p_sco_cb(BTA_SYS_SCO_OPEN, 1, app_id, peer_addr);
- }
+ BD_ADDR peer_addr) {
+ /* AV streaming need to be suspended before SCO is connected. */
+ if (bta_sys_cb.p_sco_cb) {
+ /* without querying BTM_GetNumScoLinks() */
+ bta_sys_cb.p_sco_cb(BTA_SYS_SCO_OPEN, 1, app_id, peer_addr);
+ }
}
/*******************************************************************************
*
* Function bta_sys_sco_unuse
*
- * Description Called by BTA subsystems when sco connection for that service
+ * Description Called by BTA subsystems when sco connection for that
+ *service
* is no longer needed.
*
* Returns void
*
******************************************************************************/
void bta_sys_sco_unuse(UNUSED_ATTR uint8_t id, uint8_t app_id,
- BD_ADDR peer_addr)
-{
- uint8_t num_sco_links;
+ BD_ADDR peer_addr) {
+ uint8_t num_sco_links;
- if((bta_sys_cb.p_sco_cb))
- {
- num_sco_links = BTM_GetNumScoLinks();
- bta_sys_cb.p_sco_cb(BTA_SYS_SCO_CLOSE, num_sco_links, app_id, peer_addr);
- }
+ if ((bta_sys_cb.p_sco_cb)) {
+ num_sco_links = BTM_GetNumScoLinks();
+ bta_sys_cb.p_sco_cb(BTA_SYS_SCO_CLOSE, num_sco_links, app_id, peer_addr);
+ }
}
/*******************************************************************************
*
* Function bta_sys_chg_ssr_config
*
- * Description Called by BTA subsystems to indicate that the given app SSR setting
+ * Description Called by BTA subsystems to indicate that the given app SSR
+ *setting
* need to be changed.
*
* Returns void
*
******************************************************************************/
#if (BTM_SSR_INCLUDED == TRUE)
-void bta_sys_chg_ssr_config (uint8_t id, uint8_t app_id, uint16_t max_latency, uint16_t min_tout)
-{
- if(bta_sys_cb.p_ssr_cb)
- {
- bta_sys_cb.p_ssr_cb(id, app_id, max_latency, min_tout);
- }
+void bta_sys_chg_ssr_config(uint8_t id, uint8_t app_id, uint16_t max_latency,
+ uint16_t min_tout) {
+ if (bta_sys_cb.p_ssr_cb) {
+ bta_sys_cb.p_ssr_cb(id, app_id, max_latency, min_tout);
+ }
}
#endif
/*******************************************************************************
@@ -411,12 +367,10 @@
* Returns void
*
******************************************************************************/
-void bta_sys_set_policy (uint8_t id, uint8_t policy, BD_ADDR peer_addr)
-{
- if(bta_sys_cb.p_policy_cb)
- {
- bta_sys_cb.p_policy_cb(BTA_SYS_PLCY_SET, id, policy, peer_addr);
- }
+void bta_sys_set_policy(uint8_t id, uint8_t policy, BD_ADDR peer_addr) {
+ if (bta_sys_cb.p_policy_cb) {
+ bta_sys_cb.p_policy_cb(BTA_SYS_PLCY_SET, id, policy, peer_addr);
+ }
}
/*******************************************************************************
@@ -429,12 +383,10 @@
* Returns void
*
******************************************************************************/
-void bta_sys_clear_policy (uint8_t id, uint8_t policy, BD_ADDR peer_addr)
-{
- if(bta_sys_cb.p_policy_cb)
- {
- bta_sys_cb.p_policy_cb(BTA_SYS_PLCY_CLR, id, policy, peer_addr);
- }
+void bta_sys_clear_policy(uint8_t id, uint8_t policy, BD_ADDR peer_addr) {
+ if (bta_sys_cb.p_policy_cb) {
+ bta_sys_cb.p_policy_cb(BTA_SYS_PLCY_CLR, id, policy, peer_addr);
+ }
}
/*******************************************************************************
@@ -447,12 +399,10 @@
* Returns void
*
******************************************************************************/
-void bta_sys_set_default_policy (uint8_t id, uint8_t policy)
-{
- if(bta_sys_cb.p_policy_cb)
- {
- bta_sys_cb.p_policy_cb(BTA_SYS_PLCY_DEF_SET, id, policy, NULL);
- }
+void bta_sys_set_default_policy(uint8_t id, uint8_t policy) {
+ if (bta_sys_cb.p_policy_cb) {
+ bta_sys_cb.p_policy_cb(BTA_SYS_PLCY_DEF_SET, id, policy, NULL);
+ }
}
/*******************************************************************************
@@ -465,12 +415,10 @@
* Returns void
*
******************************************************************************/
-void bta_sys_clear_default_policy (uint8_t id, uint8_t policy)
-{
- if(bta_sys_cb.p_policy_cb)
- {
- bta_sys_cb.p_policy_cb(BTA_SYS_PLCY_DEF_CLR, id, policy, NULL);
- }
+void bta_sys_clear_default_policy(uint8_t id, uint8_t policy) {
+ if (bta_sys_cb.p_policy_cb) {
+ bta_sys_cb.p_policy_cb(BTA_SYS_PLCY_DEF_CLR, id, policy, NULL);
+ }
}
/*******************************************************************************
@@ -483,21 +431,14 @@
* Returns void
*
******************************************************************************/
-void bta_sys_idle(uint8_t id, uint8_t app_id, BD_ADDR peer_addr)
-{
+void bta_sys_idle(uint8_t id, uint8_t app_id, BD_ADDR peer_addr) {
+ if (bta_sys_cb.prm_cb) {
+ bta_sys_cb.prm_cb(BTA_SYS_CONN_IDLE, id, app_id, peer_addr);
+ }
- if(bta_sys_cb.prm_cb)
- {
-
- bta_sys_cb.prm_cb(BTA_SYS_CONN_IDLE, id, app_id, peer_addr);
-
- }
-
- if(bta_sys_cb.ppm_cb)
- {
-
- bta_sys_cb.ppm_cb(BTA_SYS_CONN_IDLE, id, app_id, peer_addr);
- }
+ if (bta_sys_cb.ppm_cb) {
+ bta_sys_cb.ppm_cb(BTA_SYS_CONN_IDLE, id, app_id, peer_addr);
+ }
}
/*******************************************************************************
@@ -510,21 +451,14 @@
* Returns void
*
******************************************************************************/
-void bta_sys_busy(uint8_t id, uint8_t app_id, BD_ADDR peer_addr)
-{
- if(bta_sys_cb.prm_cb)
- {
+void bta_sys_busy(uint8_t id, uint8_t app_id, BD_ADDR peer_addr) {
+ if (bta_sys_cb.prm_cb) {
+ bta_sys_cb.prm_cb(BTA_SYS_CONN_BUSY, id, app_id, peer_addr);
+ }
- bta_sys_cb.prm_cb(BTA_SYS_CONN_BUSY, id, app_id, peer_addr);
-
- }
-
- if(bta_sys_cb.ppm_cb)
- {
-
- bta_sys_cb.ppm_cb(BTA_SYS_CONN_BUSY, id, app_id, peer_addr);
-
- }
+ if (bta_sys_cb.ppm_cb) {
+ bta_sys_cb.ppm_cb(BTA_SYS_CONN_BUSY, id, app_id, peer_addr);
+ }
}
#if (BTA_EIR_CANNED_UUID_LIST != TRUE)
@@ -532,15 +466,15 @@
*
* Function bta_sys_eir_register
*
- * Description Called by BTA DM to register EIR utility function that can be
+ * Description Called by BTA DM to register EIR utility function that can
+ *be
* used by the other BTA modules to add/remove UUID.
*
* Returns void
*
******************************************************************************/
-void bta_sys_eir_register(tBTA_SYS_EIR_CBACK * p_cback)
-{
- bta_sys_cb.eir_cb = p_cback;
+void bta_sys_eir_register(tBTA_SYS_EIR_CBACK* p_cback) {
+ bta_sys_cb.eir_cb = p_cback;
}
/*******************************************************************************
@@ -553,12 +487,10 @@
* Returns void
*
******************************************************************************/
-void bta_sys_add_uuid(uint16_t uuid16)
-{
- if(bta_sys_cb.eir_cb)
- {
- bta_sys_cb.eir_cb(uuid16, true );
- }
+void bta_sys_add_uuid(uint16_t uuid16) {
+ if (bta_sys_cb.eir_cb) {
+ bta_sys_cb.eir_cb(uuid16, true);
+ }
}
/*******************************************************************************
@@ -571,11 +503,9 @@
* Returns void
*
******************************************************************************/
-void bta_sys_remove_uuid(uint16_t uuid16)
-{
- if(bta_sys_cb.eir_cb)
- {
- bta_sys_cb.eir_cb(uuid16, false);
- }
+void bta_sys_remove_uuid(uint16_t uuid16) {
+ if (bta_sys_cb.eir_cb) {
+ bta_sys_cb.eir_cb(uuid16, false);
+ }
}
#endif
diff --git a/bta/sys/bta_sys_int.h b/bta/sys/bta_sys_int.h
index 3657693..dc88e45 100644
--- a/bta/sys/bta_sys_int.h
+++ b/bta/sys/bta_sys_int.h
@@ -33,48 +33,50 @@
****************************************************************************/
/* SYS HW state */
-enum
-{
- BTA_SYS_HW_OFF,
- BTA_SYS_HW_STARTING,
- BTA_SYS_HW_ON,
- BTA_SYS_HW_STOPPING
+enum {
+ BTA_SYS_HW_OFF,
+ BTA_SYS_HW_STARTING,
+ BTA_SYS_HW_ON,
+ BTA_SYS_HW_STOPPING
};
typedef uint8_t tBTA_SYS_HW_STATE;
/* Collision callback */
-#define MAX_COLLISION_REG 5
+#define MAX_COLLISION_REG 5
-typedef struct
-{
- uint8_t id[MAX_COLLISION_REG];
- tBTA_SYS_CONN_CBACK *p_coll_cback[MAX_COLLISION_REG];
+typedef struct {
+ uint8_t id[MAX_COLLISION_REG];
+ tBTA_SYS_CONN_CBACK* p_coll_cback[MAX_COLLISION_REG];
} tBTA_SYS_COLLISION;
/* system manager control block */
-typedef struct
-{
- tBTA_SYS_REG *reg[BTA_ID_MAX]; /* registration structures */
- bool is_reg[BTA_ID_MAX]; /* registration structures */
- tBTA_SYS_HW_STATE state;
- tBTA_SYS_HW_CBACK *sys_hw_cback[BTA_SYS_MAX_HW_MODULES]; /* enable callback for each HW modules */
- uint32_t sys_hw_module_active; /* bitmask of all active modules */
- uint16_t sys_features; /* Bitmask of sys features */
+typedef struct {
+ tBTA_SYS_REG* reg[BTA_ID_MAX]; /* registration structures */
+ bool is_reg[BTA_ID_MAX]; /* registration structures */
+ tBTA_SYS_HW_STATE state;
+ tBTA_SYS_HW_CBACK* sys_hw_cback[BTA_SYS_MAX_HW_MODULES]; /* enable callback
+ for each HW
+ modules */
+ uint32_t sys_hw_module_active; /* bitmask of all active modules */
+ uint16_t sys_features; /* Bitmask of sys features */
- tBTA_SYS_CONN_CBACK *prm_cb; /* role management callback registered by DM */
- tBTA_SYS_CONN_CBACK *ppm_cb; /* low power management callback registered by DM */
- tBTA_SYS_CONN_CBACK *p_policy_cb; /* link policy change callback registered by DM */
- tBTA_SYS_CONN_CBACK *p_sco_cb; /* SCO connection change callback registered by AV */
- tBTA_SYS_CONN_CBACK *p_role_cb; /* role change callback registered by AV */
- tBTA_SYS_COLLISION colli_reg; /* collision handling module */
+ tBTA_SYS_CONN_CBACK* prm_cb; /* role management callback registered by DM */
+ tBTA_SYS_CONN_CBACK*
+ ppm_cb; /* low power management callback registered by DM */
+ tBTA_SYS_CONN_CBACK*
+ p_policy_cb; /* link policy change callback registered by DM */
+ tBTA_SYS_CONN_CBACK*
+ p_sco_cb; /* SCO connection change callback registered by AV */
+ tBTA_SYS_CONN_CBACK* p_role_cb; /* role change callback registered by AV */
+ tBTA_SYS_COLLISION colli_reg; /* collision handling module */
#if (BTA_EIR_CANNED_UUID_LIST != TRUE)
- tBTA_SYS_EIR_CBACK *eir_cb; /* add/remove UUID into EIR */
+ tBTA_SYS_EIR_CBACK* eir_cb; /* add/remove UUID into EIR */
#endif
#if (BTM_SSR_INCLUDED == TRUE)
- tBTA_SYS_SSR_CFG_CBACK *p_ssr_cb;
+ tBTA_SYS_SSR_CFG_CBACK* p_ssr_cb;
#endif
- /* VS event handler */
- tBTA_SYS_VS_EVT_HDLR *p_vs_evt_hdlr;
+ /* VS event handler */
+ tBTA_SYS_VS_EVT_HDLR* p_vs_evt_hdlr;
} tBTA_SYS_CB;
@@ -86,14 +88,14 @@
extern tBTA_SYS_CB bta_sys_cb;
/* functions used for BTA SYS HW state machine */
-void bta_sys_hw_btm_cback( tBTM_DEV_STATUS status );
-void bta_sys_hw_error(tBTA_SYS_HW_MSG *p_sys_hw_msg);
-void bta_sys_hw_api_enable( tBTA_SYS_HW_MSG *p_sys_hw_msg );
-void bta_sys_hw_api_disable(tBTA_SYS_HW_MSG *p_sys_hw_msg);
-void bta_sys_hw_evt_enabled(tBTA_SYS_HW_MSG *p_sys_hw_msg);
-void bta_sys_hw_evt_disabled(tBTA_SYS_HW_MSG *p_sys_hw_msg);
-void bta_sys_hw_evt_stack_enabled(tBTA_SYS_HW_MSG *p_sys_hw_msg);
+void bta_sys_hw_btm_cback(tBTM_DEV_STATUS status);
+void bta_sys_hw_error(tBTA_SYS_HW_MSG* p_sys_hw_msg);
+void bta_sys_hw_api_enable(tBTA_SYS_HW_MSG* p_sys_hw_msg);
+void bta_sys_hw_api_disable(tBTA_SYS_HW_MSG* p_sys_hw_msg);
+void bta_sys_hw_evt_enabled(tBTA_SYS_HW_MSG* p_sys_hw_msg);
+void bta_sys_hw_evt_disabled(tBTA_SYS_HW_MSG* p_sys_hw_msg);
+void bta_sys_hw_evt_stack_enabled(tBTA_SYS_HW_MSG* p_sys_hw_msg);
-bool bta_sys_sm_execute(BT_HDR *p_msg);
+bool bta_sys_sm_execute(BT_HDR* p_msg);
#endif /* BTA_SYS_INT_H */
diff --git a/bta/sys/bta_sys_main.cc b/bta/sys/bta_sys_main.cc
index b97b61e..689ba5d 100644
--- a/bta/sys/bta_sys_main.cc
+++ b/bta/sys/bta_sys_main.cc
@@ -41,121 +41,128 @@
#include "osi/include/thread.h"
#include "utl.h"
-#if( defined BTA_AR_INCLUDED ) && (BTA_AR_INCLUDED == true)
+#if (defined BTA_AR_INCLUDED) && (BTA_AR_INCLUDED == true)
#include "bta_ar_api.h"
#endif
/* system manager control block definition */
tBTA_SYS_CB bta_sys_cb;
-fixed_queue_t *btu_bta_alarm_queue;
-extern thread_t *bt_workqueue_thread;
+fixed_queue_t* btu_bta_alarm_queue;
+extern thread_t* bt_workqueue_thread;
/* trace level */
/* TODO Hard-coded trace levels - Needs to be configurable */
-uint8_t appl_trace_level = BT_TRACE_LEVEL_WARNING; //APPL_INITIAL_TRACE_LEVEL;
+uint8_t appl_trace_level = BT_TRACE_LEVEL_WARNING; // APPL_INITIAL_TRACE_LEVEL;
uint8_t btif_trace_level = BT_TRACE_LEVEL_WARNING;
// Communication queue between btu_task and bta.
-extern fixed_queue_t *btu_bta_msg_queue;
+extern fixed_queue_t* btu_bta_msg_queue;
-static const tBTA_SYS_REG bta_sys_hw_reg =
-{
- bta_sys_sm_execute,
- NULL
-};
-
+static const tBTA_SYS_REG bta_sys_hw_reg = {bta_sys_sm_execute, NULL};
/* type for action functions */
-typedef void (*tBTA_SYS_ACTION)(tBTA_SYS_HW_MSG *p_data);
+typedef void (*tBTA_SYS_ACTION)(tBTA_SYS_HW_MSG* p_data);
/* action function list */
-const tBTA_SYS_ACTION bta_sys_action[] =
-{
+const tBTA_SYS_ACTION bta_sys_action[] = {
/* device manager local device API events - cf bta_sys.h for events */
- bta_sys_hw_api_enable, /* 0 BTA_SYS_HW_API_ENABLE_EVT */
- bta_sys_hw_evt_enabled, /* 1 BTA_SYS_HW_EVT_ENABLED_EVT */
- bta_sys_hw_evt_stack_enabled, /* 2 BTA_SYS_HW_EVT_STACK_ENABLED_EVT */
- bta_sys_hw_api_disable, /* 3 BTA_SYS_HW_API_DISABLE_EVT */
- bta_sys_hw_evt_disabled, /* 4 BTA_SYS_HW_EVT_DISABLED_EVT */
- bta_sys_hw_error /* 5 BTA_SYS_HW_ERROR_EVT */
+ bta_sys_hw_api_enable, /* 0 BTA_SYS_HW_API_ENABLE_EVT */
+ bta_sys_hw_evt_enabled, /* 1 BTA_SYS_HW_EVT_ENABLED_EVT */
+ bta_sys_hw_evt_stack_enabled, /* 2 BTA_SYS_HW_EVT_STACK_ENABLED_EVT */
+ bta_sys_hw_api_disable, /* 3 BTA_SYS_HW_API_DISABLE_EVT */
+ bta_sys_hw_evt_disabled, /* 4 BTA_SYS_HW_EVT_DISABLED_EVT */
+ bta_sys_hw_error /* 5 BTA_SYS_HW_ERROR_EVT */
};
/* state machine action enumeration list */
-enum
-{
- /* device manager local device API events */
- BTA_SYS_HW_API_ENABLE,
- BTA_SYS_HW_EVT_ENABLED,
- BTA_SYS_HW_EVT_STACK_ENABLED,
- BTA_SYS_HW_API_DISABLE,
- BTA_SYS_HW_EVT_DISABLED,
- BTA_SYS_HW_ERROR
+enum {
+ /* device manager local device API events */
+ BTA_SYS_HW_API_ENABLE,
+ BTA_SYS_HW_EVT_ENABLED,
+ BTA_SYS_HW_EVT_STACK_ENABLED,
+ BTA_SYS_HW_API_DISABLE,
+ BTA_SYS_HW_EVT_DISABLED,
+ BTA_SYS_HW_ERROR
};
-#define BTA_SYS_NUM_ACTIONS (BTA_SYS_MAX_EVT & 0x00ff)
-#define BTA_SYS_IGNORE BTA_SYS_NUM_ACTIONS
+#define BTA_SYS_NUM_ACTIONS (BTA_SYS_MAX_EVT & 0x00ff)
+#define BTA_SYS_IGNORE BTA_SYS_NUM_ACTIONS
/* state table information */
-#define BTA_SYS_ACTIONS 2 /* number of actions */
-#define BTA_SYS_NEXT_STATE 2 /* position of next state */
-#define BTA_SYS_NUM_COLS 3 /* number of columns in state tables */
-
+#define BTA_SYS_ACTIONS 2 /* number of actions */
+#define BTA_SYS_NEXT_STATE 2 /* position of next state */
+#define BTA_SYS_NUM_COLS 3 /* number of columns in state tables */
/* state table for OFF state */
-const uint8_t bta_sys_hw_off[][BTA_SYS_NUM_COLS] =
-{
-/* Event Action 1 Action 2 Next State */
-/* API_ENABLE */ {BTA_SYS_HW_API_ENABLE, BTA_SYS_IGNORE, BTA_SYS_HW_STARTING},
-/* EVT_ENABLED */ {BTA_SYS_IGNORE, BTA_SYS_IGNORE, BTA_SYS_HW_STARTING},
-/* STACK_ENABLED */ {BTA_SYS_IGNORE, BTA_SYS_IGNORE, BTA_SYS_HW_ON},
-/* API_DISABLE */ {BTA_SYS_HW_EVT_DISABLED, BTA_SYS_IGNORE, BTA_SYS_HW_OFF},
-/* EVT_DISABLED */ {BTA_SYS_IGNORE, BTA_SYS_IGNORE, BTA_SYS_HW_OFF},
-/* EVT_ERROR */ {BTA_SYS_IGNORE, BTA_SYS_IGNORE, BTA_SYS_HW_OFF}
-};
+const uint8_t bta_sys_hw_off[][BTA_SYS_NUM_COLS] = {
+ /* Event Action 1 Action 2
+ Next State */
+ /* API_ENABLE */ {BTA_SYS_HW_API_ENABLE, BTA_SYS_IGNORE,
+ BTA_SYS_HW_STARTING},
+ /* EVT_ENABLED */ {BTA_SYS_IGNORE, BTA_SYS_IGNORE, BTA_SYS_HW_STARTING},
+ /* STACK_ENABLED */ {BTA_SYS_IGNORE, BTA_SYS_IGNORE, BTA_SYS_HW_ON},
+ /* API_DISABLE */ {BTA_SYS_HW_EVT_DISABLED, BTA_SYS_IGNORE,
+ BTA_SYS_HW_OFF},
+ /* EVT_DISABLED */ {BTA_SYS_IGNORE, BTA_SYS_IGNORE, BTA_SYS_HW_OFF},
+ /* EVT_ERROR */ {BTA_SYS_IGNORE, BTA_SYS_IGNORE, BTA_SYS_HW_OFF}};
-const uint8_t bta_sys_hw_starting[][BTA_SYS_NUM_COLS] =
-{
-/* Event Action 1 Action 2 Next State */
-/* API_ENABLE */ {BTA_SYS_IGNORE, BTA_SYS_IGNORE, BTA_SYS_HW_STARTING}, /* wait for completion event */
-/* EVT_ENABLED */ {BTA_SYS_HW_EVT_ENABLED, BTA_SYS_IGNORE, BTA_SYS_HW_STARTING},
-/* STACK_ENABLED */ {BTA_SYS_HW_EVT_STACK_ENABLED, BTA_SYS_IGNORE, BTA_SYS_HW_ON},
-/* API_DISABLE */ {BTA_SYS_IGNORE, BTA_SYS_IGNORE, BTA_SYS_HW_STOPPING}, /* successive disable/enable: change state wait for completion to disable */
-/* EVT_DISABLED */ {BTA_SYS_HW_EVT_DISABLED, BTA_SYS_HW_API_ENABLE, BTA_SYS_HW_STARTING}, /* successive enable/disable: notify, then restart HW */
-/* EVT_ERROR */ {BTA_SYS_HW_ERROR, BTA_SYS_IGNORE, BTA_SYS_HW_ON}
-};
+const uint8_t bta_sys_hw_starting[][BTA_SYS_NUM_COLS] = {
+ /* Event Action 1 Action 2
+ Next State */
+ /* API_ENABLE */ {BTA_SYS_IGNORE, BTA_SYS_IGNORE,
+ BTA_SYS_HW_STARTING}, /* wait for completion event */
+ /* EVT_ENABLED */ {BTA_SYS_HW_EVT_ENABLED, BTA_SYS_IGNORE,
+ BTA_SYS_HW_STARTING},
+ /* STACK_ENABLED */ {BTA_SYS_HW_EVT_STACK_ENABLED, BTA_SYS_IGNORE,
+ BTA_SYS_HW_ON},
+ /* API_DISABLE */ {BTA_SYS_IGNORE, BTA_SYS_IGNORE,
+ BTA_SYS_HW_STOPPING}, /* successive disable/enable:
+ change state wait for
+ completion to disable */
+ /* EVT_DISABLED */ {BTA_SYS_HW_EVT_DISABLED, BTA_SYS_HW_API_ENABLE,
+ BTA_SYS_HW_STARTING}, /* successive enable/disable:
+ notify, then restart HW */
+ /* EVT_ERROR */ {BTA_SYS_HW_ERROR, BTA_SYS_IGNORE, BTA_SYS_HW_ON}};
-const uint8_t bta_sys_hw_on[][BTA_SYS_NUM_COLS] =
-{
-/* Event Action 1 Action 2 Next State */
-/* API_ENABLE */ {BTA_SYS_HW_API_ENABLE, BTA_SYS_IGNORE, BTA_SYS_HW_ON},
-/* EVT_ENABLED */ {BTA_SYS_IGNORE, BTA_SYS_IGNORE, BTA_SYS_HW_ON},
-/* STACK_ENABLED */ {BTA_SYS_IGNORE, BTA_SYS_IGNORE, BTA_SYS_HW_ON},
-/* API_DISABLE */ {BTA_SYS_HW_API_DISABLE, BTA_SYS_IGNORE, BTA_SYS_HW_ON}, /* don't change the state here, as some other modules might be active */
-/* EVT_DISABLED */ {BTA_SYS_HW_ERROR, BTA_SYS_IGNORE, BTA_SYS_HW_ON},
-/* EVT_ERROR */ {BTA_SYS_HW_ERROR, BTA_SYS_IGNORE, BTA_SYS_HW_ON}
-};
+const uint8_t bta_sys_hw_on[][BTA_SYS_NUM_COLS] = {
+ /* Event Action 1 Action 2
+ Next State */
+ /* API_ENABLE */ {BTA_SYS_HW_API_ENABLE, BTA_SYS_IGNORE, BTA_SYS_HW_ON},
+ /* EVT_ENABLED */ {BTA_SYS_IGNORE, BTA_SYS_IGNORE, BTA_SYS_HW_ON},
+ /* STACK_ENABLED */ {BTA_SYS_IGNORE, BTA_SYS_IGNORE, BTA_SYS_HW_ON},
+ /* API_DISABLE */
+ {BTA_SYS_HW_API_DISABLE, BTA_SYS_IGNORE,
+ BTA_SYS_HW_ON}, /* don't change the state here, as some
+ other modules might be active */
+ /* EVT_DISABLED */ {BTA_SYS_HW_ERROR, BTA_SYS_IGNORE, BTA_SYS_HW_ON},
+ /* EVT_ERROR */ {BTA_SYS_HW_ERROR, BTA_SYS_IGNORE, BTA_SYS_HW_ON}};
-const uint8_t bta_sys_hw_stopping[][BTA_SYS_NUM_COLS] =
-{
-/* Event Action 1 Action 2 Next State */
-/* API_ENABLE */ {BTA_SYS_IGNORE, BTA_SYS_IGNORE, BTA_SYS_HW_STARTING}, /* change state, and wait for completion event to enable */
-/* EVT_ENABLED */ {BTA_SYS_HW_EVT_ENABLED, BTA_SYS_IGNORE, BTA_SYS_HW_STOPPING}, /* successive enable/disable: finish the enable before disabling */
-/* STACK_ENABLED */ {BTA_SYS_HW_EVT_STACK_ENABLED, BTA_SYS_HW_API_DISABLE, BTA_SYS_HW_STOPPING}, /* successive enable/disable: notify, then stop */
-/* API_DISABLE */ {BTA_SYS_IGNORE, BTA_SYS_IGNORE, BTA_SYS_HW_STOPPING}, /* wait for completion event */
-/* EVT_DISABLED */ {BTA_SYS_HW_EVT_DISABLED, BTA_SYS_IGNORE, BTA_SYS_HW_OFF},
-/* EVT_ERROR */ {BTA_SYS_HW_API_DISABLE, BTA_SYS_IGNORE, BTA_SYS_HW_STOPPING}
-};
+const uint8_t bta_sys_hw_stopping[][BTA_SYS_NUM_COLS] = {
+ /* Event Action 1 Action 2
+ Next State */
+ /* API_ENABLE */ {BTA_SYS_IGNORE, BTA_SYS_IGNORE,
+ BTA_SYS_HW_STARTING}, /* change state, and wait for
+ completion event to enable */
+ /* EVT_ENABLED */ {BTA_SYS_HW_EVT_ENABLED, BTA_SYS_IGNORE,
+ BTA_SYS_HW_STOPPING}, /* successive enable/disable:
+ finish the enable before
+ disabling */
+ /* STACK_ENABLED */ {BTA_SYS_HW_EVT_STACK_ENABLED, BTA_SYS_HW_API_DISABLE,
+ BTA_SYS_HW_STOPPING}, /* successive enable/disable:
+ notify, then stop */
+ /* API_DISABLE */ {BTA_SYS_IGNORE, BTA_SYS_IGNORE,
+ BTA_SYS_HW_STOPPING}, /* wait for completion event */
+ /* EVT_DISABLED */ {BTA_SYS_HW_EVT_DISABLED, BTA_SYS_IGNORE,
+ BTA_SYS_HW_OFF},
+ /* EVT_ERROR */ {BTA_SYS_HW_API_DISABLE, BTA_SYS_IGNORE,
+ BTA_SYS_HW_STOPPING}};
typedef const uint8_t (*tBTA_SYS_ST_TBL)[BTA_SYS_NUM_COLS];
/* state table */
-const tBTA_SYS_ST_TBL bta_sys_st_tbl[] = {
- bta_sys_hw_off,
- bta_sys_hw_starting,
- bta_sys_hw_on,
- bta_sys_hw_stopping
-};
+const tBTA_SYS_ST_TBL bta_sys_st_tbl[] = {bta_sys_hw_off, bta_sys_hw_starting,
+ bta_sys_hw_on, bta_sys_hw_stopping};
/*******************************************************************************
*
@@ -167,33 +174,32 @@
* Returns void
*
******************************************************************************/
-void bta_sys_init(void)
-{
- memset(&bta_sys_cb, 0, sizeof(tBTA_SYS_CB));
+void bta_sys_init(void) {
+ memset(&bta_sys_cb, 0, sizeof(tBTA_SYS_CB));
- btu_bta_alarm_queue = fixed_queue_new(SIZE_MAX);
+ btu_bta_alarm_queue = fixed_queue_new(SIZE_MAX);
- alarm_register_processing_queue(btu_bta_alarm_queue, bt_workqueue_thread);
+ alarm_register_processing_queue(btu_bta_alarm_queue, bt_workqueue_thread);
- appl_trace_level = APPL_INITIAL_TRACE_LEVEL;
+ appl_trace_level = APPL_INITIAL_TRACE_LEVEL;
- /* register BTA SYS message handler */
- bta_sys_register( BTA_ID_SYS, &bta_sys_hw_reg);
+ /* register BTA SYS message handler */
+ bta_sys_register(BTA_ID_SYS, &bta_sys_hw_reg);
- /* register for BTM notifications */
- BTM_RegisterForDeviceStatusNotif ((tBTM_DEV_STATUS_CB*)&bta_sys_hw_btm_cback );
+ /* register for BTM notifications */
+ BTM_RegisterForDeviceStatusNotif((tBTM_DEV_STATUS_CB*)&bta_sys_hw_btm_cback);
-#if( defined BTA_AR_INCLUDED ) && (BTA_AR_INCLUDED == true)
- bta_ar_init();
+#if (defined BTA_AR_INCLUDED) && (BTA_AR_INCLUDED == true)
+ bta_ar_init();
#endif
- bta_closure_init(bta_sys_register, bta_sys_sendmsg);
+ bta_closure_init(bta_sys_register, bta_sys_sendmsg);
}
void bta_sys_free(void) {
- alarm_unregister_processing_queue(btu_bta_alarm_queue);
- fixed_queue_free(btu_bta_alarm_queue, NULL);
- btu_bta_alarm_queue = NULL;
+ alarm_unregister_processing_queue(btu_bta_alarm_queue);
+ fixed_queue_free(btu_bta_alarm_queue, NULL);
+ btu_bta_alarm_queue = NULL;
}
/*******************************************************************************
@@ -206,198 +212,178 @@
* Returns void
*
******************************************************************************/
-bool bta_sys_sm_execute(BT_HDR *p_msg)
-{
- bool freebuf = true;
- tBTA_SYS_ST_TBL state_table;
- uint8_t action;
- int i;
+bool bta_sys_sm_execute(BT_HDR* p_msg) {
+ bool freebuf = true;
+ tBTA_SYS_ST_TBL state_table;
+ uint8_t action;
+ int i;
- APPL_TRACE_EVENT("bta_sys_sm_execute state:%d, event:0x%x", bta_sys_cb.state, p_msg->event);
+ APPL_TRACE_EVENT("bta_sys_sm_execute state:%d, event:0x%x", bta_sys_cb.state,
+ p_msg->event);
- /* look up the state table for the current state */
- state_table = bta_sys_st_tbl[bta_sys_cb.state];
- /* update state */
- bta_sys_cb.state = state_table[p_msg->event & 0x00ff][BTA_SYS_NEXT_STATE];
+ /* look up the state table for the current state */
+ state_table = bta_sys_st_tbl[bta_sys_cb.state];
+ /* update state */
+ bta_sys_cb.state = state_table[p_msg->event & 0x00ff][BTA_SYS_NEXT_STATE];
- /* execute action functions */
- for (i = 0; i < BTA_SYS_ACTIONS; i++)
- {
- if ((action = state_table[p_msg->event & 0x00ff][i]) != BTA_SYS_IGNORE)
- {
- (*bta_sys_action[action])( (tBTA_SYS_HW_MSG*) p_msg);
- }
- else
- {
- break;
- }
+ /* execute action functions */
+ for (i = 0; i < BTA_SYS_ACTIONS; i++) {
+ if ((action = state_table[p_msg->event & 0x00ff][i]) != BTA_SYS_IGNORE) {
+ (*bta_sys_action[action])((tBTA_SYS_HW_MSG*)p_msg);
+ } else {
+ break;
}
- return freebuf;
-
+ }
+ return freebuf;
}
-
-void bta_sys_hw_register( tBTA_SYS_HW_MODULE module, tBTA_SYS_HW_CBACK *cback)
-{
- bta_sys_cb.sys_hw_cback[module]=cback;
+void bta_sys_hw_register(tBTA_SYS_HW_MODULE module, tBTA_SYS_HW_CBACK* cback) {
+ bta_sys_cb.sys_hw_cback[module] = cback;
}
-
-void bta_sys_hw_unregister( tBTA_SYS_HW_MODULE module )
-{
- bta_sys_cb.sys_hw_cback[module]=NULL;
+void bta_sys_hw_unregister(tBTA_SYS_HW_MODULE module) {
+ bta_sys_cb.sys_hw_cback[module] = NULL;
}
/*******************************************************************************
*
* Function bta_sys_hw_btm_cback
*
- * Description This function is registered by BTA SYS to BTM in order to get status notifications
+ * Description This function is registered by BTA SYS to BTM in order to get
+ *status notifications
*
*
* Returns
*
******************************************************************************/
-void bta_sys_hw_btm_cback( tBTM_DEV_STATUS status )
-{
+void bta_sys_hw_btm_cback(tBTM_DEV_STATUS status) {
+ tBTA_SYS_HW_MSG* sys_event =
+ (tBTA_SYS_HW_MSG*)osi_malloc(sizeof(tBTA_SYS_HW_MSG));
- tBTA_SYS_HW_MSG *sys_event =
- (tBTA_SYS_HW_MSG *)osi_malloc(sizeof(tBTA_SYS_HW_MSG));
+ APPL_TRACE_DEBUG("%s was called with parameter: %i", __func__, status);
- APPL_TRACE_DEBUG("%s was called with parameter: %i", __func__, status);
+ /* send a message to BTA SYS */
+ if (status == BTM_DEV_STATUS_UP) {
+ sys_event->hdr.event = BTA_SYS_EVT_STACK_ENABLED_EVT;
+ } else if (status == BTM_DEV_STATUS_DOWN) {
+ sys_event->hdr.event = BTA_SYS_ERROR_EVT;
+ } else {
+ /* BTM_DEV_STATUS_CMD_TOUT is ignored for now. */
+ osi_free_and_reset((void**)&sys_event);
+ }
- /* send a message to BTA SYS */
- if (status == BTM_DEV_STATUS_UP) {
- sys_event->hdr.event = BTA_SYS_EVT_STACK_ENABLED_EVT;
- } else if (status == BTM_DEV_STATUS_DOWN) {
- sys_event->hdr.event = BTA_SYS_ERROR_EVT;
- } else {
- /* BTM_DEV_STATUS_CMD_TOUT is ignored for now. */
- osi_free_and_reset((void **)&sys_event);
- }
-
- if (sys_event)
- bta_sys_sendmsg(sys_event);
+ if (sys_event) bta_sys_sendmsg(sys_event);
}
/*******************************************************************************
*
* Function bta_sys_hw_error
*
- * Description In case the HW device stops answering... Try to turn it off, then re-enable all
+ * Description In case the HW device stops answering... Try to turn it off,
+ *then re-enable all
* previously active SW modules.
*
* Returns success or failure
*
******************************************************************************/
-void bta_sys_hw_error(UNUSED_ATTR tBTA_SYS_HW_MSG *p_sys_hw_msg)
-{
- uint8_t module_index;
+void bta_sys_hw_error(UNUSED_ATTR tBTA_SYS_HW_MSG* p_sys_hw_msg) {
+ uint8_t module_index;
- APPL_TRACE_DEBUG("%s", __func__);
+ APPL_TRACE_DEBUG("%s", __func__);
- for (module_index = 0; module_index < BTA_SYS_MAX_HW_MODULES; module_index++)
- {
- if( bta_sys_cb.sys_hw_module_active & ((uint32_t)1 << module_index )) {
- switch( module_index)
- {
- case BTA_SYS_HW_BLUETOOTH:
- /* Send BTA_SYS_HW_ERROR_EVT to DM */
- if (bta_sys_cb.sys_hw_cback[module_index] != NULL)
- bta_sys_cb.sys_hw_cback[module_index] (BTA_SYS_HW_ERROR_EVT);
- break;
- default:
- /* not yet supported */
- break;
- }
- }
+ for (module_index = 0; module_index < BTA_SYS_MAX_HW_MODULES;
+ module_index++) {
+ if (bta_sys_cb.sys_hw_module_active & ((uint32_t)1 << module_index)) {
+ switch (module_index) {
+ case BTA_SYS_HW_BLUETOOTH:
+ /* Send BTA_SYS_HW_ERROR_EVT to DM */
+ if (bta_sys_cb.sys_hw_cback[module_index] != NULL)
+ bta_sys_cb.sys_hw_cback[module_index](BTA_SYS_HW_ERROR_EVT);
+ break;
+ default:
+ /* not yet supported */
+ break;
+ }
}
+ }
}
-
-
/*******************************************************************************
*
* Function bta_sys_hw_enable
*
- * Description this function is called after API enable and HW has been turned on
+ * Description this function is called after API enable and HW has been
+ *turned on
*
*
* Returns success or failure
*
******************************************************************************/
-void bta_sys_hw_api_enable( tBTA_SYS_HW_MSG *p_sys_hw_msg )
-{
- if ((!bta_sys_cb.sys_hw_module_active) && (bta_sys_cb.state != BTA_SYS_HW_ON))
- {
- /* register which HW module was turned on */
- bta_sys_cb.sys_hw_module_active |= ((uint32_t)1 << p_sys_hw_msg->hw_module );
+void bta_sys_hw_api_enable(tBTA_SYS_HW_MSG* p_sys_hw_msg) {
+ if ((!bta_sys_cb.sys_hw_module_active) &&
+ (bta_sys_cb.state != BTA_SYS_HW_ON)) {
+ /* register which HW module was turned on */
+ bta_sys_cb.sys_hw_module_active |= ((uint32_t)1 << p_sys_hw_msg->hw_module);
- tBTA_SYS_HW_MSG *p_msg =
- (tBTA_SYS_HW_MSG *)osi_malloc(sizeof(tBTA_SYS_HW_MSG));
- p_msg->hdr.event = BTA_SYS_EVT_ENABLED_EVT;
- p_msg->hw_module = p_sys_hw_msg->hw_module;
+ tBTA_SYS_HW_MSG* p_msg =
+ (tBTA_SYS_HW_MSG*)osi_malloc(sizeof(tBTA_SYS_HW_MSG));
+ p_msg->hdr.event = BTA_SYS_EVT_ENABLED_EVT;
+ p_msg->hw_module = p_sys_hw_msg->hw_module;
- bta_sys_sendmsg(p_msg);
- }
- else
- {
- /* register which HW module was turned on */
- bta_sys_cb.sys_hw_module_active |= ((uint32_t)1 << p_sys_hw_msg->hw_module );
+ bta_sys_sendmsg(p_msg);
+ } else {
+ /* register which HW module was turned on */
+ bta_sys_cb.sys_hw_module_active |= ((uint32_t)1 << p_sys_hw_msg->hw_module);
- /* HW already in use, so directly notify the caller */
- if (bta_sys_cb.sys_hw_cback[p_sys_hw_msg->hw_module ]!= NULL )
- bta_sys_cb.sys_hw_cback[p_sys_hw_msg->hw_module ]( BTA_SYS_HW_ON_EVT );
- }
+ /* HW already in use, so directly notify the caller */
+ if (bta_sys_cb.sys_hw_cback[p_sys_hw_msg->hw_module] != NULL)
+ bta_sys_cb.sys_hw_cback[p_sys_hw_msg->hw_module](BTA_SYS_HW_ON_EVT);
+ }
- APPL_TRACE_EVENT ("bta_sys_hw_api_enable for %d, active modules 0x%04X",
- p_sys_hw_msg->hw_module, bta_sys_cb.sys_hw_module_active);
-
+ APPL_TRACE_EVENT("bta_sys_hw_api_enable for %d, active modules 0x%04X",
+ p_sys_hw_msg->hw_module, bta_sys_cb.sys_hw_module_active);
}
/*******************************************************************************
*
* Function bta_sys_hw_disable
*
- * Description if no other module is using the HW, this function will call ( if defined ) a user-macro to turn off the HW
+ * Description if no other module is using the HW, this function will call (
+ *if defined ) a user-macro to turn off the HW
*
*
* Returns success or failure
*
******************************************************************************/
-void bta_sys_hw_api_disable(tBTA_SYS_HW_MSG *p_sys_hw_msg)
-{
- APPL_TRACE_DEBUG("bta_sys_hw_api_disable for %d, active modules: 0x%04X",
- p_sys_hw_msg->hw_module, bta_sys_cb.sys_hw_module_active );
+void bta_sys_hw_api_disable(tBTA_SYS_HW_MSG* p_sys_hw_msg) {
+ APPL_TRACE_DEBUG("bta_sys_hw_api_disable for %d, active modules: 0x%04X",
+ p_sys_hw_msg->hw_module, bta_sys_cb.sys_hw_module_active);
- /* make sure the related SW blocks were stopped */
- bta_sys_disable( p_sys_hw_msg->hw_module );
+ /* make sure the related SW blocks were stopped */
+ bta_sys_disable(p_sys_hw_msg->hw_module);
+ /* register which module we turn off */
+ bta_sys_cb.sys_hw_module_active &= ~((uint32_t)1 << p_sys_hw_msg->hw_module);
- /* register which module we turn off */
- bta_sys_cb.sys_hw_module_active &= ~((uint32_t)1 << p_sys_hw_msg->hw_module );
+ /* if there are still some SW modules using the HW, just provide an answer to
+ * the calling */
+ if (bta_sys_cb.sys_hw_module_active != 0) {
+ /* if there are still some SW modules using the HW, directly notify the
+ * caller */
+ if (bta_sys_cb.sys_hw_cback[p_sys_hw_msg->hw_module] != NULL)
+ bta_sys_cb.sys_hw_cback[p_sys_hw_msg->hw_module](BTA_SYS_HW_OFF_EVT);
+ } else {
+ /* manually update the state of our system */
+ bta_sys_cb.state = BTA_SYS_HW_STOPPING;
+ tBTA_SYS_HW_MSG* p_msg =
+ (tBTA_SYS_HW_MSG*)osi_malloc(sizeof(tBTA_SYS_HW_MSG));
+ p_msg->hdr.event = BTA_SYS_EVT_DISABLED_EVT;
+ p_msg->hw_module = p_sys_hw_msg->hw_module;
- /* if there are still some SW modules using the HW, just provide an answer to the calling */
- if( bta_sys_cb.sys_hw_module_active != 0 )
- {
- /* if there are still some SW modules using the HW, directly notify the caller */
- if( bta_sys_cb.sys_hw_cback[p_sys_hw_msg->hw_module ]!= NULL )
- bta_sys_cb.sys_hw_cback[p_sys_hw_msg->hw_module ]( BTA_SYS_HW_OFF_EVT );
- }
- else
- {
- /* manually update the state of our system */
- bta_sys_cb.state = BTA_SYS_HW_STOPPING;
-
- tBTA_SYS_HW_MSG *p_msg =
- (tBTA_SYS_HW_MSG *)osi_malloc(sizeof(tBTA_SYS_HW_MSG));
- p_msg->hdr.event = BTA_SYS_EVT_DISABLED_EVT;
- p_msg->hw_module = p_sys_hw_msg->hw_module;
-
- bta_sys_sendmsg(p_msg);
- }
+ bta_sys_sendmsg(p_msg);
+ }
}
/*******************************************************************************
@@ -410,13 +396,11 @@
* Returns success or failure
*
******************************************************************************/
-void bta_sys_hw_evt_enabled(tBTA_SYS_HW_MSG *p_sys_hw_msg)
-{
- APPL_TRACE_EVENT("bta_sys_hw_evt_enabled for %i", p_sys_hw_msg->hw_module);
- BTM_DeviceReset( NULL );
+void bta_sys_hw_evt_enabled(tBTA_SYS_HW_MSG* p_sys_hw_msg) {
+ APPL_TRACE_EVENT("bta_sys_hw_evt_enabled for %i", p_sys_hw_msg->hw_module);
+ BTM_DeviceReset(NULL);
}
-
/*******************************************************************************
*
* Function bta_sys_hw_event_disabled
@@ -427,45 +411,43 @@
* Returns success or failure
*
******************************************************************************/
-void bta_sys_hw_evt_disabled(tBTA_SYS_HW_MSG *p_sys_hw_msg)
-{
- uint8_t hw_module_index;
+void bta_sys_hw_evt_disabled(tBTA_SYS_HW_MSG* p_sys_hw_msg) {
+ uint8_t hw_module_index;
- APPL_TRACE_DEBUG("bta_sys_hw_evt_disabled - module 0x%X", p_sys_hw_msg->hw_module);
+ APPL_TRACE_DEBUG("bta_sys_hw_evt_disabled - module 0x%X",
+ p_sys_hw_msg->hw_module);
- for (hw_module_index = 0; hw_module_index < BTA_SYS_MAX_HW_MODULES; hw_module_index++)
- {
- if (bta_sys_cb.sys_hw_cback[hw_module_index] != NULL)
- bta_sys_cb.sys_hw_cback[hw_module_index] (BTA_SYS_HW_OFF_EVT);
- }
+ for (hw_module_index = 0; hw_module_index < BTA_SYS_MAX_HW_MODULES;
+ hw_module_index++) {
+ if (bta_sys_cb.sys_hw_cback[hw_module_index] != NULL)
+ bta_sys_cb.sys_hw_cback[hw_module_index](BTA_SYS_HW_OFF_EVT);
+ }
}
/*******************************************************************************
*
* Function bta_sys_hw_event_stack_enabled
*
- * Description we receive this event once the SW side is ready ( stack, FW download,... ),
- * i.e. we can really start using the device. So notify the app.
+ * Description we receive this event once the SW side is ready ( stack, FW
+ *download,... ),
+ * i.e. we can really start using the device. So notify
+ *the app.
*
* Returns success or failure
*
******************************************************************************/
-void bta_sys_hw_evt_stack_enabled(UNUSED_ATTR tBTA_SYS_HW_MSG *p_sys_hw_msg)
-{
- uint8_t hw_module_index;
+void bta_sys_hw_evt_stack_enabled(UNUSED_ATTR tBTA_SYS_HW_MSG* p_sys_hw_msg) {
+ uint8_t hw_module_index;
- APPL_TRACE_DEBUG(" bta_sys_hw_evt_stack_enabled!notify the callers");
+ APPL_TRACE_DEBUG(" bta_sys_hw_evt_stack_enabled!notify the callers");
- for (hw_module_index = 0; hw_module_index < BTA_SYS_MAX_HW_MODULES; hw_module_index++ )
- {
- if (bta_sys_cb.sys_hw_cback[hw_module_index] != NULL)
- bta_sys_cb.sys_hw_cback[hw_module_index] (BTA_SYS_HW_ON_EVT);
- }
+ for (hw_module_index = 0; hw_module_index < BTA_SYS_MAX_HW_MODULES;
+ hw_module_index++) {
+ if (bta_sys_cb.sys_hw_cback[hw_module_index] != NULL)
+ bta_sys_cb.sys_hw_cback[hw_module_index](BTA_SYS_HW_ON_EVT);
+ }
}
-
-
-
/*******************************************************************************
*
* Function bta_sys_event
@@ -476,31 +458,25 @@
* Returns void
*
******************************************************************************/
-void bta_sys_event(BT_HDR *p_msg)
-{
- uint8_t id;
- bool freebuf = true;
+void bta_sys_event(BT_HDR* p_msg) {
+ uint8_t id;
+ bool freebuf = true;
- APPL_TRACE_EVENT("BTA got event 0x%x", p_msg->event);
+ APPL_TRACE_EVENT("BTA got event 0x%x", p_msg->event);
- /* get subsystem id from event */
- id = (uint8_t) (p_msg->event >> 8);
+ /* get subsystem id from event */
+ id = (uint8_t)(p_msg->event >> 8);
- /* verify id and call subsystem event handler */
- if ((id < BTA_ID_MAX) && (bta_sys_cb.reg[id] != NULL))
- {
- freebuf = (*bta_sys_cb.reg[id]->evt_hdlr)(p_msg);
- }
- else
- {
- APPL_TRACE_WARNING("BTA got unregistered event id %d", id);
- }
+ /* verify id and call subsystem event handler */
+ if ((id < BTA_ID_MAX) && (bta_sys_cb.reg[id] != NULL)) {
+ freebuf = (*bta_sys_cb.reg[id]->evt_hdlr)(p_msg);
+ } else {
+ APPL_TRACE_WARNING("BTA got unregistered event id %d", id);
+ }
- if (freebuf)
- {
- osi_free(p_msg);
- }
-
+ if (freebuf) {
+ osi_free(p_msg);
+ }
}
/*******************************************************************************
@@ -514,10 +490,9 @@
* Returns void
*
******************************************************************************/
-void bta_sys_register(uint8_t id, const tBTA_SYS_REG *p_reg)
-{
- bta_sys_cb.reg[id] = (tBTA_SYS_REG *) p_reg;
- bta_sys_cb.is_reg[id] = true;
+void bta_sys_register(uint8_t id, const tBTA_SYS_REG* p_reg) {
+ bta_sys_cb.reg[id] = (tBTA_SYS_REG*)p_reg;
+ bta_sys_cb.is_reg[id] = true;
}
/*******************************************************************************
@@ -531,10 +506,7 @@
* Returns void
*
******************************************************************************/
-void bta_sys_deregister(uint8_t id)
-{
- bta_sys_cb.is_reg[id] = false;
-}
+void bta_sys_deregister(uint8_t id) { bta_sys_cb.is_reg[id] = false; }
/*******************************************************************************
*
@@ -547,10 +519,7 @@
* Returns void
*
******************************************************************************/
-bool bta_sys_is_register(uint8_t id)
-{
- return bta_sys_cb.is_reg[id];
-}
+bool bta_sys_is_register(uint8_t id) { return bta_sys_cb.is_reg[id]; }
/*******************************************************************************
*
@@ -564,14 +533,12 @@
* Returns void
*
******************************************************************************/
-void bta_sys_sendmsg(void *p_msg)
-{
- // There is a race condition that occurs if the stack is shut down while
- // there is a procedure in progress that can schedule a task via this
- // message queue. This causes |btu_bta_msg_queue| to get cleaned up before
- // it gets used here; hence we check for NULL before using it.
- if (btu_bta_msg_queue)
- fixed_queue_enqueue(btu_bta_msg_queue, p_msg);
+void bta_sys_sendmsg(void* p_msg) {
+ // There is a race condition that occurs if the stack is shut down while
+ // there is a procedure in progress that can schedule a task via this
+ // message queue. This causes |btu_bta_msg_queue| to get cleaned up before
+ // it gets used here; hence we check for NULL before using it.
+ if (btu_bta_msg_queue) fixed_queue_enqueue(btu_bta_msg_queue, p_msg);
}
/*******************************************************************************
@@ -584,15 +551,14 @@
* Returns void
*
******************************************************************************/
-void bta_sys_start_timer(alarm_t *alarm, period_ms_t interval, uint16_t event,
- uint16_t layer_specific)
-{
- BT_HDR *p_buf = (BT_HDR *)osi_malloc(sizeof(BT_HDR));
+void bta_sys_start_timer(alarm_t* alarm, period_ms_t interval, uint16_t event,
+ uint16_t layer_specific) {
+ BT_HDR* p_buf = (BT_HDR*)osi_malloc(sizeof(BT_HDR));
- p_buf->event = event;
- p_buf->layer_specific = layer_specific;
- alarm_set_on_queue(alarm, interval, bta_sys_sendmsg, p_buf,
- btu_bta_alarm_queue);
+ p_buf->event = event;
+ p_buf->layer_specific = layer_specific;
+ alarm_set_on_queue(alarm, interval, bta_sys_sendmsg, p_buf,
+ btu_bta_alarm_queue);
}
/*******************************************************************************
@@ -604,34 +570,30 @@
* Returns void
*
******************************************************************************/
-void bta_sys_disable(tBTA_SYS_HW_MODULE module)
-{
- int bta_id = 0;
- int bta_id_max = 0;
+void bta_sys_disable(tBTA_SYS_HW_MODULE module) {
+ int bta_id = 0;
+ int bta_id_max = 0;
- APPL_TRACE_DEBUG("bta_sys_disable: module %i", module);
+ APPL_TRACE_DEBUG("bta_sys_disable: module %i", module);
- switch( module )
- {
- case BTA_SYS_HW_BLUETOOTH:
- bta_id = BTA_ID_DM;
- bta_id_max = BTA_ID_BLUETOOTH_MAX;
- break;
- default:
- APPL_TRACE_WARNING("bta_sys_disable: unkown module");
- return;
+ switch (module) {
+ case BTA_SYS_HW_BLUETOOTH:
+ bta_id = BTA_ID_DM;
+ bta_id_max = BTA_ID_BLUETOOTH_MAX;
+ break;
+ default:
+ APPL_TRACE_WARNING("bta_sys_disable: unkown module");
+ return;
+ }
+
+ for (; bta_id <= bta_id_max; bta_id++) {
+ if (bta_sys_cb.reg[bta_id] != NULL) {
+ if (bta_sys_cb.is_reg[bta_id] == true &&
+ bta_sys_cb.reg[bta_id]->disable != NULL) {
+ (*bta_sys_cb.reg[bta_id]->disable)();
+ }
}
-
- for ( ; bta_id <= bta_id_max; bta_id++)
- {
- if (bta_sys_cb.reg[bta_id] != NULL)
- {
- if (bta_sys_cb.is_reg[bta_id] == true && bta_sys_cb.reg[bta_id]->disable != NULL)
- {
- (*bta_sys_cb.reg[bta_id]->disable)();
- }
- }
- }
+ }
}
/*******************************************************************************
@@ -643,10 +605,7 @@
* Returns void
*
******************************************************************************/
-void bta_sys_set_trace_level(uint8_t level)
-{
- appl_trace_level = level;
-}
+void bta_sys_set_trace_level(uint8_t level) { appl_trace_level = level; }
/*******************************************************************************
*
@@ -657,7 +616,4 @@
* Returns sys_features
*
******************************************************************************/
-uint16_t bta_sys_get_sys_features (void)
-{
- return bta_sys_cb.sys_features;
-}
+uint16_t bta_sys_get_sys_features(void) { return bta_sys_cb.sys_features; }
diff --git a/bta/sys/utl.cc b/bta/sys/utl.cc
index 1c5528c..fc1a12a 100644
--- a/bta/sys/utl.cc
+++ b/bta/sys/utl.cc
@@ -23,9 +23,9 @@
******************************************************************************/
#include <stddef.h>
-#include "utl.h"
#include "bt_common.h"
#include "btm_api.h"
+#include "utl.h"
/*******************************************************************************
*
@@ -40,31 +40,27 @@
* Returns Integer value or -1 on error.
*
******************************************************************************/
-int16_t utl_str2int(const char *p_s)
-{
- int32_t val = 0;
+int16_t utl_str2int(const char* p_s) {
+ int32_t val = 0;
- for (;*p_s == ' ' && *p_s != 0; p_s++);
+ for (; *p_s == ' ' && *p_s != 0; p_s++)
+ ;
- if (*p_s == 0) return -1;
+ if (*p_s == 0) return -1;
- for (;;)
- {
- if ((*p_s < '0') || (*p_s > '9')) return -1;
+ for (;;) {
+ if ((*p_s < '0') || (*p_s > '9')) return -1;
- val += (int32_t) (*p_s++ - '0');
+ val += (int32_t)(*p_s++ - '0');
- if (val > 32767) return -1;
+ if (val > 32767) return -1;
- if (*p_s == 0)
- {
- return (int16_t) val;
- }
- else
- {
- val *= 10;
- }
+ if (*p_s == 0) {
+ return (int16_t)val;
+ } else {
+ val *= 10;
}
+ }
}
/*******************************************************************************
@@ -80,32 +76,26 @@
* Returns 0 if strings match, nonzero otherwise.
*
******************************************************************************/
-int utl_strucmp(const char *p_s, const char *p_t)
-{
- char c;
+int utl_strucmp(const char* p_s, const char* p_t) {
+ char c;
- while (*p_s && *p_t)
- {
- c = *p_t++;
- if (c >= 'a' && c <= 'z')
- {
- c -= 0x20;
- }
- if (*p_s++ != c)
- {
- return -1;
- }
+ while (*p_s && *p_t) {
+ c = *p_t++;
+ if (c >= 'a' && c <= 'z') {
+ c -= 0x20;
}
- /* if p_t hit null first, no match */
- if (*p_t == 0 && *p_s != 0)
- {
- return 1;
+ if (*p_s++ != c) {
+ return -1;
}
- /* else p_s hit null first, count as match */
- else
- {
- return 0;
- }
+ }
+ /* if p_t hit null first, no match */
+ if (*p_t == 0 && *p_s != 0) {
+ return 1;
+ }
+ /* else p_s hit null first, count as match */
+ else {
+ return 0;
+ }
}
/*******************************************************************************
@@ -120,32 +110,26 @@
* Returns Length of string.
*
******************************************************************************/
-uint8_t utl_itoa(uint16_t i, char *p_s)
-{
- uint16_t j, k;
- char *p = p_s;
- bool fill = false;
+uint8_t utl_itoa(uint16_t i, char* p_s) {
+ uint16_t j, k;
+ char* p = p_s;
+ bool fill = false;
- if (i == 0)
- {
- /* take care of zero case */
- *p++ = '0';
+ if (i == 0) {
+ /* take care of zero case */
+ *p++ = '0';
+ } else {
+ for (j = 10000; j > 0; j /= 10) {
+ k = i / j;
+ i %= j;
+ if (k > 0 || fill) {
+ *p++ = k + '0';
+ fill = true;
+ }
}
- else
- {
- for(j = 10000; j > 0; j /= 10)
- {
- k = i / j;
- i %= j;
- if (k > 0 || fill)
- {
- *p++ = k + '0';
- fill = true;
- }
- }
- }
- *p = 0;
- return (uint8_t) (p - p_s);
+ }
+ *p = 0;
+ return (uint8_t)(p - p_s);
}
/*******************************************************************************
@@ -158,69 +142,71 @@
* p_cod - Pointer to the device class to set to
*
* cmd - the fields of the device class to update.
- * BTA_UTL_SET_COD_MAJOR_MINOR, - overwrite major, minor class
- * BTA_UTL_SET_COD_SERVICE_CLASS - set the bits in the input
- * BTA_UTL_CLR_COD_SERVICE_CLASS - clear the bits in the input
- * BTA_UTL_SET_COD_ALL - overwrite major, minor, set the bits in service class
- * BTA_UTL_INIT_COD - overwrite major, minor, and service class
+ * BTA_UTL_SET_COD_MAJOR_MINOR, - overwrite major,
+ *minor class
+ * BTA_UTL_SET_COD_SERVICE_CLASS - set the bits in
+ *the input
+ * BTA_UTL_CLR_COD_SERVICE_CLASS - clear the bits in
+ *the input
+ * BTA_UTL_SET_COD_ALL - overwrite major, minor, set
+ *the bits in service class
+ * BTA_UTL_INIT_COD - overwrite major, minor, and
+ *service class
*
* Returns true if successful, Otherwise false
*
******************************************************************************/
-bool utl_set_device_class(tBTA_UTL_COD *p_cod, uint8_t cmd)
-{
- uint8_t *dev;
- uint16_t service;
- uint8_t minor, major;
- DEV_CLASS dev_class;
+bool utl_set_device_class(tBTA_UTL_COD* p_cod, uint8_t cmd) {
+ uint8_t* dev;
+ uint16_t service;
+ uint8_t minor, major;
+ DEV_CLASS dev_class;
- dev = BTM_ReadDeviceClass();
- BTM_COD_SERVICE_CLASS( service, dev );
- BTM_COD_MINOR_CLASS(minor, dev );
- BTM_COD_MAJOR_CLASS(major, dev );
+ dev = BTM_ReadDeviceClass();
+ BTM_COD_SERVICE_CLASS(service, dev);
+ BTM_COD_MINOR_CLASS(minor, dev);
+ BTM_COD_MAJOR_CLASS(major, dev);
- switch(cmd)
- {
+ switch (cmd) {
case BTA_UTL_SET_COD_MAJOR_MINOR:
- minor = p_cod->minor & BTM_COD_MINOR_CLASS_MASK;
- major = p_cod->major & BTM_COD_MAJOR_CLASS_MASK;
- break;
+ minor = p_cod->minor & BTM_COD_MINOR_CLASS_MASK;
+ major = p_cod->major & BTM_COD_MAJOR_CLASS_MASK;
+ break;
case BTA_UTL_SET_COD_SERVICE_CLASS:
- /* clear out the bits that is not SERVICE_CLASS bits */
- p_cod->service &= BTM_COD_SERVICE_CLASS_MASK;
- service = service | p_cod->service;
- break;
+ /* clear out the bits that is not SERVICE_CLASS bits */
+ p_cod->service &= BTM_COD_SERVICE_CLASS_MASK;
+ service = service | p_cod->service;
+ break;
case BTA_UTL_CLR_COD_SERVICE_CLASS:
- p_cod->service &= BTM_COD_SERVICE_CLASS_MASK;
- service = service & (~p_cod->service);
- break;
+ p_cod->service &= BTM_COD_SERVICE_CLASS_MASK;
+ service = service & (~p_cod->service);
+ break;
case BTA_UTL_SET_COD_ALL:
- minor = p_cod->minor & BTM_COD_MINOR_CLASS_MASK;
- major = p_cod->major & BTM_COD_MAJOR_CLASS_MASK;
- p_cod->service &= BTM_COD_SERVICE_CLASS_MASK;
- service = service | p_cod->service;
- break;
+ minor = p_cod->minor & BTM_COD_MINOR_CLASS_MASK;
+ major = p_cod->major & BTM_COD_MAJOR_CLASS_MASK;
+ p_cod->service &= BTM_COD_SERVICE_CLASS_MASK;
+ service = service | p_cod->service;
+ break;
case BTA_UTL_INIT_COD:
- minor = p_cod->minor & BTM_COD_MINOR_CLASS_MASK;
- major = p_cod->major & BTM_COD_MAJOR_CLASS_MASK;
- service = p_cod->service & BTM_COD_SERVICE_CLASS_MASK;
- break;
+ minor = p_cod->minor & BTM_COD_MINOR_CLASS_MASK;
+ major = p_cod->major & BTM_COD_MAJOR_CLASS_MASK;
+ service = p_cod->service & BTM_COD_SERVICE_CLASS_MASK;
+ break;
default:
- return false;
- }
+ return false;
+ }
- /* convert the fields into the device class type */
- FIELDS_TO_COD(dev_class, minor, major, service);
+ /* convert the fields into the device class type */
+ FIELDS_TO_COD(dev_class, minor, major, service);
- if (BTM_SetDeviceClass(dev_class) == BTM_SUCCESS)
- return true;
+ if (BTM_SetDeviceClass(dev_class) == BTM_SUCCESS) return true;
- return false;
+ return false;
}
/*******************************************************************************
@@ -234,17 +220,14 @@
* Returns true if successful, Otherwise false
*
******************************************************************************/
-bool utl_isintstr(const char *p_s)
-{
- uint16_t i = 0;
+bool utl_isintstr(const char* p_s) {
+ uint16_t i = 0;
- for(i=0; p_s[i] != 0; i++)
- {
- if(((p_s[i] < '0') || (p_s[i] > '9')) && (p_s[i] != ';'))
- return false;
- }
+ for (i = 0; p_s[i] != 0; i++) {
+ if (((p_s[i] < '0') || (p_s[i] > '9')) && (p_s[i] != ';')) return false;
+ }
- return true;
+ return true;
}
/*******************************************************************************
@@ -257,13 +240,10 @@
* Returns true if successful, Otherwise false
*
******************************************************************************/
-bool utl_isdialchar(const char d)
-{
- return (((d >= '0') && (d <= '9'))
- || (d == '*') || (d == '+') || (d == '#') || (d == ';')
- || ((d >= 'A') && (d <= 'C'))
- || ((d == 'p') || (d == 'P')
- || (d == 'w') || (d == 'W')));
+bool utl_isdialchar(const char d) {
+ return (((d >= '0') && (d <= '9')) || (d == '*') || (d == '+') ||
+ (d == '#') || (d == ';') || ((d >= 'A') && (d <= 'C')) ||
+ ((d == 'p') || (d == 'P') || (d == 'w') || (d == 'W')));
}
/*******************************************************************************
@@ -277,15 +257,10 @@
* Returns true if successful, Otherwise false
*
******************************************************************************/
-bool utl_isdialstr(const char *p_s)
-{
- for (uint16_t i = 0; p_s[i] != 0; i++) {
- // include chars not in spec that work sent by some headsets.
- if(!(utl_isdialchar(p_s[i])
- || (p_s[i] == '-')))
- return false;
- }
- return true;
+bool utl_isdialstr(const char* p_s) {
+ for (uint16_t i = 0; p_s[i] != 0; i++) {
+ // include chars not in spec that work sent by some headsets.
+ if (!(utl_isdialchar(p_s[i]) || (p_s[i] == '-'))) return false;
+ }
+ return true;
}
-
-
diff --git a/bta/test/bta_closure_test.cc b/bta/test/bta_closure_test.cc
index dbdc5e7..75473c8 100644
--- a/bta/test/bta_closure_test.cc
+++ b/bta/test/bta_closure_test.cc
@@ -30,29 +30,29 @@
int test_counter = 0;
int msg_send_counter = 0;
-tBTA_SYS_EVT_HDLR *closure_handler = NULL;
-void *msg = NULL;
+tBTA_SYS_EVT_HDLR* closure_handler = NULL;
+void* msg = NULL;
void test_plus_one_task() { test_counter++; }
void test_plus_two_task() { test_counter += 2; }
-void fake_bta_sys_sendmsg(void *p_msg) {
+void fake_bta_sys_sendmsg(void* p_msg) {
msg_send_counter++;
msg = p_msg;
}
-void fake_bta_sys_register(uint8_t id, const tBTA_SYS_REG *p_reg) {
+void fake_bta_sys_register(uint8_t id, const tBTA_SYS_REG* p_reg) {
closure_handler = p_reg->evt_hdlr;
}
-bool fake_bta_sys_sendmsg_execute() { return closure_handler((BT_HDR *)msg); }
+bool fake_bta_sys_sendmsg_execute() { return closure_handler((BT_HDR*)msg); }
} // namespace
// TODO(jpawlowski): there is some weird dependency issue in tests, and the
// tests here fail to compile without this definition.
-extern "C" void LogMsg(uint32_t trace_set_mask, const char *fmt_str, ...) {}
+extern "C" void LogMsg(uint32_t trace_set_mask, const char* fmt_str, ...) {}
TEST(ClosureTest, test_post_task) {
msg_send_counter = 0;