mirror of
https://github.com/espressif/esp-nimble.git
synced 2026-08-13 05:27:56 +00:00
nimble/ll: Add set ext adv params v2 command
This adds second version of Set Extended Advertising Parameters command (7.8.53) Introduced in Core Specification v5.4.
This commit is contained in:
committed by
Andrzej Kaczmarek
parent
881dc67914
commit
9275436895
@@ -216,6 +216,11 @@ int ble_ll_adv_sync_big_remove(struct ble_ll_adv_sm *advsm,
|
||||
struct ble_ll_iso_big *big);
|
||||
#endif /* BLE_LL_ISO_BROADCASTER */
|
||||
|
||||
#if MYNEWT_VAL(BLE_VERSION) >= 54
|
||||
int ble_ll_adv_ext_set_param_v2(const uint8_t *cmdbuf, uint8_t len,
|
||||
uint8_t *rspbuf, uint8_t *rsplen);
|
||||
#endif
|
||||
|
||||
/* Called to notify adv code about RPA rotation */
|
||||
void ble_ll_adv_rpa_timeout(void);
|
||||
|
||||
|
||||
@@ -3622,6 +3622,57 @@ done:
|
||||
return rc;
|
||||
}
|
||||
|
||||
#if MYNEWT_VAL(BLE_VERSION) >= 54
|
||||
static uint8_t
|
||||
ble_ll_adv_ext_phy_mode_get(uint8_t phy, uint8_t phy_opt)
|
||||
{
|
||||
if (phy != BLE_HCI_LE_PHY_CODED) {
|
||||
return phy;
|
||||
}
|
||||
|
||||
switch (phy_opt) {
|
||||
case BLE_HCI_ADVERTISING_PHY_OPT_S2_PREF:
|
||||
case BLE_HCI_ADVERTISING_PHY_OPT_S2_REQ:
|
||||
return BLE_PHY_MODE_CODED_500KBPS;
|
||||
case BLE_HCI_ADVERTISING_PHY_OPT_NO_PREF:
|
||||
case BLE_HCI_ADVERTISING_PHY_OPT_S8_PREF:
|
||||
case BLE_HCI_ADVERTISING_PHY_OPT_S8_REQ:
|
||||
return BLE_PHY_MODE_CODED_125KBPS;
|
||||
default:
|
||||
BLE_LL_ASSERT(0);
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
ble_ll_adv_ext_set_param_v2(const uint8_t *cmdbuf, uint8_t len,
|
||||
uint8_t *rspbuf, uint8_t *rsplen)
|
||||
{
|
||||
const struct ble_hci_le_set_ext_adv_params_v2_cp *cmd = (const void *) cmdbuf;
|
||||
struct ble_ll_adv_sm *advsm;
|
||||
int rc;
|
||||
|
||||
if (len != sizeof(*cmd)) {
|
||||
return BLE_ERR_INV_HCI_CMD_PARMS;
|
||||
}
|
||||
|
||||
if ((cmd->pri_phy_opt > 4) || (cmd->sec_phy_opt > 4)) {
|
||||
return BLE_ERR_INV_HCI_CMD_PARMS;
|
||||
}
|
||||
|
||||
rc = ble_ll_adv_ext_set_param(cmdbuf, len - 2, rspbuf, rsplen);
|
||||
if (rc != 0) {
|
||||
return rc;
|
||||
}
|
||||
|
||||
advsm = ble_ll_adv_sm_get(cmd->params_v1.adv_handle);
|
||||
|
||||
advsm->pri_phy = ble_ll_adv_ext_phy_mode_get(cmd->params_v1.pri_phy, cmd->pri_phy_opt);
|
||||
advsm->sec_phy = ble_ll_adv_ext_phy_mode_get(cmd->params_v1.pri_phy, cmd->sec_phy_opt);
|
||||
|
||||
return rc;
|
||||
}
|
||||
#endif
|
||||
|
||||
int
|
||||
ble_ll_adv_ext_set_adv_data(const uint8_t *cmdbuf, uint8_t cmdlen)
|
||||
{
|
||||
|
||||
@@ -1317,6 +1317,13 @@ ble_ll_hci_le_cmd_proc(const uint8_t *cmdbuf, uint8_t len, uint16_t ocf,
|
||||
rc = ble_ll_conn_hci_subrate_req(cmdbuf, len, rspbuf, rsplen);
|
||||
break;
|
||||
#endif
|
||||
#if MYNEWT_VAL(BLE_LL_CFG_FEAT_LL_EXT_ADV)
|
||||
#if MYNEWT_VAL(BLE_VERSION) >= 54
|
||||
case BLE_HCI_OCF_LE_SET_EXT_ADV_PARAM_V2:
|
||||
rc = ble_ll_adv_ext_set_param_v2(cmdbuf, len, rspbuf, rsplen);
|
||||
break;
|
||||
#endif
|
||||
#endif
|
||||
#if MYNEWT_VAL(BLE_LL_CHANNEL_SOUNDING)
|
||||
case BLE_HCI_OCF_LE_CS_RD_LOC_SUPP_CAP:
|
||||
rc = ble_ll_cs_hci_rd_loc_supp_cap(rspbuf, rsplen);
|
||||
|
||||
@@ -286,6 +286,9 @@ static const uint8_t octet_46 = OCTET(
|
||||
BIT(0) /* HCI LE Set Default Subrate */
|
||||
BIT(1) /* HCI LE Subrate Request */
|
||||
#endif
|
||||
#if MYNEWT_VAL(BLE_VERSION) >= 54 && MYNEWT_VAL(BLE_LL_CFG_FEAT_LL_EXT_ADV)
|
||||
BIT(2) /* HCI LE Set Extended Advertising Parameters [v2] */
|
||||
#endif
|
||||
);
|
||||
|
||||
static const uint8_t g_ble_ll_hci_supp_cmds[64] = {
|
||||
|
||||
@@ -1637,6 +1637,13 @@ struct ble_hci_vs_set_local_irk_cp {
|
||||
#define BLE_HCI_PRIVACY_NETWORK (0)
|
||||
#define BLE_HCI_PRIVACY_DEVICE (1)
|
||||
|
||||
/* --- LE set advertising coded PHY options (OCF 0x007F) */
|
||||
#define BLE_HCI_ADVERTISING_PHY_OPT_NO_PREF 0x0
|
||||
#define BLE_HCI_ADVERTISING_PHY_OPT_S2_PREF 0x1
|
||||
#define BLE_HCI_ADVERTISING_PHY_OPT_S8_PREF 0x2
|
||||
#define BLE_HCI_ADVERTISING_PHY_OPT_S2_REQ 0x3
|
||||
#define BLE_HCI_ADVERTISING_PHY_OPT_S8_REQ 0x4
|
||||
|
||||
/* Event Codes */
|
||||
#define BLE_HCI_EVCODE_INQUIRY_CMP (0x01)
|
||||
#define BLE_HCI_EVCODE_INQUIRY_RESULT (0x02)
|
||||
|
||||
Reference in New Issue
Block a user