Loading system/stack/avdt/avdt_ad.cc +3 −6 Original line number Diff line number Diff line Loading @@ -250,7 +250,7 @@ AvdtpTransportChannel* avdt_ad_tc_tbl_alloc(AvdtpCcb* p_ccb) { /* initialize entry */ p_tbl->peer_mtu = L2CAP_DEFAULT_MTU; p_tbl->cfg_flags = 0; p_tbl->role = tAVDT_ROLE::AVDT_UNKNOWN; p_tbl->ccb_idx = avdt_ccb_to_idx(p_ccb); p_tbl->state = AVDT_AD_ST_IDLE; return p_tbl; Loading Loading @@ -297,7 +297,7 @@ void avdt_ad_tc_close_ind(AvdtpTransportChannel* p_tbl) { close.old_tc_state = p_tbl->state; /* clear avdt_ad_tc_tbl entry */ p_tbl->state = AVDT_AD_ST_UNUSED; p_tbl->cfg_flags = 0; p_tbl->role = tAVDT_ROLE::AVDT_UNKNOWN; p_tbl->peer_mtu = L2CAP_DEFAULT_MTU; /* if signaling channel, notify ccb that channel close */ Loading Loading @@ -356,10 +356,7 @@ void avdt_ad_tc_open_ind(AvdtpTransportChannel* p_tbl) { p_ccb = avdt_ccb_by_idx(p_tbl->ccb_idx); /* use err_param to indicate the role of connection */ evt.err_param = static_cast<uint8_t>(tAVDT_ROLE::AVDT_INT); if (p_tbl->cfg_flags & AVDT_L2C_CFG_CONN_ACP) { evt.err_param = static_cast<uint8_t>(tAVDT_ROLE::AVDT_ACP); } evt.err_param = static_cast<uint8_t>(p_tbl->role); tAVDT_CCB_EVT avdt_ccb_evt; avdt_ccb_evt.msg.hdr = evt; avdt_ccb_event(p_ccb, AVDT_CCB_LL_OPEN_EVT, &avdt_ccb_evt); Loading system/stack/avdt/avdt_int.h +15 −20 Original line number Diff line number Diff line Loading @@ -306,13 +306,6 @@ enum { /* 2 channels(1 media, 1 report) for each SEP and one for signalling */ #define AVDT_NUM_RT_TBL (AVDT_NUM_SEPS * AVDT_CHAN_NUM_TYPES + 1) /* Adaptation layer number of transport channel table entries - moved to target.h #define AVDT_NUM_TC_TBL (AVDT_NUM_SEPS + AVDT_NUM_LINKS) */ /* Configuration flags. AvdtpTransportChannel.cfg_flags */ #define AVDT_L2C_CFG_CONN_INT (1 << 2) #define AVDT_L2C_CFG_CONN_ACP (1 << 3) /* "states" used in transport channel table */ enum tTRANSPORT_CHANNEL_STATE : uint8_t { AVDT_AD_ST_UNUSED = 0, /* Unused - unallocated */ Loading @@ -321,8 +314,6 @@ enum tTRANSPORT_CHANNEL_STATE : uint8_t { AVDT_AD_ST_CONN = 4, /* Waiting for connection confirm */ AVDT_AD_ST_CFG = 5, /* Waiting for configuration complete */ AVDT_AD_ST_OPEN = 6, /* Channel opened */ AVDT_AD_ST_SEC_INT = 7, /* Security process as INT */ AVDT_AD_ST_SEC_ACP = 8, /* Security process as ACP */ }; inline std::string tc_state_text(uint8_t state) { Loading @@ -334,8 +325,6 @@ inline std::string tc_state_text(uint8_t state) { CASE_RETURN_TEXT(AVDT_AD_ST_CONN); CASE_RETURN_TEXT(AVDT_AD_ST_CFG); CASE_RETURN_TEXT(AVDT_AD_ST_OPEN); CASE_RETURN_TEXT(AVDT_AD_ST_SEC_INT); CASE_RETURN_TEXT(AVDT_AD_ST_SEC_ACP); default: RETURN_UNKNOWN_TYPE_STRING(tTRANSPORT_CHANNEL_STATE, state_); } Loading Loading @@ -677,7 +666,13 @@ private: class AvdtpTransportChannel { public: AvdtpTransportChannel() : peer_mtu(0), my_mtu(0), lcid(0), tcid(0), ccb_idx(0), state(0), cfg_flags(0) {} : peer_mtu(0), my_mtu(0), lcid(0), tcid(0), ccb_idx(0), state(0), role(tAVDT_ROLE::AVDT_UNKNOWN) {} void Reset() { peer_mtu = 0; Loading @@ -686,7 +681,7 @@ public: tcid = 0; ccb_idx = 0; state = 0; cfg_flags = 0; role = tAVDT_ROLE::AVDT_UNKNOWN; } uint16_t peer_mtu; // L2CAP MTU of the peer device Loading @@ -695,7 +690,7 @@ public: uint8_t tcid; // Transport channel ID uint8_t ccb_idx; // Channel control block for with this transport channel uint8_t state; // Transport channel state uint8_t cfg_flags; // L2CAP configuration flags tAVDT_ROLE role; // Role for the establishment of the AVDTP signaling channel }; /** Loading system/stack/avdt/avdt_l2c.cc +7 −64 Original line number Diff line number Diff line Loading @@ -69,61 +69,6 @@ const tL2CAP_APPL_INFO avdt_l2c_appl = {avdt_l2c_connect_ind_cback, NULL, NULL}; /******************************************************************************* * * Function avdt_l2c_sec_check_complete_term * * Description The function called when Security Manager finishes * verification of the service side connection * * Returns void * ******************************************************************************/ static void avdt_l2c_sec_check_complete_term(const RawAddress& bd_addr) { AvdtpCcb* p_ccb = NULL; AvdtpTransportChannel* p_tbl; p_ccb = avdt_ccb_by_bd(bd_addr); p_tbl = avdt_ad_tc_tbl_by_st(AVDT_CHAN_SIG, p_ccb, AVDT_AD_ST_SEC_ACP); if (p_tbl == NULL) { log::warn("Adaptation layer transport channel table is NULL"); return; } /* store idx in LCID table, store LCID in routing table */ avdtp_cb.ad.lcid_tbl[p_tbl->lcid] = avdt_ad_tc_tbl_to_idx(p_tbl); avdtp_cb.ad.rt_tbl[avdt_ccb_to_idx(p_ccb)][p_tbl->tcid].lcid = p_tbl->lcid; log::verbose("lcid: 0x{:04x}, bd_addr: {}", p_tbl->lcid, bd_addr); /* transition to configuration state */ p_tbl->state = AVDT_AD_ST_CFG; } /******************************************************************************* * * Function avdt_l2c_sec_check_complete_orig * * Description The function called when Security Manager finishes * verification of the service side connection * * Returns void * ******************************************************************************/ static void avdt_l2c_sec_check_complete_orig(const RawAddress& bd_addr) { AvdtpCcb* p_ccb = NULL; AvdtpTransportChannel* p_tbl; p_ccb = avdt_ccb_by_bd(bd_addr); p_tbl = avdt_ad_tc_tbl_by_st(AVDT_CHAN_SIG, p_ccb, AVDT_AD_ST_SEC_INT); if (p_tbl == NULL) { log::warn("Adaptation layer transport channel table is NULL"); return; } log::verbose("lcid: 0x{:04x}, bd_addr: {}", p_tbl->lcid, bd_addr); /* set channel state */ p_tbl->state = AVDT_AD_ST_CFG; } /******************************************************************************* * * Function avdt_l2c_connect_ind_cback Loading Loading @@ -162,8 +107,8 @@ void avdt_l2c_connect_ind_cback(const RawAddress& bd_addr, uint16_t lcid, uint16 p_tbl->my_mtu = kAvdtpMtu; p_tbl->tcid = AVDT_CHAN_SIG; p_tbl->lcid = lcid; p_tbl->state = AVDT_AD_ST_SEC_ACP; p_tbl->cfg_flags = AVDT_L2C_CFG_CONN_ACP; p_tbl->state = AVDT_AD_ST_CFG; p_tbl->role = tAVDT_ROLE::AVDT_ACP; if (interop_match_addr(INTEROP_2MBPS_LINK_ONLY, &bd_addr)) { // Disable 3DH packets for AVDT ACL to improve sensitivity on HS Loading @@ -171,8 +116,9 @@ void avdt_l2c_connect_ind_cback(const RawAddress& bd_addr, uint16_t lcid, uint16 bd_addr, (acl_get_supported_packet_types() | HCI_PKT_TYPES_MASK_NO_3_DH1 | HCI_PKT_TYPES_MASK_NO_3_DH3 | HCI_PKT_TYPES_MASK_NO_3_DH5)); } /* Assume security check is complete */ avdt_l2c_sec_check_complete_term(p_ccb->peer_addr); /* store idx in LCID table, store LCID in routing table */ avdtp_cb.ad.lcid_tbl[p_tbl->lcid] = avdt_ad_tc_tbl_to_idx(p_tbl); avdtp_cb.ad.rt_tbl[avdt_ccb_to_idx(p_ccb)][p_tbl->tcid].lcid = p_tbl->lcid; return; } } else { Loading Loading @@ -284,9 +230,9 @@ void avdt_l2c_connect_cfm_cback(uint16_t lcid, tL2CAP_CONN result) { return; } p_tbl->state = AVDT_AD_ST_SEC_INT; p_tbl->state = AVDT_AD_ST_CFG; p_tbl->lcid = lcid; p_tbl->cfg_flags = AVDT_L2C_CFG_CONN_INT; p_tbl->role = tAVDT_ROLE::AVDT_INT; if (interop_match_addr(INTEROP_2MBPS_LINK_ONLY, (const RawAddress*)&p_ccb->peer_addr)) { // Disable 3DH packets for AVDT ACL to improve sensitivity on HS Loading @@ -294,9 +240,6 @@ void avdt_l2c_connect_cfm_cback(uint16_t lcid, tL2CAP_CONN result) { p_ccb->peer_addr, (acl_get_supported_packet_types() | HCI_PKT_TYPES_MASK_NO_3_DH1 | HCI_PKT_TYPES_MASK_NO_3_DH3 | HCI_PKT_TYPES_MASK_NO_3_DH5)); } /* Assume security check is complete */ avdt_l2c_sec_check_complete_orig(p_ccb->peer_addr); } /******************************************************************************* Loading Loading
system/stack/avdt/avdt_ad.cc +3 −6 Original line number Diff line number Diff line Loading @@ -250,7 +250,7 @@ AvdtpTransportChannel* avdt_ad_tc_tbl_alloc(AvdtpCcb* p_ccb) { /* initialize entry */ p_tbl->peer_mtu = L2CAP_DEFAULT_MTU; p_tbl->cfg_flags = 0; p_tbl->role = tAVDT_ROLE::AVDT_UNKNOWN; p_tbl->ccb_idx = avdt_ccb_to_idx(p_ccb); p_tbl->state = AVDT_AD_ST_IDLE; return p_tbl; Loading Loading @@ -297,7 +297,7 @@ void avdt_ad_tc_close_ind(AvdtpTransportChannel* p_tbl) { close.old_tc_state = p_tbl->state; /* clear avdt_ad_tc_tbl entry */ p_tbl->state = AVDT_AD_ST_UNUSED; p_tbl->cfg_flags = 0; p_tbl->role = tAVDT_ROLE::AVDT_UNKNOWN; p_tbl->peer_mtu = L2CAP_DEFAULT_MTU; /* if signaling channel, notify ccb that channel close */ Loading Loading @@ -356,10 +356,7 @@ void avdt_ad_tc_open_ind(AvdtpTransportChannel* p_tbl) { p_ccb = avdt_ccb_by_idx(p_tbl->ccb_idx); /* use err_param to indicate the role of connection */ evt.err_param = static_cast<uint8_t>(tAVDT_ROLE::AVDT_INT); if (p_tbl->cfg_flags & AVDT_L2C_CFG_CONN_ACP) { evt.err_param = static_cast<uint8_t>(tAVDT_ROLE::AVDT_ACP); } evt.err_param = static_cast<uint8_t>(p_tbl->role); tAVDT_CCB_EVT avdt_ccb_evt; avdt_ccb_evt.msg.hdr = evt; avdt_ccb_event(p_ccb, AVDT_CCB_LL_OPEN_EVT, &avdt_ccb_evt); Loading
system/stack/avdt/avdt_int.h +15 −20 Original line number Diff line number Diff line Loading @@ -306,13 +306,6 @@ enum { /* 2 channels(1 media, 1 report) for each SEP and one for signalling */ #define AVDT_NUM_RT_TBL (AVDT_NUM_SEPS * AVDT_CHAN_NUM_TYPES + 1) /* Adaptation layer number of transport channel table entries - moved to target.h #define AVDT_NUM_TC_TBL (AVDT_NUM_SEPS + AVDT_NUM_LINKS) */ /* Configuration flags. AvdtpTransportChannel.cfg_flags */ #define AVDT_L2C_CFG_CONN_INT (1 << 2) #define AVDT_L2C_CFG_CONN_ACP (1 << 3) /* "states" used in transport channel table */ enum tTRANSPORT_CHANNEL_STATE : uint8_t { AVDT_AD_ST_UNUSED = 0, /* Unused - unallocated */ Loading @@ -321,8 +314,6 @@ enum tTRANSPORT_CHANNEL_STATE : uint8_t { AVDT_AD_ST_CONN = 4, /* Waiting for connection confirm */ AVDT_AD_ST_CFG = 5, /* Waiting for configuration complete */ AVDT_AD_ST_OPEN = 6, /* Channel opened */ AVDT_AD_ST_SEC_INT = 7, /* Security process as INT */ AVDT_AD_ST_SEC_ACP = 8, /* Security process as ACP */ }; inline std::string tc_state_text(uint8_t state) { Loading @@ -334,8 +325,6 @@ inline std::string tc_state_text(uint8_t state) { CASE_RETURN_TEXT(AVDT_AD_ST_CONN); CASE_RETURN_TEXT(AVDT_AD_ST_CFG); CASE_RETURN_TEXT(AVDT_AD_ST_OPEN); CASE_RETURN_TEXT(AVDT_AD_ST_SEC_INT); CASE_RETURN_TEXT(AVDT_AD_ST_SEC_ACP); default: RETURN_UNKNOWN_TYPE_STRING(tTRANSPORT_CHANNEL_STATE, state_); } Loading Loading @@ -677,7 +666,13 @@ private: class AvdtpTransportChannel { public: AvdtpTransportChannel() : peer_mtu(0), my_mtu(0), lcid(0), tcid(0), ccb_idx(0), state(0), cfg_flags(0) {} : peer_mtu(0), my_mtu(0), lcid(0), tcid(0), ccb_idx(0), state(0), role(tAVDT_ROLE::AVDT_UNKNOWN) {} void Reset() { peer_mtu = 0; Loading @@ -686,7 +681,7 @@ public: tcid = 0; ccb_idx = 0; state = 0; cfg_flags = 0; role = tAVDT_ROLE::AVDT_UNKNOWN; } uint16_t peer_mtu; // L2CAP MTU of the peer device Loading @@ -695,7 +690,7 @@ public: uint8_t tcid; // Transport channel ID uint8_t ccb_idx; // Channel control block for with this transport channel uint8_t state; // Transport channel state uint8_t cfg_flags; // L2CAP configuration flags tAVDT_ROLE role; // Role for the establishment of the AVDTP signaling channel }; /** Loading
system/stack/avdt/avdt_l2c.cc +7 −64 Original line number Diff line number Diff line Loading @@ -69,61 +69,6 @@ const tL2CAP_APPL_INFO avdt_l2c_appl = {avdt_l2c_connect_ind_cback, NULL, NULL}; /******************************************************************************* * * Function avdt_l2c_sec_check_complete_term * * Description The function called when Security Manager finishes * verification of the service side connection * * Returns void * ******************************************************************************/ static void avdt_l2c_sec_check_complete_term(const RawAddress& bd_addr) { AvdtpCcb* p_ccb = NULL; AvdtpTransportChannel* p_tbl; p_ccb = avdt_ccb_by_bd(bd_addr); p_tbl = avdt_ad_tc_tbl_by_st(AVDT_CHAN_SIG, p_ccb, AVDT_AD_ST_SEC_ACP); if (p_tbl == NULL) { log::warn("Adaptation layer transport channel table is NULL"); return; } /* store idx in LCID table, store LCID in routing table */ avdtp_cb.ad.lcid_tbl[p_tbl->lcid] = avdt_ad_tc_tbl_to_idx(p_tbl); avdtp_cb.ad.rt_tbl[avdt_ccb_to_idx(p_ccb)][p_tbl->tcid].lcid = p_tbl->lcid; log::verbose("lcid: 0x{:04x}, bd_addr: {}", p_tbl->lcid, bd_addr); /* transition to configuration state */ p_tbl->state = AVDT_AD_ST_CFG; } /******************************************************************************* * * Function avdt_l2c_sec_check_complete_orig * * Description The function called when Security Manager finishes * verification of the service side connection * * Returns void * ******************************************************************************/ static void avdt_l2c_sec_check_complete_orig(const RawAddress& bd_addr) { AvdtpCcb* p_ccb = NULL; AvdtpTransportChannel* p_tbl; p_ccb = avdt_ccb_by_bd(bd_addr); p_tbl = avdt_ad_tc_tbl_by_st(AVDT_CHAN_SIG, p_ccb, AVDT_AD_ST_SEC_INT); if (p_tbl == NULL) { log::warn("Adaptation layer transport channel table is NULL"); return; } log::verbose("lcid: 0x{:04x}, bd_addr: {}", p_tbl->lcid, bd_addr); /* set channel state */ p_tbl->state = AVDT_AD_ST_CFG; } /******************************************************************************* * * Function avdt_l2c_connect_ind_cback Loading Loading @@ -162,8 +107,8 @@ void avdt_l2c_connect_ind_cback(const RawAddress& bd_addr, uint16_t lcid, uint16 p_tbl->my_mtu = kAvdtpMtu; p_tbl->tcid = AVDT_CHAN_SIG; p_tbl->lcid = lcid; p_tbl->state = AVDT_AD_ST_SEC_ACP; p_tbl->cfg_flags = AVDT_L2C_CFG_CONN_ACP; p_tbl->state = AVDT_AD_ST_CFG; p_tbl->role = tAVDT_ROLE::AVDT_ACP; if (interop_match_addr(INTEROP_2MBPS_LINK_ONLY, &bd_addr)) { // Disable 3DH packets for AVDT ACL to improve sensitivity on HS Loading @@ -171,8 +116,9 @@ void avdt_l2c_connect_ind_cback(const RawAddress& bd_addr, uint16_t lcid, uint16 bd_addr, (acl_get_supported_packet_types() | HCI_PKT_TYPES_MASK_NO_3_DH1 | HCI_PKT_TYPES_MASK_NO_3_DH3 | HCI_PKT_TYPES_MASK_NO_3_DH5)); } /* Assume security check is complete */ avdt_l2c_sec_check_complete_term(p_ccb->peer_addr); /* store idx in LCID table, store LCID in routing table */ avdtp_cb.ad.lcid_tbl[p_tbl->lcid] = avdt_ad_tc_tbl_to_idx(p_tbl); avdtp_cb.ad.rt_tbl[avdt_ccb_to_idx(p_ccb)][p_tbl->tcid].lcid = p_tbl->lcid; return; } } else { Loading Loading @@ -284,9 +230,9 @@ void avdt_l2c_connect_cfm_cback(uint16_t lcid, tL2CAP_CONN result) { return; } p_tbl->state = AVDT_AD_ST_SEC_INT; p_tbl->state = AVDT_AD_ST_CFG; p_tbl->lcid = lcid; p_tbl->cfg_flags = AVDT_L2C_CFG_CONN_INT; p_tbl->role = tAVDT_ROLE::AVDT_INT; if (interop_match_addr(INTEROP_2MBPS_LINK_ONLY, (const RawAddress*)&p_ccb->peer_addr)) { // Disable 3DH packets for AVDT ACL to improve sensitivity on HS Loading @@ -294,9 +240,6 @@ void avdt_l2c_connect_cfm_cback(uint16_t lcid, tL2CAP_CONN result) { p_ccb->peer_addr, (acl_get_supported_packet_types() | HCI_PKT_TYPES_MASK_NO_3_DH1 | HCI_PKT_TYPES_MASK_NO_3_DH3 | HCI_PKT_TYPES_MASK_NO_3_DH5)); } /* Assume security check is complete */ avdt_l2c_sec_check_complete_orig(p_ccb->peer_addr); } /******************************************************************************* Loading