fix(ble/bluedroid): move setting host feature API to GAP

This commit is contained in:
zhiweijian
2025-03-19 14:50:26 +08:00
parent 0e6e23ec53
commit c06b78595d
19 changed files with 189 additions and 154 deletions

View File

@ -214,35 +214,6 @@ esp_err_t esp_ble_iso_remove_iso_data_path(esp_ble_iso_remove_data_path_params_t
== BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL);
}
esp_err_t esp_ble_iso_set_host_feature(uint16_t bit_num, uint8_t bit_val)
{
btc_msg_t msg = {0};
btc_ble_iso_args_t arg;
if (esp_bluedroid_get_status() != ESP_BLUEDROID_STATUS_ENABLED) {
return ESP_ERR_INVALID_STATE;
}
#if (BLE_FEAT_ISO_60_EN == TRUE)
if (bit_num > 0x07BF) {
return ESP_ERR_INVALID_ARG;
}
#else
if (bit_num > 0xFF) {
return ESP_ERR_INVALID_ARG;
}
#endif
msg.sig = BTC_SIG_API_CALL;
msg.pid = BTC_PID_ISO_BLE;
msg.act = BTC_ISO_ACT_SET_HOST_FEATURE;
arg.iso_set_host_feature_params.bit_num = bit_num;
arg.iso_set_host_feature_params.bit_val = bit_val;
return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_iso_args_t), NULL, NULL)
== BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL);
}
esp_err_t esp_ble_iso_read_iso_tx_sync(uint16_t iso_handle)
{
btc_msg_t msg = {0};

View File

@ -1963,3 +1963,34 @@ esp_err_t esp_ble_gap_subrate_request(esp_ble_subrate_req_param_t *subrate_req_p
== BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL);
}
#endif // #if (BLE_FEAT_CONN_SUBRATING == TRUE)
#if (BLE_50_FEATURE_SUPPORT == TRUE)
esp_err_t esp_ble_gap_set_host_feature(uint16_t bit_num, uint8_t bit_val)
{
btc_msg_t msg;
btc_ble_5_gap_args_t arg;
if (esp_bluedroid_get_status() != ESP_BLUEDROID_STATUS_ENABLED) {
return ESP_ERR_INVALID_STATE;
}
#if (BLE_FEAT_ISO_60_EN == TRUE)
if (bit_num > 0x07BF) {
return ESP_ERR_INVALID_ARG;
}
#else
if (bit_num > 0xFF) {
return ESP_ERR_INVALID_ARG;
}
#endif
msg.sig = BTC_SIG_API_CALL;
msg.pid = BTC_PID_GAP_BLE;
msg.act = BTC_GAP_ACT_SET_HOST_FEATURE;
arg.set_host_feature_params.bit_num = bit_num;
arg.set_host_feature_params.bit_val = bit_val;
return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_5_gap_args_t), NULL, NULL)
== BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL);
}
#endif //#if (BLE_50_FEATURE_SUPPORT == TRUE)

View File

