Loading system/bta/ag/bta_ag_cmd.cc +27 −23 Original line number Diff line number Diff line Loading @@ -604,7 +604,11 @@ void bta_ag_at_hsp_cback(tBTA_AG_SCB* p_scb, uint16_t command_id, strlcpy(val.str, p_arg, sizeof(val.str)); /* call callback with event */ (*bta_ag_cb.p_cback)(command_id, (tBTA_AG*)&val); if (command_id & 0xff00) { LOG_WARN("Received value that exceeds data type - lost information"); } tBTA_AG_EVT event = static_cast<tBTA_AG_EVT>(command_id); (*bta_ag_cb.p_cback)(event, (tBTA_AG*)&val); } static void remove_spaces(char* str) { Loading Loading @@ -867,7 +871,7 @@ void bta_ag_at_hfp_cback(tBTA_AG_SCB* p_scb, uint16_t cmd, uint8_t arg_type, * If |event| is 0 at the end of this function, the application * callback is NOT invoked. */ tBTA_AG_EVT event = 0; tBTA_AG_EVT event = BTA_AG_ENABLE_EVT; if (cmd < BTA_AG_LOCAL_EVT_FIRST) { event = static_cast<tBTA_AG_EVT>(cmd); } Loading @@ -885,7 +889,7 @@ void bta_ag_at_hfp_cback(tBTA_AG_SCB* p_scb, uint16_t cmd, uint8_t arg_type, if (!bta_ag_sco_is_active_device(p_scb->peer_addr)) { LOG(WARNING) << __func__ << ": AT+CHUP rejected as " << p_scb->peer_addr << " is not the active device"; event = 0; event = BTA_AG_ENABLE_EVT; bta_ag_send_error(p_scb, BTA_AG_ERR_OP_NOT_ALLOWED); } else { bta_ag_send_ok(p_scb); Loading @@ -908,7 +912,7 @@ void bta_ag_at_hfp_cback(tBTA_AG_SCB* p_scb, uint16_t cmd, uint8_t arg_type, remove_spaces(val.str + 1); if (!utl_isintstr(val.str + 1)) { event = 0; event = BTA_AG_ENABLE_EVT; bta_ag_send_error(p_scb, BTA_AG_ERR_INV_CHAR_IN_DSTR); } } else if (val.str[0] == 'V') /* ATDV : Dial VoIP Call */ Loading @@ -916,7 +920,7 @@ void bta_ag_at_hfp_cback(tBTA_AG_SCB* p_scb, uint16_t cmd, uint8_t arg_type, /* We do not check string. Code will be added later if needed. */ if (!((p_scb->peer_features & BTA_AG_PEER_FEAT_VOIP) && (p_scb->features & BTA_AG_FEAT_VOIP))) { event = 0; event = BTA_AG_ENABLE_EVT; bta_ag_send_error(p_scb, BTA_AG_ERR_OP_NOT_SUPPORTED); } } Loading @@ -928,7 +932,7 @@ void bta_ag_at_hfp_cback(tBTA_AG_SCB* p_scb, uint16_t cmd, uint8_t arg_type, remove_spaces(val.str); if (!utl_isdialstr(val.str)) { event = 0; event = BTA_AG_ENABLE_EVT; bta_ag_send_error(p_scb, BTA_AG_ERR_INV_CHAR_IN_DSTR); } } Loading @@ -945,7 +949,7 @@ void bta_ag_at_hfp_cback(tBTA_AG_SCB* p_scb, uint16_t cmd, uint8_t arg_type, case BTA_AG_AT_CHLD_EVT: if (arg_type == BTA_AG_AT_TEST) { /* don't call callback */ event = 0; event = BTA_AG_ENABLE_EVT; /* send CHLD string */ /* Form string based on supported 1.5 feature */ Loading Loading @@ -973,7 +977,7 @@ void bta_ag_at_hfp_cback(tBTA_AG_SCB* p_scb, uint16_t cmd, uint8_t arg_type, val.idx = bta_ag_parse_chld(p_scb, val.str); if (val.idx == BTA_AG_INVALID_CHLD) { event = 0; event = BTA_AG_ENABLE_EVT; bta_ag_send_error(p_scb, BTA_AG_ERR_OP_NOT_SUPPORTED); break; } Loading @@ -982,7 +986,7 @@ void bta_ag_at_hfp_cback(tBTA_AG_SCB* p_scb, uint16_t cmd, uint8_t arg_type, (p_scb->peer_features & BTA_AG_PEER_FEAT_ECC))) { /* we do not support ECC, but HF is sending us a CHLD with call * index*/ event = 0; event = BTA_AG_ENABLE_EVT; bta_ag_send_error(p_scb, BTA_AG_ERR_OP_NOT_SUPPORTED); } else { Loading Loading @@ -1014,7 +1018,7 @@ void bta_ag_at_hfp_cback(tBTA_AG_SCB* p_scb, uint16_t cmd, uint8_t arg_type, if (bta_ag_parse_bind_set(p_scb, val)) { bta_ag_send_ok(p_scb); } else { event = 0; /* don't call callback */ event = BTA_AG_ENABLE_EVT; /* don't call callback */ bta_ag_send_error(p_scb, BTA_AG_ERR_INVALID_INDEX); } } else { Loading @@ -1022,7 +1026,7 @@ void bta_ag_at_hfp_cback(tBTA_AG_SCB* p_scb, uint16_t cmd, uint8_t arg_type, /* Need not pass this command beyond BTIF.*/ /* Stack handles it internally */ event = 0; /* don't call callback */ event = BTA_AG_ENABLE_EVT; /* don't call callback */ } break; Loading @@ -1032,14 +1036,14 @@ void bta_ag_at_hfp_cback(tBTA_AG_SCB* p_scb, uint16_t cmd, uint8_t arg_type, } else { bta_ag_send_error(p_scb, BTA_AG_ERR_INVALID_INDEX); /* don't call callback receiving invalid indicator */ event = 0; event = BTA_AG_ENABLE_EVT; } break; case BTA_AG_AT_CIND_EVT: if (arg_type == BTA_AG_AT_TEST) { /* don't call callback */ event = 0; event = BTA_AG_ENABLE_EVT; /* send CIND string, send OK */ bta_ag_send_result(p_scb, BTA_AG_CIND_RES, p_bta_ag_cfg->cind_info, 0); Loading Loading @@ -1078,7 +1082,7 @@ void bta_ag_at_hfp_cback(tBTA_AG_SCB* p_scb, uint16_t cmd, uint8_t arg_type, if (strlen(p_arg) == 1) { bta_ag_send_ok(p_scb); } else { event = 0; event = BTA_AG_ENABLE_EVT; bta_ag_send_error(p_scb, BTA_AG_ERR_INV_CHAR_IN_TSTR); } break; Loading @@ -1086,7 +1090,7 @@ void bta_ag_at_hfp_cback(tBTA_AG_SCB* p_scb, uint16_t cmd, uint8_t arg_type, case BTA_AG_AT_BINP_EVT: /* if feature not set don't call callback, send ERROR */ if (!(p_scb->features & BTA_AG_FEAT_VTAG)) { event = 0; event = BTA_AG_ENABLE_EVT; bta_ag_send_error(p_scb, BTA_AG_ERR_OP_NOT_SUPPORTED); } break; Loading @@ -1095,7 +1099,7 @@ void bta_ag_at_hfp_cback(tBTA_AG_SCB* p_scb, uint16_t cmd, uint8_t arg_type, /* if feature not supported don't call callback, send ERROR. App will send * OK */ if (!(p_scb->features & BTA_AG_FEAT_VREC)) { event = 0; event = BTA_AG_ENABLE_EVT; bta_ag_send_error(p_scb, BTA_AG_ERR_OP_NOT_SUPPORTED); } break; Loading Loading @@ -1124,7 +1128,7 @@ void bta_ag_at_hfp_cback(tBTA_AG_SCB* p_scb, uint16_t cmd, uint8_t arg_type, if (p_scb->features & BTA_AG_FEAT_ECNR) { bta_ag_send_ok(p_scb); } else { event = 0; event = BTA_AG_ENABLE_EVT; bta_ag_send_error(p_scb, BTA_AG_ERR_OP_NOT_SUPPORTED); } break; Loading @@ -1146,7 +1150,7 @@ void bta_ag_at_hfp_cback(tBTA_AG_SCB* p_scb, uint16_t cmd, uint8_t arg_type, val.num = BTA_AG_BTRH_READ; } } else { event = 0; event = BTA_AG_ENABLE_EVT; bta_ag_send_error(p_scb, BTA_AG_ERR_OP_NOT_SUPPORTED); } break; Loading @@ -1154,7 +1158,7 @@ void bta_ag_at_hfp_cback(tBTA_AG_SCB* p_scb, uint16_t cmd, uint8_t arg_type, case BTA_AG_AT_COPS_EVT: if (arg_type == BTA_AG_AT_SET) { /* don't call callback */ event = 0; event = BTA_AG_ENABLE_EVT; /* send OK */ bta_ag_send_ok(p_scb); Loading @@ -1172,7 +1176,7 @@ void bta_ag_at_hfp_cback(tBTA_AG_SCB* p_scb, uint16_t cmd, uint8_t arg_type, bta_ag_send_error(p_scb, BTA_AG_ERR_OP_NOT_SUPPORTED); } /* don't call callback */ event = 0; event = BTA_AG_ENABLE_EVT; break; case BTA_AG_AT_BIA_EVT: Loading Loading @@ -1203,7 +1207,7 @@ void bta_ag_at_hfp_cback(tBTA_AG_SCB* p_scb, uint16_t cmd, uint8_t arg_type, val.num = bia_masked_out; bta_ag_send_ok(p_scb); } else { event = 0; event = BTA_AG_ENABLE_EVT; bta_ag_send_error(p_scb, BTA_AG_ERR_INVALID_INDEX); } break; Loading @@ -1213,7 +1217,7 @@ void bta_ag_at_hfp_cback(tBTA_AG_SCB* p_scb, uint16_t cmd, uint8_t arg_type, case BTA_AG_AT_CLCC_EVT: if (!(p_scb->features & BTA_AG_FEAT_ECS)) { event = 0; event = BTA_AG_ENABLE_EVT; bta_ag_send_error(p_scb, BTA_AG_ERR_OP_NOT_SUPPORTED); } break; Loading Loading @@ -1300,7 +1304,7 @@ void bta_ag_at_hfp_cback(tBTA_AG_SCB* p_scb, uint16_t cmd, uint8_t arg_type, } /* call callback */ if (event != 0) { if (event != BTA_AG_ENABLE_EVT) { (*bta_ag_cb.p_cback)(event, (tBTA_AG*)&val); } } Loading system/bta/ag/bta_ag_int.h +3 −0 Original line number Diff line number Diff line Loading @@ -133,6 +133,9 @@ typedef struct { typedef struct { tBTA_AG_RES result; tBTA_AG_RES_DATA data; std::string ToString() const { return base::StringPrintf("result:%s", bta_ag_result_text(result).c_str()); } } tBTA_AG_API_RESULT; /* data type for BTA_AG_API_SETCODEC_EVT */ Loading system/bta/ag/bta_ag_sco.cc +16 −28 Original line number Diff line number Diff line Loading @@ -31,8 +31,10 @@ #include "btm_api.h" #include "device/include/controller.h" #include "device/include/esco_parameters.h" #include "main/shim/dumpsys.h" #include "osi/include/log.h" #include "osi/include/osi.h" #include "stack/btm/btm_sco.h" #include "stack/include/btu.h" #include "utl.h" Loading Loading @@ -159,21 +161,17 @@ static void bta_ag_sco_conn_cback(uint16_t sco_idx) { static void bta_ag_sco_disc_cback(uint16_t sco_idx) { uint16_t handle = 0; APPL_TRACE_DEBUG( "bta_ag_sco_disc_cback(): sco_idx: 0x%x p_cur_scb: 0x%08x sco.state: " "%d", sco_idx, bta_ag_cb.sco.p_curr_scb, bta_ag_cb.sco.state); APPL_TRACE_DEBUG( "bta_ag_sco_disc_cback(): scb[0] addr: 0x%08x in_use: %u sco_idx: 0x%x " " sco state: %u", &bta_ag_cb.scb[0], bta_ag_cb.scb[0].in_use, bta_ag_cb.scb[0].sco_idx, bta_ag_cb.scb[0].state); APPL_TRACE_DEBUG( "bta_ag_sco_disc_cback(): scb[1] addr: 0x%08x in_use: %u sco_idx: 0x%x " " sco state: %u", &bta_ag_cb.scb[1], bta_ag_cb.scb[1].in_use, bta_ag_cb.scb[1].sco_idx, bta_ag_cb.scb[1].state); LOG_DEBUG( "sco_idx: 0x%x sco.state:%s", sco_idx, sco_state_text(static_cast<tSCO_STATE>(bta_ag_cb.sco.state)).c_str()); LOG_DEBUG( " scb[0] in_use:%s sco_idx: 0x%x sco state:%s", logbool(bta_ag_cb.scb[0].in_use).c_str(), bta_ag_cb.scb[0].sco_idx, sco_state_text(static_cast<tSCO_STATE>(bta_ag_cb.scb[0].state)).c_str()); LOG_DEBUG( " scb[1] in_use:%s sco_idx:0x%x sco state:%s", logbool(bta_ag_cb.scb[1].in_use).c_str(), bta_ag_cb.scb[1].sco_idx, sco_state_text(static_cast<tSCO_STATE>(bta_ag_cb.scb[1].state)).c_str()); /* match callback to scb */ if (bta_ag_cb.sco.p_curr_scb != nullptr && bta_ag_cb.sco.p_curr_scb->in_use) { Loading Loading @@ -345,7 +343,7 @@ static void bta_ag_cback_sco(tBTA_AG_SCB* p_scb, uint8_t event) { sco.handle = bta_ag_scb_to_idx(p_scb); sco.app_id = p_scb->app_id; /* call close cback */ (*bta_ag_cb.p_cback)(event, (tBTA_AG*)&sco); (*bta_ag_cb.p_cback)(static_cast<tBTA_AG_EVT>(event), (tBTA_AG*)&sco); } /******************************************************************************* Loading Loading @@ -604,21 +602,11 @@ void bta_ag_codec_negotiate(tBTA_AG_SCB* p_scb) { } } /******************************************************************************* * * Function bta_ag_sco_event * * Description * * * Returns void * ******************************************************************************/ static void bta_ag_sco_event(tBTA_AG_SCB* p_scb, uint8_t event) { tBTA_AG_SCO_CB* p_sco = &bta_ag_cb.sco; uint8_t previous_state = p_sco->state; LOG_INFO("index=0x%04x, device=%s, state=%s[%d], event=%s[%d]", p_scb->sco_idx, p_scb->peer_addr.ToString().c_str(), LOG_INFO("device:%s index:0x%04x state:%s[%d] event:%s[%d]", PRIVATE_ADDRESS(p_scb->peer_addr), p_scb->sco_idx, bta_ag_sco_state_str(p_sco->state), p_sco->state, bta_ag_sco_evt_str(event), event); Loading system/bta/av/bta_av_int.h +19 −3 Original line number Diff line number Diff line Loading @@ -32,6 +32,10 @@ #include "osi/include/list.h" #include "stack/include/a2dp_api.h" #define CASE_RETURN_TEXT(code) \ case code: \ return #code /***************************************************************************** * Constants ****************************************************************************/ Loading Loading @@ -226,13 +230,25 @@ typedef struct { uint16_t service_uuid; } tBTA_AV_API_REG; enum { typedef enum : uint8_t { BTA_AV_RS_NONE, /* straight API call */ BTA_AV_RS_OK, /* the role switch result - successful */ BTA_AV_RS_FAIL, /* the role switch result - failed */ BTA_AV_RS_DONE /* the role switch is done - continue */ }; typedef uint8_t tBTA_AV_RS_RES; } tBTA_AV_RS_RES; inline std::string bta_av_role_switch_result_text( const tBTA_AV_RS_RES& result) { switch (result) { CASE_RETURN_TEXT(BTA_AV_RS_NONE); CASE_RETURN_TEXT(BTA_AV_RS_OK); CASE_RETURN_TEXT(BTA_AV_RS_FAIL); CASE_RETURN_TEXT(BTA_AV_RS_DONE); default: return std::string("UNKNOWN"); } } /* data type for BTA_AV_API_OPEN_EVT */ typedef struct { BT_HDR hdr; Loading system/bta/av/bta_av_main.cc +7 −1 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ #include <string.h> #include "bt_target.h" #include "main/shim/dumpsys.h" #include "osi/include/log.h" #include "osi/include/osi.h" #include "osi/include/properties.h" Loading Loading @@ -895,9 +896,12 @@ static void bta_av_sco_chg_cback(tBTA_SYS_CONN_STATUS status, uint8_t id, int i; tBTA_AV_API_STOP stop; LOG(INFO) << __func__ << ": status=" << +status << ", num_links=" << +id; LOG(INFO) << __func__ << ": status=" << bta_sys_conn_status_text(status) << ", num_links=" << +id; if (id) { bta_av_cb.sco_occupied = true; LOG_DEBUG("SCO occupied peer:%s status:%s", PRIVATE_ADDRESS(peer_addr), bta_sys_conn_status_text(status).c_str()); if (bta_av_cb.features & BTA_AV_FEAT_NO_SCO_SSPD) { return; Loading @@ -919,6 +923,8 @@ static void bta_av_sco_chg_cback(tBTA_SYS_CONN_STATUS status, uint8_t id, } } else { bta_av_cb.sco_occupied = false; LOG_DEBUG("SCO unoccupied peer:%s status:%s", PRIVATE_ADDRESS(peer_addr), bta_sys_conn_status_text(status).c_str()); if (bta_av_cb.features & BTA_AV_FEAT_NO_SCO_SSPD) { return; Loading Loading
system/bta/ag/bta_ag_cmd.cc +27 −23 Original line number Diff line number Diff line Loading @@ -604,7 +604,11 @@ void bta_ag_at_hsp_cback(tBTA_AG_SCB* p_scb, uint16_t command_id, strlcpy(val.str, p_arg, sizeof(val.str)); /* call callback with event */ (*bta_ag_cb.p_cback)(command_id, (tBTA_AG*)&val); if (command_id & 0xff00) { LOG_WARN("Received value that exceeds data type - lost information"); } tBTA_AG_EVT event = static_cast<tBTA_AG_EVT>(command_id); (*bta_ag_cb.p_cback)(event, (tBTA_AG*)&val); } static void remove_spaces(char* str) { Loading Loading @@ -867,7 +871,7 @@ void bta_ag_at_hfp_cback(tBTA_AG_SCB* p_scb, uint16_t cmd, uint8_t arg_type, * If |event| is 0 at the end of this function, the application * callback is NOT invoked. */ tBTA_AG_EVT event = 0; tBTA_AG_EVT event = BTA_AG_ENABLE_EVT; if (cmd < BTA_AG_LOCAL_EVT_FIRST) { event = static_cast<tBTA_AG_EVT>(cmd); } Loading @@ -885,7 +889,7 @@ void bta_ag_at_hfp_cback(tBTA_AG_SCB* p_scb, uint16_t cmd, uint8_t arg_type, if (!bta_ag_sco_is_active_device(p_scb->peer_addr)) { LOG(WARNING) << __func__ << ": AT+CHUP rejected as " << p_scb->peer_addr << " is not the active device"; event = 0; event = BTA_AG_ENABLE_EVT; bta_ag_send_error(p_scb, BTA_AG_ERR_OP_NOT_ALLOWED); } else { bta_ag_send_ok(p_scb); Loading @@ -908,7 +912,7 @@ void bta_ag_at_hfp_cback(tBTA_AG_SCB* p_scb, uint16_t cmd, uint8_t arg_type, remove_spaces(val.str + 1); if (!utl_isintstr(val.str + 1)) { event = 0; event = BTA_AG_ENABLE_EVT; bta_ag_send_error(p_scb, BTA_AG_ERR_INV_CHAR_IN_DSTR); } } else if (val.str[0] == 'V') /* ATDV : Dial VoIP Call */ Loading @@ -916,7 +920,7 @@ void bta_ag_at_hfp_cback(tBTA_AG_SCB* p_scb, uint16_t cmd, uint8_t arg_type, /* We do not check string. Code will be added later if needed. */ if (!((p_scb->peer_features & BTA_AG_PEER_FEAT_VOIP) && (p_scb->features & BTA_AG_FEAT_VOIP))) { event = 0; event = BTA_AG_ENABLE_EVT; bta_ag_send_error(p_scb, BTA_AG_ERR_OP_NOT_SUPPORTED); } } Loading @@ -928,7 +932,7 @@ void bta_ag_at_hfp_cback(tBTA_AG_SCB* p_scb, uint16_t cmd, uint8_t arg_type, remove_spaces(val.str); if (!utl_isdialstr(val.str)) { event = 0; event = BTA_AG_ENABLE_EVT; bta_ag_send_error(p_scb, BTA_AG_ERR_INV_CHAR_IN_DSTR); } } Loading @@ -945,7 +949,7 @@ void bta_ag_at_hfp_cback(tBTA_AG_SCB* p_scb, uint16_t cmd, uint8_t arg_type, case BTA_AG_AT_CHLD_EVT: if (arg_type == BTA_AG_AT_TEST) { /* don't call callback */ event = 0; event = BTA_AG_ENABLE_EVT; /* send CHLD string */ /* Form string based on supported 1.5 feature */ Loading Loading @@ -973,7 +977,7 @@ void bta_ag_at_hfp_cback(tBTA_AG_SCB* p_scb, uint16_t cmd, uint8_t arg_type, val.idx = bta_ag_parse_chld(p_scb, val.str); if (val.idx == BTA_AG_INVALID_CHLD) { event = 0; event = BTA_AG_ENABLE_EVT; bta_ag_send_error(p_scb, BTA_AG_ERR_OP_NOT_SUPPORTED); break; } Loading @@ -982,7 +986,7 @@ void bta_ag_at_hfp_cback(tBTA_AG_SCB* p_scb, uint16_t cmd, uint8_t arg_type, (p_scb->peer_features & BTA_AG_PEER_FEAT_ECC))) { /* we do not support ECC, but HF is sending us a CHLD with call * index*/ event = 0; event = BTA_AG_ENABLE_EVT; bta_ag_send_error(p_scb, BTA_AG_ERR_OP_NOT_SUPPORTED); } else { Loading Loading @@ -1014,7 +1018,7 @@ void bta_ag_at_hfp_cback(tBTA_AG_SCB* p_scb, uint16_t cmd, uint8_t arg_type, if (bta_ag_parse_bind_set(p_scb, val)) { bta_ag_send_ok(p_scb); } else { event = 0; /* don't call callback */ event = BTA_AG_ENABLE_EVT; /* don't call callback */ bta_ag_send_error(p_scb, BTA_AG_ERR_INVALID_INDEX); } } else { Loading @@ -1022,7 +1026,7 @@ void bta_ag_at_hfp_cback(tBTA_AG_SCB* p_scb, uint16_t cmd, uint8_t arg_type, /* Need not pass this command beyond BTIF.*/ /* Stack handles it internally */ event = 0; /* don't call callback */ event = BTA_AG_ENABLE_EVT; /* don't call callback */ } break; Loading @@ -1032,14 +1036,14 @@ void bta_ag_at_hfp_cback(tBTA_AG_SCB* p_scb, uint16_t cmd, uint8_t arg_type, } else { bta_ag_send_error(p_scb, BTA_AG_ERR_INVALID_INDEX); /* don't call callback receiving invalid indicator */ event = 0; event = BTA_AG_ENABLE_EVT; } break; case BTA_AG_AT_CIND_EVT: if (arg_type == BTA_AG_AT_TEST) { /* don't call callback */ event = 0; event = BTA_AG_ENABLE_EVT; /* send CIND string, send OK */ bta_ag_send_result(p_scb, BTA_AG_CIND_RES, p_bta_ag_cfg->cind_info, 0); Loading Loading @@ -1078,7 +1082,7 @@ void bta_ag_at_hfp_cback(tBTA_AG_SCB* p_scb, uint16_t cmd, uint8_t arg_type, if (strlen(p_arg) == 1) { bta_ag_send_ok(p_scb); } else { event = 0; event = BTA_AG_ENABLE_EVT; bta_ag_send_error(p_scb, BTA_AG_ERR_INV_CHAR_IN_TSTR); } break; Loading @@ -1086,7 +1090,7 @@ void bta_ag_at_hfp_cback(tBTA_AG_SCB* p_scb, uint16_t cmd, uint8_t arg_type, case BTA_AG_AT_BINP_EVT: /* if feature not set don't call callback, send ERROR */ if (!(p_scb->features & BTA_AG_FEAT_VTAG)) { event = 0; event = BTA_AG_ENABLE_EVT; bta_ag_send_error(p_scb, BTA_AG_ERR_OP_NOT_SUPPORTED); } break; Loading @@ -1095,7 +1099,7 @@ void bta_ag_at_hfp_cback(tBTA_AG_SCB* p_scb, uint16_t cmd, uint8_t arg_type, /* if feature not supported don't call callback, send ERROR. App will send * OK */ if (!(p_scb->features & BTA_AG_FEAT_VREC)) { event = 0; event = BTA_AG_ENABLE_EVT; bta_ag_send_error(p_scb, BTA_AG_ERR_OP_NOT_SUPPORTED); } break; Loading Loading @@ -1124,7 +1128,7 @@ void bta_ag_at_hfp_cback(tBTA_AG_SCB* p_scb, uint16_t cmd, uint8_t arg_type, if (p_scb->features & BTA_AG_FEAT_ECNR) { bta_ag_send_ok(p_scb); } else { event = 0; event = BTA_AG_ENABLE_EVT; bta_ag_send_error(p_scb, BTA_AG_ERR_OP_NOT_SUPPORTED); } break; Loading @@ -1146,7 +1150,7 @@ void bta_ag_at_hfp_cback(tBTA_AG_SCB* p_scb, uint16_t cmd, uint8_t arg_type, val.num = BTA_AG_BTRH_READ; } } else { event = 0; event = BTA_AG_ENABLE_EVT; bta_ag_send_error(p_scb, BTA_AG_ERR_OP_NOT_SUPPORTED); } break; Loading @@ -1154,7 +1158,7 @@ void bta_ag_at_hfp_cback(tBTA_AG_SCB* p_scb, uint16_t cmd, uint8_t arg_type, case BTA_AG_AT_COPS_EVT: if (arg_type == BTA_AG_AT_SET) { /* don't call callback */ event = 0; event = BTA_AG_ENABLE_EVT; /* send OK */ bta_ag_send_ok(p_scb); Loading @@ -1172,7 +1176,7 @@ void bta_ag_at_hfp_cback(tBTA_AG_SCB* p_scb, uint16_t cmd, uint8_t arg_type, bta_ag_send_error(p_scb, BTA_AG_ERR_OP_NOT_SUPPORTED); } /* don't call callback */ event = 0; event = BTA_AG_ENABLE_EVT; break; case BTA_AG_AT_BIA_EVT: Loading Loading @@ -1203,7 +1207,7 @@ void bta_ag_at_hfp_cback(tBTA_AG_SCB* p_scb, uint16_t cmd, uint8_t arg_type, val.num = bia_masked_out; bta_ag_send_ok(p_scb); } else { event = 0; event = BTA_AG_ENABLE_EVT; bta_ag_send_error(p_scb, BTA_AG_ERR_INVALID_INDEX); } break; Loading @@ -1213,7 +1217,7 @@ void bta_ag_at_hfp_cback(tBTA_AG_SCB* p_scb, uint16_t cmd, uint8_t arg_type, case BTA_AG_AT_CLCC_EVT: if (!(p_scb->features & BTA_AG_FEAT_ECS)) { event = 0; event = BTA_AG_ENABLE_EVT; bta_ag_send_error(p_scb, BTA_AG_ERR_OP_NOT_SUPPORTED); } break; Loading Loading @@ -1300,7 +1304,7 @@ void bta_ag_at_hfp_cback(tBTA_AG_SCB* p_scb, uint16_t cmd, uint8_t arg_type, } /* call callback */ if (event != 0) { if (event != BTA_AG_ENABLE_EVT) { (*bta_ag_cb.p_cback)(event, (tBTA_AG*)&val); } } Loading
system/bta/ag/bta_ag_int.h +3 −0 Original line number Diff line number Diff line Loading @@ -133,6 +133,9 @@ typedef struct { typedef struct { tBTA_AG_RES result; tBTA_AG_RES_DATA data; std::string ToString() const { return base::StringPrintf("result:%s", bta_ag_result_text(result).c_str()); } } tBTA_AG_API_RESULT; /* data type for BTA_AG_API_SETCODEC_EVT */ Loading
system/bta/ag/bta_ag_sco.cc +16 −28 Original line number Diff line number Diff line Loading @@ -31,8 +31,10 @@ #include "btm_api.h" #include "device/include/controller.h" #include "device/include/esco_parameters.h" #include "main/shim/dumpsys.h" #include "osi/include/log.h" #include "osi/include/osi.h" #include "stack/btm/btm_sco.h" #include "stack/include/btu.h" #include "utl.h" Loading Loading @@ -159,21 +161,17 @@ static void bta_ag_sco_conn_cback(uint16_t sco_idx) { static void bta_ag_sco_disc_cback(uint16_t sco_idx) { uint16_t handle = 0; APPL_TRACE_DEBUG( "bta_ag_sco_disc_cback(): sco_idx: 0x%x p_cur_scb: 0x%08x sco.state: " "%d", sco_idx, bta_ag_cb.sco.p_curr_scb, bta_ag_cb.sco.state); APPL_TRACE_DEBUG( "bta_ag_sco_disc_cback(): scb[0] addr: 0x%08x in_use: %u sco_idx: 0x%x " " sco state: %u", &bta_ag_cb.scb[0], bta_ag_cb.scb[0].in_use, bta_ag_cb.scb[0].sco_idx, bta_ag_cb.scb[0].state); APPL_TRACE_DEBUG( "bta_ag_sco_disc_cback(): scb[1] addr: 0x%08x in_use: %u sco_idx: 0x%x " " sco state: %u", &bta_ag_cb.scb[1], bta_ag_cb.scb[1].in_use, bta_ag_cb.scb[1].sco_idx, bta_ag_cb.scb[1].state); LOG_DEBUG( "sco_idx: 0x%x sco.state:%s", sco_idx, sco_state_text(static_cast<tSCO_STATE>(bta_ag_cb.sco.state)).c_str()); LOG_DEBUG( " scb[0] in_use:%s sco_idx: 0x%x sco state:%s", logbool(bta_ag_cb.scb[0].in_use).c_str(), bta_ag_cb.scb[0].sco_idx, sco_state_text(static_cast<tSCO_STATE>(bta_ag_cb.scb[0].state)).c_str()); LOG_DEBUG( " scb[1] in_use:%s sco_idx:0x%x sco state:%s", logbool(bta_ag_cb.scb[1].in_use).c_str(), bta_ag_cb.scb[1].sco_idx, sco_state_text(static_cast<tSCO_STATE>(bta_ag_cb.scb[1].state)).c_str()); /* match callback to scb */ if (bta_ag_cb.sco.p_curr_scb != nullptr && bta_ag_cb.sco.p_curr_scb->in_use) { Loading Loading @@ -345,7 +343,7 @@ static void bta_ag_cback_sco(tBTA_AG_SCB* p_scb, uint8_t event) { sco.handle = bta_ag_scb_to_idx(p_scb); sco.app_id = p_scb->app_id; /* call close cback */ (*bta_ag_cb.p_cback)(event, (tBTA_AG*)&sco); (*bta_ag_cb.p_cback)(static_cast<tBTA_AG_EVT>(event), (tBTA_AG*)&sco); } /******************************************************************************* Loading Loading @@ -604,21 +602,11 @@ void bta_ag_codec_negotiate(tBTA_AG_SCB* p_scb) { } } /******************************************************************************* * * Function bta_ag_sco_event * * Description * * * Returns void * ******************************************************************************/ static void bta_ag_sco_event(tBTA_AG_SCB* p_scb, uint8_t event) { tBTA_AG_SCO_CB* p_sco = &bta_ag_cb.sco; uint8_t previous_state = p_sco->state; LOG_INFO("index=0x%04x, device=%s, state=%s[%d], event=%s[%d]", p_scb->sco_idx, p_scb->peer_addr.ToString().c_str(), LOG_INFO("device:%s index:0x%04x state:%s[%d] event:%s[%d]", PRIVATE_ADDRESS(p_scb->peer_addr), p_scb->sco_idx, bta_ag_sco_state_str(p_sco->state), p_sco->state, bta_ag_sco_evt_str(event), event); Loading
system/bta/av/bta_av_int.h +19 −3 Original line number Diff line number Diff line Loading @@ -32,6 +32,10 @@ #include "osi/include/list.h" #include "stack/include/a2dp_api.h" #define CASE_RETURN_TEXT(code) \ case code: \ return #code /***************************************************************************** * Constants ****************************************************************************/ Loading Loading @@ -226,13 +230,25 @@ typedef struct { uint16_t service_uuid; } tBTA_AV_API_REG; enum { typedef enum : uint8_t { BTA_AV_RS_NONE, /* straight API call */ BTA_AV_RS_OK, /* the role switch result - successful */ BTA_AV_RS_FAIL, /* the role switch result - failed */ BTA_AV_RS_DONE /* the role switch is done - continue */ }; typedef uint8_t tBTA_AV_RS_RES; } tBTA_AV_RS_RES; inline std::string bta_av_role_switch_result_text( const tBTA_AV_RS_RES& result) { switch (result) { CASE_RETURN_TEXT(BTA_AV_RS_NONE); CASE_RETURN_TEXT(BTA_AV_RS_OK); CASE_RETURN_TEXT(BTA_AV_RS_FAIL); CASE_RETURN_TEXT(BTA_AV_RS_DONE); default: return std::string("UNKNOWN"); } } /* data type for BTA_AV_API_OPEN_EVT */ typedef struct { BT_HDR hdr; Loading
system/bta/av/bta_av_main.cc +7 −1 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ #include <string.h> #include "bt_target.h" #include "main/shim/dumpsys.h" #include "osi/include/log.h" #include "osi/include/osi.h" #include "osi/include/properties.h" Loading Loading @@ -895,9 +896,12 @@ static void bta_av_sco_chg_cback(tBTA_SYS_CONN_STATUS status, uint8_t id, int i; tBTA_AV_API_STOP stop; LOG(INFO) << __func__ << ": status=" << +status << ", num_links=" << +id; LOG(INFO) << __func__ << ": status=" << bta_sys_conn_status_text(status) << ", num_links=" << +id; if (id) { bta_av_cb.sco_occupied = true; LOG_DEBUG("SCO occupied peer:%s status:%s", PRIVATE_ADDRESS(peer_addr), bta_sys_conn_status_text(status).c_str()); if (bta_av_cb.features & BTA_AV_FEAT_NO_SCO_SSPD) { return; Loading @@ -919,6 +923,8 @@ static void bta_av_sco_chg_cback(tBTA_SYS_CONN_STATUS status, uint8_t id, } } else { bta_av_cb.sco_occupied = false; LOG_DEBUG("SCO unoccupied peer:%s status:%s", PRIVATE_ADDRESS(peer_addr), bta_sys_conn_status_text(status).c_str()); if (bta_av_cb.features & BTA_AV_FEAT_NO_SCO_SSPD) { return; Loading