27#include "nimble/nimble/include/nimble/hci_common.h"
28#include "nimble/nimble/transport/include/nimble/transport.h"
31#define BLE_LL_SUPP_CMD_LEN (47)
32extern const uint8_t g_ble_ll_supp_cmds[BLE_LL_SUPP_CMD_LEN];
35#define BLE_LL_MAX_EVT_LEN MYNEWT_VAL(BLE_TRANSPORT_EVT_SIZE)
43#define BLE_LL_CFG_NUM_HCI_CMD_PKTS (1)
45typedef void (*ble_ll_hci_post_cmd_complete_cb)(void);
47#if MYNEWT_VAL(BLE_LL_HCI_VS)
48typedef int (* ble_ll_hci_vs_cb_t)(uint16_t ocf,
49 const uint8_t *cmdbuf, uint8_t cmdlen,
50 uint8_t *rspbuf, uint8_t *rsplen);
52#define BLE_LL_HCI_VS_CMD(_ocf, _cb) { .ocf = (_ocf), .cb = (_cb) }
54struct ble_ll_hci_vs_cmd {
56 ble_ll_hci_vs_cb_t cb;
57 SLIST_ENTRY(ble_ll_hci_vs_cmd) link;
62void ble_ll_hci_init(
void);
65bool ble_ll_hci_is_le_event_enabled(
unsigned int subev);
68bool ble_ll_hci_is_event_enabled(
unsigned int evcode);
71int ble_ll_hci_event_send(
struct ble_hci_ev *hci_ev);
74void ble_ll_hci_send_noop(
void);
77int ble_ll_hci_chk_phy_masks(uint8_t all_phys, uint8_t tx_phys, uint8_t rx_phys,
78 uint8_t *txphy, uint8_t *rxphy);
81bool ble_ll_hci_adv_mode_ext(
void);
84int8_t ble_ll_get_tx_pwr_compensation(
void);
86#if MYNEWT_VAL(BLE_LL_HCI_VS)
87void ble_ll_hci_vs_register(
struct ble_ll_hci_vs_cmd *cmds, uint32_t num_cmds);