OSDN Git Service

eSCO: Additional fix to get eSCO working for HFP and HSP (3/5)
authorJack He <siyuanh@google.com>
Mon, 8 May 2017 00:26:02 +0000 (17:26 -0700)
committerJack He <siyuanh@google.com>
Thu, 11 May 2017 00:00:27 +0000 (00:00 +0000)
* Removed vendor specific call after codec negotiation and before eSCO
  command is sent to Bluetooth chip
* Removed vendor specific call after a SCO connection is requested by
  the peer
* Removed vendor specific save audio state methods

Bug: 19540029
Test: make, HFP PTS test, testplans/86884, testplans/87103
Change-Id: I899405a8eaa2f38ee0de04949c5288f9eefa74df

14 files changed:
bta/ag/bta_ag_ci.cc
bta/ag/bta_ag_int.h
bta/ag/bta_ag_main.cc
bta/ag/bta_ag_sco.cc
bta/include/bta_ag_api.h
bta/include/bta_ag_ci.h
bta/include/bta_ag_co.h
btif/co/bta_ag_co.cc
device/include/esco_parameters.h
hci/Android.bp
hci/BUILD.gn
hci/include/hci_audio.h [deleted file]
hci/src/hci_audio.cc [deleted file]
stack/include/btm_api_types.h

index 1f577cc..1fde9d8 100644 (file)
@@ -86,25 +86,3 @@ void bta_ag_ci_slc_ready(uint16_t handle) {
 
   bta_sys_sendmsg(p_buf);
 }
-
-/******************************************************************************
- *
- * Function         bta_ag_ci_audio_open_continue
- *
- * Description      This function is called to notify AG that pre-SCO vendor
- *                  setup is finished and the AG can move on and
- *                  send the rest of HCI commands meant to be sent to
- *                  create/accept a SCO connection with the peer device.
- *
- * Returns          void
- *
- *****************************************************************************/
-void bta_ag_ci_audio_open_continue(uint16_t handle, uint8_t status) {
-  tBTA_AG_DATA* p_buf;
-  if ((p_buf = (tBTA_AG_DATA*)osi_malloc(sizeof(tBTA_AG_DATA))) != NULL) {
-    p_buf->api_result.hdr.event = BTA_AG_CI_AUDIO_OPEN_CONTINUE_EVT;
-    p_buf->api_result.hdr.layer_specific = handle;
-    p_buf->api_result.result = status;
-    bta_sys_sendmsg(p_buf);
-  }
-}
index 5996ede..eeee1b7 100644 (file)
@@ -95,7 +95,6 @@ enum {
   BTA_AG_SVC_TIMEOUT_EVT,
   BTA_AG_CI_SCO_DATA_EVT,
   BTA_AG_CI_SLC_READY_EVT,
-  BTA_AG_CI_AUDIO_OPEN_CONTINUE_EVT,
   BTA_AG_MAX_EVT,
 
   /* these events are handled outside of the state machine */
@@ -282,8 +281,6 @@ typedef struct {
   uint16_t cur_idx;         /* SCO handle */
   uint8_t state;            /* SCO state variable */
   bool is_local;            /* SCO connection initiated locally or remotely */
-  uint8_t set_audio_status; /* SCO variable for storing the status of the
-                           pre-SCO vendor setup (set_audio_state)*/
 } tBTA_AG_SCO_CB;
 
 /* type for AG control block */
@@ -382,8 +379,6 @@ 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_ci_sco_open_continue(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_sco_codec_nego(tBTA_AG_SCB* p_scb, bool result);
 extern void bta_ag_codec_negotiate(tBTA_AG_SCB* p_scb);
index c1aae15..30b59a7 100644 (file)
@@ -81,7 +81,6 @@ enum {
   BTA_AG_SEND_RING,
   BTA_AG_CI_SCO_DATA,
   BTA_AG_CI_RX_DATA,
-  BTA_AG_CI_SCO_OPEN_CONTINUE,
   BTA_AG_RCVD_SLC_READY,
   BTA_AG_NUM_ACTIONS
 };
@@ -93,23 +92,17 @@ 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_ci_sco_open_continue,
-    bta_ag_rcvd_slc_ready};
+    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 */
@@ -141,9 +134,7 @@ const uint8_t bta_ag_st_init[][BTA_AG_NUM_COLS] = {
     /* 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},
-    /* CI_AUDIO_OPEN_CONTINUE_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] = {
@@ -173,9 +164,7 @@ const uint8_t bta_ag_st_opening[][BTA_AG_NUM_COLS] = {
     /* 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},
-    /* CI_AUDIO_OPEN_CONTINUE_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] = {
@@ -206,9 +195,7 @@ const uint8_t bta_ag_st_open[][BTA_AG_NUM_COLS] = {
     /* 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},
-    /* CI_AUDIO_OPEN_CONTINUE_EVT */
-    {BTA_AG_CI_SCO_OPEN_CONTINUE, BTA_AG_IGNORE, BTA_AG_OPEN_ST}};
+    {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] = {
@@ -237,9 +224,7 @@ const uint8_t bta_ag_st_closing[][BTA_AG_NUM_COLS] = {
     /* 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},
-    /* CI_AUDIO_OPEN_CONTINUE_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];
@@ -292,7 +277,7 @@ static tBTA_AG_SCB* bta_ag_scb_alloc(void) {
   if (i == BTA_AG_NUM_SCB) {
     /* out of scbs */
     p_scb = NULL;
-    APPL_TRACE_WARNING("Out of ag scbs");
+    APPL_TRACE_WARNING("%s: Out of scbs", __func__);
   }
   return p_scb;
 }
@@ -739,21 +724,21 @@ void bta_ag_sm_execute(tBTA_AG_SCB* p_scb, uint16_t event,
   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("AG evt (hdl 0x%04x): State %d (%s), Event 0x%04x (%s)",
-                     bta_ag_scb_to_idx(p_scb), p_scb->state,
+    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));
   }
 #else
   if (event != BTA_AG_CI_SCO_DATA_EVT) {
-    APPL_TRACE_EVENT("%s: AG evt (hdl 0x%04x): State %d, Event 0x%04x",
-                     __func__, bta_ag_scb_to_idx(p_scb), p_scb->state, event);
+    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)) {
-    APPL_TRACE_ERROR("AG evt out of range, ignoring...");
+    APPL_TRACE_ERROR("%s: event out of range, ignored", __func__);
     return;
   }
 