@ -26,7 +26,6 @@ typedef enum {
ESP_BLE_ISO_BIG_SYNC_TERMINATE_CMPL_EVT, /*!< When BIG sync terminate complete, the event comes */
ESP_BLE_ISO_BIGINFO_ADV_REPORT_EVT, /*!< When receiving an Advertising PDU that contained a BIGInfo field, the event comes */
ESP_BLE_ISO_ISO_DATA_PATH_UPDATE_EVT, /*!< When ISO data path update complete, the event comes */
ESP_BLE_ISO_SET_HOST_FEATURE_CMPL_EVT, /*!< When host feature set complete, the event comes */
ESP_BLE_ISO_READ_ISO_TX_SYNC_CMPL_EVT, /*!< When reading tx sync complete, the event comes */
ESP_BLE_ISO_READ_LINK_QUALITY_CMPL_EVT, /*!< When reading link quality complete, the event comes */
ESP_BLE_ISO_SET_CIG_PARAMS_CMPL_EVT, /*!< When CIG parameters set complete, the event comes */
@ -295,12 +294,6 @@ typedef union {
ESP_BLE_ISO_DATA_PATH_UPDATE_TYPE op_type; /*!< data path update type, setup or remove */
uint16_t iso_hdl; /*!< Connection handle of the CIS or BIS */
} data_path; /*!< Event parameter of ESP_BLE_ISO_ISO_DATA_PATH_UPDATE_EVT */
/**
* @brief ESP_BLE_ISO_SET_HOST_FEATURE_CMPL_EVT
*/
struct ble_iso_set_host_feature_evt_param {
esp_bt_status_t status; /*!< Indicate host feature update success status */
} host_feature; /*!< Event parameter of ESP_BLE_ISO_SET_HOST_FEATURE_CMPL_EVT */
/**
* @brief ESP_BLE_ISO_READ_ISO_TX_SYNC_CMPL_EVT
*/
@ -529,19 +522,6 @@ esp_err_t esp_ble_iso_set_iso_data_path(esp_ble_iso_set_data_path_params_t *data
*/
esp_err_t esp_ble_iso_remove_iso_data_path(esp_ble_iso_remove_data_path_params_t *data_path_params);
/**
* @brief This function is called to set host feature.
*
* @param[in] bit_num: the bit position in the FeatureSet.
* @param[in] bit_val: the feature is enabled or disabled
*
* @return
* - ESP_OK : success
* - other : failed
*
*/
esp_err_t esp_ble_iso_set_host_feature(uint16_t bit_num, uint8_t bit_val);
/**
* @brief This function is called to read tx sync.
*

View File

@ -244,6 +244,7 @@ typedef enum {
ESP_GAP_BLE_SET_DEFAULT_SUBRATE_COMPLETE_EVT, /*!< when set default subrate complete, the event comes */
ESP_GAP_BLE_SUBRATE_REQUEST_COMPLETE_EVT, /*!< when subrate request command complete, the event comes */
ESP_GAP_BLE_SUBRATE_CHANGE_EVT, /*!< when Connection Subrate Update procedure has completed and some parameters of the specified connection have changed, the event comes */
ESP_GAP_BLE_SET_HOST_FEATURE_CMPL_EVT, /*!< When host feature set complete, the event comes */
ESP_GAP_BLE_EVT_MAX, /*!< when maximum advertising event complete, the event comes */
} esp_gap_ble_cb_event_t;
@ -1775,6 +1776,14 @@ typedef union {
uint16_t supervision_timeout; /*!< New supervision timeout for this connection(Time = N × 10 ms). Range: 0x000A to 0x0C80, Time Range: 100 ms to 32 s */
} subrate_change_evt; /*!< Event parameter of ESP_GAP_BLE_SUBRATE_CHANGE_EVT */
#endif // #if (BLE_FEAT_CONN_SUBRATING == TRUE)
#if (BLE_50_FEATURE_SUPPORT == TRUE)
/**
* @brief ESP_GAP_BLE_SET_HOST_FEATURE_CMPL_EVT
*/
struct ble_set_host_feature_evt_param {
esp_bt_status_t status; /*!< Indicate host feature update success status */
} host_feature; /*!< Event parameter of ESP_GAP_BLE_SET_HOST_FEATURE_CMPL_EVT */
#endif // #if (BLE_50_FEATURE_SUPPORT == TRUE)
} esp_ble_gap_cb_param_t;
/**
@ -3096,6 +3105,19 @@ esp_err_t esp_ble_gap_set_default_subrate(esp_ble_default_subrate_param_t *defau
*/
esp_err_t esp_ble_gap_subrate_request(esp_ble_subrate_req_param_t *subrate_req_params);
/**
* @brief This function is called to set host feature.
*
* @param[in] bit_num: the bit position in the FeatureSet.
* @param[in] bit_val: the feature is enabled or disabled
*
* @return
* - ESP_OK : success
* - other : failed
*
*/
esp_err_t esp_ble_gap_set_host_feature(uint16_t bit_num, uint8_t bit_val);
#ifdef __cplusplus
}
#endif

View File

