mirror of
https://github.com/espressif/esp-nimble.git
synced 2026-08-19 00:09:58 +00:00
nimble/ll/css: Add separate vs hci commands for css.
This commit is contained in:
@@ -138,7 +138,7 @@ ble_ll_hci_vs_set_tx_power(uint16_t ocf, const uint8_t *cmdbuf, uint8_t cmdlen,
|
||||
#if MYNEWT_VAL(BLE_LL_HCI_VS_CONN_STRICT_SCHED)
|
||||
#if !MYNEWT_VAL(BLE_LL_CONN_STRICT_SCHED_FIXED)
|
||||
static int
|
||||
ble_ll_hci_vs_css_configure(const uint8_t *cmdbuf, uint8_t cmdlen,
|
||||
ble_ll_hci_vs_css_configure(uint16_t ocf, const uint8_t *cmdbuf, uint8_t cmdlen,
|
||||
uint8_t *rspbuf, uint8_t *rsplen)
|
||||
{
|
||||
const struct ble_hci_vs_css_configure_cp *cmd = (const void *)cmdbuf;
|
||||
@@ -149,9 +149,8 @@ ble_ll_hci_vs_css_configure(const uint8_t *cmdbuf, uint8_t cmdlen,
|
||||
return BLE_ERR_INV_HCI_CMD_PARMS;
|
||||
}
|
||||
|
||||
if (ble_ll_sched_css_is_enabled() &&
|
||||
!SLIST_EMPTY(&g_ble_ll_conn_css_list)) {
|
||||
return BLE_ERR_CTLR_BUSY;
|
||||
if (ble_ll_sched_css_is_enabled()) {
|
||||
return BLE_ERR_CMD_DISALLOWED;
|
||||
}
|
||||
|
||||
slot_us = le32toh(cmd->slot_us);
|
||||
@@ -172,7 +171,7 @@ ble_ll_hci_vs_css_configure(const uint8_t *cmdbuf, uint8_t cmdlen,
|
||||
#endif
|
||||
|
||||
static int
|
||||
ble_ll_hci_vs_css_enable(const uint8_t *cmdbuf, uint8_t cmdlen,
|
||||
ble_ll_hci_vs_css_enable(uint16_t ocf, const uint8_t *cmdbuf, uint8_t cmdlen,
|
||||
uint8_t *rspbuf, uint8_t *rsplen)
|
||||
{
|
||||
const struct ble_hci_vs_css_enable_cp *cmd = (const void *)cmdbuf;
|
||||
@@ -182,7 +181,7 @@ ble_ll_hci_vs_css_enable(const uint8_t *cmdbuf, uint8_t cmdlen,
|
||||
}
|
||||
|
||||
if (!SLIST_EMPTY(&g_ble_ll_conn_active_list)) {
|
||||
return BLE_ERR_CTLR_BUSY;
|
||||
return BLE_ERR_CMD_DISALLOWED;
|
||||
}
|
||||
|
||||
if (cmd->enable & 0xfe) {
|
||||
@@ -195,8 +194,9 @@ ble_ll_hci_vs_css_enable(const uint8_t *cmdbuf, uint8_t cmdlen,
|
||||
}
|
||||
|
||||
static int
|
||||
ble_ll_hci_vs_css_set_next_slot(const uint8_t *cmdbuf, uint8_t cmdlen,
|
||||
uint8_t *rspbuf, uint8_t *rsplen)
|
||||
ble_ll_hci_vs_css_set_next_slot(uint16_t ocf, const uint8_t *cmdbuf,
|
||||
uint8_t cmdlen, uint8_t *rspbuf,
|
||||
uint8_t *rsplen)
|
||||
{
|
||||
const struct ble_hci_vs_css_set_next_slot_cp *cmd = (const void *)cmdbuf;
|
||||
uint16_t slot_idx;
|
||||
@@ -221,8 +221,9 @@ ble_ll_hci_vs_css_set_next_slot(const uint8_t *cmdbuf, uint8_t cmdlen,
|
||||
}
|
||||
|
||||
static int
|
||||
ble_ll_hci_vs_css_set_conn_slot(const uint8_t *cmdbuf, uint8_t cmdlen,
|
||||
uint8_t *rspbuf, uint8_t *rsplen)
|
||||
ble_ll_hci_vs_css_set_conn_slot(uint16_t ocf, const uint8_t *cmdbuf,
|
||||
uint8_t cmdlen, uint8_t *rspbuf,
|
||||
uint8_t *rsplen)
|
||||
{
|
||||
const struct ble_hci_vs_css_set_conn_slot_cp *cmd = (const void *)cmdbuf;
|
||||
struct ble_ll_conn_sm *connsm;
|
||||
@@ -269,8 +270,9 @@ ble_ll_hci_vs_css_set_conn_slot(const uint8_t *cmdbuf, uint8_t cmdlen,
|
||||
}
|
||||
|
||||
static int
|
||||
ble_ll_hci_vs_css_read_conn_slot(const uint8_t *cmdbuf, uint8_t cmdlen,
|
||||
uint8_t *rspbuf, uint8_t *rsplen)
|
||||
ble_ll_hci_vs_css_read_conn_slot(uint16_t ocf, const uint8_t *cmdbuf,
|
||||
uint8_t cmdlen, uint8_t *rspbuf,
|
||||
uint8_t *rsplen)
|
||||
{
|
||||
const struct ble_hci_vs_css_read_conn_slot_cp *cmd = (const void *)cmdbuf;
|
||||
struct ble_hci_vs_css_read_conn_slot_rp *rsp = (void *)rspbuf;
|
||||
@@ -292,42 +294,11 @@ ble_ll_hci_vs_css_read_conn_slot(const uint8_t *cmdbuf, uint8_t cmdlen,
|
||||
}
|
||||
|
||||
*rsplen = sizeof(*rsp);
|
||||
rsp->opcode = cmd->opcode;
|
||||
rsp->conn_handle = cmd->conn_handle;
|
||||
rsp->slot_idx = htole16(connsm->css_slot_idx);
|
||||
|
||||
return BLE_ERR_SUCCESS;
|
||||
}
|
||||
|
||||
static int
|
||||
ble_ll_hci_vs_css(uint16_t ocf, const uint8_t *cmdbuf, uint8_t cmdlen,
|
||||
uint8_t *rspbuf, uint8_t *rsplen)
|
||||
{
|
||||
const struct ble_hci_vs_css_cp *cmd = (const void *)cmdbuf;
|
||||
|
||||
if (cmdlen < sizeof(*cmd)) {
|
||||
return BLE_ERR_INV_HCI_CMD_PARMS;
|
||||
}
|
||||
|
||||
*rsplen = 0;
|
||||
|
||||
switch (cmd->opcode) {
|
||||
#if !MYNEWT_VAL(BLE_LL_CONN_STRICT_SCHED_FIXED)
|
||||
case BLE_HCI_VS_CSS_OP_CONFIGURE:
|
||||
return ble_ll_hci_vs_css_configure(cmdbuf, cmdlen, rspbuf, rsplen);
|
||||
#endif
|
||||
case BLE_HCI_VS_CSS_OP_ENABLE:
|
||||
return ble_ll_hci_vs_css_enable(cmdbuf, cmdlen, rspbuf, rsplen);
|
||||
case BLE_HCI_VS_CSS_OP_SET_NEXT_SLOT:
|
||||
return ble_ll_hci_vs_css_set_next_slot(cmdbuf, cmdlen, rspbuf, rsplen);
|
||||
case BLE_HCI_VS_CSS_OP_SET_CONN_SLOT:
|
||||
return ble_ll_hci_vs_css_set_conn_slot(cmdbuf, cmdlen, rspbuf, rsplen);
|
||||
case BLE_HCI_VS_CSS_OP_READ_CONN_SLOT:
|
||||
return ble_ll_hci_vs_css_read_conn_slot(cmdbuf, cmdlen, rspbuf, rsplen);
|
||||
}
|
||||
|
||||
return BLE_ERR_INV_HCI_CMD_PARMS;
|
||||
}
|
||||
#endif
|
||||
|
||||
static struct ble_ll_hci_vs_cmd g_ble_ll_hci_vs_cmds[] = {
|
||||
@@ -336,8 +307,18 @@ static struct ble_ll_hci_vs_cmd g_ble_ll_hci_vs_cmds[] = {
|
||||
BLE_LL_HCI_VS_CMD(BLE_HCI_OCF_VS_SET_TX_PWR,
|
||||
ble_ll_hci_vs_set_tx_power),
|
||||
#if MYNEWT_VAL(BLE_LL_HCI_VS_CONN_STRICT_SCHED)
|
||||
BLE_LL_HCI_VS_CMD(BLE_HCI_OCF_VS_CSS,
|
||||
ble_ll_hci_vs_css),
|
||||
#if !MYNEWT_VAL(BLE_LL_CONN_STRICT_SCHED_FIXED)
|
||||
BLE_LL_HCI_VS_CMD(BLE_HCI_OCF_VS_CSS_CONFIGURE,
|
||||
ble_ll_hci_vs_css_configure),
|
||||
#endif
|
||||
BLE_LL_HCI_VS_CMD(BLE_HCI_OCF_VS_CSS_ENABLE,
|
||||
ble_ll_hci_vs_css_enable),
|
||||
BLE_LL_HCI_VS_CMD(BLE_HCI_OCF_VS_CSS_SET_NEXT_SLOT,
|
||||
ble_ll_hci_vs_css_set_next_slot),
|
||||
BLE_LL_HCI_VS_CMD(BLE_HCI_OCF_VS_CSS_SET_CONN_SLOT,
|
||||
ble_ll_hci_vs_css_set_conn_slot),
|
||||
BLE_LL_HCI_VS_CMD(BLE_HCI_OCF_VS_CSS_READ_CONN_SLOT,
|
||||
ble_ll_hci_vs_css_read_conn_slot),
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
@@ -1142,39 +1142,29 @@ struct ble_hci_vs_set_tx_pwr_rp {
|
||||
int8_t tx_power;
|
||||
} __attribute__((packed));
|
||||
|
||||
#define BLE_HCI_OCF_VS_CSS (MYNEWT_VAL(BLE_HCI_VS_OCF_OFFSET) + (0x0003))
|
||||
struct ble_hci_vs_css_cp {
|
||||
uint8_t opcode;
|
||||
} __attribute__((packed));
|
||||
#define BLE_HCI_VS_CSS_OP_CONFIGURE 0x01
|
||||
#define BLE_HCI_OCF_VS_CSS_CONFIGURE (MYNEWT_VAL(BLE_HCI_VS_OCF_OFFSET) + (0x0003))
|
||||
struct ble_hci_vs_css_configure_cp {
|
||||
uint8_t opcode;
|
||||
uint32_t slot_us;
|
||||
uint32_t period_slots;
|
||||
} __attribute__((packed));
|
||||
#define BLE_HCI_VS_CSS_OP_ENABLE 0x02
|
||||
#define BLE_HCI_OCF_VS_CSS_ENABLE (MYNEWT_VAL(BLE_HCI_VS_OCF_OFFSET) + (0x0004))
|
||||
struct ble_hci_vs_css_enable_cp {
|
||||
uint8_t opcode;
|
||||
uint8_t enable;
|
||||
} __attribute__((packed));
|
||||
#define BLE_HCI_VS_CSS_OP_SET_NEXT_SLOT 0x03
|
||||
#define BLE_HCI_OCF_VS_CSS_SET_NEXT_SLOT (MYNEWT_VAL(BLE_HCI_VS_OCF_OFFSET) + (0x0005))
|
||||
struct ble_hci_vs_css_set_next_slot_cp {
|
||||
uint8_t opcode;
|
||||
uint16_t slot_idx;
|
||||
} __attribute__((packed));
|
||||
#define BLE_HCI_VS_CSS_OP_SET_CONN_SLOT 0x04
|
||||
#define BLE_HCI_OCF_VS_CSS_SET_CONN_SLOT (MYNEWT_VAL(BLE_HCI_VS_OCF_OFFSET) + (0x0006))
|
||||
struct ble_hci_vs_css_set_conn_slot_cp {
|
||||
uint8_t opcode;
|
||||
uint16_t conn_handle;
|
||||
uint16_t slot_idx;
|
||||
} __attribute__((packed));
|
||||
#define BLE_HCI_VS_CSS_OP_READ_CONN_SLOT 0x05
|
||||
#define BLE_HCI_OCF_VS_CSS_READ_CONN_SLOT (MYNEWT_VAL(BLE_HCI_VS_OCF_OFFSET) + (0x0007))
|
||||
struct ble_hci_vs_css_read_conn_slot_cp {
|
||||
uint8_t opcode;
|
||||
uint16_t conn_handle;
|
||||
} __attribute__((packed));
|
||||
struct ble_hci_vs_css_read_conn_slot_rp {
|
||||
uint8_t opcode;
|
||||
uint16_t conn_handle;
|
||||
uint16_t slot_idx;
|
||||
} __attribute__((packed));
|
||||
|
||||
Reference in New Issue
Block a user