@@ -774,8 +759,8 @@ void bta_ag_sm_execute(tBTA_AG_SCB* p_scb, uint16_t event,
   }
 #if (BTA_AG_DEBUG == TRUE)
   if (p_scb->state != previous_state) {
-    APPL_TRACE_EVENT("BTA AG State Change: [%s] -> [%s] after Event [%s]",
-                     bta_ag_state_str(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));
   }
@@ -797,22 +782,18 @@ bool bta_ag_hdl_event(BT_HDR* p_msg) {
 
   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 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;
@@ -925,8 +906,6 @@ static char* bta_ag_evt_str(uint16_t event, tBTA_AG_RES result) {
       return "SCO data Callin";
     case BTA_AG_CI_SLC_READY_EVT:
       return "SLC Ready Callin";
-    case BTA_AG_CI_AUDIO_OPEN_CONTINUE_EVT:
-      return "Pre-SCO setup done. Continue Audio Open";
     default:
       return "Unknown AG Event";
   }
index 4f5f9aa..1c11a6b 100644 (file)
@@ -62,7 +62,6 @@ static char* bta_ag_sco_state_str(uint8_t state);
 enum {
   BTA_AG_SCO_LISTEN_E,       /* listen request */
   BTA_AG_SCO_OPEN_E,         /* open request */
-  BTA_AG_SCO_OPEN_PENDING_E, /* Pending operations in open request */
   BTA_AG_SCO_XFER_E,         /* transfer request */
   BTA_AG_SCO_CN_DONE_E, /* codec negotiation done */
   BTA_AG_SCO_REOPEN_E,  /* Retry with other codec when failed */
@@ -73,6 +72,8 @@ enum {
   BTA_AG_SCO_CI_DATA_E     /* SCO data ready */
 };
 
+static void bta_ag_create_pending_sco(tBTA_AG_SCB* p_scb, bool is_local);
+
 /*******************************************************************************
  *
  * Function         bta_ag_sco_conn_cback
@@ -352,25 +353,24 @@ static void bta_ag_cback_sco(tBTA_AG_SCB* p_scb, uint8_t event) {
  *
  * Function         bta_ag_create_sco
  *
- * Description
- *
+ * Description      Create a SCO connection for a given control block
+ *                  p_scb : Pointer to the target AG control block
+ *                  is_orig : Whether to initiate or listen for SCO connection
  *
  * Returns          void
  *
  ******************************************************************************/
 static void bta_ag_create_sco(tBTA_AG_SCB* p_scb, bool is_orig) {
-  uint8_t* p_bd_addr = NULL;
-  enh_esco_params_t params;
   tBTA_AG_PEER_CODEC esco_codec = BTA_AG_CODEC_CVSD;
 
-  /* Make sure this sco handle is not already in use */
+  /* 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);
+    APPL_TRACE_ERROR("%s: Index 0x%04x already in use!", __func__,
+                     p_scb->sco_idx);
     return;
   }
 
-  APPL_TRACE_DEBUG("%s: Using enhanced sco %d)", __func__,
+  APPL_TRACE_DEBUG("%s: Using enhanced SCO setup command %d", __func__,
                    controller_get_interface()
                        ->supports_enhanced_setup_synchronous_connection());
 
@@ -380,15 +380,13 @@ static void bta_ag_create_sco(tBTA_AG_SCB* p_scb, bool is_orig) {
 
   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;
   }
 
   esco_codec_t codec_index = ESCO_CODEC_CVSD;
-  /* 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 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 == BTA_AG_CODEC_MSBC) {
     if (p_scb->codec_msbc_settings == BTA_AG_SCO_MSBC_SETTINGS_T2) {
       codec_index = ESCO_CODEC_MSBC_T2;
@@ -397,14 +395,14 @@ static void bta_ag_create_sco(tBTA_AG_SCB* p_scb, bool is_orig) {
     }
   }
 
-  params = esco_parameters_for_codec(codec_index);
-  if (esco_codec == BTM_SCO_CODEC_CVSD) /* For CVSD */
-  {
-    /* Use the applicable packet types (3-EV3 is not allowed according to
-     * errata 2363) */
+  /* Initialize eSCO parameters */
+  enh_esco_params_t params = esco_parameters_for_codec(codec_index);
+  /* For CVSD */
+  if (esco_codec == BTM_SCO_CODEC_CVSD) {
+    /* Use the applicable packet types
+      (3-EV3 not allowed due to errata 2363) */
     params.packet_types =
         p_bta_ag_cfg->sco_pkt_types | ESCO_PKT_TYPES_MASK_NO_3_EV3;
-
     if ((!(p_scb->features & BTA_AG_FEAT_ESCO)) ||
         (!(p_scb->peer_features & BTA_AG_PEER_FEAT_ESCO))) {
       params.max_latency_ms = 10;
@@ -412,32 +410,30 @@ static void bta_ag_create_sco(tBTA_AG_SCB* p_scb, bool is_orig) {
     }
   }
 
-  /* if initiating set current scb and peer bd addr */
+  /* If initiating, setup parameters to start SCO/eSCO connection */
   if (is_orig) {
     bta_ag_cb.sco.is_local = true;
     /* 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 */
+    /* HSP does not prohibit eSCO, but no official support, CVSD only */
     if (p_scb->conn_service == BTA_AG_HFP &&
         p_scb->peer_version >= HFP_VERSION_1_5 && !p_scb->retry_with_sco_only) {
       BTM_SetEScoMode(&params);
-      /* If ESCO or EDR ESCO, retry with SCO only in case of failure */
+      /* 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)) {
+        /* However, do not retry with SCO when using mSBC */
         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");
         }
+        APPL_TRACE_API("%s: eSCO supported, retry_with_sco_only=%d", __func__,
+                       p_scb->retry_with_sco_only);
       }
     } else {
-      if (p_scb->retry_with_sco_only) APPL_TRACE_API("retrying with SCO only");
+      APPL_TRACE_API("%s: eSCO not supported, retry_with_sco_only=%d", __func__,
+                     p_scb->retry_with_sco_only);
       p_scb->retry_with_sco_only = false;
-
       BTM_SetEScoMode(&params);
     }
 
@@ -449,25 +445,23 @@ static void bta_ag_create_sco(tBTA_AG_SCB* p_scb, bool is_orig) {
     /* tell sys to stop av if any */
     bta_sys_sco_use(BTA_ID_AG, p_scb->app_id, p_scb->peer_addr);
 
-    /* Allow any platform specific pre-SCO set up to take place After the
-       pre-SCO Vendor Specific commands are sent,bta_ag_ci_audio_open_continue
-       call-in needs to be called by the app to continue with SCO connection
-       creation */
-    bta_ag_co_audio_state(bta_ag_scb_to_idx(p_scb), p_scb->app_id,
-                          SCO_STATE_SETUP, esco_codec);
+    /* Send pending commands to create SCO connection to peer */
+    bta_ag_create_pending_sco(p_scb, bta_ag_cb.sco.is_local);
   } else {
+    /* Not initiating, go to listen mode */
+    uint8_t* p_bd_addr = NULL;
     p_scb->retry_with_sco_only = false;
     p_bd_addr = p_scb->peer_addr;
 
     tBTM_STATUS status =
-        BTM_CreateSco(p_bd_addr, is_orig, params.packet_types, &p_scb->sco_idx,
+        BTM_CreateSco(p_bd_addr, false, params.packet_types, &p_scb->sco_idx,
                       bta_ag_sco_conn_cback, bta_ag_sco_disc_cback);
     if (status == BTM_CMD_STARTED)
       BTM_RegForEScoEvts(p_scb->sco_idx, bta_ag_esco_connreq_cback);
 
-    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("%s: orig %d, inx 0x%04x, status 0x%x, pkt types 0x%04x",
+                   __func__, is_orig, p_scb->sco_idx, status,
+                   params.packet_types);
   }
 }
 
@@ -491,63 +485,53 @@ static void bta_ag_create_pending_sco(tBTA_AG_SCB* p_scb, bool is_local) {
 
   /* Local device requested SCO connection to peer */
   if (is_local) {
-    if (bta_ag_cb.sco.set_audio_status == BTA_AG_SUCCESS) {
-      if (esco_codec == BTA_AG_CODEC_MSBC) {
-        if (p_scb->codec_msbc_settings == BTA_AG_SCO_MSBC_SETTINGS_T2) {
-          params = esco_parameters_for_codec(ESCO_CODEC_MSBC_T2);
-        } else
-          params = esco_parameters_for_codec(ESCO_CODEC_MSBC_T1);
-      } else {
-        params = esco_parameters_for_codec(ESCO_CODEC_CVSD);
-        if ((!(p_scb->features & BTA_AG_FEAT_ESCO)) ||
-            (!(p_scb->peer_features & BTA_AG_PEER_FEAT_ESCO))) {
-          params.max_latency_ms = 10;
-          params.retransmission_effort = ESCO_RETRANSMISSION_POWER;
-        }
+    if (esco_codec == BTA_AG_CODEC_MSBC) {
+      if (p_scb->codec_msbc_settings == BTA_AG_SCO_MSBC_SETTINGS_T2) {
+        params = esco_parameters_for_codec(ESCO_CODEC_MSBC_T2);
+      } else
+        params = esco_parameters_for_codec(ESCO_CODEC_MSBC_T1);
+    } else {
+      params = esco_parameters_for_codec(ESCO_CODEC_CVSD);
+      if ((!(p_scb->features & BTA_AG_FEAT_ESCO)) ||
+          (!(p_scb->peer_features & BTA_AG_PEER_FEAT_ESCO))) {
+        params.max_latency_ms = 10;
+        params.retransmission_effort = ESCO_RETRANSMISSION_POWER;
       }
+    }
 
-      /* Bypass vendor specific and voice settings if enhanced eSCO supported */
-      if (!(controller_get_interface()
-                ->supports_enhanced_setup_synchronous_connection())) {
-        if (esco_codec == BTA_AG_CODEC_MSBC)
-          BTM_WriteVoiceSettings(BTM_VOICE_SETTING_TRANS);
-        else
-          BTM_WriteVoiceSettings(BTM_VOICE_SETTING_CVSD);
-      }
+    /* Bypass voice settings if enhanced SCO setup command is supported */
+    if (!(controller_get_interface()
+              ->supports_enhanced_setup_synchronous_connection())) {
+      if (esco_codec == BTA_AG_CODEC_MSBC)
+        BTM_WriteVoiceSettings(BTM_VOICE_SETTING_TRANS);
+      else
+        BTM_WriteVoiceSettings(BTM_VOICE_SETTING_CVSD);
+    }
 
 #if (BTM_SCO_HCI_INCLUDED == TRUE)
-      /* initialize SCO setup, no voice setting for AG, data rate <==> sample
-       * rate */
-      BTM_ConfigScoPath(params.input_data_path, bta_ag_sco_read_cback, NULL,
-                        TRUE);
+    /* initialize SCO setup, no voice setting for AG, data rate <==> sample
+     * rate */
+    BTM_ConfigScoPath(params.input_data_path, bta_ag_sco_read_cback, NULL,
+                      TRUE);
 #endif
 
-      tBTM_STATUS status = BTM_CreateSco(
-          p_scb->peer_addr, TRUE, params.packet_types, &p_scb->sco_idx,
-          bta_ag_sco_conn_cback, bta_ag_sco_disc_cback);
-      if (status == BTM_CMD_STARTED) {
-        /* Initiating the connection, set the current sco handle */
-        bta_ag_cb.sco.cur_idx = p_scb->sco_idx;
-      }
-    } else {
-      /* Pre-SCO Vendor setup failed Go back to Listening state */
-      bta_ag_cb.sco.state = BTA_AG_SCO_LISTEN_ST;
-      bta_ag_create_sco(p_scb, false);
+    tBTM_STATUS status = BTM_CreateSco(
+        p_scb->peer_addr, true, params.packet_types, &p_scb->sco_idx,
+        bta_ag_sco_conn_cback, bta_ag_sco_disc_cback);
+    if (status == BTM_CMD_STARTED) {
+      /* Initiating the connection, set the current sco handle */
+      bta_ag_cb.sco.cur_idx = p_scb->sco_idx;
     }
   } else {
+    /* Local device accepted SCO connection from peer */
     params = esco_parameters_for_codec(ESCO_CODEC_CVSD);
     if ((!(p_scb->features & BTA_AG_FEAT_ESCO)) ||
-        (!(p_scb->peer_features & BTA_AG_PEER_FEAT_ESCO)))
-
-    {
+        (!(p_scb->peer_features & BTA_AG_PEER_FEAT_ESCO))) {
       params.max_latency_ms = 10;
       params.retransmission_effort = ESCO_RETRANSMISSION_POWER;
     }
 
-    if (bta_ag_cb.sco.set_audio_status == BTA_AG_SUCCESS)
-      BTM_EScoConnRsp(p_scb->sco_idx, HCI_SUCCESS, &params);
-    else
-      BTM_EScoConnRsp(p_scb->sco_idx, HCI_ERR_HOST_REJECT_RESOURCES, &params);
+    BTM_EScoConnRsp(p_scb->sco_idx, HCI_SUCCESS, &params);
   }
 }
 
@@ -636,7 +620,6 @@ void bta_ag_codec_negotiate(tBTA_AG_SCB* p_scb) {
  ******************************************************************************/
 static void bta_ag_sco_event(tBTA_AG_SCB* p_scb, uint8_t event) {
   tBTA_AG_SCO_CB* p_sco = &bta_ag_cb.sco;
-  tBTA_AG_SCB* p_cn_scb = NULL; /* For codec negotiation */
 #if (BTM_SCO_HCI_INCLUDED == TRUE)
   BT_HDR* p_buf;
 #endif
@@ -704,7 +687,7 @@ static void bta_ag_sco_event(tBTA_AG_SCB* p_scb, uint8_t event) {
 
           /* start codec negotiation */
           p_sco->state = BTA_AG_SCO_CODEC_ST;
-          p_cn_scb = p_scb;
+          bta_ag_codec_negotiate(p_scb);
           break;
 
         case BTA_AG_SCO_SHUTDOWN_E:
@@ -802,12 +785,7 @@ static void bta_ag_sco_event(tBTA_AG_SCB* p_scb, uint8_t event) {
         case BTA_AG_SCO_REOPEN_E:
           /* start codec negotiation */
           p_sco->state = BTA_AG_SCO_CODEC_ST;
-          p_cn_scb = p_scb;
-          break;
-
-        case BTA_AG_SCO_OPEN_PENDING_E:
-          /* Send pending commands to create SCO connection to peer */
-          bta_ag_create_pending_sco(p_scb, p_sco->is_local);
+          bta_ag_codec_negotiate(p_scb);
           break;
 
         case BTA_AG_SCO_XFER_E:
@@ -1033,7 +1011,7 @@ static void bta_ag_sco_event(tBTA_AG_SCB* p_scb, uint8_t event) {
         case BTA_AG_SCO_CONN_CLOSE_E:
           /* start codec negotiation */
           p_sco->state = BTA_AG_SCO_CODEC_ST;
-          p_cn_scb = p_scb;
+          bta_ag_codec_negotiate(p_scb);
           break;
 
         case BTA_AG_SCO_LISTEN_E:
@@ -1072,7 +1050,7 @@ static void bta_ag_sco_event(tBTA_AG_SCB* p_scb, uint8_t event) {
           p_sco->state = BTA_AG_SCO_SHUTTING_ST;
           break;
 
-        case BTA_AG_SCO_CONN_CLOSE_E:
+        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 */
@@ -1081,9 +1059,11 @@ static void bta_ag_sco_event(tBTA_AG_SCB* p_scb, uint8_t event) {
 
           /* start codec negotiation */
           p_sco->state = BTA_AG_SCO_CODEC_ST;
-          p_cn_scb = p_sco->p_xfer_scb;
+          tBTA_AG_SCB* p_cn_scb = p_sco->p_xfer_scb;
           p_sco->p_xfer_scb = NULL;
+          bta_ag_codec_negotiate(p_cn_scb);
           break;
+        }
 
         default:
           APPL_TRACE_WARNING("%s: BTA_AG_SCO_CLOSE_XFER_ST: Ignoring event %d",
@@ -1160,10 +1140,6 @@ static void bta_ag_sco_event(tBTA_AG_SCB* p_scb, uint8_t event) {
                      bta_ag_sco_evt_str(event));
   }
 #endif
-
-  if (p_cn_scb) {
-    bta_ag_codec_negotiate(p_cn_scb);
-  }
 }
 
 /*******************************************************************************
@@ -1238,27 +1214,6 @@ void bta_ag_sco_open(tBTA_AG_SCB* p_scb, UNUSED_ATTR tBTA_AG_DATA* p_data) {
 
 /*******************************************************************************
  *
- * Function         bta_ag_ci_sco_open_continue
- *
- * Description      This is called by the API_AUDIO_OPEN_CONTINUE_EVT from the
- *                  BTA AG state machine and is used to send the pending HCI
- *                  commands for SCO Connection after the pre-SCO setup is done
- *
- *
- * Returns          void
- *
- ******************************************************************************/
-
-void bta_ag_ci_sco_open_continue(tBTA_AG_SCB* p_scb, tBTA_AG_DATA* p_data) {
-  uint8_t p_status = p_data->api_result.result;
-  bta_ag_cb.sco.set_audio_status = p_status;
-
-  APPL_TRACE_DEBUG("%s: Handle %d", __func__, p_status);
-  bta_ag_sco_event(p_scb, BTA_AG_SCO_OPEN_PENDING_E);
-}
-
-/*******************************************************************************
- *
  * Function         bta_ag_sco_close
  *
  * Description
@@ -1283,7 +1238,7 @@ void bta_ag_sco_close(tBTA_AG_SCB* p_scb, UNUSED_ATTR tBTA_AG_DATA* p_data) {
  *
  * Function         bta_ag_sco_codec_nego
  *
- * Description
+ * Description      Handles result of eSCO codec negotiation
  *
  *
  * Returns          void
@@ -1329,9 +1284,6 @@ void bta_ag_sco_conn_open(tBTA_AG_SCB* p_scb,
 
   bta_sys_sco_open(BTA_ID_AG, p_scb->app_id, p_scb->peer_addr);
 
-  bta_ag_co_audio_state(bta_ag_scb_to_idx(p_scb), p_scb->app_id, SCO_STATE_ON,
-                        p_scb->inuse_codec);
-
 #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,
@@ -1358,8 +1310,6 @@ void bta_ag_sco_conn_open(tBTA_AG_SCB* 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;
@@ -1376,10 +1326,7 @@ void bta_ag_sco_conn_close(tBTA_AG_SCB* p_scb,
     bta_ag_create_sco(p_scb, true);
   }
   else {
-    sco_state_t sco_state =
-        bta_ag_cb.sco.p_xfer_scb ? SCO_STATE_OFF_TRANSFER : SCO_STATE_OFF;
     /* 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);
     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);
@@ -1413,9 +1360,10 @@ void bta_ag_sco_conn_rsp(tBTA_AG_SCB* p_scb,
                          tBTM_ESCO_CONN_REQ_EVT_DATA* p_data) {
   bta_ag_cb.sco.is_local = false;
 
-  APPL_TRACE_DEBUG("%s: using enhanced sco %d)", __func__,
+  APPL_TRACE_DEBUG("%s: eSCO %d, state %d", __func__,
                    controller_get_interface()
-                       ->supports_enhanced_setup_synchronous_connection());
+                       ->supports_enhanced_setup_synchronous_connection(),
+                   bta_ag_cb.sco.state);
 
   if (bta_ag_cb.sco.state == BTA_AG_SCO_LISTEN_ST ||
       bta_ag_cb.sco.state == BTA_AG_SCO_CLOSE_XFER_ST ||
@@ -1423,10 +1371,6 @@ void bta_ag_sco_conn_rsp(tBTA_AG_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);
     /* 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);
-
 #if (BTM_SCO_HCI_INCLUDED == TRUE)
     /* Configure the transport being used */
     BTM_ConfigScoPath(resp.input_data_path, bta_ag_sco_read_cback, NULL, TRUE);
@@ -1435,6 +1379,8 @@ void bta_ag_sco_conn_rsp(tBTA_AG_SCB* p_scb,
 
   /* If SCO open was initiated from HS, it must be CVSD */
   p_scb->inuse_codec = BTA_AG_CODEC_NONE;
+  /* Send pending commands to create SCO connection to peer */
+  bta_ag_create_pending_sco(p_scb, bta_ag_cb.sco.is_local);
 }
 
 /*******************************************************************************
@@ -1465,8 +1411,6 @@ static char* bta_ag_sco_evt_str(uint8_t event) {
       return "Listen Request";
     case BTA_AG_SCO_OPEN_E:
       return "Open Request";
-    case BTA_AG_SCO_OPEN_PENDING_E:
-      return "Open pending request";
     case BTA_AG_SCO_XFER_E:
       return "Transfer Request";
     case BTA_AG_SCO_CN_DONE_E:
index c0ace8d..88f9d60 100644 (file)
@@ -165,7 +165,6 @@ 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 */
index 2597e82..01e3870 100644 (file)
@@ -67,18 +67,4 @@ extern void bta_ag_ci_slc_ready(uint16_t handle);
  *****************************************************************************/
 extern void bta_ag_ci_wbs_command(uint16_t handle, char* p_data, uint16_t len);
 
-/******************************************************************************
- *
- * Function         bta_ag_ci_audio_open_continue
- *
- * Description      This function is called to notify AG that pre-SCO vendor
- *                  setup is finished and the AG can move on and
- *                  send the rest of HCI commands meant to be sent to
- *                  create/accept a SCO connection with the peer device.
- *
- * Returns          void
- *
- *****************************************************************************/
-extern void bta_ag_ci_audio_open_continue(uint16_t handle, uint8_t status);
-
 #endif /* BTA_AG_CI_H */
index e1d13a4..aed7def 100644 (file)
@@ -25,7 +25,6 @@
 #define BTA_AG_CO_H
 
 #include "bta_ag_api.h"
-#include "hci/include/hci_audio.h"
 
 /*******************************************************************************
  *
@@ -44,41 +43,6 @@ extern void bta_ag_co_init(void);
 
 /*******************************************************************************
  *
- * Function         bta_ag_co_audio_state
- *
- * 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 the correct
- *                          platform parameters. In the other states, codec type
- *                          should not be ignored
- *
- * Returns          void
- *
- ******************************************************************************/
-extern void bta_ag_co_audio_state(uint16_t handle, uint8_t app_id,
-                                  uint8_t state, tBTA_AG_PEER_CODEC codec);
-
-
-/*******************************************************************************
- *
- * Function         bta_ag_co_set_audio_state_complete
- *
- * Description      This function is called from Vendor module to update AG that
- *                  the pre-SCO setup is done
- *
- * Returns          void
- *
- ******************************************************************************/
-extern void bta_ag_co_set_audio_state_complete(uint8_t status);
-
-/*******************************************************************************
- *
  * Function         bta_ag_co_data_open
  *
  * Description      This function is executed by AG when a service level
index 42c1b93..b27e57e 100644 (file)
 #include "bta/ag/bta_ag_int.h"
 #include "bta/include/bta_ag_api.h"
 #include "bta/include/bta_ag_ci.h"
-#include "hci/include/hci_audio.h"
 #include "osi/include/osi.h"
 
-typedef struct {
-  uint16_t handle;
-  sco_state_t sco_state;
-  bool in_use;
-} tBTA_AG_CO_CB;
-
-/* Control block instance */
-static tBTA_AG_CO_CB bta_ag_co_cb[BTA_AG_NUM_SCB];
-
 /*******************************************************************************
  *
  * Function         bta_ag_co_init
@@ -51,97 +41,6 @@ void bta_ag_co_init(void) { BTM_WriteVoiceSettings(AG_VOICE_SETTINGS); }
 
 /*******************************************************************************
  *
- * Function         bta_ag_co_audio_state
- *
- * 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 the correct
- *                      platform parameters.
- *                      In the other states, codec type should not be ignored.
- *
- * Returns          void
- *
- ******************************************************************************/
-void bta_ag_co_audio_state(uint16_t handle, uint8_t app_id, uint8_t state,
-                           tBTA_AG_PEER_CODEC codec)
-{
-  BTIF_TRACE_DEBUG("bta_ag_co_audio_state: handle %d, state %d", handle, state);
-
-  bool bFound = false;
-  uint8_t pos;
-  for (int i = 0; i < BTA_AG_NUM_SCB; i++) {
-    if (bta_ag_co_cb[i].in_use && bta_ag_co_cb[i].handle == handle) {
-      bta_ag_co_cb[i].sco_state = (sco_state_t)state;
-      bFound = true;
-      pos = i;
-      break;
-    }
-  }
-  if (!bFound) {
-    for (int i = 0; i < BTA_AG_NUM_SCB; i++) {
-      if (!(bta_ag_co_cb[i].in_use)) {
-        bta_ag_co_cb[i].handle = handle;
-        bta_ag_co_cb[i].sco_state = (sco_state_t)state;
-        bta_ag_co_cb[i].in_use = true;
-        break;
-      }
-    }
-  }
-
-  switch (state) {
-    case SCO_STATE_OFF:
-      BTIF_TRACE_DEBUG(
-          "bta_ag_co_audio_state(handle %d)::Closed (OFF), codec: 0x%x", handle,
-          codec);
-      set_audio_state(handle, (sco_codec_t)codec, (sco_state_t)state);
-      break;
-    case SCO_STATE_OFF_TRANSFER:
-      BTIF_TRACE_DEBUG("bta_ag_co_audio_state(handle %d)::Closed (XFERRING)",
-                       handle);
-      if (bFound) {
-        bta_ag_co_cb[pos].in_use = false;
-      }
-      break;
-    case SCO_STATE_SETUP:
-      set_audio_state(handle, (sco_codec_t)codec, (sco_state_t)state);
-      break;
-    default:
-      break;
-  }
-  APPL_TRACE_DEBUG(
-      "bta_ag_co_audio_state(handle %d, app_id: %d, state %d, codec: 0x%x)",
-      handle, app_id, state, codec);
-}
-
-/*******************************************************************************
- *
- * Function         bta_ag_co_set_audio_state_complete
- *
- * Description      This function is called from Vendor module to update AG that
- *                  the pre-SCO setup is done
- *
- * Returns          void
- *
- ******************************************************************************/
-void bta_ag_co_set_audio_state_complete(uint8_t status) {
-  int idx = 0;
-  while (idx < BTA_AG_NUM_SCB) {
-    if (bta_ag_co_cb[idx].sco_state == SCO_STATE_SETUP) {
-      bta_ag_ci_audio_open_continue(bta_ag_co_cb[idx].handle, status);
-      break;
-    }
-    idx++;
-  }
-}
-
-/*******************************************************************************
- *
  * Function         bta_ag_co_data_open
  *
  * Description      This function is executed by AG when a service level
index 8ba3af3..f906c8d 100644 (file)
 
 #include <stdint.h>
 
+/*******************
+ * SCO Codec Types
+ *******************/
+typedef enum {
+  SCO_CODEC_NONE = 0x0000,
+  SCO_CODEC_CVSD = 0x0001,
+  SCO_CODEC_MSBC = 0x0002,
+} sco_codec_t;
+
 typedef enum {
   ESCO_CODEC_CVSD = 0,
   ESCO_CODEC_MSBC_T1,
@@ -122,10 +131,7 @@ typedef struct {
   esco_packet_types_t packet_types; /* Packet Types */
   esco_retransmission_effort_t
       retransmission_effort; /* 0x00-0x02, 0xFF don't care */
-} enhanced_esco_parameters_t;
-
-typedef esco_coding_id_format_t esco_coding_id_format_t;
-typedef enhanced_esco_parameters_t enh_esco_params_t;
+} enh_esco_params_t;
 
 // Get the enhanced eSCO configuration parameters for the provided |codec|
 enh_esco_params_t esco_parameters_for_codec(esco_codec_t codec);
index b508bec..4edcfee 100644 (file)
@@ -19,7 +19,6 @@ cc_library_static {
         "src/btsnoop_mem.cc",
         "src/btsnoop_net.cc",
         "src/buffer_allocator.cc",
-        "src/hci_audio.cc",
         "src/hci_inject.cc",
         "src/hci_layer.cc",
         "src/hci_layer_android.cc",
index 38416cd..ba38134 100644 (file)
@@ -20,7 +20,6 @@ static_library("hci") {
     "src/btsnoop_mem.cc",
     "src/btsnoop_net.cc",
     "src/buffer_allocator.cc",
-    "src/hci_audio.cc",
     "src/hci_inject.cc",
     "src/hci_layer.cc",
     "src/hci_layer_linux.cc",
diff --git a/hci/include/hci_audio.h b/hci/include/hci_audio.h
deleted file mode 100644 (file)
index 3ca019c..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/******************************************************************************
- *
- *  Copyright (C) 2015 Google, Inc.
- *
- *  Licensed under the Apache License, Version 2.0 (the "License");
- *  you may not use this file except in compliance with the License.
- *  You may obtain a copy of the License at:
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- ******************************************************************************/
-
-#pragma once
-
-#include <stdint.h>
-
-// Audio state definitions.
-typedef enum {
-  SCO_STATE_OFF = 0,       // Audio is off.
-  SCO_STATE_OFF_TRANSFER,  // Closed pending final transfer of audio.
-  SCO_STATE_ON,            // Audio is on.
-  SCO_STATE_SETUP,         // Open pending completion of audio setup.
-} sco_state_t;
-
-// Codec type definitions.
-typedef enum {
-  SCO_CODEC_NONE = 0x0000,
-  SCO_CODEC_CVSD = 0x0001,
-  SCO_CODEC_MSBC = 0x0002,
-} sco_codec_t;
-
-// Set the audio state on the controller for SCO (PCM, WBS, ...) using the
-// vendor library.
-void set_audio_state(uint16_t handle, sco_codec_t codec, sco_state_t state);
diff --git a/hci/src/hci_audio.cc b/hci/src/hci_audio.cc
deleted file mode 100644 (file)
index 30eb259..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-/******************************************************************************
- *
- *  Copyright (C) 2015 Google, Inc.
- *
- *  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_hci_audio"
-
-#include "hci/include/hci_audio.h"
-
-#include "hci/include/bt_vendor_lib.h"
-#include "osi/include/log.h"
-
-void set_audio_state(uint16_t handle, sco_codec_t codec, sco_state_t state) {
-  /*
-  TODO(eisenbach): [HIDL] Re-implement using VSC
-
-    bt_vendor_op_audio_state_t audio_state;
-
-    audio_state.handle = handle;
-    audio_state.peer_codec = codec;
-    audio_state.state = state;
-
-    vendor_get_interface()->send_command(VENDOR_SET_AUDIO_STATE, &audio_state);
-  */
-}
index 7b07a4f..efd2501 100644 (file)
@@ -933,7 +933,6 @@ typedef uint8_t tBTM_SCO_TYPE;
  * SCO Codec Types
  *******************/
 // TODO(google) This should use common definitions
-// in hci/include/hci_audio.h
 #define BTM_SCO_CODEC_NONE 0x0000
 #define BTM_SCO_CODEC_CVSD 0x0001
 #define BTM_SCO_CODEC_MSBC 0x0002