@ -6163,12 +6163,6 @@ void bta_dm_ble_iso_remove_data_path(tBTA_DM_MSG *p_data)
BTM_BleIsoRemoveDataPath(param.conn_handle, param.data_path_dir);
}
void bta_dm_ble_iso_set_host_feature(tBTA_DM_MSG *p_data)
{
APPL_TRACE_API("%s", __func__);
BTM_BleIsoSetHostFeature(p_data->iso_set_host_feat.bit_num, p_data->iso_set_host_feat.bit_val);
}
void bta_dm_ble_iso_read_tx_sync(tBTA_DM_MSG *p_data)
{
APPL_TRACE_API("%s", __func__);
@ -6328,6 +6322,13 @@ void bta_dm_api_subrate_request(tBTA_DM_MSG *p_data)
}
#endif // #if (BLE_FEAT_CONN_SUBRATING == TRUE)
#if (BLE_50_FEATURE_SUPPORT == TRUE)
void bta_dm_ble_set_host_feature(tBTA_DM_MSG *p_data)
{
BTM_BleSetHostFeature(p_data->set_host_feat.bit_num, p_data->set_host_feat.bit_val);
}
#endif // #if (BLE_50_FEATURE_SUPPORT == TRUE)
#if (BLE_HOST_SETUP_STORAGE_EN == TRUE)
/*******************************************************************************
**

View File

@ -3134,6 +3134,25 @@ void BTA_DmBleGapSubrateReqest(uint16_t conn_handle, uint16_t subrate_min, uint1
}
#endif // #if (BLE_FEAT_CONN_SUBRATING == TRUE)
#if (BLE_50_FEATURE_SUPPORT == TRUE)
void BTA_DmBleGapSetHostFeature(uint16_t bit_num, uint8_t bit_val)
{
tBTA_DM_API_SET_HOST_FEATURE *p_msg;
APPL_TRACE_API("%s", __func__);
if ((p_msg = (tBTA_DM_API_SET_HOST_FEATURE *) osi_malloc(sizeof(tBTA_DM_API_SET_HOST_FEATURE))) != NULL) {
memset(p_msg, 0, sizeof(tBTA_DM_API_SET_HOST_FEATURE));
p_msg->hdr.event = BTA_DM_API_SET_HOST_FEATURE_EVT;
p_msg->bit_num = bit_num;
p_msg->bit_val = bit_val;
//start sent the msg to the bta system control module
bta_sys_sendmsg(p_msg);
} else {
APPL_TRACE_ERROR("%s malloc failed", __func__);
}
}
#endif // #if (BLE_50_FEATURE_SUPPORT == TRUE)
/*******************************************************************************
**
** Function BTA_VendorInit
@ -3866,23 +3885,6 @@ void BTA_DmBleGapIsoDataPathRemove(tBTA_DM_BLE_ISO_REMOVE_DATA_PATH_PARAMS *p_is
}
}
void BTA_DmBleGapIsoSetHostFeature(uint16_t bit_num, uint8_t bit_val)
{
tBTA_DM_API_ISO_SET_HOST_FEATURE *p_msg;
APPL_TRACE_API("%s", __func__);
if ((p_msg = (tBTA_DM_API_ISO_SET_HOST_FEATURE *) osi_malloc(sizeof(tBTA_DM_API_ISO_SET_HOST_FEATURE))) != NULL) {
memset(p_msg, 0, sizeof(tBTA_DM_API_ISO_SET_HOST_FEATURE));
p_msg->hdr.event = BTA_DM_API_ISO_SET_HOST_FEATURE_EVT;
p_msg->bit_num = bit_num;
p_msg->bit_val = bit_val;
//start sent the msg to the bta system control module
bta_sys_sendmsg(p_msg);
} else {
APPL_TRACE_ERROR("%s malloc failed", __func__);
}
}
void BTA_DmBleGapIsoReadTxSync(uint16_t iso_handle)
{
tBTA_DM_API_ISO_READ_TX_SYNC *p_msg;

View File

@ -299,7 +299,6 @@ const tBTA_DM_ACTION bta_dm_action[BTA_DM_MAX_EVT] = {
#endif// #if (BLE_FEAT_ISO_BIG_SYNCER_EN == TRUE)
bta_dm_ble_iso_set_data_path, /* BTA_DM_API_ISO_SET_DATA_PATH_EVT */
bta_dm_ble_iso_remove_data_path, /* BTA_DM_API_ISO_REMOVE_DATA_PATH_EVT */
bta_dm_ble_iso_set_host_feature, /* BTA_DM_API_ISO_SET_HOST_FEATURE_EVT */
bta_dm_ble_iso_read_tx_sync, /* BTA_DM_API_ISO_READ_TX_SYNC_EVT */
bta_dm_ble_iso_read_link_quality, /* BTA_DM_API_ISO_READ_LINK_QUALITY_EVT */
#if (BLE_FEAT_ISO_CIG_CENTRAL_EN == TRUE)
@ -341,6 +340,9 @@ const tBTA_DM_ACTION bta_dm_action[BTA_DM_MAX_EVT] = {
bta_dm_api_set_default_subrate, /* BTA_DM_API_SET_DEFALT_SUBRATE */
bta_dm_api_subrate_request, /* BTA_DM_API_SUBRATE_REQUEST */
#endif // #if (BLE_FEAT_CONN_SUBRATING == TRUE)
#if (BLE_50_FEATURE_SUPPORT == TRUE)
bta_dm_ble_set_host_feature, /* BTA_DM_API_SET_HOST_FEATURE_EVT */
#endif // #if (BLE_50_FEATURE_SUPPORT == TRUE)
};

View File

