forked from espressif/esp-idf
Merge branch 'feature/migration_to_nimble_1.5' into 'master'
Nimble: migrate to nimble 1.5 branch See merge request espressif/esp-idf!22034
This commit is contained in:
@@ -536,7 +536,8 @@ if(CONFIG_BT_ENABLED)
|
|||||||
host/nimble/nimble/nimble/host/store/config/include
|
host/nimble/nimble/nimble/host/store/config/include
|
||||||
)
|
)
|
||||||
|
|
||||||
list(APPEND srcs "host/nimble/nimble/nimble/host/util/src/addr.c"
|
list(APPEND srcs "host/nimble/nimble/nimble/transport/src/transport.c"
|
||||||
|
"host/nimble/nimble/nimble/host/util/src/addr.c"
|
||||||
"host/nimble/nimble/nimble/host/services/gatt/src/ble_svc_gatt.c"
|
"host/nimble/nimble/nimble/host/services/gatt/src/ble_svc_gatt.c"
|
||||||
"host/nimble/nimble/nimble/host/services/tps/src/ble_svc_tps.c"
|
"host/nimble/nimble/nimble/host/services/tps/src/ble_svc_tps.c"
|
||||||
"host/nimble/nimble/nimble/host/services/ias/src/ble_svc_ias.c"
|
"host/nimble/nimble/nimble/host/services/ias/src/ble_svc_ias.c"
|
||||||
@@ -568,7 +569,6 @@ if(CONFIG_BT_ENABLED)
|
|||||||
"host/nimble/nimble/nimble/host/src/ble_store.c"
|
"host/nimble/nimble/nimble/host/src/ble_store.c"
|
||||||
"host/nimble/nimble/nimble/host/src/ble_sm_lgcy.c"
|
"host/nimble/nimble/nimble/host/src/ble_sm_lgcy.c"
|
||||||
"host/nimble/nimble/nimble/host/src/ble_hs_cfg.c"
|
"host/nimble/nimble/nimble/host/src/ble_hs_cfg.c"
|
||||||
"host/nimble/nimble/nimble/host/src/ble_monitor.c"
|
|
||||||
"host/nimble/nimble/nimble/host/src/ble_att_clt.c"
|
"host/nimble/nimble/nimble/host/src/ble_att_clt.c"
|
||||||
"host/nimble/nimble/nimble/host/src/ble_l2cap_coc.c"
|
"host/nimble/nimble/nimble/host/src/ble_l2cap_coc.c"
|
||||||
"host/nimble/nimble/nimble/host/src/ble_hs_mbuf.c"
|
"host/nimble/nimble/nimble/host/src/ble_hs_mbuf.c"
|
||||||
@@ -603,6 +603,7 @@ if(CONFIG_BT_ENABLED)
|
|||||||
porting/include
|
porting/include
|
||||||
host/nimble/nimble/porting/nimble/include
|
host/nimble/nimble/porting/nimble/include
|
||||||
host/nimble/port/include
|
host/nimble/port/include
|
||||||
|
host/nimble/nimble/nimble/transport/include
|
||||||
)
|
)
|
||||||
|
|
||||||
if(NOT CONFIG_BT_LE_CONTROLLER_NPL_OS_PORTING_SUPPORT)
|
if(NOT CONFIG_BT_LE_CONTROLLER_NPL_OS_PORTING_SUPPORT)
|
||||||
@@ -648,7 +649,10 @@ if(CONFIG_BT_ENABLED)
|
|||||||
"host/nimble/nimble/nimble/host/mesh/src/crypto.c"
|
"host/nimble/nimble/nimble/host/mesh/src/crypto.c"
|
||||||
"host/nimble/nimble/nimble/host/mesh/src/settings.c"
|
"host/nimble/nimble/nimble/host/mesh/src/settings.c"
|
||||||
"host/nimble/nimble/nimble/host/mesh/src/adv.c"
|
"host/nimble/nimble/nimble/host/mesh/src/adv.c"
|
||||||
|
"host/nimble/nimble/nimble/host/mesh/src/adv_ext.c"
|
||||||
|
"host/nimble/nimble/nimble/host/mesh/src/adv_legacy.c"
|
||||||
"host/nimble/nimble/nimble/host/mesh/src/model_srv.c"
|
"host/nimble/nimble/nimble/host/mesh/src/model_srv.c"
|
||||||
|
"host/nimble/nimble/nimble/host/mesh/src/msg.c"
|
||||||
"host/nimble/nimble/nimble/host/mesh/src/beacon.c"
|
"host/nimble/nimble/nimble/host/mesh/src/beacon.c"
|
||||||
"host/nimble/nimble/nimble/host/mesh/src/glue.c"
|
"host/nimble/nimble/nimble/host/mesh/src/glue.c"
|
||||||
"host/nimble/nimble/nimble/host/mesh/src/model_cli.c"
|
"host/nimble/nimble/nimble/host/mesh/src/model_cli.c"
|
||||||
@@ -661,7 +665,6 @@ if(CONFIG_BT_ENABLED)
|
|||||||
"host/nimble/nimble/nimble/host/mesh/src/light_model.c"
|
"host/nimble/nimble/nimble/host/mesh/src/light_model.c"
|
||||||
"host/nimble/nimble/nimble/host/mesh/src/health_cli.c"
|
"host/nimble/nimble/nimble/host/mesh/src/health_cli.c"
|
||||||
"host/nimble/nimble/nimble/host/mesh/src/lpn.c"
|
"host/nimble/nimble/nimble/host/mesh/src/lpn.c"
|
||||||
"host/nimble/nimble/nimble/host/mesh/src/proxy.c"
|
|
||||||
"host/nimble/nimble/nimble/host/mesh/src/health_srv.c"
|
"host/nimble/nimble/nimble/host/mesh/src/health_srv.c"
|
||||||
"host/nimble/nimble/nimble/host/mesh/src/testing.c"
|
"host/nimble/nimble/nimble/host/mesh/src/testing.c"
|
||||||
"host/nimble/nimble/nimble/host/mesh/src/aes-ccm.c"
|
"host/nimble/nimble/nimble/host/mesh/src/aes-ccm.c"
|
||||||
@@ -670,11 +673,14 @@ if(CONFIG_BT_ENABLED)
|
|||||||
"host/nimble/nimble/nimble/host/mesh/src/cfg.c"
|
"host/nimble/nimble/nimble/host/mesh/src/cfg.c"
|
||||||
"host/nimble/nimble/nimble/host/mesh/src/pb_adv.c"
|
"host/nimble/nimble/nimble/host/mesh/src/pb_adv.c"
|
||||||
"host/nimble/nimble/nimble/host/mesh/src/pb_gatt.c"
|
"host/nimble/nimble/nimble/host/mesh/src/pb_gatt.c"
|
||||||
|
"host/nimble/nimble/nimble/host/mesh/src/pb_gatt_srv.c"
|
||||||
"host/nimble/nimble/nimble/host/mesh/src/prov_device.c"
|
"host/nimble/nimble/nimble/host/mesh/src/prov_device.c"
|
||||||
"host/nimble/nimble/nimble/host/mesh/src/provisioner.c"
|
"host/nimble/nimble/nimble/host/mesh/src/provisioner.c"
|
||||||
"host/nimble/nimble/nimble/host/mesh/src/heartbeat.c"
|
"host/nimble/nimble/nimble/host/mesh/src/heartbeat.c"
|
||||||
"host/nimble/nimble/nimble/host/mesh/src/rpl.c"
|
"host/nimble/nimble/nimble/host/mesh/src/rpl.c"
|
||||||
"host/nimble/nimble/nimble/host/mesh/src/subnet.c"
|
"host/nimble/nimble/nimble/host/mesh/src/subnet.c"
|
||||||
|
"host/nimble/nimble/nimble/host/mesh/src/proxy_msg.c"
|
||||||
|
"host/nimble/nimble/nimble/host/mesh/src/proxy_srv.c"
|
||||||
"host/nimble/nimble/nimble/host/mesh/src/net.c")
|
"host/nimble/nimble/nimble/host/mesh/src/net.c")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
@@ -7,7 +7,7 @@
|
|||||||
#ifndef __ESP_NIMBLE_HCI_H__
|
#ifndef __ESP_NIMBLE_HCI_H__
|
||||||
#define __ESP_NIMBLE_HCI_H__
|
#define __ESP_NIMBLE_HCI_H__
|
||||||
|
|
||||||
#include "nimble/ble_hci_trans.h"
|
#include "nimble/transport.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
@@ -30,27 +30,16 @@ static void *ble_hci_rx_cmd_hs_arg;
|
|||||||
static ble_hci_trans_rx_acl_fn *ble_hci_rx_acl_hs_cb;
|
static ble_hci_trans_rx_acl_fn *ble_hci_rx_acl_hs_cb;
|
||||||
static void *ble_hci_rx_acl_hs_arg;
|
static void *ble_hci_rx_acl_hs_arg;
|
||||||
|
|
||||||
static struct os_mbuf_pool ble_hci_acl_mbuf_pool;
|
|
||||||
static struct os_mempool_ext ble_hci_acl_pool;
|
|
||||||
/*
|
/*
|
||||||
* The MBUF payload size must accommodate the HCI data header size plus the
|
* The MBUF payload size must accommodate the HCI data header size plus the
|
||||||
* maximum ACL data packet length. The ACL block size is the size of the
|
* maximum ACL data packet length. The ACL block size is the size of the
|
||||||
* mbufs we will allocate.
|
* mbufs we will allocate.
|
||||||
*/
|
*/
|
||||||
#define ACL_BLOCK_SIZE OS_ALIGN(MYNEWT_VAL(BLE_ACL_BUF_SIZE) \
|
#define ACL_BLOCK_SIZE OS_ALIGN(MYNEWT_VAL(BLE_TRANSPORT_ACL_SIZE) \
|
||||||
+ BLE_MBUF_MEMBLOCK_OVERHEAD \
|
+ BLE_MBUF_MEMBLOCK_OVERHEAD \
|
||||||
+ BLE_HCI_DATA_HDR_SZ, OS_ALIGNMENT)
|
+ BLE_HCI_DATA_HDR_SZ, OS_ALIGNMENT)
|
||||||
|
|
||||||
static os_membuf_t *ble_hci_acl_buf;
|
|
||||||
|
|
||||||
static struct os_mempool ble_hci_cmd_pool;
|
|
||||||
static os_membuf_t *ble_hci_cmd_buf;
|
|
||||||
|
|
||||||
static struct os_mempool ble_hci_evt_hi_pool;
|
|
||||||
static os_membuf_t *ble_hci_evt_hi_buf;
|
|
||||||
|
|
||||||
static struct os_mempool ble_hci_evt_lo_pool;
|
|
||||||
static os_membuf_t *ble_hci_evt_lo_buf;
|
|
||||||
|
|
||||||
static SemaphoreHandle_t vhci_send_sem;
|
static SemaphoreHandle_t vhci_send_sem;
|
||||||
const static char *TAG = "NimBLE";
|
const static char *TAG = "NimBLE";
|
||||||
@@ -59,9 +48,9 @@ int os_msys_buf_alloc(void);
|
|||||||
void os_msys_buf_free(void);
|
void os_msys_buf_free(void);
|
||||||
|
|
||||||
void ble_hci_trans_cfg_hs(ble_hci_trans_rx_cmd_fn *cmd_cb,
|
void ble_hci_trans_cfg_hs(ble_hci_trans_rx_cmd_fn *cmd_cb,
|
||||||
void *cmd_arg,
|
void *cmd_arg,
|
||||||
ble_hci_trans_rx_acl_fn *acl_cb,
|
ble_hci_trans_rx_acl_fn *acl_cb,
|
||||||
void *acl_arg)
|
void *acl_arg)
|
||||||
{
|
{
|
||||||
ble_hci_rx_cmd_hs_cb = cmd_cb;
|
ble_hci_rx_cmd_hs_cb = cmd_cb;
|
||||||
ble_hci_rx_cmd_hs_arg = cmd_arg;
|
ble_hci_rx_cmd_hs_arg = cmd_arg;
|
||||||
@@ -88,7 +77,7 @@ int ble_hci_trans_hs_cmd_tx(uint8_t *cmd)
|
|||||||
rc = BLE_HS_ETIMEOUT_HCI;
|
rc = BLE_HS_ETIMEOUT_HCI;
|
||||||
}
|
}
|
||||||
|
|
||||||
ble_hci_trans_buf_free(cmd);
|
ble_transport_free(cmd);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -96,16 +85,14 @@ int ble_hci_trans_ll_evt_tx(uint8_t *hci_ev)
|
|||||||
{
|
{
|
||||||
int rc = ESP_FAIL;
|
int rc = ESP_FAIL;
|
||||||
|
|
||||||
if (ble_hci_rx_cmd_hs_cb) {
|
rc = ble_transport_to_hs_evt((void *)hci_ev);
|
||||||
rc = ble_hci_rx_cmd_hs_cb(hci_ev, ble_hci_rx_cmd_hs_arg);
|
|
||||||
}
|
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ble_hci_trans_hs_acl_tx(struct os_mbuf *om)
|
int ble_hci_trans_hs_acl_tx(struct os_mbuf *om)
|
||||||
{
|
{
|
||||||
uint16_t len = 0;
|
uint16_t len = 0;
|
||||||
uint8_t data[MYNEWT_VAL(BLE_ACL_BUF_SIZE) + 1], rc = 0;
|
uint8_t data[MYNEWT_VAL(BLE_TRANSPORT_ACL_SIZE) + 1], rc = 0;
|
||||||
/* If this packet is zero length, just free it */
|
/* If this packet is zero length, just free it */
|
||||||
if (OS_MBUF_PKTLEN(om) == 0) {
|
if (OS_MBUF_PKTLEN(om) == 0) {
|
||||||
os_mbuf_free_chain(om);
|
os_mbuf_free_chain(om);
|
||||||
@@ -136,76 +123,11 @@ int ble_hci_trans_ll_acl_tx(struct os_mbuf *om)
|
|||||||
{
|
{
|
||||||
int rc = ESP_FAIL;
|
int rc = ESP_FAIL;
|
||||||
|
|
||||||
if (ble_hci_rx_acl_hs_cb) {
|
rc = ble_transport_to_hs_acl((void *)om);
|
||||||
rc = ble_hci_rx_acl_hs_cb(om, ble_hci_rx_acl_hs_arg);
|
|
||||||
}
|
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t *ble_hci_trans_buf_alloc(int type)
|
|
||||||
{
|
|
||||||
uint8_t *buf;
|
|
||||||
|
|
||||||
switch (type) {
|
|
||||||
case BLE_HCI_TRANS_BUF_CMD:
|
|
||||||
buf = os_memblock_get(&ble_hci_cmd_pool);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case BLE_HCI_TRANS_BUF_EVT_HI:
|
|
||||||
buf = os_memblock_get(&ble_hci_evt_hi_pool);
|
|
||||||
if (buf == NULL) {
|
|
||||||
/* If no high-priority event buffers remain, try to grab a
|
|
||||||
* low-priority one.
|
|
||||||
*/
|
|
||||||
buf = ble_hci_trans_buf_alloc(BLE_HCI_TRANS_BUF_EVT_LO);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case BLE_HCI_TRANS_BUF_EVT_LO:
|
|
||||||
buf = os_memblock_get(&ble_hci_evt_lo_pool);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
assert(0);
|
|
||||||
buf = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
return buf;
|
|
||||||
}
|
|
||||||
|
|
||||||
void ble_hci_trans_buf_free(uint8_t *buf)
|
|
||||||
{
|
|
||||||
int rc;
|
|
||||||
/* XXX: this may look a bit odd, but the controller uses the command
|
|
||||||
* buffer to send back the command complete/status as an immediate
|
|
||||||
* response to the command. This was done to insure that the controller
|
|
||||||
* could always send back one of these events when a command was received.
|
|
||||||
* Thus, we check to see which pool the buffer came from so we can free
|
|
||||||
* it to the appropriate pool
|
|
||||||
*/
|
|
||||||
if (os_memblock_from(&ble_hci_evt_hi_pool, buf)) {
|
|
||||||
rc = os_memblock_put(&ble_hci_evt_hi_pool, buf);
|
|
||||||
assert(rc == 0);
|
|
||||||
} else if (os_memblock_from(&ble_hci_evt_lo_pool, buf)) {
|
|
||||||
rc = os_memblock_put(&ble_hci_evt_lo_pool, buf);
|
|
||||||
assert(rc == 0);
|
|
||||||
} else {
|
|
||||||
assert(os_memblock_from(&ble_hci_cmd_pool, buf));
|
|
||||||
rc = os_memblock_put(&ble_hci_cmd_pool, buf);
|
|
||||||
assert(rc == 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Unsupported; the RAM transport does not have a dedicated ACL data packet
|
|
||||||
* pool.
|
|
||||||
*/
|
|
||||||
int ble_hci_trans_set_acl_free_cb(os_mempool_put_fn *cb, void *arg)
|
|
||||||
{
|
|
||||||
ble_hci_acl_pool.mpe_put_cb = cb;
|
|
||||||
ble_hci_acl_pool.mpe_put_arg = arg;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int ble_hci_trans_reset(void)
|
int ble_hci_trans_reset(void)
|
||||||
{
|
{
|
||||||
@@ -215,39 +137,17 @@ int ble_hci_trans_reset(void)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Allocates a buffer (mbuf) for ACL operation.
|
|
||||||
*
|
|
||||||
* @return The allocated buffer on success;
|
|
||||||
* NULL on buffer exhaustion.
|
|
||||||
*/
|
|
||||||
static struct os_mbuf *ble_hci_trans_acl_buf_alloc(void)
|
|
||||||
{
|
|
||||||
struct os_mbuf *m;
|
|
||||||
uint8_t usrhdr_len;
|
|
||||||
|
|
||||||
#if MYNEWT_VAL(BLE_DEVICE)
|
|
||||||
usrhdr_len = sizeof(struct ble_mbuf_hdr);
|
|
||||||
#elif MYNEWT_VAL(BLE_HS_FLOW_CTRL)
|
|
||||||
usrhdr_len = BLE_MBUF_HS_HDR_LEN;
|
|
||||||
#else
|
|
||||||
usrhdr_len = 0;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
m = os_mbuf_get_pkthdr(&ble_hci_acl_mbuf_pool, usrhdr_len);
|
|
||||||
return m;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void ble_hci_rx_acl(uint8_t *data, uint16_t len)
|
static void ble_hci_rx_acl(uint8_t *data, uint16_t len)
|
||||||
{
|
{
|
||||||
struct os_mbuf *m;
|
struct os_mbuf *m;
|
||||||
int rc;
|
int rc;
|
||||||
int sr;
|
int sr;
|
||||||
if (len < BLE_HCI_DATA_HDR_SZ || len > MYNEWT_VAL(BLE_ACL_BUF_SIZE)) {
|
if (len < BLE_HCI_DATA_HDR_SZ || len > MYNEWT_VAL(BLE_TRANSPORT_ACL_SIZE)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
m = ble_hci_trans_acl_buf_alloc();
|
m = ble_transport_alloc_acl_from_hs();
|
||||||
|
|
||||||
if (!m) {
|
if (!m) {
|
||||||
ESP_LOGE(TAG, "%s failed to allocate ACL buffers; increase ACL_BUF_COUNT", __func__);
|
ESP_LOGE(TAG, "%s failed to allocate ACL buffers; increase ACL_BUF_COUNT", __func__);
|
||||||
@@ -259,59 +159,10 @@ static void ble_hci_rx_acl(uint8_t *data, uint16_t len)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
OS_ENTER_CRITICAL(sr);
|
OS_ENTER_CRITICAL(sr);
|
||||||
if (ble_hci_rx_acl_hs_cb) {
|
ble_transport_to_hs_acl(m);
|
||||||
ble_hci_rx_acl_hs_cb(m, NULL);
|
|
||||||
}
|
|
||||||
OS_EXIT_CRITICAL(sr);
|
OS_EXIT_CRITICAL(sr);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ble_hci_transport_init(void)
|
|
||||||
{
|
|
||||||
int rc;
|
|
||||||
|
|
||||||
/* Ensure this function only gets called by sysinit. */
|
|
||||||
SYSINIT_ASSERT_ACTIVE();
|
|
||||||
|
|
||||||
rc = os_mempool_ext_init(&ble_hci_acl_pool,
|
|
||||||
MYNEWT_VAL(BLE_ACL_BUF_COUNT),
|
|
||||||
ACL_BLOCK_SIZE,
|
|
||||||
ble_hci_acl_buf,
|
|
||||||
"ble_hci_acl_pool");
|
|
||||||
SYSINIT_PANIC_ASSERT(rc == 0);
|
|
||||||
|
|
||||||
rc = os_mbuf_pool_init(&ble_hci_acl_mbuf_pool,
|
|
||||||
&ble_hci_acl_pool.mpe_mp,
|
|
||||||
ACL_BLOCK_SIZE,
|
|
||||||
MYNEWT_VAL(BLE_ACL_BUF_COUNT));
|
|
||||||
SYSINIT_PANIC_ASSERT(rc == 0);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Create memory pool of HCI command buffers. NOTE: we currently dont
|
|
||||||
* allow this to be configured. The controller will only allow one
|
|
||||||
* outstanding command. We decided to keep this a pool in case we allow
|
|
||||||
* allow the controller to handle more than one outstanding command.
|
|
||||||
*/
|
|
||||||
rc = os_mempool_init(&ble_hci_cmd_pool,
|
|
||||||
1,
|
|
||||||
BLE_HCI_TRANS_CMD_SZ,
|
|
||||||
ble_hci_cmd_buf,
|
|
||||||
"ble_hci_cmd_pool");
|
|
||||||
SYSINIT_PANIC_ASSERT(rc == 0);
|
|
||||||
|
|
||||||
rc = os_mempool_init(&ble_hci_evt_hi_pool,
|
|
||||||
MYNEWT_VAL(BLE_HCI_EVT_HI_BUF_COUNT),
|
|
||||||
MYNEWT_VAL(BLE_HCI_EVT_BUF_SIZE),
|
|
||||||
ble_hci_evt_hi_buf,
|
|
||||||
"ble_hci_evt_hi_pool");
|
|
||||||
SYSINIT_PANIC_ASSERT(rc == 0);
|
|
||||||
|
|
||||||
rc = os_mempool_init(&ble_hci_evt_lo_pool,
|
|
||||||
MYNEWT_VAL(BLE_HCI_EVT_LO_BUF_COUNT),
|
|
||||||
MYNEWT_VAL(BLE_HCI_EVT_BUF_SIZE),
|
|
||||||
ble_hci_evt_lo_buf,
|
|
||||||
"ble_hci_evt_lo_pool");
|
|
||||||
SYSINIT_PANIC_ASSERT(rc == 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @brief: BT controller callback function, used to notify the upper layer that
|
* @brief: BT controller callback function, used to notify the upper layer that
|
||||||
@@ -329,7 +180,6 @@ static void controller_rcv_pkt_ready(void)
|
|||||||
*/
|
*/
|
||||||
static int host_rcv_pkt(uint8_t *data, uint16_t len)
|
static int host_rcv_pkt(uint8_t *data, uint16_t len)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (data[0] == BLE_HCI_UART_H4_EVT) {
|
if (data[0] == BLE_HCI_UART_H4_EVT) {
|
||||||
uint8_t *evbuf;
|
uint8_t *evbuf;
|
||||||
int totlen;
|
int totlen;
|
||||||
@@ -338,9 +188,9 @@ static int host_rcv_pkt(uint8_t *data, uint16_t len)
|
|||||||
totlen = BLE_HCI_EVENT_HDR_LEN + data[2];
|
totlen = BLE_HCI_EVENT_HDR_LEN + data[2];
|
||||||
assert(totlen <= UINT8_MAX + BLE_HCI_EVENT_HDR_LEN);
|
assert(totlen <= UINT8_MAX + BLE_HCI_EVENT_HDR_LEN);
|
||||||
|
|
||||||
if (totlen > MYNEWT_VAL(BLE_HCI_EVT_BUF_SIZE)) {
|
if (totlen > MYNEWT_VAL(BLE_TRANSPORT_EVT_SIZE)) {
|
||||||
ESP_LOGE(TAG, "Received HCI data length at host (%d) exceeds maximum configured HCI event buffer size (%d).",
|
ESP_LOGE(TAG, "Received HCI data length at host (%d) exceeds maximum configured HCI event buffer size (%d).",
|
||||||
totlen, MYNEWT_VAL(BLE_HCI_EVT_BUF_SIZE));
|
totlen, MYNEWT_VAL(BLE_TRANSPORT_EVT_SIZE));
|
||||||
ble_hs_sched_reset(BLE_HS_ECONTROLLER);
|
ble_hs_sched_reset(BLE_HS_ECONTROLLER);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -351,14 +201,14 @@ static int host_rcv_pkt(uint8_t *data, uint16_t len)
|
|||||||
|
|
||||||
/* Allocate LE Advertising Report Event from lo pool only */
|
/* Allocate LE Advertising Report Event from lo pool only */
|
||||||
if ((data[1] == BLE_HCI_EVCODE_LE_META) &&
|
if ((data[1] == BLE_HCI_EVCODE_LE_META) &&
|
||||||
(data[3] == BLE_HCI_LE_SUBEV_ADV_RPT || data[3] == BLE_HCI_LE_SUBEV_EXT_ADV_RPT)) {
|
(data[3] == BLE_HCI_LE_SUBEV_ADV_RPT || data[3] == BLE_HCI_LE_SUBEV_EXT_ADV_RPT)) {
|
||||||
evbuf = ble_hci_trans_buf_alloc(BLE_HCI_TRANS_BUF_EVT_LO);
|
evbuf = ble_transport_alloc_evt(1);
|
||||||
/* Skip advertising report if we're out of memory */
|
/* Skip advertising report if we're out of memory */
|
||||||
if (!evbuf) {
|
if (!evbuf) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
evbuf = ble_hci_trans_buf_alloc(BLE_HCI_TRANS_BUF_EVT_HI);
|
evbuf = ble_transport_alloc_evt(0);
|
||||||
assert(evbuf != NULL);
|
assert(evbuf != NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -377,48 +227,10 @@ static const esp_vhci_host_callback_t vhci_host_cb = {
|
|||||||
.notify_host_recv = host_rcv_pkt,
|
.notify_host_recv = host_rcv_pkt,
|
||||||
};
|
};
|
||||||
|
|
||||||
static void ble_buf_free(void)
|
|
||||||
{
|
|
||||||
os_msys_buf_free();
|
|
||||||
|
|
||||||
nimble_platform_mem_free(ble_hci_evt_hi_buf);
|
|
||||||
ble_hci_evt_hi_buf = NULL;
|
|
||||||
nimble_platform_mem_free(ble_hci_evt_lo_buf);
|
|
||||||
ble_hci_evt_lo_buf = NULL;
|
|
||||||
nimble_platform_mem_free(ble_hci_cmd_buf);
|
|
||||||
ble_hci_cmd_buf = NULL;
|
|
||||||
nimble_platform_mem_free(ble_hci_acl_buf);
|
|
||||||
ble_hci_acl_buf = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
static esp_err_t ble_buf_alloc(void)
|
|
||||||
{
|
|
||||||
if (os_msys_buf_alloc()) {
|
|
||||||
return ESP_ERR_NO_MEM;
|
|
||||||
}
|
|
||||||
|
|
||||||
ble_hci_evt_hi_buf = (os_membuf_t *) nimble_platform_mem_calloc(1,
|
|
||||||
(sizeof(os_membuf_t) * OS_MEMPOOL_SIZE(MYNEWT_VAL(BLE_HCI_EVT_HI_BUF_COUNT),
|
|
||||||
MYNEWT_VAL(BLE_HCI_EVT_BUF_SIZE))));
|
|
||||||
|
|
||||||
ble_hci_evt_lo_buf = (os_membuf_t *) nimble_platform_mem_calloc(1,
|
|
||||||
(sizeof(os_membuf_t) * OS_MEMPOOL_SIZE(MYNEWT_VAL(BLE_HCI_EVT_LO_BUF_COUNT),
|
|
||||||
MYNEWT_VAL(BLE_HCI_EVT_BUF_SIZE))));
|
|
||||||
|
|
||||||
ble_hci_cmd_buf = (os_membuf_t *) nimble_platform_mem_calloc(1,
|
|
||||||
(sizeof(os_membuf_t) * OS_MEMPOOL_SIZE(1, BLE_HCI_TRANS_CMD_SZ)));
|
|
||||||
|
|
||||||
ble_hci_acl_buf = (os_membuf_t *) nimble_platform_mem_calloc(1,
|
|
||||||
(sizeof(os_membuf_t) * OS_MEMPOOL_SIZE(MYNEWT_VAL(BLE_ACL_BUF_COUNT),
|
|
||||||
ACL_BLOCK_SIZE)));
|
|
||||||
|
|
||||||
if (!ble_hci_evt_hi_buf || !ble_hci_evt_lo_buf || !ble_hci_cmd_buf || !ble_hci_acl_buf) {
|
|
||||||
ble_buf_free();
|
|
||||||
return ESP_ERR_NO_MEM;
|
|
||||||
}
|
|
||||||
return ESP_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
extern void ble_transport_init(void);
|
||||||
|
extern esp_err_t ble_buf_alloc(void);
|
||||||
|
extern void ble_buf_free(void);
|
||||||
esp_err_t esp_nimble_hci_init(void)
|
esp_err_t esp_nimble_hci_init(void)
|
||||||
{
|
{
|
||||||
esp_err_t ret;
|
esp_err_t ret;
|
||||||
@@ -431,7 +243,7 @@ esp_err_t esp_nimble_hci_init(void)
|
|||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
||||||
ble_hci_transport_init();
|
ble_transport_init();
|
||||||
|
|
||||||
vhci_send_sem = xSemaphoreCreateBinary();
|
vhci_send_sem = xSemaphoreCreateBinary();
|
||||||
if (vhci_send_sem == NULL) {
|
if (vhci_send_sem == NULL) {
|
||||||
@@ -448,25 +260,7 @@ err:
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static esp_err_t ble_hci_transport_deinit(void)
|
extern void ble_transport_deinit(void);
|
||||||
{
|
|
||||||
int ret = 0;
|
|
||||||
|
|
||||||
ret += os_mempool_clear(&ble_hci_evt_lo_pool);
|
|
||||||
|
|
||||||
ret += os_mempool_clear(&ble_hci_evt_hi_pool);
|
|
||||||
|
|
||||||
ret += os_mempool_clear(&ble_hci_cmd_pool);
|
|
||||||
|
|
||||||
ret += os_mempool_ext_clear(&ble_hci_acl_pool);
|
|
||||||
|
|
||||||
if (ret) {
|
|
||||||
return ESP_FAIL;
|
|
||||||
} else {
|
|
||||||
return ESP_OK;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
esp_err_t esp_nimble_hci_deinit(void)
|
esp_err_t esp_nimble_hci_deinit(void)
|
||||||
{
|
{
|
||||||
if (vhci_send_sem) {
|
if (vhci_send_sem) {
|
||||||
@@ -476,10 +270,7 @@ esp_err_t esp_nimble_hci_deinit(void)
|
|||||||
vSemaphoreDelete(vhci_send_sem);
|
vSemaphoreDelete(vhci_send_sem);
|
||||||
vhci_send_sem = NULL;
|
vhci_send_sem = NULL;
|
||||||
}
|
}
|
||||||
esp_err_t ret = ble_hci_transport_deinit();
|
ble_transport_deinit();
|
||||||
if (ret != ESP_OK) {
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
ble_buf_free();
|
ble_buf_free();
|
||||||
|
|
||||||
|
Submodule components/bt/host/nimble/nimble updated: 76b1f54737...46591d402d
@@ -799,6 +799,16 @@
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef MYNEWT_VAL_BLE_SM_SC_LVL
|
||||||
|
#define MYNEWT_VAL_BLE_SM_SC_LVL (0)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef MYNEWT_VAL_BLE_SM_SC_ONLY
|
||||||
|
#define MYNEWT_VAL_BLE_SM_SC_ONLY (0)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#ifndef MYNEWT_VAL_BLE_SM_THEIR_KEY_DIST
|
#ifndef MYNEWT_VAL_BLE_SM_THEIR_KEY_DIST
|
||||||
#define MYNEWT_VAL_BLE_SM_THEIR_KEY_DIST (0)
|
#define MYNEWT_VAL_BLE_SM_THEIR_KEY_DIST (0)
|
||||||
#endif
|
#endif
|
||||||
@@ -823,6 +833,26 @@
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/* Value copied from BLE_TRANSPORT_ACL_COUNT */
|
||||||
|
#ifndef MYNEWT_VAL_BLE_TRANSPORT_ACL_FROM_LL_COUNT
|
||||||
|
#define MYNEWT_VAL_BLE_TRANSPORT_ACL_FROM_LL_COUNT (0)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef MYNEWT_VAL_BLE_TRANSPORT_ACL_SIZE
|
||||||
|
#define MYNEWT_VAL_BLE_TRANSPORT_ACL_SIZE CONFIG_BT_NIMBLE_ACL_BUF_SIZE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef MYNEWT_VAL_BLE_TRANSPORT_EVT_COUNT
|
||||||
|
#define MYNEWT_VAL_BLE_TRANSPORT_EVT_COUNT CONFIG_BT_NIMBLE_HCI_EVT_HI_BUF_COUNT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef MYNEWT_VAL_BLE_TRANSPORT_EVT_DISCARDABLE_COUNT
|
||||||
|
#define MYNEWT_VAL_BLE_TRANSPORT_EVT_DISCARDABLE_COUNT CONFIG_BT_NIMBLE_HCI_EVT_LO_BUF_COUNT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/*** nimble/host/services/ans */
|
/*** nimble/host/services/ans */
|
||||||
#ifndef MYNEWT_VAL_BLE_SVC_ANS_NEW_ALERT_CAT
|
#ifndef MYNEWT_VAL_BLE_SVC_ANS_NEW_ALERT_CAT
|
||||||
#define MYNEWT_VAL_BLE_SVC_ANS_NEW_ALERT_CAT (0)
|
#define MYNEWT_VAL_BLE_SVC_ANS_NEW_ALERT_CAT (0)
|
||||||
@@ -855,6 +885,18 @@
|
|||||||
#define MYNEWT_VAL_BLE_MESH_ADV_BUF_COUNT (20)
|
#define MYNEWT_VAL_BLE_MESH_ADV_BUF_COUNT (20)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef MYNEWT_VAL_BLE_MESH_ADV_EXT
|
||||||
|
#define MYNEWT_VAL_BLE_MESH_ADV_EXT (0)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef MYNEWT_VAL_BLE_MESH_ADV_LEGACY
|
||||||
|
#define MYNEWT_VAL_BLE_MESH_ADV_LEGACY (1)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef MYNEWT_VAL_BLE_MESH_ADV_BUF_COUNT
|
||||||
|
#define MYNEWT_VAL_BLE_MESH_ADV_BUF_COUNT (20)
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef MYNEWT_VAL_BLE_MESH_APP_KEY_COUNT
|
#ifndef MYNEWT_VAL_BLE_MESH_APP_KEY_COUNT
|
||||||
#define MYNEWT_VAL_BLE_MESH_APP_KEY_COUNT (1)
|
#define MYNEWT_VAL_BLE_MESH_APP_KEY_COUNT (1)
|
||||||
#endif
|
#endif
|
||||||
@@ -1005,6 +1047,10 @@
|
|||||||
#define MYNEWT_VAL_BLE_MESH_IVU_DIVIDER (4)
|
#define MYNEWT_VAL_BLE_MESH_IVU_DIVIDER (4)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef MYNEWT_VAL_BLE_MESH_IV_UPDATE_SEQ_LIMIT
|
||||||
|
#define MYNEWT_VAL_BLE_MESH_IV_UPDATE_SEQ_LIMIT (0x800000)
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef MYNEWT_VAL_BLE_MESH_IV_UPDATE_TEST
|
#ifndef MYNEWT_VAL_BLE_MESH_IV_UPDATE_TEST
|
||||||
#define MYNEWT_VAL_BLE_MESH_IV_UPDATE_TEST (0)
|
#define MYNEWT_VAL_BLE_MESH_IV_UPDATE_TEST (0)
|
||||||
#endif
|
#endif
|
||||||
@@ -1021,6 +1067,10 @@
|
|||||||
#define MYNEWT_VAL_BLE_MESH_LOG_MOD (9)
|
#define MYNEWT_VAL_BLE_MESH_LOG_MOD (9)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef MYNEWT_VAL_BLE_MESH_PROXY_MSG_LEN
|
||||||
|
#define MYNEWT_VAL_BLE_MESH_PROXY_MSG_LEN (33)
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef MYNEWT_VAL_BLE_MESH_LOW_POWER
|
#ifndef MYNEWT_VAL_BLE_MESH_LOW_POWER
|
||||||
#ifdef CONFIG_BT_NIMBLE_MESH_LOW_POWER
|
#ifdef CONFIG_BT_NIMBLE_MESH_LOW_POWER
|
||||||
#define MYNEWT_VAL_BLE_MESH_LOW_POWER (1)
|
#define MYNEWT_VAL_BLE_MESH_LOW_POWER (1)
|
||||||
@@ -1276,6 +1326,14 @@
|
|||||||
#define MYNEWT_VAL_BLE_MESH_NETWORK_TRANSMIT_INTERVAL (20)
|
#define MYNEWT_VAL_BLE_MESH_NETWORK_TRANSMIT_INTERVAL (20)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef MYNEWT_VAL_BLE_MESH_NET_BUF_USER_DATA_SIZE
|
||||||
|
#define MYNEWT_VAL_BLE_MESH_NET_BUF_USER_DATA_SIZE (4)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef MYNEWT_VAL_BLE_MESH_MODEL_VND_MSG_CID_FORCE
|
||||||
|
#define MYNEWT_VAL_BLE_MESH_MODEL_VND_MSG_CID_FORCE (1)
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef MYNEWT_VAL_BLE_MESH_RELAY_RETRANSMIT_COUNT
|
#ifndef MYNEWT_VAL_BLE_MESH_RELAY_RETRANSMIT_COUNT
|
||||||
#define MYNEWT_VAL_BLE_MESH_RELAY_RETRANSMIT_COUNT (2)
|
#define MYNEWT_VAL_BLE_MESH_RELAY_RETRANSMIT_COUNT (2)
|
||||||
#endif
|
#endif
|
||||||
@@ -1292,6 +1350,10 @@
|
|||||||
#define MYNEWT_VAL_BLE_MESH_GATT_PROXY_ENABLED (1)
|
#define MYNEWT_VAL_BLE_MESH_GATT_PROXY_ENABLED (1)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef MYNEWT_VAL_BLE_MESH_GATT_SERVER
|
||||||
|
#define MYNEWT_VAL_BLE_MESH_GATT_SERVER (1)
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef MYNEWT_VAL_BLE_MESH_FRIEND_ENABLED
|
#ifndef MYNEWT_VAL_BLE_MESH_FRIEND_ENABLED
|
||||||
#define MYNEWT_VAL_BLE_MESH_FRIEND_ENABLED (1)
|
#define MYNEWT_VAL_BLE_MESH_FRIEND_ENABLED (1)
|
||||||
#endif
|
#endif
|
||||||
@@ -1304,12 +1366,19 @@
|
|||||||
#define MYNEWT_VAL_BLE_MESH_RELAY_RETRANSMIT_INTERVAL (20)
|
#define MYNEWT_VAL_BLE_MESH_RELAY_RETRANSMIT_INTERVAL (20)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef MYNEWT_VAL_BLE_MESH_PROV_OOB_PUBLIC_KEY
|
||||||
|
#define MYNEWT_VAL_BLE_MESH_PROV_OOB_PUBLIC_KEY (0)
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Overridden by apps/blemesh (defined by @apache-mynewt-nimble/nimble/host/mesh) */
|
/* Overridden by apps/blemesh (defined by @apache-mynewt-nimble/nimble/host/mesh) */
|
||||||
#ifndef MYNEWT_VAL_BLE_MESH_SETTINGS
|
#ifndef MYNEWT_VAL_BLE_MESH_SETTINGS
|
||||||
#define MYNEWT_VAL_BLE_MESH_SETTINGS (0)
|
#define MYNEWT_VAL_BLE_MESH_SETTINGS (0)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef MYNEWT_VAL_BLE_MESH_ACCESS_LAYER_MSG
|
||||||
|
#define MYNEWT_VAL_BLE_MESH_ACCESS_LAYER_MSG (1)
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef MYNEWT_VAL_BLE_MESH_SETTINGS_LOG_LVL
|
#ifndef MYNEWT_VAL_BLE_MESH_SETTINGS_LOG_LVL
|
||||||
#define MYNEWT_VAL_BLE_MESH_SETTINGS_LOG_LVL (1)
|
#define MYNEWT_VAL_BLE_MESH_SETTINGS_LOG_LVL (1)
|
||||||
#endif
|
#endif
|
||||||
@@ -1523,39 +1592,29 @@
|
|||||||
#define MYNEWT_VAL_BLE_HCI_TRANSPORT_SOCKET (0)
|
#define MYNEWT_VAL_BLE_HCI_TRANSPORT_SOCKET (0)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef MYNEWT_VAL_BLE_TRANSPORT_EVT_SIZE
|
||||||
|
#define MYNEWT_VAL_BLE_TRANSPORT_EVT_SIZE CONFIG_BT_NIMBLE_HCI_EVT_BUF_SIZE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef MYNEWT_VAL_BLE_TRANSPORT_ACL_FROM_HS_COUNT
|
||||||
|
#define MYNEWT_VAL_BLE_TRANSPORT_ACL_FROM_HS_COUNT CONFIG_BT_NIMBLE_ACL_BUF_COUNT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/* Overridden by targets/porting-nimble (defined by nimble/transport) */
|
/* Overridden by targets/porting-nimble (defined by nimble/transport) */
|
||||||
#ifndef MYNEWT_VAL_BLE_HCI_TRANSPORT_UART
|
#ifndef MYNEWT_VAL_BLE_HCI_TRANSPORT_UART
|
||||||
#define MYNEWT_VAL_BLE_HCI_TRANSPORT_UART (1)
|
#define MYNEWT_VAL_BLE_HCI_TRANSPORT_UART (1)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/*** nimble/transport/uart */
|
/*** nimble/transport/uart */
|
||||||
#ifndef MYNEWT_VAL_BLE_ACL_BU24
|
#ifndef MYNEWT_VAL_BLE_ACL_BU24
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef MYNEWT_VAL_BLE_ACL_BUF_COUNT
|
|
||||||
#define MYNEWT_VAL_BLE_ACL_BUF_COUNT CONFIG_BT_NIMBLE_ACL_BUF_COUNT
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef MYNEWT_VAL_BLE_ACL_BUF_SIZE
|
|
||||||
#define MYNEWT_VAL_BLE_ACL_BUF_SIZE CONFIG_BT_NIMBLE_ACL_BUF_SIZE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef MYNEWT_VAL_BLE_HCI_ACL_OUT_COUNT
|
#ifndef MYNEWT_VAL_BLE_HCI_ACL_OUT_COUNT
|
||||||
#define MYNEWT_VAL_BLE_HCI_ACL_OUT_COUNT (20)
|
#define MYNEWT_VAL_BLE_HCI_ACL_OUT_COUNT (20)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef MYNEWT_VAL_BLE_HCI_EVT_BUF_SIZE
|
|
||||||
#define MYNEWT_VAL_BLE_HCI_EVT_BUF_SIZE CONFIG_BT_NIMBLE_HCI_EVT_BUF_SIZE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef MYNEWT_VAL_BLE_HCI_EVT_HI_BUF_COUNT
|
|
||||||
#define MYNEWT_VAL_BLE_HCI_EVT_HI_BUF_COUNT CONFIG_BT_NIMBLE_HCI_EVT_HI_BUF_COUNT
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef MYNEWT_VAL_BLE_HCI_EVT_LO_BUF_COUNT
|
|
||||||
#define MYNEWT_VAL_BLE_HCI_EVT_LO_BUF_COUNT CONFIG_BT_NIMBLE_HCI_EVT_LO_BUF_COUNT
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Overridden by targets/porting-nimble (defined by nimble/transport/uart) */
|
/* Overridden by targets/porting-nimble (defined by nimble/transport/uart) */
|
||||||
#ifndef MYNEWT_VAL_BLE_HCI_UART_BAUD
|
#ifndef MYNEWT_VAL_BLE_HCI_UART_BAUD
|
||||||
#define MYNEWT_VAL_BLE_HCI_UART_BAUD (115200)
|
#define MYNEWT_VAL_BLE_HCI_UART_BAUD (115200)
|
||||||
|
@@ -32,14 +32,14 @@ extern "C" {
|
|||||||
#define DEFAULT_BT_LE_MAX_PERIODIC_ADVERTISER_LIST MYNEWT_VAL(BLE_MAX_PERIODIC_ADVERTISER_LIST)
|
#define DEFAULT_BT_LE_MAX_PERIODIC_ADVERTISER_LIST MYNEWT_VAL(BLE_MAX_PERIODIC_ADVERTISER_LIST)
|
||||||
#define DEFAULT_BT_LE_MAX_PERIODIC_SYNCS MYNEWT_VAL(BLE_MAX_PERIODIC_SYNCS)
|
#define DEFAULT_BT_LE_MAX_PERIODIC_SYNCS MYNEWT_VAL(BLE_MAX_PERIODIC_SYNCS)
|
||||||
#define DEFAULT_BT_LE_MAX_CONNECTIONS MYNEWT_VAL(BLE_MAX_CONNECTIONS)
|
#define DEFAULT_BT_LE_MAX_CONNECTIONS MYNEWT_VAL(BLE_MAX_CONNECTIONS)
|
||||||
#define DEFAULT_BT_LE_ACL_BUF_SIZE MYNEWT_VAL(BLE_ACL_BUF_SIZE)
|
#define DEFAULT_BT_LE_ACL_BUF_SIZE MYNEWT_VAL(BLE_TRANSPORT_ACL_SIZE)
|
||||||
#define DEFAULT_BT_LE_ACL_BUF_COUNT MYNEWT_VAL(BLE_ACL_BUF_COUNT)
|
#define DEFAULT_BT_LE_ACL_BUF_COUNT MYNEWT_VAL(BLE_TRANSPORT_ACL_FROM_HS_COUNT)
|
||||||
#define DEFAULT_BT_LE_HCI_EVT_BUF_SIZE MYNEWT_VAL(BLE_HCI_EVT_BUF_SIZE)
|
#define DEFAULT_BT_LE_HCI_EVT_BUF_SIZE MYNEWT_VAL(BLE_TRANSPORT_EVT_SIZE)
|
||||||
#define DEFAULT_BT_LE_EXT_ADV_MAX_SIZE MYNEWT_VAL(BLE_EXT_ADV_MAX_SIZE)
|
#define DEFAULT_BT_LE_EXT_ADV_MAX_SIZE MYNEWT_VAL(BLE_EXT_ADV_MAX_SIZE)
|
||||||
#define DEFAULT_BT_LE_MAX_EXT_ADV_INSTANCES MYNEWT_VAL(BLE_MULTI_ADV_INSTANCES)
|
#define DEFAULT_BT_LE_MAX_EXT_ADV_INSTANCES MYNEWT_VAL(BLE_MULTI_ADV_INSTANCES)
|
||||||
#define DEFAULT_BT_NIMBLE_WHITELIST_SIZE MYNEWT_VAL(BLE_LL_WHITELIST_SIZE)
|
#define DEFAULT_BT_NIMBLE_WHITELIST_SIZE MYNEWT_VAL(BLE_LL_WHITELIST_SIZE)
|
||||||
#define DEFAULT_BT_LE_HCI_EVT_HI_BUF_COUNT MYNEWT_VAL(BLE_HCI_EVT_HI_BUF_COUNT)
|
#define DEFAULT_BT_LE_HCI_EVT_HI_BUF_COUNT MYNEWT_VAL(BLE_TRANSPORT_EVT_COUNT)
|
||||||
#define DEFAULT_BT_LE_HCI_EVT_LO_BUF_COUNT MYNEWT_VAL(BLE_HCI_EVT_LO_BUF_COUNT)
|
#define DEFAULT_BT_LE_HCI_EVT_LO_BUF_COUNT MYNEWT_VAL(BLE_TRANSPORT_EVT_DISCARDABLE_COUNT)
|
||||||
#define DEFAULT_BT_LE_COEX_PHY_CODED_TX_RX_TLIM_EFF CONFIG_BT_NIMBLE_COEX_PHY_CODED_TX_RX_TLIM_EFF
|
#define DEFAULT_BT_LE_COEX_PHY_CODED_TX_RX_TLIM_EFF CONFIG_BT_NIMBLE_COEX_PHY_CODED_TX_RX_TLIM_EFF
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
@@ -31,14 +31,14 @@ extern "C" {
|
|||||||
#define DEFAULT_BT_LE_MAX_PERIODIC_ADVERTISER_LIST MYNEWT_VAL(BLE_MAX_PERIODIC_ADVERTISER_LIST)
|
#define DEFAULT_BT_LE_MAX_PERIODIC_ADVERTISER_LIST MYNEWT_VAL(BLE_MAX_PERIODIC_ADVERTISER_LIST)
|
||||||
#define DEFAULT_BT_LE_MAX_PERIODIC_SYNCS MYNEWT_VAL(BLE_MAX_PERIODIC_SYNCS)
|
#define DEFAULT_BT_LE_MAX_PERIODIC_SYNCS MYNEWT_VAL(BLE_MAX_PERIODIC_SYNCS)
|
||||||
#define DEFAULT_BT_LE_MAX_CONNECTIONS MYNEWT_VAL(BLE_MAX_CONNECTIONS)
|
#define DEFAULT_BT_LE_MAX_CONNECTIONS MYNEWT_VAL(BLE_MAX_CONNECTIONS)
|
||||||
#define DEFAULT_BT_LE_ACL_BUF_SIZE MYNEWT_VAL(BLE_ACL_BUF_SIZE)
|
#define DEFAULT_BT_LE_ACL_BUF_SIZE MYNEWT_VAL(BLE_TRANSPORT_ACL_SIZE)
|
||||||
#define DEFAULT_BT_LE_ACL_BUF_COUNT MYNEWT_VAL(BLE_ACL_BUF_COUNT)
|
#define DEFAULT_BT_LE_ACL_BUF_COUNT MYNEWT_VAL(BLE_TRANSPORT_ACL_FROM_HS_COUNT)
|
||||||
#define DEFAULT_BT_LE_HCI_EVT_BUF_SIZE MYNEWT_VAL(BLE_HCI_EVT_BUF_SIZE)
|
#define DEFAULT_BT_LE_HCI_EVT_BUF_SIZE MYNEWT_VAL(BLE_TRANSPORT_EVT_SIZE)
|
||||||
#define DEFAULT_BT_LE_EXT_ADV_MAX_SIZE MYNEWT_VAL(BLE_EXT_ADV_MAX_SIZE)
|
#define DEFAULT_BT_LE_EXT_ADV_MAX_SIZE MYNEWT_VAL(BLE_EXT_ADV_MAX_SIZE)
|
||||||
#define DEFAULT_BT_LE_MAX_EXT_ADV_INSTANCES MYNEWT_VAL(BLE_MULTI_ADV_INSTANCES)
|
#define DEFAULT_BT_LE_MAX_EXT_ADV_INSTANCES MYNEWT_VAL(BLE_MULTI_ADV_INSTANCES)
|
||||||
#define DEFAULT_BT_NIMBLE_WHITELIST_SIZE MYNEWT_VAL(BLE_LL_WHITELIST_SIZE)
|
#define DEFAULT_BT_NIMBLE_WHITELIST_SIZE MYNEWT_VAL(BLE_LL_WHITELIST_SIZE)
|
||||||
#define DEFAULT_BT_LE_HCI_EVT_HI_BUF_COUNT MYNEWT_VAL(BLE_HCI_EVT_HI_BUF_COUNT)
|
#define DEFAULT_BT_LE_HCI_EVT_HI_BUF_COUNT MYNEWT_VAL(BLE_TRANSPORT_EVT_COUNT)
|
||||||
#define DEFAULT_BT_LE_HCI_EVT_LO_BUF_COUNT MYNEWT_VAL(BLE_HCI_EVT_LO_BUF_COUNT)
|
#define DEFAULT_BT_LE_HCI_EVT_LO_BUF_COUNT MYNEWT_VAL(BLE_TRANSPORT_EVT_DISCARDABLE_COUNT)
|
||||||
#define DEFAULT_BT_LE_COEX_PHY_CODED_TX_RX_TLIM_EFF CONFIG_BT_NIMBLE_COEX_PHY_CODED_TX_RX_TLIM_EFF
|
#define DEFAULT_BT_LE_COEX_PHY_CODED_TX_RX_TLIM_EFF CONFIG_BT_NIMBLE_COEX_PHY_CODED_TX_RX_TLIM_EFF
|
||||||
#define DEFAULT_BT_LE_POWER_CONTROL_ENABLED MYNEWT_VAL(BLE_POWER_CONTROL)
|
#define DEFAULT_BT_LE_POWER_CONTROL_ENABLED MYNEWT_VAL(BLE_POWER_CONTROL)
|
||||||
#else
|
#else
|
||||||
|
@@ -33,14 +33,14 @@ extern "C" {
|
|||||||
#define DEFAULT_BT_LE_MAX_PERIODIC_ADVERTISER_LIST MYNEWT_VAL(BLE_MAX_PERIODIC_ADVERTISER_LIST)
|
#define DEFAULT_BT_LE_MAX_PERIODIC_ADVERTISER_LIST MYNEWT_VAL(BLE_MAX_PERIODIC_ADVERTISER_LIST)
|
||||||
#define DEFAULT_BT_LE_MAX_PERIODIC_SYNCS MYNEWT_VAL(BLE_MAX_PERIODIC_SYNCS)
|
#define DEFAULT_BT_LE_MAX_PERIODIC_SYNCS MYNEWT_VAL(BLE_MAX_PERIODIC_SYNCS)
|
||||||
#define DEFAULT_BT_LE_MAX_CONNECTIONS MYNEWT_VAL(BLE_MAX_CONNECTIONS)
|
#define DEFAULT_BT_LE_MAX_CONNECTIONS MYNEWT_VAL(BLE_MAX_CONNECTIONS)
|
||||||
#define DEFAULT_BT_LE_ACL_BUF_SIZE MYNEWT_VAL(BLE_ACL_BUF_SIZE)
|
#define DEFAULT_BT_LE_ACL_BUF_SIZE MYNEWT_VAL(BLE_TRANSPORT_ACL_SIZE)
|
||||||
#define DEFAULT_BT_LE_ACL_BUF_COUNT MYNEWT_VAL(BLE_ACL_BUF_COUNT)
|
#define DEFAULT_BT_LE_ACL_BUF_COUNT MYNEWT_VAL(BLE_TRANSPORT_ACL_FROM_HS_COUNT)
|
||||||
#define DEFAULT_BT_LE_HCI_EVT_BUF_SIZE MYNEWT_VAL(BLE_HCI_EVT_BUF_SIZE)
|
#define DEFAULT_BT_LE_HCI_EVT_BUF_SIZE MYNEWT_VAL(BLE_TRANSPORT_EVT_SIZE)
|
||||||
#define DEFAULT_BT_LE_EXT_ADV_MAX_SIZE MYNEWT_VAL(BLE_EXT_ADV_MAX_SIZE)
|
#define DEFAULT_BT_LE_EXT_ADV_MAX_SIZE MYNEWT_VAL(BLE_EXT_ADV_MAX_SIZE)
|
||||||
#define DEFAULT_BT_LE_MAX_EXT_ADV_INSTANCES MYNEWT_VAL(BLE_MULTI_ADV_INSTANCES)
|
#define DEFAULT_BT_LE_MAX_EXT_ADV_INSTANCES MYNEWT_VAL(BLE_MULTI_ADV_INSTANCES)
|
||||||
#define DEFAULT_BT_NIMBLE_WHITELIST_SIZE MYNEWT_VAL(BLE_LL_WHITELIST_SIZE)
|
#define DEFAULT_BT_NIMBLE_WHITELIST_SIZE MYNEWT_VAL(BLE_LL_WHITELIST_SIZE)
|
||||||
#define DEFAULT_BT_LE_HCI_EVT_HI_BUF_COUNT MYNEWT_VAL(BLE_HCI_EVT_HI_BUF_COUNT)
|
#define DEFAULT_BT_LE_HCI_EVT_HI_BUF_COUNT MYNEWT_VAL(BLE_TRANSPORT_EVT_COUNT)
|
||||||
#define DEFAULT_BT_LE_HCI_EVT_LO_BUF_COUNT MYNEWT_VAL(BLE_HCI_EVT_LO_BUF_COUNT)
|
#define DEFAULT_BT_LE_HCI_EVT_LO_BUF_COUNT MYNEWT_VAL(BLE_TRANSPORT_EVT_DISCARDABLE_COUNT)
|
||||||
#define DEFAULT_BT_LE_COEX_PHY_CODED_TX_RX_TLIM_EFF CONFIG_BT_NIMBLE_COEX_PHY_CODED_TX_RX_TLIM_EFF
|
#define DEFAULT_BT_LE_COEX_PHY_CODED_TX_RX_TLIM_EFF CONFIG_BT_NIMBLE_COEX_PHY_CODED_TX_RX_TLIM_EFF
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
@@ -20,17 +20,14 @@
|
|||||||
#ifndef H_HCI_TRANSPORT_
|
#ifndef H_HCI_TRANSPORT_
|
||||||
#define H_HCI_TRANSPORT_
|
#define H_HCI_TRANSPORT_
|
||||||
|
|
||||||
#include <inttypes.h>
|
|
||||||
#include "os/os_mempool.h"
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
struct os_mbuf;
|
#include <inttypes.h>
|
||||||
|
#include "os/os_mempool.h"
|
||||||
|
|
||||||
#define BLE_HCI_TRANS_CMD_SZ 260
|
#define BLE_HCI_TRANS_CMD_SZ 260
|
||||||
|
|
||||||
/*** Type of buffers for holding commands and events. */
|
/*** Type of buffers for holding commands and events. */
|
||||||
/**
|
/**
|
||||||
* Controller-to-host event buffers. Events have one of two priorities:
|
* Controller-to-host event buffers. Events have one of two priorities:
|
||||||
@@ -67,13 +64,17 @@ typedef int ble_hci_trans_rx_cmd_fn(uint8_t *cmd, void *arg);
|
|||||||
typedef int ble_hci_trans_rx_acl_fn(struct os_mbuf *om, void *arg);
|
typedef int ble_hci_trans_rx_acl_fn(struct os_mbuf *om, void *arg);
|
||||||
|
|
||||||
#if SOC_ESP_NIMBLE_CONTROLLER
|
#if SOC_ESP_NIMBLE_CONTROLLER
|
||||||
|
#define ble_transport_alloc_cmd() ble_hci_trans_buf_alloc(BLE_HCI_TRANS_BUF_CMD)
|
||||||
|
#define ble_transport_alloc_event(X) ble_hci_trans_buf_alloc(X ? BLE_HCI_TRANS_BUF_EVT_LO : BLE_HCI_TRANS_BUF_EVT_HI)
|
||||||
|
#define ble_transport_free ble_hci_trans_buf_free
|
||||||
|
|
||||||
struct ble_hci_trans_funcs_t {
|
struct ble_hci_trans_funcs_t {
|
||||||
int(*_ble_hci_trans_hs_acl_tx)(struct os_mbuf *om);
|
int(*_ble_hci_trans_hs_acl_tx)(struct os_mbuf *om);
|
||||||
int(*_ble_hci_trans_hs_cmd_tx)(uint8_t *cmd);
|
int(*_ble_hci_trans_hs_cmd_tx)(uint8_t *cmd);
|
||||||
int(*_ble_hci_trans_ll_acl_tx)(struct os_mbuf *om);
|
int(*_ble_hci_trans_ll_acl_tx)(struct os_mbuf *om);
|
||||||
int(*_ble_hci_trans_ll_evt_tx)(uint8_t *hci_ev);
|
int(*_ble_hci_trans_ll_evt_tx)(uint8_t *hci_ev);
|
||||||
int(*_ble_hci_trans_reset)(void);
|
int(*_ble_hci_trans_reset)(void);
|
||||||
int(*_ble_hci_trans_set_acl_free_cb)(os_mempool_put_fn *cb,void *arg);
|
int(*_ble_hci_trans_set_acl_free_cb)(os_mempool_put_fn *cb, void *arg);
|
||||||
};
|
};
|
||||||
|
|
||||||
extern struct ble_hci_trans_funcs_t *ble_hci_trans_funcs_ptr;
|
extern struct ble_hci_trans_funcs_t *ble_hci_trans_funcs_ptr;
|
||||||
@@ -173,9 +174,9 @@ extern int r_ble_hci_trans_set_acl_free_cb(os_mempool_put_fn *cb, void *arg);
|
|||||||
* callback.
|
* callback.
|
||||||
*/
|
*/
|
||||||
extern void r_ble_hci_trans_cfg_ll(ble_hci_trans_rx_cmd_fn *cmd_cb,
|
extern void r_ble_hci_trans_cfg_ll(ble_hci_trans_rx_cmd_fn *cmd_cb,
|
||||||
void *cmd_arg,
|
void *cmd_arg,
|
||||||
ble_hci_trans_rx_acl_fn *acl_cb,
|
ble_hci_trans_rx_acl_fn *acl_cb,
|
||||||
void *acl_arg);
|
void *acl_arg);
|
||||||
#define ble_hci_trans_cfg_ll r_ble_hci_trans_cfg_ll
|
#define ble_hci_trans_cfg_ll r_ble_hci_trans_cfg_ll
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -192,9 +193,9 @@ extern void r_ble_hci_trans_cfg_ll(ble_hci_trans_rx_cmd_fn *cmd_cb,
|
|||||||
* callback.
|
* callback.
|
||||||
*/
|
*/
|
||||||
extern void r_ble_hci_trans_cfg_hs(ble_hci_trans_rx_cmd_fn *evt_cb,
|
extern void r_ble_hci_trans_cfg_hs(ble_hci_trans_rx_cmd_fn *evt_cb,
|
||||||
void *evt_arg,
|
void *evt_arg,
|
||||||
ble_hci_trans_rx_acl_fn *acl_cb,
|
ble_hci_trans_rx_acl_fn *acl_cb,
|
||||||
void *acl_arg);
|
void *acl_arg);
|
||||||
#define ble_hci_trans_cfg_hs r_ble_hci_trans_cfg_hs
|
#define ble_hci_trans_cfg_hs r_ble_hci_trans_cfg_hs
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -208,6 +209,7 @@ extern int r_ble_hci_trans_reset(void);
|
|||||||
#define ble_hci_trans_reset ble_hci_trans_funcs_ptr->_ble_hci_trans_reset
|
#define ble_hci_trans_reset ble_hci_trans_funcs_ptr->_ble_hci_trans_reset
|
||||||
|
|
||||||
void esp_ble_hci_trans_init(uint8_t);
|
void esp_ble_hci_trans_init(uint8_t);
|
||||||
|
|
||||||
#else
|
#else
|
||||||
/**
|
/**
|
||||||
* Sends an HCI event from the controller to the host.
|
* Sends an HCI event from the controller to the host.
|
||||||
@@ -260,84 +262,6 @@ int ble_hci_trans_hs_acl_tx(struct os_mbuf *om);
|
|||||||
* @return The allocated buffer on success;
|
* @return The allocated buffer on success;
|
||||||
* NULL on buffer exhaustion.
|
* NULL on buffer exhaustion.
|
||||||
*/
|
*/
|
||||||
uint8_t *ble_hci_trans_buf_alloc(int type);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Frees the specified flat buffer. The buffer must have been allocated via
|
|
||||||
* ble_hci_trans_buf_alloc().
|
|
||||||
*
|
|
||||||
* @param buf The buffer to free.
|
|
||||||
*/
|
|
||||||
void ble_hci_trans_buf_free(uint8_t *buf);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Configures a callback to get executed whenever an ACL data packet is freed.
|
|
||||||
* The function is called immediately before the free occurs.
|
|
||||||
*
|
|
||||||
* @param cb The callback to configure.
|
|
||||||
* @param arg An optional argument to pass to the callback.
|
|
||||||
*
|
|
||||||
* @return 0 on success;
|
|
||||||
* BLE_ERR_UNSUPPORTED if the transport does not
|
|
||||||
* support this operation.
|
|
||||||
*/
|
|
||||||
int ble_hci_trans_set_acl_free_cb(os_mempool_put_fn *cb, void *arg);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Configures the HCI transport to operate with a controller. The transport
|
|
||||||
* will execute specified callbacks upon receiving HCI packets from the host.
|
|
||||||
*
|
|
||||||
* @param cmd_cb The callback to execute upon receiving an HCI
|
|
||||||
* command.
|
|
||||||
* @param cmd_arg Optional argument to pass to the command
|
|
||||||
* callback.
|
|
||||||
* @param acl_cb The callback to execute upon receiving ACL
|
|
||||||
* data.
|
|
||||||
* @param acl_arg Optional argument to pass to the ACL
|
|
||||||
* callback.
|
|
||||||
*/
|
|
||||||
void ble_hci_trans_cfg_ll(ble_hci_trans_rx_cmd_fn *cmd_cb,
|
|
||||||
void *cmd_arg,
|
|
||||||
ble_hci_trans_rx_acl_fn *acl_cb,
|
|
||||||
void *acl_arg);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Configures the HCI transport to operate with a host. The transport will
|
|
||||||
* execute specified callbacks upon receiving HCI packets from the controller.
|
|
||||||
*
|
|
||||||
* @param evt_cb The callback to execute upon receiving an HCI
|
|
||||||
* event.
|
|
||||||
* @param evt_arg Optional argument to pass to the event
|
|
||||||
* callback.
|
|
||||||
* @param acl_cb The callback to execute upon receiving ACL
|
|
||||||
* data.
|
|
||||||
* @param acl_arg Optional argument to pass to the ACL
|
|
||||||
* callback.
|
|
||||||
*/
|
|
||||||
void ble_hci_trans_cfg_hs(ble_hci_trans_rx_cmd_fn *evt_cb,
|
|
||||||
void *evt_arg,
|
|
||||||
ble_hci_trans_rx_acl_fn *acl_cb,
|
|
||||||
void *acl_arg);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Resets the HCI module to a clean state. Frees all buffers and reinitializes
|
|
||||||
* the underlying transport.
|
|
||||||
*
|
|
||||||
* @return 0 on success;
|
|
||||||
* A BLE_ERR_[...] error code on failure.
|
|
||||||
*/
|
|
||||||
int ble_hci_trans_reset(void);
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sends an HCI command from the host to the controller.
|
|
||||||
*
|
|
||||||
* @param cmd The HCI command to send. This buffer must be
|
|
||||||
* allocated via ble_hci_trans_buf_alloc().
|
|
||||||
*
|
|
||||||
* @return 0 on success;
|
|
||||||
* A BLE_ERR_[...] error code on failure.
|
|
||||||
*/
|
|
||||||
int esp_ble_hci_trans_hs_cmd_tx(uint8_t *cmd);
|
int esp_ble_hci_trans_hs_cmd_tx(uint8_t *cmd);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -383,9 +307,9 @@ void esp_ble_hci_trans_buf_free(uint8_t *buf);
|
|||||||
* callback.
|
* callback.
|
||||||
*/
|
*/
|
||||||
void esp_ble_hci_trans_cfg_hs(ble_hci_trans_rx_cmd_fn *evt_cb,
|
void esp_ble_hci_trans_cfg_hs(ble_hci_trans_rx_cmd_fn *evt_cb,
|
||||||
void *evt_arg,
|
void *evt_arg,
|
||||||
ble_hci_trans_rx_acl_fn *acl_cb,
|
ble_hci_trans_rx_acl_fn *acl_cb,
|
||||||
void *acl_arg);
|
void *acl_arg);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Resets the HCI module to a clean state. Frees all buffers and reinitializes
|
* Resets the HCI module to a clean state. Frees all buffers and reinitializes
|
||||||
@@ -395,11 +319,8 @@ void esp_ble_hci_trans_cfg_hs(ble_hci_trans_rx_cmd_fn *evt_cb,
|
|||||||
* A BLE_ERR_[...] error code on failure.
|
* A BLE_ERR_[...] error code on failure.
|
||||||
*/
|
*/
|
||||||
int esp_ble_hci_trans_reset(void);
|
int esp_ble_hci_trans_reset(void);
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@@ -28,12 +28,13 @@
|
|||||||
#define H_BLE_HCI_COMMON_
|
#define H_BLE_HCI_COMMON_
|
||||||
|
|
||||||
#include "ble.h"
|
#include "ble.h"
|
||||||
|
#include "nimble/transport.h"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define BLE_HCI_MAX_DATA_LEN (MYNEWT_VAL(BLE_HCI_EVT_BUF_SIZE) - \
|
#define BLE_HCI_MAX_DATA_LEN (MYNEWT_VAL(BLE_TRANSPORT_EVT_SIZE) - \
|
||||||
sizeof(struct ble_hci_ev))
|
sizeof(struct ble_hci_ev))
|
||||||
|
|
||||||
/* Generic command header */
|
/* Generic command header */
|
||||||
@@ -1967,8 +1968,7 @@ struct ble_hci_ev_le_subev_subrate_change {
|
|||||||
#define BLE_HCI_DATA_PB(handle_pb_bc) (((handle_pb_bc) & 0x3000) >> 12)
|
#define BLE_HCI_DATA_PB(handle_pb_bc) (((handle_pb_bc) & 0x3000) >> 12)
|
||||||
#define BLE_HCI_DATA_BC(handle_pb_bc) (((handle_pb_bc) & 0xc000) >> 14)
|
#define BLE_HCI_DATA_BC(handle_pb_bc) (((handle_pb_bc) & 0xc000) >> 14)
|
||||||
|
|
||||||
struct hci_data_hdr
|
struct hci_data_hdr {
|
||||||
{
|
|
||||||
uint16_t hdh_handle_pb_bc;
|
uint16_t hdh_handle_pb_bc;
|
||||||
uint16_t hdh_len;
|
uint16_t hdh_len;
|
||||||
};
|
};
|
||||||
|
@@ -204,9 +204,9 @@ static void gen_onoff_set_unack(struct bt_mesh_model *model,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static const struct bt_mesh_model_op gen_onoff_op[] = {
|
static const struct bt_mesh_model_op gen_onoff_op[] = {
|
||||||
{ BT_MESH_MODEL_OP_2(0x82, 0x01), 0, gen_onoff_get },
|
{ BT_MESH_MODEL_OP_2(0x82, 0x01), 0, (void *)gen_onoff_get },
|
||||||
{ BT_MESH_MODEL_OP_2(0x82, 0x02), 2, gen_onoff_set },
|
{ BT_MESH_MODEL_OP_2(0x82, 0x02), 2, (void *)gen_onoff_set },
|
||||||
{ BT_MESH_MODEL_OP_2(0x82, 0x03), 2, gen_onoff_set_unack },
|
{ BT_MESH_MODEL_OP_2(0x82, 0x03), 2, (void *)gen_onoff_set_unack },
|
||||||
BT_MESH_MODEL_OP_END,
|
BT_MESH_MODEL_OP_END,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -305,13 +305,13 @@ static void gen_move_set_unack(struct bt_mesh_model *model,
|
|||||||
}
|
}
|
||||||
|
|
||||||
static const struct bt_mesh_model_op gen_level_op[] = {
|
static const struct bt_mesh_model_op gen_level_op[] = {
|
||||||
{ BT_MESH_MODEL_OP_2(0x82, 0x05), 0, gen_level_get },
|
{ BT_MESH_MODEL_OP_2(0x82, 0x05), 0, (void *)gen_level_get },
|
||||||
{ BT_MESH_MODEL_OP_2(0x82, 0x06), 3, gen_level_set },
|
{ BT_MESH_MODEL_OP_2(0x82, 0x06), 3, (void *)gen_level_set },
|
||||||
{ BT_MESH_MODEL_OP_2(0x82, 0x07), 3, gen_level_set_unack },
|
{ BT_MESH_MODEL_OP_2(0x82, 0x07), 3, (void *)gen_level_set_unack },
|
||||||
{ BT_MESH_MODEL_OP_2(0x82, 0x09), 5, gen_delta_set },
|
{ BT_MESH_MODEL_OP_2(0x82, 0x09), 5, (void *)gen_delta_set },
|
||||||
{ BT_MESH_MODEL_OP_2(0x82, 0x0a), 5, gen_delta_set_unack },
|
{ BT_MESH_MODEL_OP_2(0x82, 0x0a), 5, (void *)gen_delta_set_unack },
|
||||||
{ BT_MESH_MODEL_OP_2(0x82, 0x0b), 3, gen_move_set },
|
{ BT_MESH_MODEL_OP_2(0x82, 0x0b), 3, (void *)gen_move_set },
|
||||||
{ BT_MESH_MODEL_OP_2(0x82, 0x0c), 3, gen_move_set_unack },
|
{ BT_MESH_MODEL_OP_2(0x82, 0x0c), 3, (void *)gen_move_set_unack },
|
||||||
BT_MESH_MODEL_OP_END,
|
BT_MESH_MODEL_OP_END,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -347,8 +347,8 @@ static void vnd_model_recv(struct bt_mesh_model *model,
|
|||||||
os_mbuf_free_chain(msg);
|
os_mbuf_free_chain(msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct bt_mesh_model_op vnd_model_op[] = {
|
static struct bt_mesh_model_op vnd_model_op[] = {
|
||||||
{ BT_MESH_MODEL_OP_3(0x01, CID_VENDOR), 0, vnd_model_recv },
|
{ BT_MESH_MODEL_OP_3(0x01, CID_VENDOR), 0, (void *)vnd_model_recv },
|
||||||
BT_MESH_MODEL_OP_END,
|
BT_MESH_MODEL_OP_END,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user