Merge "Make AdvertiseManager shutdown gracefully"
diff --git a/binder/android/bluetooth/IBluetoothHeadset.aidl b/binder/android/bluetooth/IBluetoothHeadset.aidl
index 71f6713..60a92d2 100644
--- a/binder/android/bluetooth/IBluetoothHeadset.aidl
+++ b/binder/android/bluetooth/IBluetoothHeadset.aidl
@@ -58,4 +58,5 @@
String number, int type);
boolean setActiveDevice(in BluetoothDevice device);
BluetoothDevice getActiveDevice();
+ boolean isInbandRingingEnabled();
}
diff --git a/bta/ag/bta_ag_act.cc b/bta/ag/bta_ag_act.cc
index 1d6da2a..a242c0d 100644
--- a/bta/ag/bta_ag_act.cc
+++ b/bta/ag/bta_ag_act.cc
@@ -25,7 +25,6 @@
#include <cstring>
#include "bta_ag_api.h"
-#include "bta_ag_co.h"
#include "bta_ag_int.h"
#include "bta_api.h"
#include "bta_dm_api.h"
@@ -403,9 +402,6 @@
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);
-
if (bta_ag_get_active_device() == p_scb->peer_addr) {
bta_clear_active_device();
}
@@ -477,10 +473,6 @@
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]);
-
bta_sys_conn_open(BTA_ID_AG, p_scb->app_id, p_scb->peer_addr);
bta_ag_cback_open(p_scb, nullptr, BTA_AG_SUCCESS);
@@ -779,54 +771,6 @@
/*******************************************************************************
*
- * Function bta_ag_ci_rx_data
- *
- * Description Send result code
- *
- * 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 = &p_data->ci_rx_write;
- 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);
- }
-}
-
-/*******************************************************************************
- *
- * Function bta_ag_rcvd_slc_ready
- *
- * Description Handles SLC ready call-in in case of pass-through mode.
- *
- * 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));
-
- 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, nullptr);
- }
-}
-
-/*******************************************************************************
- *
* Function bta_ag_setcodec
*
* Description Handle API SetCodec
diff --git a/bta/ag/bta_ag_api.cc b/bta/ag/bta_ag_api.cc
index b35f136..c4f2ddf 100644
--- a/bta/ag/bta_ag_api.cc
+++ b/bta/ag/bta_ag_api.cc
@@ -50,8 +50,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_CBACK* p_cback) {
/* Error if AG is already enabled, or AG is in the middle of disabling. */
for (const tBTA_AG_SCB& scb : bta_ag_cb.scb) {
if (scb.in_use) {
@@ -66,7 +65,6 @@
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);
diff --git a/bta/ag/bta_ag_int.h b/bta/ag/bta_ag_int.h
index 847f01e..37a8d95 100644
--- a/bta/ag/bta_ag_int.h
+++ b/bta/ag/bta_ag_int.h
@@ -82,11 +82,8 @@
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 */
@@ -130,7 +127,6 @@
/* data type for BTA_AG_API_ENABLE_EVT */
typedef struct {
BT_HDR hdr;
- tBTA_AG_PARSE_MODE parse_mode;
tBTA_AG_CBACK* p_cback;
} tBTA_AG_API_ENABLE;
@@ -188,12 +184,6 @@
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];
-} tBTA_AG_CI_RX_WRITE;
-
/* union of all event datatypes */
typedef union {
BT_HDR hdr;
@@ -206,7 +196,6 @@
tBTA_AG_API_SET_ACTIVE_DEVICE api_set_active_device;
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 */
@@ -295,7 +284,6 @@
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;
/*****************************************************************************
@@ -398,9 +386,6 @@
extern void bta_ag_setcodec(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);
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_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_set_sco_allowed(tBTA_AG_DATA* p_data);
extern const RawAddress& bta_ag_get_active_device();
extern void bta_clear_active_device();
diff --git a/bta/ag/bta_ag_main.cc b/bta/ag/bta_ag_main.cc
index 89a6827..56a2638 100644
--- a/bta/ag/bta_ag_main.cc
+++ b/bta/ag/bta_ag_main.cc
@@ -24,7 +24,6 @@
#include <string.h>
-#include "bta_ag_co.h"
#include "bta_ag_int.h"
#include "bta_api.h"
#include "bta_sys.h"
@@ -34,15 +33,6 @@
/*****************************************************************************
* Constants and types
****************************************************************************/
-#ifndef BTA_AG_DEBUG
-#define BTA_AG_DEBUG FALSE
-#endif
-
-#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);
-#endif
-
/* state machine states */
enum { BTA_AG_INIT_ST, BTA_AG_OPENING_ST, BTA_AG_OPEN_ST, BTA_AG_CLOSING_ST };
@@ -77,9 +67,6 @@
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
};
@@ -88,6 +75,83 @@
/* type for action functions */
typedef void (*tBTA_AG_ACTION)(tBTA_AG_SCB* p_scb, tBTA_AG_DATA* p_data);
+#define CASE_RETURN_STR(const) \
+ case const: \
+ return #const;
+
+static const char* bta_ag_res_str(tBTA_AG_RES result) {
+ switch (result) {
+ CASE_RETURN_STR(BTA_AG_SPK_RES)
+ CASE_RETURN_STR(BTA_AG_MIC_RES)
+ CASE_RETURN_STR(BTA_AG_INBAND_RING_RES)
+ CASE_RETURN_STR(BTA_AG_CIND_RES)
+ CASE_RETURN_STR(BTA_AG_BINP_RES)
+ CASE_RETURN_STR(BTA_AG_IND_RES)
+ CASE_RETURN_STR(BTA_AG_BVRA_RES)
+ CASE_RETURN_STR(BTA_AG_CNUM_RES)
+ CASE_RETURN_STR(BTA_AG_BTRH_RES)
+ CASE_RETURN_STR(BTA_AG_CLCC_RES)
+ CASE_RETURN_STR(BTA_AG_COPS_RES)
+ CASE_RETURN_STR(BTA_AG_IN_CALL_RES)
+ CASE_RETURN_STR(BTA_AG_IN_CALL_CONN_RES)
+ CASE_RETURN_STR(BTA_AG_CALL_WAIT_RES)
+ CASE_RETURN_STR(BTA_AG_OUT_CALL_ORIG_RES)
+ CASE_RETURN_STR(BTA_AG_OUT_CALL_ALERT_RES)
+ CASE_RETURN_STR(BTA_AG_OUT_CALL_CONN_RES)
+ CASE_RETURN_STR(BTA_AG_CALL_CANCEL_RES)
+ CASE_RETURN_STR(BTA_AG_END_CALL_RES)
+ CASE_RETURN_STR(BTA_AG_IN_CALL_HELD_RES)
+ CASE_RETURN_STR(BTA_AG_UNAT_RES)
+ CASE_RETURN_STR(BTA_AG_MULTI_CALL_RES)
+ CASE_RETURN_STR(BTA_AG_BIND_RES)
+ CASE_RETURN_STR(BTA_AG_IND_RES_ON_DEMAND)
+ default:
+ return "Unknown AG Result";
+ }
+}
+
+static const char* bta_ag_evt_str(uint16_t event) {
+ switch (event) {
+ CASE_RETURN_STR(BTA_AG_API_REGISTER_EVT)
+ CASE_RETURN_STR(BTA_AG_API_DEREGISTER_EVT)
+ CASE_RETURN_STR(BTA_AG_API_OPEN_EVT)
+ CASE_RETURN_STR(BTA_AG_API_CLOSE_EVT)
+ CASE_RETURN_STR(BTA_AG_API_AUDIO_OPEN_EVT)
+ CASE_RETURN_STR(BTA_AG_API_AUDIO_CLOSE_EVT)
+ CASE_RETURN_STR(BTA_AG_API_RESULT_EVT)
+ CASE_RETURN_STR(BTA_AG_API_SETCODEC_EVT)
+ CASE_RETURN_STR(BTA_AG_RFC_OPEN_EVT)
+ CASE_RETURN_STR(BTA_AG_RFC_CLOSE_EVT)
+ CASE_RETURN_STR(BTA_AG_RFC_SRV_CLOSE_EVT)
+ CASE_RETURN_STR(BTA_AG_RFC_DATA_EVT)
+ CASE_RETURN_STR(BTA_AG_SCO_OPEN_EVT)
+ CASE_RETURN_STR(BTA_AG_SCO_CLOSE_EVT)
+ CASE_RETURN_STR(BTA_AG_DISC_ACP_RES_EVT)
+ CASE_RETURN_STR(BTA_AG_DISC_INT_RES_EVT)
+ CASE_RETURN_STR(BTA_AG_DISC_OK_EVT)
+ CASE_RETURN_STR(BTA_AG_DISC_FAIL_EVT)
+ CASE_RETURN_STR(BTA_AG_RING_TIMEOUT_EVT)
+ CASE_RETURN_STR(BTA_AG_SVC_TIMEOUT_EVT)
+ CASE_RETURN_STR(BTA_AG_API_ENABLE_EVT)
+ CASE_RETURN_STR(BTA_AG_API_DISABLE_EVT)
+ CASE_RETURN_STR(BTA_AG_API_SET_SCO_ALLOWED_EVT)
+ CASE_RETURN_STR(BTA_AG_API_SET_ACTIVE_DEVICE_EVT)
+ default:
+ return "Unknown AG Event";
+ }
+}
+
+static const char* bta_ag_state_str(uint8_t state) {
+ switch (state) {
+ CASE_RETURN_STR(BTA_AG_INIT_ST)
+ CASE_RETURN_STR(BTA_AG_OPENING_ST)
+ CASE_RETURN_STR(BTA_AG_OPEN_ST)
+ CASE_RETURN_STR(BTA_AG_CLOSING_ST)
+ default:
+ return "Unknown AG State";
+ }
+}
+
/* action functions */
const tBTA_AG_ACTION bta_ag_action[] = {
bta_ag_register, bta_ag_deregister, bta_ag_start_open,
@@ -99,8 +163,7 @@
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_setcodec, bta_ag_send_ring};
/* state table information */
#define BTA_AG_ACTIONS 2 /* number of actions */
@@ -128,18 +191,15 @@
/* 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}};
+ /* SVC_TOUT_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_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},
@@ -151,25 +211,22 @@
/* 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},
+ /* 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_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}};
+ /* SVC_TOUT_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_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},
@@ -180,27 +237,23 @@
/* 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},
+ /* 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}};
+ /* SVC_TOUT_EVT */ {BTA_AG_START_CLOSE, BTA_AG_IGNORE, BTA_AG_CLOSING_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_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},
@@ -212,17 +265,14 @@
/* 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},
+ /* 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}};
+ /* SVC_TOUT_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];
@@ -586,10 +636,9 @@
/* 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();
+ BTM_WriteVoiceSettings(AG_VOICE_SETTINGS);
bta_sys_collision_register(BTA_ID_AG, bta_ag_collision_cback);
@@ -706,26 +755,20 @@
tBTA_AG_ST_TBL state_table;
uint8_t action;
int i;
-#if (BTA_AG_DEBUG == TRUE)
uint16_t previous_event = event;
uint8_t previous_state = p_scb->state;
/* Ignore displaying of AT results when not connected (Ignored in state
* machine) */
- if ((previous_event != BTA_AG_API_RESULT_EVT ||
- p_scb->state == BTA_AG_OPEN_ST) &&
- event != BTA_AG_CI_SCO_DATA_EVT) {
- APPL_TRACE_EVENT("%s: Handle 0x%04x, State %d (%s), Event 0x%04x (%s)",
- __func__, 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));
+ if (previous_event != BTA_AG_API_RESULT_EVT ||
+ p_scb->state == BTA_AG_OPEN_ST) {
+ APPL_TRACE_EVENT(
+ "%s: handle=0x%04x, state=%s(0x%02x), event=%s(0x%04x), "
+ "result=%s(0x%02x)",
+ __func__, bta_ag_scb_to_idx(p_scb), bta_ag_state_str(p_scb->state),
+ p_scb->state, bta_ag_evt_str(event), event,
+ bta_ag_res_str(p_data->api_result.result), p_data->api_result.result);
}
-#else
- if (event != BTA_AG_CI_SCO_DATA_EVT) {
- APPL_TRACE_EVENT("%s: Handle 0x%04x, State %d, Event 0x%04x", __func__,
- bta_ag_scb_to_idx(p_scb), p_scb->state, event);
- }
-#endif
event &= 0x00FF;
if (event >= (BTA_AG_MAX_EVT & 0x00FF)) {
@@ -748,14 +791,15 @@
break;
}
}
-#if (BTA_AG_DEBUG == TRUE)
if (p_scb->state != previous_state) {
- APPL_TRACE_EVENT("%s: State Change: [%s] -> [%s] after Event [%s]",
- __func__, bta_ag_state_str(previous_state),
- bta_ag_state_str(p_scb->state),
- bta_ag_evt_str(previous_event, p_data->api_result.result));
+ APPL_TRACE_EVENT(
+ "%s: state_change[%s(0x%02x)]->[%s(0x%02x)], "
+ "event[%s(0x%04x)], result[%s(0x%02x)]",
+ __func__, bta_ag_state_str(previous_state), previous_state,
+ bta_ag_state_str(p_scb->state), p_scb->state,
+ bta_ag_evt_str(previous_event), previous_event,
+ bta_ag_res_str(p_data->api_result.result), p_data->api_result.result);
}
-#endif
}
/*******************************************************************************
@@ -808,121 +852,3 @@
}
return true;
}
-
-#if (BTA_AG_DEBUG == TRUE)
-static char* bta_ag_evt_str(uint16_t event, tBTA_AG_RES result) {
- switch (event) {
- case BTA_AG_API_REGISTER_EVT:
- return "Register Request";
- case BTA_AG_API_DEREGISTER_EVT:
- return "Deregister Request";
- case BTA_AG_API_OPEN_EVT:
- return "Open SLC Request";
- case BTA_AG_API_CLOSE_EVT:
- return "Close SLC Request";
- case BTA_AG_API_AUDIO_OPEN_EVT:
- return "Open Audio Request";
- case BTA_AG_API_AUDIO_CLOSE_EVT:
- 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");
- }
- case BTA_AG_API_SETCODEC_EVT:
- return "Set Codec Request";
- case BTA_AG_RFC_OPEN_EVT:
- return "RFC Opened";
- case BTA_AG_RFC_CLOSE_EVT:
- return "RFC Closed";
- case BTA_AG_RFC_SRV_CLOSE_EVT:
- return "RFC SRV Closed";
- case BTA_AG_RFC_DATA_EVT:
- return "RFC Data";
- case BTA_AG_SCO_OPEN_EVT:
- return "Audio Opened";
- case BTA_AG_SCO_CLOSE_EVT:
- return "Audio Closed";
- case BTA_AG_DISC_ACP_RES_EVT:
- return "Discovery ACP Result";
- case BTA_AG_DISC_INT_RES_EVT:
- return "Discovery INT Result";
- case BTA_AG_DISC_OK_EVT:
- return "Discovery OK";
- case BTA_AG_DISC_FAIL_EVT:
- return "Discovery Failed";
- case BTA_AG_CI_RX_WRITE_EVT:
- return "CI RX Write";
- case BTA_AG_RING_TIMEOUT_EVT:
- return "Ring Timeout";
- case BTA_AG_SVC_TIMEOUT_EVT:
- return "Service Timeout";
- case BTA_AG_API_ENABLE_EVT:
- return "Enable AG";
- case BTA_AG_API_DISABLE_EVT:
- return "Disable AG";
- case BTA_AG_CI_SCO_DATA_EVT:
- return "SCO data Callin";
- case BTA_AG_CI_SLC_READY_EVT:
- return "SLC Ready Callin";
- default:
- return "Unknown AG Event";
- }
-}
-
-static char* bta_ag_state_str(uint8_t state) {
- switch (state) {
- case BTA_AG_INIT_ST:
- return "Initial";
- case BTA_AG_OPENING_ST:
- return "Opening";
- case BTA_AG_OPEN_ST:
- return "Open";
- case BTA_AG_CLOSING_ST:
- return "Closing";
- default:
- return "Unknown AG State";
- }
-}
-
-#endif
diff --git a/bta/ag/bta_ag_rfc.cc b/bta/ag/bta_ag_rfc.cc
index a3adf07..a8392c1 100644
--- a/bta/ag/bta_ag_rfc.cc
+++ b/bta/ag/bta_ag_rfc.cc
@@ -27,7 +27,6 @@
#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"
@@ -49,10 +48,6 @@
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);
-
/* rfcomm callback function tables */
typedef tPORT_CALLBACK* tBTA_AG_PORT_CBACK;
const tBTA_AG_PORT_CBACK bta_ag_port_cback_tbl[] = {
@@ -61,10 +56,6 @@
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};
-
/*******************************************************************************
*
* Function bta_ag_port_cback
@@ -161,23 +152,6 @@
/*******************************************************************************
*
- * Function bta_ag_data_cback
- *
- * Description RFCOMM data callback
- *
- *
- * 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;
-}
-
-/*******************************************************************************
- *
* Function bta_ag_port_cback_1 to 3
* bta_ag_mgmt_cback_1 to 3
*
@@ -209,27 +183,6 @@
/*******************************************************************************
*
- * Function bta_ag_data_cback_1 to 3
- *
- * Description RFCOMM data callback functions. This is an easy way to
- * distinguish scb from the callback.
- *
- *
- * 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_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);
-}
-
-/*******************************************************************************
- *
* Function bta_ag_setup_port
*
* Description Setup RFCOMM port for use by AG.
@@ -240,12 +193,6 @@
******************************************************************************/
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]);
- }
-
PORT_SetEventMask(handle, BTA_AG_PORT_EV_MASK);
PORT_SetEventCallback(handle, bta_ag_port_cback_tbl[i]);
}
diff --git a/bta/ag/bta_ag_sco.cc b/bta/ag/bta_ag_sco.cc
index 2292ef0..6503733 100644
--- a/bta/ag/bta_ag_sco.cc
+++ b/bta/ag/bta_ag_sco.cc
@@ -26,7 +26,6 @@
#include "bt_common.h"
#include "bta_ag_api.h"
-#include "bta_ag_co.h"
#include "bta_ag_int.h"
#include "bta_api.h"
#include "btm_api.h"
@@ -35,20 +34,11 @@
#include "osi/include/osi.h"
#include "utl.h"
-#ifndef BTA_AG_SCO_DEBUG
-#define BTA_AG_SCO_DEBUG FALSE
-#endif
-
/* Codec negotiation timeout */
#ifndef BTA_AG_CODEC_NEGOTIATION_TIMEOUT_MS
#define BTA_AG_CODEC_NEGOTIATION_TIMEOUT_MS (3 * 1000) /* 3 seconds */
#endif
-#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);
-#endif
-
static bool sco_allowed = true;
RawAddress active_device_addr;
@@ -63,9 +53,46 @@
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 */
};
+#define CASE_RETURN_STR(const) \
+ case const: \
+ return #const;
+
+static const char* bta_ag_sco_evt_str(uint8_t event) {
+ switch (event) {
+ CASE_RETURN_STR(BTA_AG_SCO_LISTEN_E)
+ CASE_RETURN_STR(BTA_AG_SCO_OPEN_E)
+ CASE_RETURN_STR(BTA_AG_SCO_XFER_E)
+ CASE_RETURN_STR(BTA_AG_SCO_CN_DONE_E)
+ CASE_RETURN_STR(BTA_AG_SCO_REOPEN_E)
+ CASE_RETURN_STR(BTA_AG_SCO_CLOSE_E)
+ CASE_RETURN_STR(BTA_AG_SCO_SHUTDOWN_E)
+ CASE_RETURN_STR(BTA_AG_SCO_CONN_OPEN_E)
+ CASE_RETURN_STR(BTA_AG_SCO_CONN_CLOSE_E)
+ default:
+ return "Unknown SCO Event";
+ }
+}
+
+static const char* bta_ag_sco_state_str(uint8_t state) {
+ switch (state) {
+ CASE_RETURN_STR(BTA_AG_SCO_SHUTDOWN_ST)
+ CASE_RETURN_STR(BTA_AG_SCO_LISTEN_ST)
+ CASE_RETURN_STR(BTA_AG_SCO_CODEC_ST)
+ CASE_RETURN_STR(BTA_AG_SCO_OPENING_ST)
+ CASE_RETURN_STR(BTA_AG_SCO_OPEN_CL_ST)
+ CASE_RETURN_STR(BTA_AG_SCO_OPEN_XFER_ST)
+ CASE_RETURN_STR(BTA_AG_SCO_OPEN_ST)
+ CASE_RETURN_STR(BTA_AG_SCO_CLOSING_ST)
+ CASE_RETURN_STR(BTA_AG_SCO_CLOSE_OP_ST)
+ CASE_RETURN_STR(BTA_AG_SCO_CLOSE_XFER_ST)
+ CASE_RETURN_STR(BTA_AG_SCO_SHUTTING_ST)
+ default:
+ return "Unknown SCO State";
+ }
+}
+
static void bta_ag_create_pending_sco(tBTA_AG_SCB* p_scb, bool is_local);
/*******************************************************************************
@@ -537,22 +564,10 @@
******************************************************************************/
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 (BTA_AG_SCO_DEBUG == TRUE)
- uint8_t in_state = p_sco->state;
-
- if (event != BTA_AG_SCO_CI_DATA_E) {
- APPL_TRACE_EVENT("%s: SCO Index 0x%04x, State %d (%s), Event %d (%s)",
- __func__, p_scb->sco_idx, p_sco->state,
- bta_ag_sco_state_str(p_sco->state), event,
- bta_ag_sco_evt_str(event));
- }
-#else
- if (event != BTA_AG_SCO_CI_DATA_E) {
- APPL_TRACE_EVENT("%s: SCO Index 0x%04x, State %d, Event %d", __func__,
- p_scb->sco_idx, p_sco->state, event);
- }
-#endif
+ uint8_t previous_state = p_sco->state;
+ APPL_TRACE_EVENT("%s: SCO index=0x%04x, state=[%s]0x%02x, event=[%s](%d)",
+ __func__, p_scb->sco_idx, bta_ag_sco_state_str(p_sco->state),
+ p_sco->state, bta_ag_sco_evt_str(event), event);
switch (p_sco->state) {
case BTA_AG_SCO_SHUTDOWN_ST:
@@ -1028,14 +1043,14 @@
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 != previous_state) {
+ APPL_TRACE_EVENT(
+ "%s: SCO_state_change: [%s(0x%02x)]->[%s(0x%02x)] "
+ "after event [%s(0x%02x)]",
+ __func__, bta_ag_sco_state_str(previous_state), previous_state,
+ bta_ag_sco_state_str(p_sco->state), p_sco->state,
+ bta_ag_sco_evt_str(event), event);
}
-#endif
}
/*******************************************************************************
@@ -1272,20 +1287,6 @@
bta_ag_create_pending_sco(p_scb, bta_ag_cb.sco.is_local);
}
-/*******************************************************************************
- *
- * Function bta_ag_ci_sco_data
- *
- * Description Process the SCO data ready callin event
- *
- *
- * 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_set_sco_allowed(tBTA_AG_DATA* p_data) {
sco_allowed = p_data->api_set_sco_allowed.value;
APPL_TRACE_DEBUG(sco_allowed ? "sco now allowed" : "sco now not allowed");
@@ -1302,66 +1303,3 @@
}
active_device_addr = p_data->api_set_active_device.active_device_addr;
}
-
-/*******************************************************************************
- * Debugging functions
- ******************************************************************************/
-
-#if (BTA_AG_SCO_DEBUG == TRUE)
-static char* bta_ag_sco_evt_str(uint8_t event) {
- switch (event) {
- case BTA_AG_SCO_LISTEN_E:
- return "Listen Request";
- case BTA_AG_SCO_OPEN_E:
- return "Open Request";
- case BTA_AG_SCO_XFER_E:
- return "Transfer Request";
- case BTA_AG_SCO_CN_DONE_E:
- return "Codec Negotiation Done";
- case BTA_AG_SCO_REOPEN_E:
- return "Reopen Request";
- case BTA_AG_SCO_CLOSE_E:
- return "Close Request";
- case BTA_AG_SCO_SHUTDOWN_E:
- return "Shutdown Request";
- case BTA_AG_SCO_CONN_OPEN_E:
- return "Opened";
- case BTA_AG_SCO_CONN_CLOSE_E:
- return "Closed";
- case BTA_AG_SCO_CI_DATA_E:
- return "Sco Data";
- default:
- return "Unknown SCO Event";
- }
-}
-
-static char* bta_ag_sco_state_str(uint8_t state) {
- switch (state) {
- case BTA_AG_SCO_SHUTDOWN_ST:
- return "Shutdown";
- case BTA_AG_SCO_LISTEN_ST:
- return "Listening";
- case BTA_AG_SCO_CODEC_ST:
- return "Codec Negotiation";
- case BTA_AG_SCO_OPENING_ST:
- return "Opening";
- case BTA_AG_SCO_OPEN_CL_ST:
- return "Open while closing";
- case BTA_AG_SCO_OPEN_XFER_ST:
- return "Opening while Transferring";
- case BTA_AG_SCO_OPEN_ST:
- return "Open";
- case BTA_AG_SCO_CLOSING_ST:
- return "Closing";
- case BTA_AG_SCO_CLOSE_OP_ST:
- return "Close while Opening";
- case BTA_AG_SCO_CLOSE_XFER_ST:
- return "Close while Transferring";
- case BTA_AG_SCO_SHUTTING_ST:
- return "Shutting Down";
- default:
- return "Unknown SCO State";
- }
-}
-
-#endif /* (BTA_AG_SCO_DEBUG) */
diff --git a/bta/hf_client/bta_hf_client_main.cc b/bta/hf_client/bta_hf_client_main.cc
index 83f463d..4f717ae 100644
--- a/bta/hf_client/bta_hf_client_main.cc
+++ b/bta/hf_client/bta_hf_client_main.cc
@@ -381,7 +381,7 @@
/* Cancel SDP if it had been started. */
if (client_cb->p_disc_db) {
(void)SDP_CancelServiceSearch(client_cb->p_disc_db);
- bta_hf_client_free_db(NULL);
+ osi_free_and_reset((void**)&client_cb->p_disc_db);
}
/* reopen registered server */
diff --git a/bta/hf_client/bta_hf_client_rfc.cc b/bta/hf_client/bta_hf_client_rfc.cc
index b813ddb..e261c16 100644
--- a/bta/hf_client/bta_hf_client_rfc.cc
+++ b/bta/hf_client/bta_hf_client_rfc.cc
@@ -284,7 +284,7 @@
/* Cancel SDP if it had been started. */
if (client_cb->p_disc_db) {
(void)SDP_CancelServiceSearch(client_cb->p_disc_db);
- bta_hf_client_free_db(NULL);
+ osi_free_and_reset((void**)&client_cb->p_disc_db);
}
}
}
diff --git a/bta/hf_client/bta_hf_client_sdp.cc b/bta/hf_client/bta_hf_client_sdp.cc
index 418016f..d68adcc 100644
--- a/bta/hf_client/bta_hf_client_sdp.cc
+++ b/bta/hf_client/bta_hf_client_sdp.cc
@@ -25,6 +25,7 @@
******************************************************************************/
#include <string.h>
+#include <base/logging.h>
#include "bt_utils.h"
#include "bta_api.h"
@@ -331,7 +332,7 @@
if (!db_inited) {
/*free discover db */
- bta_hf_client_free_db(NULL);
+ osi_free_and_reset((void**)&client_cb->p_disc_db);
/* sent failed event */
tBTA_HF_CLIENT_DATA msg;
msg.hdr.layer_specific = client_cb->handle;
@@ -350,6 +351,7 @@
*
******************************************************************************/
void bta_hf_client_free_db(tBTA_HF_CLIENT_DATA* p_data) {
+ CHECK(p_data != NULL);
tBTA_HF_CLIENT_CB* client_cb =
bta_hf_client_find_cb_by_handle(p_data->hdr.layer_specific);
if (client_cb == NULL) {
diff --git a/bta/include/bta_ag_api.h b/bta/include/bta_ag_api.h
index 754efea..3f09c1f 100644
--- a/bta/include/bta_ag_api.h
+++ b/bta/include/bta_ag_api.h
@@ -73,14 +73,6 @@
typedef uint32_t tBTA_AG_FEAT;
-/* AG parse mode */
-#define BTA_AG_PARSE 0 /* Perform AT command parsing in AG */
-
-/* Pass data directly to phone's AT command interpreter */
-#define BTA_AG_PASS_THROUGH 1
-
-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 */
@@ -460,7 +452,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_CBACK* p_cback);
/*******************************************************************************
*
diff --git a/bta/include/bta_ag_co.h b/bta/include/bta_ag_co.h
deleted file mode 100644
index 5817923..0000000
--- a/bta/include/bta_ag_co.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/******************************************************************************
- *
- * Copyright 2003-2012 Broadcom Corporation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at:
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- ******************************************************************************/
-
-/******************************************************************************
- *
- * This is the interface file for audio gateway call-out functions.
- *
- ******************************************************************************/
-#ifndef BTA_AG_CO_H
-#define BTA_AG_CO_H
-
-#include "bta_ag_api.h"
-
-/*******************************************************************************
- *
- * Function bta_ag_co_init
- *
- * Description This callout function is executed by AG when it is
- * started by calling BTA_AgEnable(). This function can be
- * used by the phone to initialize audio paths or for other
- * initialization purposes.
- *
- *
- * Returns Void.
- *
- ******************************************************************************/
-extern void bta_ag_co_init(void);
-
-/*******************************************************************************
- *
- * Function bta_ag_co_data_open
- *
- * 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.
- *
- *
- * Returns void
- *
- ******************************************************************************/
-extern void bta_ag_co_data_open(uint16_t handle, tBTA_SERVICE_ID service);
-
-/*******************************************************************************
- *
- * Function bta_ag_co_data_close
- *
- * Description This function is called by AG when a service level
- * connection is closed
- *
- *
- * Returns void
- *
- ******************************************************************************/
-extern void bta_ag_co_data_close(uint16_t handle);
-
-/*******************************************************************************
- *
- * Function bta_ag_co_tx_write
- *
- * Description This function is called by the AG to send data to the
- * phone when the AG is configured for AT command pass-through.
- * The implementation of this function must copy the data to
- * the phone's memory.
- *
- * Returns void
- *
- ******************************************************************************/
-extern void bta_ag_co_tx_write(uint16_t handle, uint8_t* p_data, uint16_t len);
-
-#endif /* BTA_AG_CO_H */
diff --git a/btif/Android.bp b/btif/Android.bp
index e37f9fa..b6ab774 100644
--- a/btif/Android.bp
+++ b/btif/Android.bp
@@ -78,7 +78,6 @@
"src/btif_util.cc",
"src/stack_manager.cc",
// Callouts
- "co/bta_ag_co.cc",
"co/bta_dm_co.cc",
"co/bta_av_co.cc",
"co/bta_hh_co.cc",
diff --git a/btif/co/bta_ag_co.cc b/btif/co/bta_ag_co.cc
deleted file mode 100644
index 46f7b59..0000000
--- a/btif/co/bta_ag_co.cc
+++ /dev/null
@@ -1,87 +0,0 @@
-/******************************************************************************
- *
- * Copyright 2009-2012 Broadcom Corporation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at:
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- ******************************************************************************/
-
-#define LOG_TAG "bt_btif_bta_ag"
-
-#include "bta/include/bta_ag_co.h"
-#include "bta/ag/bta_ag_int.h"
-#include "bta/include/bta_ag_api.h"
-#include "osi/include/osi.h"
-
-/*******************************************************************************
- *
- * Function bta_ag_co_init
- *
- * Description This callout function is executed by AG when it is
- * started by calling BTA_AgEnable(). This function can be
- * used by the phone to initialize audio paths or for other
- * initialization purposes.
- *
- *
- * Returns Void.
- *
- ******************************************************************************/
-void bta_ag_co_init(void) { BTM_WriteVoiceSettings(AG_VOICE_SETTINGS); }
-
-/*******************************************************************************
- *
- * Function bta_ag_co_data_open
- *
- * 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.
- *
- * Returns void
- *
- ******************************************************************************/
-void bta_ag_co_data_open(uint16_t handle, tBTA_SERVICE_ID service) {
- BTIF_TRACE_DEBUG("bta_ag_co_data_open handle:%d service:%d", handle, service);
-}
-
-/*******************************************************************************
- *
- * Function bta_ag_co_data_close
- *
- * Description This function is called by AG when a service level
- * connection is closed
- *
- *
- * Returns void
- *
- ******************************************************************************/
-void bta_ag_co_data_close(uint16_t handle) {
- BTIF_TRACE_DEBUG("bta_ag_co_data_close handle:%d", handle);
-}
-
-/*******************************************************************************
- **
- ** Function bta_ag_co_tx_write
- **
- ** Description This function is called by the AG to send data to the
- ** phone when the AG is configured for AT command
- ** pass-through. The implementation of this function must copy
- ** the data to the phones memory.
- **
- ** Returns void
- **
- ******************************************************************************/
-void bta_ag_co_tx_write(uint16_t handle, UNUSED_ATTR uint8_t* p_data,
- uint16_t len) {
- BTIF_TRACE_DEBUG("bta_ag_co_tx_write: handle: %d, len: %d", handle, len);
-}
diff --git a/btif/src/btif_hf.cc b/btif/src/btif_hf.cc
index 4664c56..b97793d 100644
--- a/btif/src/btif_hf.cc
+++ b/btif/src/btif_hf.cc
@@ -626,17 +626,6 @@
ASSERTC(status == BT_STATUS_SUCCESS, "context transfer failed", status);
}
-static bool inband_ringing_property_disabled() {
- char disable_inband_ringing_flag[PROPERTY_VALUE_MAX] = {0};
- osi_property_get("persist.bluetooth.disableinbandringing",
- disable_inband_ringing_flag, "false");
- if (strncmp(disable_inband_ringing_flag, "true", 4) == 0) {
- BTIF_TRACE_DEBUG("%s: In-band ringing disabled by property", __func__);
- return true;
- }
- return false;
-}
-
/*******************************************************************************
*
* Function connect
@@ -699,7 +688,7 @@
return instance;
}
bt_status_t Init(Callbacks* callbacks, int max_hf_clients,
- bool inband_ringing_supported) override;
+ bool inband_ringing_enabled) override;
bt_status_t Connect(RawAddress* bd_addr) override;
bt_status_t Disconnect(RawAddress* bd_addr) override;
bt_status_t ConnectAudio(RawAddress* bd_addr) override;
@@ -737,19 +726,16 @@
};
bt_status_t HeadsetInterface::Init(Callbacks* callbacks, int max_hf_clients,
- bool inband_ringing_supported) {
- bool inband_ringing_property_disable = inband_ringing_property_disabled();
- if (inband_ringing_supported && !inband_ringing_property_disable) {
+ bool inband_ringing_enabled) {
+ if (inband_ringing_enabled) {
btif_hf_features |= BTA_AG_FEAT_INBAND;
} else {
btif_hf_features &= ~BTA_AG_FEAT_INBAND;
}
btif_max_hf_clients = max_hf_clients;
BTIF_TRACE_DEBUG(
- "%s: btif_hf_features=%zu, max_hf_clients=%d, "
- "inband_ringing=[supported=%d, enabled=%d]",
- __func__, btif_hf_features, btif_max_hf_clients, inband_ringing_supported,
- !inband_ringing_property_disable);
+ "%s: btif_hf_features=%zu, max_hf_clients=%d, inband_ringing_enabled=%d",
+ __func__, btif_hf_features, btif_max_hf_clients, inband_ringing_enabled);
bt_hf_callbacks = callbacks;
for (btif_hf_cb_t& hf_cb : btif_hf_cb) {
hf_cb = {};
@@ -1337,7 +1323,7 @@
const char* p_service_names[] = BTIF_HF_SERVICE_NAMES;
if (b_enable) {
/* Enable and register with BTA-AG */
- BTA_AgEnable(BTA_AG_PARSE, bte_hf_evt);
+ BTA_AgEnable(bte_hf_evt);
for (int i = 0; i < btif_max_hf_clients; i++) {
BTA_AgRegister(BTIF_HF_SERVICES, BTIF_HF_SECURITY, btif_hf_features,
p_service_names, bthf_hf_id[i]);
diff --git a/include/hardware/bluetooth_headset_interface.h b/include/hardware/bluetooth_headset_interface.h
index 51e7b03..b4946c4 100644
--- a/include/hardware/bluetooth_headset_interface.h
+++ b/include/hardware/bluetooth_headset_interface.h
@@ -34,12 +34,11 @@
*
* @param callbacks callbacks for the user of the native stack
* @param max_hf_clients maximum number of headset clients
- * @param inband_ringing_supported whether inband ringtone is supported by
- * the platform hardware
+ * @param inband_ringing_enabled whether inband ringtone is enabled
* @return BT_STATUS_SUCCESS on success
*/
virtual bt_status_t Init(Callbacks* callbacks, int max_hf_clients,
- bool inband_ringing_supported) = 0;
+ bool inband_ringing_enabled) = 0;
/**
* Connect to headset
diff --git a/osi/Android.bp b/osi/Android.bp
index 8e5dbde..9b738f0 100644
--- a/osi/Android.bp
+++ b/osi/Android.bp
@@ -151,4 +151,7 @@
enabled: false,
}
},
+ sanitize: {
+ cfi: false,
+ },
}
diff --git a/service/Android.bp b/service/Android.bp
index 199a51b..37966af 100644
--- a/service/Android.bp
+++ b/service/Android.bp
@@ -144,6 +144,9 @@
],
},
},
+ sanitize: {
+ cfi: false,
+ },
}
// Native system service CLI for target
diff --git a/stack/Android.bp b/stack/Android.bp
index bdd1cfd..1bedd40 100644
--- a/stack/Android.bp
+++ b/stack/Android.bp
@@ -287,6 +287,9 @@
"liblog",
"libgmock",
],
+ sanitize: {
+ cfi: false,
+ },
}
// Bluetooth stack advertise data parsing unit tests for target
@@ -337,4 +340,7 @@
"libosi",
"libbt-protos",
],
+ sanitize: {
+ cfi: false,
+ },
}
diff --git a/test/run_unit_tests.sh b/test/run_unit_tests.sh
index 8fe47f8..4c390bf 100755
--- a/test/run_unit_tests.sh
+++ b/test/run_unit_tests.sh
@@ -102,11 +102,18 @@
adb+=( "-s" "${device}" )
fi
+source ${ANDROID_BUILD_TOP}/build/envsetup.sh
+target_arch=$(gettargetarch)
+
failed_tests=()
for spec in "${tests[@]}"
do
name="${spec%%.*}"
- binary="/data/nativetest/${name}/${name}"
+ if [[ $target_arch == *"64"* ]]; then
+ binary="/data/nativetest64/${name}/${name}"
+ else
+ binary="/data/nativetest/${name}/${name}"
+ fi
push_command=( "${adb[@]}" push {"${ANDROID_PRODUCT_OUT}",}"${binary}" )
test_command=( "${adb[@]}" shell "${binary}" )