@ -290,7 +290,6 @@ enum {
#endif // #if (BLE_FEAT_ISO_BIG_SYNCER_EN == TRUE)
BTA_DM_API_ISO_SET_DATA_PATH_EVT,
BTA_DM_API_ISO_REMOVE_DATA_PATH_EVT,
BTA_DM_API_ISO_SET_HOST_FEATURE_EVT,
BTA_DM_API_ISO_READ_TX_SYNC_EVT,
BTA_DM_API_ISO_READ_LINK_QUALITY_EVT,
#if (BLE_FEAT_ISO_CIG_CENTRAL_EN == TRUE)
@ -332,6 +331,9 @@ enum {
BTA_DM_API_SET_DEFALT_SUBRATE,
BTA_DM_API_SUBRATE_REQUEST,
#endif // #if (BLE_FEAT_CONN_SUBRATING == TRUE)
#if (BLE_50_FEATURE_SUPPORT == TRUE)
BTA_DM_API_SET_HOST_FEATURE_EVT,
#endif // #if (BLE_50_FEATURE_SUPPORT == TRUE)
BTA_DM_MAX_EVT
};
@ -1139,6 +1141,14 @@ typedef struct {
} tBTA_DM_API_BLE_SUBRATE_REQUEST;
#endif // #if (BLE_FEAT_CONN_SUBRATING == TRUE)
#if (BLE_50_FEATURE_SUPPORT == TRUE)
typedef struct {
BT_HDR hdr;
uint16_t bit_num;
uint8_t bit_val;
} tBTA_DM_API_SET_HOST_FEATURE;
#endif // #if (BLE_50_FEATURE_SUPPORT == TRUE)
#endif /* BLE_INCLUDED */
#if (BLE_HOST_REMOVE_AN_ACL_EN == TRUE)
@ -1422,12 +1432,6 @@ typedef struct {
tBTA_DM_BLE_ISO_REMOVE_DATA_PATH_PARAMS iso_data_path_remove_param;
} tBTA_DM_API_ISO_DATA_PATH_REMOVE;
typedef struct {
BT_HDR hdr;
uint16_t bit_num;
uint8_t bit_val;
} tBTA_DM_API_ISO_SET_HOST_FEATURE;
typedef struct {
BT_HDR hdr;
uint16_t iso_hdl;
@ -1818,7 +1822,6 @@ typedef union {
#endif // #if (BLE_FEAT_ISO_BIG_SYNCER_EN == TRUE)
tBTA_DM_API_ISO_DATA_PATH iso_set_data_path;
tBTA_DM_API_ISO_DATA_PATH_REMOVE iso_remove_data_path;
tBTA_DM_API_ISO_SET_HOST_FEATURE iso_set_host_feat;
tBTA_DM_API_ISO_READ_TX_SYNC iso_read_tx_sync;
tBTA_DM_API_ISO_READ_LINK_QUALITY iso_read_link_quality;
#if (BLE_FEAT_ISO_CIG_CENTRAL_EN == TRUE)
@ -1861,6 +1864,9 @@ typedef union {
tBTA_DM_API_BLE_SET_DEFAULT_SUBRATE default_subrate;
tBTA_DM_API_BLE_SUBRATE_REQUEST subrate_request;
#endif // #if (BLE_FEAT_CONN_SUBRATING == TRUE)
#if (BLE_50_FEATURE_SUPPORT == TRUE)
tBTA_DM_API_SET_HOST_FEATURE set_host_feat;
#endif // #if (BLE_50_FEATURE_SUPPORT == TRUE)
} tBTA_DM_MSG;
@ -2479,7 +2485,6 @@ extern void bta_dm_ble_big_sync_terminate(tBTA_DM_MSG *p_data);
#endif // #if (BLE_FEAT_ISO_BIG_SYNCER_EN == TRUE)
extern void bta_dm_ble_iso_set_data_path(tBTA_DM_MSG *p_data);
extern void bta_dm_ble_iso_remove_data_path(tBTA_DM_MSG *p_data);
extern void bta_dm_ble_iso_set_host_feature(tBTA_DM_MSG *p_data);
extern void bta_dm_ble_iso_read_tx_sync(tBTA_DM_MSG *p_data);
void bta_dm_ble_iso_read_link_quality(tBTA_DM_MSG *p_data);
#if (BLE_FEAT_ISO_CIG_CENTRAL_EN == TRUE)
@ -2525,4 +2530,7 @@ void bta_dm_api_set_trans_power_reporting_en(tBTA_DM_MSG *p_data);
void bta_dm_api_set_default_subrate(tBTA_DM_MSG *p_data);
void bta_dm_api_subrate_request(tBTA_DM_MSG *p_data);
#endif // #if (BLE_FEAT_CONN_SUBRATING == TRUE)
#if (BLE_50_FEATURE_SUPPORT == TRUE)
extern void bta_dm_ble_set_host_feature(tBTA_DM_MSG *p_data);
#endif // #if (BLE_50_FEATURE_SUPPORT == TRUE)
#endif /* BTA_DM_INT_H */

View File

@ -1694,6 +1694,9 @@ typedef struct {
#define BTA_BLE_GAP_SUBRATE_REQUEST_EVT BTM_BLE_GAP_SUBRATE_REQUEST_EVT
#define BTA_BLE_GAP_SUBRATE_CHANGE_EVT BTM_BLE_GAP_SUBRATE_CHANGE_EVT
#endif // #if (BLE_FEAT_CONN_SUBRATING == TRUE)
#if (BLE_50_FEATURE_SUPPORT == TRUE)
#define BTA_BLE_GAP_SET_HOST_FEATURE_EVT BTM_BLE_GAP_SET_HOST_FEATURE_EVT
#endif // #if (BLE_50_FEATURE_SUPPORT == TRUE)
#define BTA_DM_BLE_5_GAP_UNKNOWN_EVT BTM_BLE_5_GAP_UNKNOWN_EVT
typedef tBTM_BLE_5_GAP_EVENT tBTA_DM_BLE_5_GAP_EVENT;
@ -1717,7 +1720,6 @@ extern tBTM_BLE_5_HCI_CBACK ble_5_hci_cb;
#define BTA_BLE_ISO_BIGINFO_ADV_REPORT_EVT BTM_BLE_ISO_BIGINFO_ADV_REPORT_EVT
#endif // #if (BLE_FEAT_ISO_BIG_SYNCER_EN == TRUE)
#define BTA_BLE_ISO_DATA_PATH_UPFATE_EVT BTM_BLE_ISO_DATA_PATH_UPFATE_EVT
#define BTA_BLE_ISO_SET_HOST_FEATURE_EVT BTM_BLE_ISO_SET_HOST_FEATURE_EVT
#define BTA_BLE_ISO_READ_TX_SYNC_EVT BTM_BLE_ISO_READ_TX_SYNC_EVT
#define BTA_BLE_ISO_READ_LINK_QUALITY_EVT BTM_BLE_ISO_READ_LINK_QUALITY_EVT
#if (BLE_FEAT_ISO_CIG_CENTRAL_EN == TRUE)
@ -3084,6 +3086,10 @@ void BTA_DmBleGapSubrateReqest(uint16_t conn_handle, uint16_t subrate_min, uint1
uint16_t max_latency, uint16_t continuation_number, uint16_t supervision_timeout);
#endif // #if (BLE_FEAT_CONN_SUBRATING == TRUE)
#if (BLE_50_FEATURE_SUPPORT == TRUE)
extern void BTA_DmBleGapSetHostFeature(uint16_t bit_num, uint8_t bit_val);
#endif // #if (BLE_50_FEATURE_SUPPORT == TRUE)
/*******************************************************************************
**
** Function BTA_DmBleSetStorageParams
@ -3371,7 +3377,6 @@ extern void BTA_DmBleGapIsoBigSyncTerminate(tBTA_DM_BLE_BIG_SYNC_TERMINATE_PARAM
#endif // #if (BLE_FEAT_ISO_BIG_SYNCER_EN == TRUE)
extern void BTA_DmBleGapIsoDataPathSet(tBTA_DM_BLE_ISO_SET_DATA_PATH_PARAMS *p_iso_data_path_param);
extern void BTA_DmBleGapIsoDataPathRemove(tBTA_DM_BLE_ISO_REMOVE_DATA_PATH_PARAMS *p_iso_data_path_param);
extern void BTA_DmBleGapIsoSetHostFeature(uint16_t bit_num, uint8_t bit_val);
extern void BTA_DmBleGapIsoReadTxSync(uint16_t iso_handle);
#if (BLE_FEAT_ISO_CIG_CENTRAL_EN == TRUE)
extern void BTA_DmBleIsoSetCigParams(uint8_t cig_id, uint32_t sdu_int_c_to_p, uint32_t sdu_int_p_to_c, uint8_t worse_case_SCA, uint8_t packing,

View File

@ -1270,6 +1270,12 @@ static void btc_ble_5_gap_callback(tBTA_DM_BLE_5_GAP_EVENT event,
param.subrate_change_evt.supervision_timeout = params->subrate_change_evt.supervision_timeout;
break;
#endif // #if (BLE_FEAT_CONN_SUBRATING == TRUE)
#if (BLE_50_FEATURE_SUPPORT == TRUE)
case BTA_BLE_GAP_SET_HOST_FEATURE_EVT:
msg.act = ESP_GAP_BLE_SET_HOST_FEATURE_CMPL_EVT;
param.host_feature.status = btc_btm_status_to_esp_status(params->status);
break;
#endif // #if (BLE_50_FEATURE_SUPPORT == TRUE)
default:
break;
}
@ -2621,6 +2627,11 @@ void btc_gap_ble_call_handler(btc_msg_t *msg)
arg_5->subrate_req_param.max_latency, arg_5->subrate_req_param.continuation_number, arg_5->subrate_req_param.supervision_timeout);
break;
#endif // #if (BLE_FEAT_CONN_SUBRATING == TRUE)
#if (BLE_50_FEATURE_SUPPORT == TRUE)
case BTC_GAP_ACT_SET_HOST_FEATURE:
BTA_DmBleGapSetHostFeature(arg_5->set_host_feature_params.bit_num, arg_5->set_host_feature_params.bit_val);
break;
#endif // #if (BLE_50_FEATURE_SUPPORT == TRUE)
default:
break;
}

View File

@ -133,6 +133,9 @@ typedef enum {
BTC_GAP_BLE_SET_DEFALT_SUBRATE,
BTC_GAP_BLE_SUBRATE_REQUEST,
#endif // #if (BLE_FEAT_CONN_SUBRATING == TRUE)
#if (BLE_50_FEATURE_SUPPORT == TRUE)
BTC_GAP_ACT_SET_HOST_FEATURE,
#endif // #if (BLE_50_FEATURE_SUPPORT == TRUE)
} btc_gap_ble_act_t;
/* btc_ble_gap_args_t */
@ -519,6 +522,10 @@ typedef union {
uint16_t supervision_timeout;
} subrate_req_param;
#endif // #if (BLE_FEAT_CONN_SUBRATING == TRUE)
struct set_host_feature_arg {
uint16_t bit_num;
uint8_t bit_val;
} set_host_feature_params;
} btc_ble_5_gap_args_t;
#endif // #if (BLE_50_FEATURE_SUPPORT == TRUE)

View File

@ -52,7 +52,6 @@ typedef enum {
#endif // #if (BLE_FEAT_ISO_BIG_SYNCER_EN == TRUE)
BTC_ISO_ACT_SET_DATA_PATH,
BTC_ISO_ACT_REMOVE_DATA_PATH,
BTC_ISO_ACT_SET_HOST_FEATURE,
BTC_ISO_ACT_READ_ISO_TX_SYNC,
BTC_ISO_ACT_READ_ISO_LINK_QUALITY,
#if (BLE_FEAT_ISO_CIG_CENTRAL_EN == TRUE)
@ -146,11 +145,6 @@ typedef union {
uint8_t data_path_dir;
} iso_remove_data_path_params;
struct iso_set_host_feature_arg {
uint16_t bit_num;
uint8_t bit_val;
} iso_set_host_feature_params;
struct iso_read_tx_sync_arg {
uint16_t iso_handle;
} iso_read_tx_sync_params;

View File

@ -112,10 +112,6 @@ static void btc_ble_iso_callback(tBTM_BLE_ISO_EVENT event,
param.data_path.status = btc_btm_status_to_esp_status(params->btm_data_path_update.status);
param.data_path.iso_hdl = params->btm_data_path_update.conn_hdl;
break;
case BTA_BLE_ISO_SET_HOST_FEATURE_EVT:
msg.act = ESP_BLE_ISO_SET_HOST_FEATURE_CMPL_EVT;
param.host_feature.status = btc_btm_status_to_esp_status(params->status);
break;
case BTA_BLE_ISO_READ_TX_SYNC_EVT:
msg.act = ESP_BLE_ISO_READ_ISO_TX_SYNC_CMPL_EVT;
param.read_tx_sync.status = btc_btm_status_to_esp_status(params->btm_read_tx_sync.status);
@ -329,9 +325,6 @@ void btc_iso_ble_call_handler(btc_msg_t *msg)
case BTC_ISO_ACT_REMOVE_DATA_PATH:
BTA_DmBleGapIsoDataPathRemove((tBTA_DM_BLE_ISO_REMOVE_DATA_PATH_PARAMS *)&arg->iso_remove_data_path_params);
break;
case BTC_ISO_ACT_SET_HOST_FEATURE:
BTA_DmBleGapIsoSetHostFeature(arg->iso_set_host_feature_params.bit_num, arg->iso_set_host_feature_params.bit_val);
break;
case BTC_ISO_ACT_READ_ISO_TX_SYNC:
BTA_DmBleGapIsoReadTxSync(arg->iso_read_tx_sync_params.iso_handle);
break;

View File

@ -1707,3 +1707,24 @@ void btm_ble_subrate_change_evt(tBTM_BLE_SUBRATE_CHANGE_EVT *params)
BTM_ExtBleCallbackTrigger(BTM_BLE_GAP_SUBRATE_CHANGE_EVT, (tBTM_BLE_5_GAP_CB_PARAMS *)params);
}
#endif // #if (BLE_FEAT_CONN_SUBRATING == TRUE)
#if (BLE_50_FEATURE_SUPPORT == TRUE)
tBTM_STATUS BTM_BleSetHostFeature(uint16_t bit_num, uint8_t bit_val)
{
tHCI_STATUS err = HCI_SUCCESS;
tBTM_STATUS status = BTM_SUCCESS;
tBTM_BLE_5_GAP_CB_PARAMS cb_params = {0};
BTM_TRACE_DEBUG("BTM_BleSetHostFeature bit_num %d bit_value %d\n", bit_num, bit_val);
if ((err = btsnd_hcic_ble_set_host_feature(bit_num, bit_val)) != HCI_SUCCESS) {
BTM_TRACE_ERROR("set host feature, cmd err=0x%x", err);
status = BTM_HCI_ERROR | err;
}
cb_params.status = status;
BTM_ExtBleCallbackTrigger(BTM_BLE_GAP_SET_HOST_FEATURE_EVT, &cb_params);
return status;
}
#endif // #if (BLE_50_FEATURE_SUPPORT == TRUE)

View File

@ -393,25 +393,6 @@ tBTM_STATUS BTM_BleIsoRemoveDataPath(uint16_t conn_handle, uint8_t data_path_dir
return BTM_SUCCESS;
}
tBTM_STATUS BTM_BleIsoSetHostFeature(uint16_t bit_num, uint8_t bit_val)
{
tHCI_STATUS err = HCI_SUCCESS;
tBTM_STATUS status = BTM_SUCCESS;
tBTM_BLE_ISO_CB_PARAMS cb_params = {0};
BTM_TRACE_DEBUG("BTM_BleIsoSetHostFeature bit_num %d bit_value %d\n", bit_num, bit_val);
if ((err = btsnd_hcic_ble_iso_set_host_feature(bit_num, bit_val)) != HCI_SUCCESS) {
BTM_TRACE_ERROR("iso set host feature, cmd err=0x%x", err);
status = BTM_HCI_ERROR | err;
}
cb_params.status = status;
BTM_IsoBleCallbackTrigger(BTM_BLE_ISO_SET_HOST_FEATURE_EVT, &cb_params);
return status;
}
tBTM_STATUS BTM_BleIsoReadTxSync(uint16_t iso_hdl)
{
tHCI_STATUS err = HCI_SUCCESS;

View File

@ -2201,33 +2201,6 @@ UINT8 btsnd_hcic_ble_iso_remove_data_path(uint16_t conn_handle, uint8_t data_pat
return btu_hcif_send_cmd_sync(LOCAL_BR_EDR_CONTROLLER_ID, p);
}
UINT8 btsnd_hcic_ble_iso_set_host_feature(uint16_t bit_num, uint8_t bit_val)
{
BT_HDR *p;
UINT8 *pp;
HCI_TRACE_DEBUG("hci set host feature: bit_num %d bit_val %d", bit_num, bit_val);
#if (BLE_FEAT_ISO_60_EN == TRUE)
HCIC_BLE_CMD_CREATED(p, pp, HCIC_PARAM_SIZE_ISO_SET_HOST_FEATURE_PARAMS_V2);
#else
HCIC_BLE_CMD_CREATED(p, pp, HCIC_PARAM_SIZE_ISO_SET_HOST_FEATURE_PARAMS);
#endif // #if (BLE_FEAT_ISO_60_EN == TRUE)
pp = (UINT8 *)(p + 1);
#if (BLE_FEAT_ISO_60_EN == TRUE)
UINT16_TO_STREAM(pp, HCI_BLE_ISO_SET_HOST_FEATURE_V2);
UINT8_TO_STREAM(pp, HCIC_PARAM_SIZE_ISO_SET_HOST_FEATURE_PARAMS_V2);
// Bit_Number V1
UINT16_TO_STREAM(pp, bit_num);
#else
UINT16_TO_STREAM(pp, HCI_BLE_ISO_SET_HOST_FEATURE);
UINT8_TO_STREAM(pp, HCIC_PARAM_SIZE_ISO_SET_HOST_FEATURE_PARAMS);
// Bit_Number V1
UINT8_TO_STREAM(pp, bit_num);
#endif // #if (BLE_FEAT_ISO_60_EN == TRUE)
UINT8_TO_STREAM(pp, bit_val);
return btu_hcif_send_cmd_sync(LOCAL_BR_EDR_CONTROLLER_ID, p);
}
UINT8 btsnd_hcic_ble_iso_read_tx_sync(uint16_t iso_hdl)
{
BT_HDR *p;
@ -2804,3 +2777,32 @@ UINT8 btsnd_hcic_ble_subrate_request(UINT16 conn_handle, UINT16 subrate_min, UIN
return TRUE;
}
#endif // #if (BLE_FEAT_CONN_SUBRATING == TRUE)
#if (BLE_50_FEATURE_SUPPORT == TRUE)
UINT8 btsnd_hcic_ble_set_host_feature(uint16_t bit_num, uint8_t bit_val)
{
BT_HDR *p;
UINT8 *pp;
HCI_TRACE_DEBUG("hci set host feature: bit_num %d bit_val %d", bit_num, bit_val);
#if (BLE_FEAT_ISO_60_EN == TRUE)
HCIC_BLE_CMD_CREATED(p, pp, HCIC_PARAM_SIZE_SET_HOST_FEATURE_PARAMS_V2);
#else
HCIC_BLE_CMD_CREATED(p, pp, HCIC_PARAM_SIZE_SET_HOST_FEATURE_PARAMS);
#endif // #if (BLE_FEAT_ISO_60_EN == TRUE)
pp = (UINT8 *)(p + 1);
#if (BLE_FEAT_ISO_60_EN == TRUE)
UINT16_TO_STREAM(pp, HCI_BLE_SET_HOST_FEATURE_V2);
UINT8_TO_STREAM(pp, HCIC_PARAM_SIZE_SET_HOST_FEATURE_PARAMS_V2);
// Bit_Number V1
UINT16_TO_STREAM(pp, bit_num);
#else
UINT16_TO_STREAM(pp, HCI_BLE_SET_HOST_FEATURE);
UINT8_TO_STREAM(pp, HCIC_PARAM_SIZE_SET_HOST_FEATURE_PARAMS);
// Bit_Number V1
UINT8_TO_STREAM(pp, bit_num);
#endif // #if (BLE_FEAT_ISO_60_EN == TRUE)
UINT8_TO_STREAM(pp, bit_val);
return btu_hcif_send_cmd_sync(LOCAL_BR_EDR_CONTROLLER_ID, p);
}
#endif // #if (BLE_50_FEATURE_SUPPORT == TRUE)

View File

@ -1086,7 +1086,10 @@ typedef void (tBTM_SET_VENDOR_EVT_MASK_CBACK) (tBTM_STATUS status);
#define BTM_BLE_GAP_SUBRATE_REQUEST_EVT 49
#define BTM_BLE_GAP_SUBRATE_CHANGE_EVT 50
#endif // #if (BLE_FEAT_CONN_SUBRATING == TRUE)
#define BTM_BLE_5_GAP_UNKNOWN_EVT 51
#if (BLE_50_FEATURE_SUPPORT == TRUE)
#define BTM_BLE_GAP_SET_HOST_FEATURE_EVT 51
#endif // #if (BLE_50_FEATURE_SUPPORT == TRUE)
#define BTM_BLE_5_GAP_UNKNOWN_EVT 52
typedef UINT8 tBTM_BLE_5_GAP_EVENT;
#if (BLE_FEAT_ISO_EN == TRUE)
@ -1101,7 +1104,6 @@ typedef UINT8 tBTM_BLE_5_GAP_EVENT;
#define BTM_BLE_ISO_BIGINFO_ADV_REPORT_EVT 6
#endif // #if (BLE_FEAT_ISO_BIG_SYNCER_EN == TRUE)
#define BTM_BLE_ISO_DATA_PATH_UPFATE_EVT 7
#define BTM_BLE_ISO_SET_HOST_FEATURE_EVT 8
#define BTM_BLE_ISO_READ_TX_SYNC_EVT 9
#define BTM_BLE_ISO_READ_LINK_QUALITY_EVT 10
#if (BLE_FEAT_ISO_CIG_CENTRAL_EN == TRUE)
@ -3296,8 +3298,6 @@ tBTM_STATUS BTM_BleIsoSetDataPath(uint16_t conn_handle, uint8_t data_path_dir, u
uint8_t *codec_cfg);
tBTM_STATUS BTM_BleIsoRemoveDataPath(uint16_t conn_handle, uint8_t data_path_dir);
tBTM_STATUS BTM_BleIsoSetHostFeature(uint16_t bit_num, uint8_t bit_val);
tBTM_STATUS BTM_BleIsoReadTxSync(uint16_t iso_hdl);
tBTM_STATUS BTM_BleIsoReadLinkQuality(uint16_t iso_hdl);
@ -3355,5 +3355,7 @@ void BTM_BleSetDefaultSubrate(UINT16 subrate_min, UINT16 subrate_max, UINT16 max
void BTM_BleSubrateRequest(UINT16 conn_handle, UINT16 subrate_min, UINT16 subrate_max,
UINT16 max_latency, UINT16 continuation_number, UINT16 supervision_timeout);
#endif // #if (BLE_FEAT_CONN_SUBRATING == TRUE)
#if (BLE_50_FEATURE_SUPPORT == TRUE)
tBTM_STATUS BTM_BleSetHostFeature(uint16_t bit_num, uint8_t bit_val);
#endif // #if (BLE_50_FEATURE_SUPPORT == TRUE)
#endif

View File

@ -426,9 +426,9 @@
#define HCI_BLE_BIG_TERMINATE_SYNC (0x006C | HCI_GRP_BLE_CMDS)
#define HCI_BLE_ISO_SET_DATA_PATH (0x006E | HCI_GRP_BLE_CMDS)
#define HCI_BLE_ISO_REMOVE_DATA_PATH (0x006F | HCI_GRP_BLE_CMDS)
#define HCI_BLE_ISO_SET_HOST_FEATURE (0x0074 | HCI_GRP_BLE_CMDS)
#define HCI_BLE_SET_HOST_FEATURE (0x0074 | HCI_GRP_BLE_CMDS)
#define HCI_BLE_ISO_READ_ISO_LINK_QUALITY (0x0075 | HCI_GRP_BLE_CMDS)
#define HCI_BLE_ISO_SET_HOST_FEATURE_V2 (0x0097 | HCI_GRP_BLE_CMDS)
#define HCI_BLE_SET_HOST_FEATURE_V2 (0x0097 | HCI_GRP_BLE_CMDS)
#if (BLE_FEAT_POWER_CONTROL_EN == TRUE)
#define HCI_BLE_ENH_READ_TRANS_POWER_LEVEL (0x0076 | HCI_GRP_BLE_CMDS)

View File

@ -1103,8 +1103,6 @@ UINT8 btsnd_hcic_ble_set_default_periodic_adv_sync_trans_params(UINT8 mode, UINT
#endif // #if (BLE_FEAT_ISO_BIG_SYNCER_EN == TRUE)
#define HCIC_PARAM_SIZE_ISO_SET_DATA_PATH_PARAMS 13
#define HCIC_PARAM_SIZE_ISO_REMOVE_DATA_PATH_PARAMS 3
#define HCIC_PARAM_SIZE_ISO_SET_HOST_FEATURE_PARAMS 2
#define HCIC_PARAM_SIZE_ISO_SET_HOST_FEATURE_PARAMS_V2 3
#if (BLE_FEAT_ISO_CIG_CENTRAL_EN == TRUE)
struct ble_hci_le_cis_params {
@ -1178,8 +1176,6 @@ UINT8 btsnd_hcic_ble_iso_set_data_path(uint16_t conn_handle, uint8_t data_path_d
uint8_t *codec_cfg);
UINT8 btsnd_hcic_ble_iso_remove_data_path(uint16_t conn_handle, uint8_t data_path_dir);
UINT8 btsnd_hcic_ble_iso_set_host_feature(uint16_t bit_num, uint8_t bit_val);
UINT8 btsnd_hcic_ble_iso_read_tx_sync(uint16_t iso_hdl);
UINT8 btsnd_hcic_ble_iso_read_iso_link_quality(uint16_t iso_hdl);
@ -1241,4 +1237,10 @@ UINT8 btsnd_hcic_ble_subrate_request(UINT16 conn_handle, UINT16 subrate_min, UIN
UINT16 continuation_number, UINT16 supervision_timeout);
#endif // #if (BLE_FEAT_CONN_SUBRATING == TRUE)
#if (BLE_50_FEATURE_SUPPORT == TRUE)
#define HCIC_PARAM_SIZE_SET_HOST_FEATURE_PARAMS 2
#define HCIC_PARAM_SIZE_SET_HOST_FEATURE_PARAMS_V2 3
UINT8 btsnd_hcic_ble_set_host_feature(uint16_t bit_num, uint8_t bit_val);
#endif // #if (BLE_50_FEATURE_SUPPORT == TRUE)
#endif