Loading system/bta/ag/bta_ag_api.cc +10 −0 Original line number Diff line number Diff line Loading @@ -276,3 +276,13 @@ void BTA_AgSetCodec(uint16_t handle, tBTA_AG_PEER_CODEC codec) { bta_sys_sendmsg(p_buf); } void BTA_AgSetScoAllowed(bool value) { tBTA_AG_API_SET_SCO_ALLOWED* p_buf = (tBTA_AG_API_SET_SCO_ALLOWED*)osi_malloc( sizeof(tBTA_AG_API_SET_SCO_ALLOWED)); p_buf->hdr.event = BTA_AG_API_SET_SCO_ALLOWED_EVT; p_buf->value = value; bta_sys_sendmsg(p_buf); } system/bta/ag/bta_ag_int.h +9 −1 Original line number Diff line number Diff line Loading @@ -99,7 +99,8 @@ enum { /* these events are handled outside of the state machine */ BTA_AG_API_ENABLE_EVT, BTA_AG_API_DISABLE_EVT BTA_AG_API_DISABLE_EVT, BTA_AG_API_SET_SCO_ALLOWED_EVT }; /* Actions to perform after a SCO event */ Loading Loading @@ -171,6 +172,12 @@ typedef struct { tBTA_AG_PEER_CODEC codec; } tBTA_AG_API_SETCODEC; /* data type for BTA_AG_API_SET_SCO_ALLOWED_EVT */ typedef struct { BT_HDR hdr; bool value; } tBTA_AG_API_SET_SCO_ALLOWED; /* data type for BTA_AG_DISC_RESULT_EVT */ typedef struct { BT_HDR hdr; Loading Loading @@ -395,5 +402,6 @@ 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); #endif /* BTA_AG_INT_H */ system/bta/ag/bta_ag_main.cc +4 −0 Original line number Diff line number Diff line Loading @@ -798,6 +798,10 @@ bool bta_ag_hdl_event(BT_HDR* p_msg) { bta_ag_api_result((tBTA_AG_DATA*)p_msg); break; case BTA_AG_API_SET_SCO_ALLOWED_EVT: bta_ag_set_sco_allowed((tBTA_AG_DATA*)p_msg); break; /* all others reference scb by handle */ default: p_scb = bta_ag_scb_by_idx(p_msg->layer_specific); Loading system/bta/ag/bta_ag_sco.cc +12 −0 Original line number Diff line number Diff line Loading @@ -54,6 +54,8 @@ 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; #define BTA_AG_NO_EDR_ESCO \ (ESCO_PKT_TYPES_MASK_NO_2_EV3 | ESCO_PKT_TYPES_MASK_NO_3_EV3 | \ ESCO_PKT_TYPES_MASK_NO_2_EV5 | ESCO_PKT_TYPES_MASK_NO_3_EV5) Loading Loading @@ -1192,6 +1194,11 @@ void bta_ag_sco_listen(tBTA_AG_SCB* p_scb, UNUSED_ATTR tBTA_AG_DATA* p_data) { void bta_ag_sco_open(tBTA_AG_SCB* p_scb, UNUSED_ATTR tBTA_AG_DATA* p_data) { uint8_t event; if (!sco_allowed) { APPL_TRACE_DEBUG("%s not opening sco, by policy", __func__); return; } /* 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; Loading Loading @@ -1396,6 +1403,11 @@ void bta_ag_ci_sco_data(UNUSED_ATTR tBTA_AG_SCB* p_scb, #endif } void bta_ag_set_sco_allowed(tBTA_AG_DATA* p_data) { sco_allowed = ((tBTA_AG_API_SET_SCO_ALLOWED*)p_data)->value; APPL_TRACE_DEBUG(sco_allowed ? "sco now allowed" : "sco now not allowed"); } /******************************************************************************* * Debugging functions ******************************************************************************/ Loading system/bta/include/bta_ag_api.h +2 −0 Original line number Diff line number Diff line Loading @@ -583,4 +583,6 @@ void BTA_AgResult(uint16_t handle, tBTA_AG_RES result, ******************************************************************************/ void BTA_AgSetCodec(uint16_t handle, tBTA_AG_PEER_CODEC codec); void BTA_AgSetScoAllowed(bool value); #endif /* BTA_AG_API_H */ Loading
system/bta/ag/bta_ag_api.cc +10 −0 Original line number Diff line number Diff line Loading @@ -276,3 +276,13 @@ void BTA_AgSetCodec(uint16_t handle, tBTA_AG_PEER_CODEC codec) { bta_sys_sendmsg(p_buf); } void BTA_AgSetScoAllowed(bool value) { tBTA_AG_API_SET_SCO_ALLOWED* p_buf = (tBTA_AG_API_SET_SCO_ALLOWED*)osi_malloc( sizeof(tBTA_AG_API_SET_SCO_ALLOWED)); p_buf->hdr.event = BTA_AG_API_SET_SCO_ALLOWED_EVT; p_buf->value = value; bta_sys_sendmsg(p_buf); }
system/bta/ag/bta_ag_int.h +9 −1 Original line number Diff line number Diff line Loading @@ -99,7 +99,8 @@ enum { /* these events are handled outside of the state machine */ BTA_AG_API_ENABLE_EVT, BTA_AG_API_DISABLE_EVT BTA_AG_API_DISABLE_EVT, BTA_AG_API_SET_SCO_ALLOWED_EVT }; /* Actions to perform after a SCO event */ Loading Loading @@ -171,6 +172,12 @@ typedef struct { tBTA_AG_PEER_CODEC codec; } tBTA_AG_API_SETCODEC; /* data type for BTA_AG_API_SET_SCO_ALLOWED_EVT */ typedef struct { BT_HDR hdr; bool value; } tBTA_AG_API_SET_SCO_ALLOWED; /* data type for BTA_AG_DISC_RESULT_EVT */ typedef struct { BT_HDR hdr; Loading Loading @@ -395,5 +402,6 @@ 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); #endif /* BTA_AG_INT_H */
system/bta/ag/bta_ag_main.cc +4 −0 Original line number Diff line number Diff line Loading @@ -798,6 +798,10 @@ bool bta_ag_hdl_event(BT_HDR* p_msg) { bta_ag_api_result((tBTA_AG_DATA*)p_msg); break; case BTA_AG_API_SET_SCO_ALLOWED_EVT: bta_ag_set_sco_allowed((tBTA_AG_DATA*)p_msg); break; /* all others reference scb by handle */ default: p_scb = bta_ag_scb_by_idx(p_msg->layer_specific); Loading
system/bta/ag/bta_ag_sco.cc +12 −0 Original line number Diff line number Diff line Loading @@ -54,6 +54,8 @@ 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; #define BTA_AG_NO_EDR_ESCO \ (ESCO_PKT_TYPES_MASK_NO_2_EV3 | ESCO_PKT_TYPES_MASK_NO_3_EV3 | \ ESCO_PKT_TYPES_MASK_NO_2_EV5 | ESCO_PKT_TYPES_MASK_NO_3_EV5) Loading Loading @@ -1192,6 +1194,11 @@ void bta_ag_sco_listen(tBTA_AG_SCB* p_scb, UNUSED_ATTR tBTA_AG_DATA* p_data) { void bta_ag_sco_open(tBTA_AG_SCB* p_scb, UNUSED_ATTR tBTA_AG_DATA* p_data) { uint8_t event; if (!sco_allowed) { APPL_TRACE_DEBUG("%s not opening sco, by policy", __func__); return; } /* 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; Loading Loading @@ -1396,6 +1403,11 @@ void bta_ag_ci_sco_data(UNUSED_ATTR tBTA_AG_SCB* p_scb, #endif } void bta_ag_set_sco_allowed(tBTA_AG_DATA* p_data) { sco_allowed = ((tBTA_AG_API_SET_SCO_ALLOWED*)p_data)->value; APPL_TRACE_DEBUG(sco_allowed ? "sco now allowed" : "sco now not allowed"); } /******************************************************************************* * Debugging functions ******************************************************************************/ Loading
system/bta/include/bta_ag_api.h +2 −0 Original line number Diff line number Diff line Loading @@ -583,4 +583,6 @@ void BTA_AgResult(uint16_t handle, tBTA_AG_RES result, ******************************************************************************/ void BTA_AgSetCodec(uint16_t handle, tBTA_AG_PEER_CODEC codec); void BTA_AgSetScoAllowed(bool value); #endif /* BTA_AG_API_H */