hfp: use mSBC link settings for LC3_SWB

This commit is contained in:
Matthias Ringwald 2023-05-25 17:38:04 +02:00
parent 73f498e7b8
commit 64126f36f2

View File

@ -102,21 +102,23 @@ static hfp_link_settings_t hfp_next_link_setting_for_connection(hfp_link_setting
static void parse_sequence(hfp_connection_t * context);
#define CODEC_MASK_CVSD (1 << HFP_CODEC_CVSD)
#define CODEC_MASK_MSBC_AND_LC3 (1 << HFP_CODEC_MSBC) | (1 << HFP_CODEC_LC3_SWB)
static const struct link_settings {
const uint16_t max_latency;
const uint8_t retransmission_effort;
const uint16_t packet_types;
const bool eSCO;
const uint8_t codec;
const uint8_t codec_mask;
} hfp_link_settings [] = {
{ 0xffff, 0xff, SCO_PACKET_TYPES_HV1, false, HFP_CODEC_CVSD }, // HFP_LINK_SETTINGS_D0
{ 0xffff, 0xff, SCO_PACKET_TYPES_HV3, false, HFP_CODEC_CVSD }, // HFP_LINK_SETTINGS_D1
{ 0x0007, 0x01, SCO_PACKET_TYPES_EV3, true, HFP_CODEC_CVSD }, // HFP_LINK_SETTINGS_S1
{ 0x0007, 0x01, SCO_PACKET_TYPES_2EV3, true, HFP_CODEC_CVSD }, // HFP_LINK_SETTINGS_S2
{ 0x000a, 0x01, SCO_PACKET_TYPES_2EV3, true, HFP_CODEC_CVSD }, // HFP_LINK_SETTINGS_S3
{ 0x000c, 0x02, SCO_PACKET_TYPES_2EV3, true, HFP_CODEC_CVSD }, // HFP_LINK_SETTINGS_S4
{ 0x0008, 0x02, SCO_PACKET_TYPES_EV3, true, HFP_CODEC_MSBC }, // HFP_LINK_SETTINGS_T1
{ 0x000d, 0x02, SCO_PACKET_TYPES_2EV3, true, HFP_CODEC_MSBC } // HFP_LINK_SETTINGS_T2
{ 0xffff, 0xff, SCO_PACKET_TYPES_HV1, false, CODEC_MASK_CVSD }, // HFP_LINK_SETTINGS_D0
{ 0xffff, 0xff, SCO_PACKET_TYPES_HV3, false, CODEC_MASK_CVSD }, // HFP_LINK_SETTINGS_D1
{ 0x0007, 0x01, SCO_PACKET_TYPES_EV3, true, CODEC_MASK_CVSD }, // HFP_LINK_SETTINGS_S1
{ 0x0007, 0x01, SCO_PACKET_TYPES_2EV3, true, CODEC_MASK_CVSD }, // HFP_LINK_SETTINGS_S2
{ 0x000a, 0x01, SCO_PACKET_TYPES_2EV3, true, CODEC_MASK_CVSD }, // HFP_LINK_SETTINGS_S3
{ 0x000c, 0x02, SCO_PACKET_TYPES_2EV3, true, CODEC_MASK_CVSD }, // HFP_LINK_SETTINGS_S4
{ 0x0008, 0x02, SCO_PACKET_TYPES_EV3, true, CODEC_MASK_MSBC_AND_LC3 }, // HFP_LINK_SETTINGS_T1
{ 0x000d, 0x02, SCO_PACKET_TYPES_2EV3, true, CODEC_MASK_MSBC_AND_LC3 } // HFP_LINK_SETTINGS_T2
};
static const char * hfp_hf_features[] = {
@ -2048,7 +2050,7 @@ hfp_link_settings_t hfp_next_link_setting(hfp_link_settings_t current_setting, b
// skip if S4 but not supported
if ((setting == (int8_t) HFP_LINK_SETTINGS_S4) && !eSCO_S4_supported) continue;
// skip wrong codec
if ( hfp_link_settings[setting].codec != negotiated_codec) continue;
if ((hfp_link_settings[setting].codec_mask & (1 << negotiated_codec)) == 0) continue;
// skip disabled packet types
uint16_t required_packet_types = hfp_link_settings[setting].packet_types;
uint16_t allowed_packet_types = hfp_allowed_sco_packet_types;