kopia lustrzana https://github.com/espressif/esp-idf
Merge branch 'feature/update_hfp_ag_version' into 'master'
component_bt: Update hfp_ag version to 1.7.2 Closes BT-2082 See merge request espressif/esp-idf!18329pull/7436/merge
commit
49c53dbe03
|
@ -26,6 +26,10 @@ extern "C" {
|
|||
#define ESP_HF_PEER_FEAT_ECC 0x80 /* Enhanced Call Control */
|
||||
#define ESP_HF_PEER_FEAT_EXTERR 0x100 /* Extended error codes */
|
||||
#define ESP_HF_PEER_FEAT_CODEC 0x200 /* Codec Negotiation */
|
||||
/* HFP 1.7+ */
|
||||
#define ESP_HF_PEER_FEAT_HF_IND 0x400 /* HF Indicators */
|
||||
#define ESP_HF_PEER_FEAT_ESCO_S4 0x800 /* eSCO S4 Setting Supported */
|
||||
|
||||
|
||||
/* CHLD feature masks of HF AG */
|
||||
#define ESP_HF_CHLD_FEAT_REL 0x01 /* 0 Release waiting call or held calls */
|
||||
|
|
|
@ -272,7 +272,7 @@ const tBTA_AG_ST_TBL bta_ag_st_tbl[] =
|
|||
/*****************************************************************************
|
||||
** Global data
|
||||
*****************************************************************************/
|
||||
const char *bta_ag_version = "1.6";
|
||||
const uint16_t bta_ag_version = HFP_VERSION_1_7;
|
||||
/* AG control block */
|
||||
#if BTA_DYNAMIC_MEMORY == FALSE
|
||||
tBTA_AG_CB bta_ag_cb;
|
||||
|
@ -758,7 +758,7 @@ static void bta_ag_api_enable(tBTA_AG_DATA *p_data)
|
|||
bta_ag_cb.p_cback = p_data->api_enable.p_cback;
|
||||
bta_ag_cb.parse_mode = p_data->api_enable.parse_mode;
|
||||
/* check if mSBC support enabled */
|
||||
if (strcmp(bta_ag_version, "1.6") == 0) {
|
||||
if (bta_ag_version >= HFP_VERSION_1_6) {
|
||||
bta_ag_cb.msbc_enabled = TRUE;
|
||||
bta_ag_cb.scb->negotiated_codec = BTM_SCO_CODEC_MSBC;
|
||||
} else{
|
||||
|
|
|
@ -70,10 +70,11 @@ enum
|
|||
};
|
||||
|
||||
#if (BTM_WBS_INCLUDED == TRUE)
|
||||
#define BTA_AG_NUM_CODECS 3
|
||||
#define BTA_AG_ESCO_SETTING_IDX_CVSD 0 /* eSCO setting for CVSD */
|
||||
#define BTA_AG_NUM_CODECS 4
|
||||
#define BTA_AG_ESCO_SETTING_IDX_CVSD 0 /* eSCO setting for CVSD */
|
||||
#define BTA_AG_ESCO_SETTING_IDX_T1 1 /* eSCO setting for mSBC T1 */
|
||||
#define BTA_AG_ESCO_SETTING_IDX_T2 2 /* eSCO setting for mSBC T2 */
|
||||
#define BTA_AG_ESCO_SETTING_IDX_S4 3 /* eSCO setting for CVSD S4 */
|
||||
|
||||
static const tBTM_ESCO_PARAMS bta_ag_esco_params[BTA_AG_NUM_CODECS] =
|
||||
{
|
||||
|
@ -81,9 +82,9 @@ static const tBTM_ESCO_PARAMS bta_ag_esco_params[BTA_AG_NUM_CODECS] =
|
|||
{
|
||||
BTM_64KBITS_RATE, /* TX Bandwidth (64 kbits/sec) */
|
||||
BTM_64KBITS_RATE, /* RX Bandwidth (64 kbits/sec) */
|
||||
0x000a, /* 10 ms (HS/HF can use EV3, 2-EV3, 3-EV3) */
|
||||
10, /* 10 ms (HS/HF can use EV3, 2-EV3, 3-EV3) */
|
||||
BTM_VOICE_SETTING_CVSD, /* Inp Linear, Air CVSD, 2s Comp, 16bit */
|
||||
(BTM_SCO_PKT_TYPES_MASK_HV1 + /* Packet Types */
|
||||
(BTM_SCO_PKT_TYPES_MASK_HV1 + /* Packet Types */
|
||||
BTM_SCO_PKT_TYPES_MASK_HV2 +
|
||||
BTM_SCO_PKT_TYPES_MASK_HV3 +
|
||||
BTM_SCO_PKT_TYPES_MASK_EV3 +
|
||||
|
@ -91,7 +92,7 @@ static const tBTM_ESCO_PARAMS bta_ag_esco_params[BTA_AG_NUM_CODECS] =
|
|||
BTM_SCO_PKT_TYPES_MASK_EV5 +
|
||||
BTM_SCO_PKT_TYPES_MASK_NO_2_EV5 +
|
||||
BTM_SCO_PKT_TYPES_MASK_NO_3_EV5),
|
||||
BTM_ESCO_RETRANS_POWER /* Retransmission effort */
|
||||
BTM_ESCO_RETRANS_POWER /* Retransmission effort */
|
||||
},
|
||||
/* mSBC T1 */
|
||||
{
|
||||
|
@ -104,7 +105,7 @@ static const tBTM_ESCO_PARAMS bta_ag_esco_params[BTA_AG_NUM_CODECS] =
|
|||
BTM_SCO_PKT_TYPES_MASK_NO_2_EV5 |
|
||||
BTM_SCO_PKT_TYPES_MASK_NO_3_EV5 |
|
||||
BTM_SCO_PKT_TYPES_MASK_NO_2_EV3 ),
|
||||
BTM_ESCO_RETRANS_QUALITY /* Retransmission effort */
|
||||
BTM_ESCO_RETRANS_QUALITY /* Retransmission effort */
|
||||
},
|
||||
/* mSBC T2*/
|
||||
{
|
||||
|
@ -116,26 +117,56 @@ static const tBTM_ESCO_PARAMS bta_ag_esco_params[BTA_AG_NUM_CODECS] =
|
|||
BTM_SCO_PKT_TYPES_MASK_NO_3_EV3 |
|
||||
BTM_SCO_PKT_TYPES_MASK_NO_2_EV5 |
|
||||
BTM_SCO_PKT_TYPES_MASK_NO_3_EV5),
|
||||
BTM_ESCO_RETRANS_QUALITY /* Retransmission effort */
|
||||
BTM_ESCO_RETRANS_QUALITY /* Retransmission effort */
|
||||
},
|
||||
/* HFP 1.7+ */
|
||||
/* eSCO CVSD S4 */
|
||||
{
|
||||
BTM_64KBITS_RATE, /* TX Bandwidth (64 kbits/sec) */
|
||||
BTM_64KBITS_RATE, /* RX Bandwidth (64 kbits/sec) */
|
||||
12, /* 12 ms (HS/HF can use EV3, 2-EV3) */
|
||||
BTM_VOICE_SETTING_CVSD, /* Inp Linear, Air CVSD, 2s Comp, 16bit */
|
||||
(BTM_SCO_LINK_ALL_PKT_MASK |
|
||||
BTM_SCO_PKT_TYPES_MASK_NO_2_EV5 |
|
||||
BTM_SCO_PKT_TYPES_MASK_NO_3_EV5),
|
||||
BTM_ESCO_RETRANS_QUALITY /* Retransmission effort */
|
||||
}
|
||||
};
|
||||
#else
|
||||
#define BTA_AG_NUM_CODECS 2
|
||||
#define BTA_AG_ESCO_SETTING_IDX_CVSD 0 /* eSCO setting for CVSD S3 */
|
||||
#define BTA_AG_ESCO_SETTING_IDX_S4 1 /* eSCO setting for CVSD S4 */
|
||||
|
||||
/* WBS not included, CVSD by default */
|
||||
static const tBTM_ESCO_PARAMS bta_ag_esco_params =
|
||||
static const tBTM_ESCO_PARAMS bta_ag_esco_params[] =
|
||||
{
|
||||
BTM_64KBITS_RATE, /* TX Bandwidth (64 kbits/sec) */
|
||||
BTM_64KBITS_RATE, /* RX Bandwidth (64 kbits/sec) */
|
||||
0x000a, /* 10 ms (HS/HF can use EV3, 2-EV3, 3-EV3) */
|
||||
0x0060, /* Inp Linear, Air CVSD, 2s Comp, 16bit */
|
||||
(BTM_SCO_PKT_TYPES_MASK_HV1 + /* Packet Types */
|
||||
BTM_SCO_PKT_TYPES_MASK_HV2 +
|
||||
BTM_SCO_PKT_TYPES_MASK_HV3 +
|
||||
BTM_SCO_PKT_TYPES_MASK_EV3 +
|
||||
BTM_SCO_PKT_TYPES_MASK_EV4 +
|
||||
BTM_SCO_PKT_TYPES_MASK_EV5 +
|
||||
BTM_SCO_PKT_TYPES_MASK_NO_2_EV5 +
|
||||
BTM_SCO_PKT_TYPES_MASK_NO_3_EV5),
|
||||
BTM_ESCO_RETRANS_POWER /* Retransmission effort */
|
||||
{
|
||||
BTM_64KBITS_RATE, /* TX Bandwidth (64 kbits/sec) */
|
||||
BTM_64KBITS_RATE, /* RX Bandwidth (64 kbits/sec) */
|
||||
10, /* 10 ms (HS/HF can use EV3, 2-EV3, 3-EV3) */
|
||||
BTM_VOICE_SETTING_CVSD, /* Inp Linear, Air CVSD, 2s Comp, 16bit */
|
||||
(BTM_SCO_PKT_TYPES_MASK_HV1 + /* Packet Types */
|
||||
BTM_SCO_PKT_TYPES_MASK_HV2 +
|
||||
BTM_SCO_PKT_TYPES_MASK_HV3 +
|
||||
BTM_SCO_PKT_TYPES_MASK_EV3 +
|
||||
BTM_SCO_PKT_TYPES_MASK_EV4 +
|
||||
BTM_SCO_PKT_TYPES_MASK_EV5 +
|
||||
BTM_SCO_PKT_TYPES_MASK_NO_2_EV5 +
|
||||
BTM_SCO_PKT_TYPES_MASK_NO_3_EV5),
|
||||
BTM_ESCO_RETRANS_POWER /* Retransmission effort */
|
||||
},
|
||||
/* HFP 1.7+ */
|
||||
/* eSCO CVSD S4 */
|
||||
{
|
||||
BTM_64KBITS_RATE, /* TX Bandwidth (64 kbits/sec) */
|
||||
BTM_64KBITS_RATE, /* RX Bandwidth (64 kbits/sec) */
|
||||
12, /* 12 ms (HS/HF can use EV3, 2-EV3) */
|
||||
BTM_VOICE_SETTING_CVSD, /* Inp Linear, Air CVSD, 2s Comp, 16bit */
|
||||
(BTM_SCO_LINK_ALL_PKT_MASK |
|
||||
BTM_SCO_PKT_TYPES_MASK_NO_2_EV5 |
|
||||
BTM_SCO_PKT_TYPES_MASK_NO_3_EV5),
|
||||
BTM_ESCO_RETRANS_QUALITY /* Retransmission effort */
|
||||
}
|
||||
};
|
||||
#endif
|
||||
|
||||
|
@ -470,9 +501,9 @@ static void bta_ag_create_sco(tBTA_AG_SCB *p_scb, BOOLEAN is_orig)
|
|||
tBTM_STATUS status;
|
||||
UINT8 *p_bd_addr = NULL;
|
||||
tBTM_ESCO_PARAMS params;
|
||||
UINT8 codec_index = BTA_AG_ESCO_SETTING_IDX_CVSD;
|
||||
#if (BTM_WBS_INCLUDED == TRUE)
|
||||
tBTA_AG_PEER_CODEC esco_codec = BTM_SCO_CODEC_CVSD;
|
||||
int codec_index = 0;
|
||||
#endif
|
||||
#if (BTM_SCO_HCI_INCLUDED == TRUE)
|
||||
tBTM_SCO_ROUTE_TYPE sco_route;
|
||||
|
@ -513,11 +544,20 @@ static void bta_ag_create_sco(tBTA_AG_SCB *p_scb, BOOLEAN is_orig)
|
|||
codec_index = BTA_AG_ESCO_SETTING_IDX_T1;
|
||||
}
|
||||
}
|
||||
params = bta_ag_esco_params[codec_index];
|
||||
/* If eSCO codec is CVSD and eSC0 S4 is supported, index is S4 */
|
||||
else if ((esco_codec == BTM_SCO_CODEC_CVSD) && (p_scb->features & BTA_AG_FEAT_ESCO_S4)
|
||||
&& (p_scb->peer_features & BTA_AG_PEER_FEAT_ESCO_S4))
|
||||
{
|
||||
codec_index = BTA_AG_ESCO_SETTING_IDX_S4;
|
||||
}
|
||||
|
||||
#else
|
||||
/* When WBS is not included, use CVSD by default */
|
||||
params = bta_ag_esco_params;
|
||||
if ((p_scb->features & BTA_AG_FEAT_ESCO_S4) && (p_scb->peer_features & BTA_AG_PEER_FEAT_ESCO_S4))
|
||||
{
|
||||
codec_index = BTA_AG_ESCO_SETTING_IDX_S4;
|
||||
}
|
||||
#endif
|
||||
params = bta_ag_esco_params[codec_index];
|
||||
|
||||
if(bta_ag_cb.sco.param_updated) /* If we do not use the default parameters */
|
||||
params = bta_ag_cb.sco.params;
|
||||
|
@ -528,10 +568,13 @@ static void bta_ag_create_sco(tBTA_AG_SCB *p_scb, BOOLEAN is_orig)
|
|||
if (esco_codec == BTM_SCO_CODEC_CVSD) /* For CVSD */
|
||||
#endif
|
||||
{
|
||||
/* Use the application packet types (5 slot EV packets not allowed) */
|
||||
params.packet_types = p_bta_ag_cfg->sco_pkt_types |
|
||||
BTM_SCO_PKT_TYPES_MASK_NO_2_EV5 |
|
||||
BTM_SCO_PKT_TYPES_MASK_NO_3_EV5;
|
||||
if (codec_index == BTA_AG_ESCO_SETTING_IDX_CVSD)
|
||||
{
|
||||
/* Use the application packet types (5 slot EV packets not allowed) */
|
||||
params.packet_types = p_bta_ag_cfg->sco_pkt_types |
|
||||
BTM_SCO_PKT_TYPES_MASK_NO_2_EV5 |
|
||||
BTM_SCO_PKT_TYPES_MASK_NO_3_EV5;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1615,6 +1658,7 @@ void bta_ag_sco_conn_rsp(tBTA_AG_SCB *p_scb, tBTM_ESCO_CONN_REQ_EVT_DATA *p_data
|
|||
|
||||
if (p_data->link_type == BTM_LINK_TYPE_SCO)
|
||||
{
|
||||
resp.retrans_effort = BTM_ESCO_RETRANS_OFF;
|
||||
resp.packet_types = (BTM_SCO_LINK_ONLY_MASK |
|
||||
BTM_SCO_PKT_TYPES_MASK_NO_2_EV3 |
|
||||
BTM_SCO_PKT_TYPES_MASK_NO_3_EV3 |
|
||||
|
@ -1623,6 +1667,13 @@ void bta_ag_sco_conn_rsp(tBTA_AG_SCB *p_scb, tBTM_ESCO_CONN_REQ_EVT_DATA *p_data
|
|||
}
|
||||
else /* Allow controller to use all types available except 5-slot EDR */
|
||||
{
|
||||
if ((p_scb->features & BTA_AG_FEAT_ESCO_S4) &&
|
||||
(p_scb->peer_features & BTA_AG_PEER_FEAT_ESCO_S4))
|
||||
{
|
||||
resp.max_latency = 12;
|
||||
resp.retrans_effort = BTM_ESCO_RETRANS_QUALITY;
|
||||
}
|
||||
|
||||
resp.packet_types = (BTM_SCO_LINK_ALL_PKT_MASK |
|
||||
BTM_SCO_PKT_TYPES_MASK_NO_2_EV5 |
|
||||
BTM_SCO_PKT_TYPES_MASK_NO_3_EV5);
|
||||
|
|
|
@ -157,7 +157,7 @@ BOOLEAN bta_ag_add_record(UINT16 service_uuid, char *p_service_name, UINT8 scn,
|
|||
/* add profile descriptor list */
|
||||
if (service_uuid == UUID_SERVCLASS_AG_HANDSFREE) {
|
||||
profile_uuid = UUID_SERVCLASS_HF_HANDSFREE;
|
||||
version = HFP_VERSION_1_6;
|
||||
version = HFP_VERSION_1_7;
|
||||
} else {
|
||||
profile_uuid = UUID_SERVCLASS_HEADSET;
|
||||
version = HSP_VERSION_1_2;
|
||||
|
|
|
@ -48,6 +48,7 @@
|
|||
#define HFP_VERSION_1_1 0x0101
|
||||
#define HFP_VERSION_1_5 0x0105
|
||||
#define HFP_VERSION_1_6 0x0106
|
||||
#define HFP_VERSION_1_7 0x0107
|
||||
|
||||
#define HSP_VERSION_1_0 0x0100
|
||||
#define HSP_VERSION_1_2 0x0102
|
||||
|
@ -75,12 +76,12 @@
|
|||
#define BTA_AG_INT 1 /* initiating connection */
|
||||
|
||||
/* feature mask that matches spec */
|
||||
#define BTA_AG_BSRF_FEAT_SPEC (BTA_AG_FEAT_3WAY | BTA_AG_FEAT_ECNR | \
|
||||
BTA_AG_FEAT_VREC | BTA_AG_FEAT_INBAND | \
|
||||
BTA_AG_FEAT_VTAG | BTA_AG_FEAT_REJECT | \
|
||||
BTA_AG_FEAT_ECS | BTA_AG_FEAT_ECC | \
|
||||
BTA_AG_FEAT_EXTERR | BTA_AG_FEAT_CODEC | \
|
||||
BTA_AG_FEAT_VOIP)
|
||||
#define BTA_AG_BSRF_FEAT_SPEC (BTA_AG_FEAT_3WAY | BTA_AG_FEAT_ECNR | \
|
||||
BTA_AG_FEAT_VREC | BTA_AG_FEAT_INBAND | \
|
||||
BTA_AG_FEAT_VTAG | BTA_AG_FEAT_REJECT | \
|
||||
BTA_AG_FEAT_ECS | BTA_AG_FEAT_ECC | \
|
||||
BTA_AG_FEAT_EXTERR | BTA_AG_FEAT_CODEC | \
|
||||
BTA_AG_FEAT_ESCO_S4| BTA_AG_FEAT_VOIP)
|
||||
|
||||
#define BTA_AG_SDP_FEAT_SPEC (BTA_AG_FEAT_3WAY | BTA_AG_FEAT_ECNR | \
|
||||
BTA_AG_FEAT_VREC | BTA_AG_FEAT_INBAND | \
|
||||
|
|
|
@ -45,12 +45,16 @@
|
|||
#define BTA_AG_FEAT_ECC 0x00000080 /* Enhanced Call Control */
|
||||
#define BTA_AG_FEAT_EXTERR 0x00000100 /* Extended error codes */
|
||||
#define BTA_AG_FEAT_CODEC 0x00000200 /* Codec Negotiation */
|
||||
#define BTA_AG_FEAT_VOIP 0x00000400 /* VoIP call */
|
||||
/* HFP 1.7+ */
|
||||
#define BTA_AG_FEAT_HF_IND 0x00000400 /* HF Indicators */
|
||||
#define BTA_AG_FEAT_ESCO_S4 0x00000800 /* eSCO S4 Setting Supported */
|
||||
|
||||
/* Proprietary features: using 31 ~ 16 bits */
|
||||
#define BTA_AG_FEAT_BTRH 0x00010000 /* CCAP incoming call hold */
|
||||
#define BTA_AG_FEAT_UNAT 0x00020000 /* Pass unknown AT commands to application */
|
||||
#define BTA_AG_FEAT_NOSCO 0x00040000 /* No SCO control performed by BTA AG */
|
||||
#define BTA_AG_FEAT_NO_ESCO 0x00080000 /* Do not allow or use eSCO */
|
||||
#define BTA_AG_FEAT_VOIP 0x00100000 /* VoIP call */
|
||||
typedef UINT32 tBTA_AG_FEAT;
|
||||
|
||||
/* HFP peer features */
|
||||
|
@ -62,9 +66,16 @@ typedef UINT32 tBTA_AG_FEAT;
|
|||
#define BTA_AG_PEER_FEAT_ECS 0x0020 /* Enhanced Call Status */
|
||||
#define BTA_AG_PEER_FEAT_ECC 0x0040 /* Enhanced Call Control */
|
||||
#define BTA_AG_PEER_FEAT_CODEC 0x0080 /* Codec Negotiation */
|
||||
#define BTA_AG_PEER_FEAT_VOIP 0x0100 /* VoIP call */
|
||||
/* HFP 1.7+ */
|
||||
#define BTA_AG_PEER_FEAT_HF_IND 0x0100 /* HF Indicators */
|
||||
#define BTA_AG_PEER_FEAT_ESCO_S4 0x0200 /* eSCO S4 Setting Supported */
|
||||
typedef UINT16 tBTA_AG_PEER_FEAT;
|
||||
|
||||
/* Proprietary features: using bits after 12 */
|
||||
/* Pass unknown AT command responses to application */
|
||||
#define BTA_AG_PEER_FEAT_UNAT 0x1000
|
||||
#define BTA_AG_PEER_FEAT_VOIP 0x2000 /* VoIP call */
|
||||
|
||||
/* AG extended call handling - masks not related to any spec */
|
||||
#define BTA_AG_CLIENT_CHLD_REL 0x00000001 /* 0 Release waiting call or held calls */
|
||||
#define BTA_AG_CLIENT_CHLD_REL_ACC 0x00000002 /* 1 Release active calls and accept other (waiting or held) cal */
|
||||
|
|
|
@ -1,20 +1,8 @@
|
|||
/******************************************************************************
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2015-2022 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* Copyright (C) 2009-2012 Broadcom Corporation
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
******************************************************************************/
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
/************************************************************************************
|
||||
*
|
||||
|
@ -68,6 +56,7 @@ static hf_local_param_t *hf_local_param;
|
|||
BTA_AG_FEAT_VREC | \
|
||||
BTA_AG_FEAT_INBAND | \
|
||||
BTA_AG_FEAT_CODEC | \
|
||||
BTA_AG_FEAT_ESCO_S4| \
|
||||
BTA_AG_FEAT_UNAT)
|
||||
#endif
|
||||
#else
|
||||
|
@ -78,6 +67,7 @@ static hf_local_param_t *hf_local_param;
|
|||
BTA_AG_FEAT_EXTERR | \
|
||||
BTA_AG_FEAT_VREC | \
|
||||
BTA_AG_FEAT_INBAND | \
|
||||
BTA_AG_FEAT_ESCO_S4| \
|
||||
BTA_AG_FEAT_UNAT)
|
||||
#endif
|
||||
#endif
|
||||
|
|
Ładowanie…
Reference in New Issue