mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
NimBLE: Misc changes in host flow control, ble_gap_unpair, ble_hs_hci_rx_evt & example (v4.1)
- Add menuconfig option for NimBLE host flow control - Include changes in `blecent` example from upstream PR!702 - add ble_hs_lock in ble_gap_unpair Upstream PR!584 - ble_hs_hci_rx_evt, upstream PR!738 Closes https://github.com/espressif/esp-idf/issues/4243
This commit is contained in:
parent
b8c2fedec9
commit
c55689ca18
@ -187,6 +187,37 @@ config BT_NIMBLE_HCI_EVT_LO_BUF_COUNT
|
|||||||
low-priority event buffers, then an incoming advertising report will
|
low-priority event buffers, then an incoming advertising report will
|
||||||
get dropped
|
get dropped
|
||||||
|
|
||||||
|
config BT_NIMBLE_HS_FLOW_CTRL
|
||||||
|
bool "Enable Host Flow control"
|
||||||
|
depends on BT_NIMBLE_ENABLED
|
||||||
|
default y
|
||||||
|
help
|
||||||
|
Enable Host Flow control
|
||||||
|
|
||||||
|
config BT_NIMBLE_HS_FLOW_CTRL_ITVL
|
||||||
|
int "Host Flow control interval"
|
||||||
|
depends on BT_NIMBLE_HS_FLOW_CTRL
|
||||||
|
default 1000
|
||||||
|
help
|
||||||
|
Host flow control interval in msecs
|
||||||
|
|
||||||
|
config BT_NIMBLE_HS_FLOW_CTRL_THRESH
|
||||||
|
int "Host Flow control threshold"
|
||||||
|
depends on BT_NIMBLE_HS_FLOW_CTRL
|
||||||
|
default 2
|
||||||
|
help
|
||||||
|
Host flow control threshold, if the number of free buffers are at or
|
||||||
|
below this threshold, send an immediate number-of-completed-packets
|
||||||
|
event
|
||||||
|
|
||||||
|
config BT_NIMBLE_HS_FLOW_CTRL_TX_ON_DISCONNECT
|
||||||
|
bool "Host Flow control on disconnect"
|
||||||
|
depends on BT_NIMBLE_HS_FLOW_CTRL
|
||||||
|
default y
|
||||||
|
help
|
||||||
|
Enable this option to send number-of-completed-packets event to
|
||||||
|
controller after disconnection
|
||||||
|
|
||||||
menuconfig BT_NIMBLE_MESH
|
menuconfig BT_NIMBLE_MESH
|
||||||
bool "Enable BLE mesh functionality"
|
bool "Enable BLE mesh functionality"
|
||||||
select BT_NIMBLE_SM_SC
|
select BT_NIMBLE_SM_SC
|
||||||
|
@ -1 +1 @@
|
|||||||
Subproject commit 4a4be394951942cb86b8ed3f779d0c6e733f6e6b
|
Subproject commit 664d3d73bd4d6f8f57d46d6a1dc5d35429fb6563
|
@ -452,19 +452,23 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef MYNEWT_VAL_BLE_HS_FLOW_CTRL
|
#ifndef MYNEWT_VAL_BLE_HS_FLOW_CTRL
|
||||||
|
#ifdef CONFIG_BT_NIMBLE_HS_FLOW_CTRL
|
||||||
|
#define MYNEWT_VAL_BLE_HS_FLOW_CTRL (1)
|
||||||
|
#else
|
||||||
#define MYNEWT_VAL_BLE_HS_FLOW_CTRL (0)
|
#define MYNEWT_VAL_BLE_HS_FLOW_CTRL (0)
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef MYNEWT_VAL_BLE_HS_FLOW_CTRL_ITVL
|
#ifndef MYNEWT_VAL_BLE_HS_FLOW_CTRL_ITVL
|
||||||
#define MYNEWT_VAL_BLE_HS_FLOW_CTRL_ITVL (1000)
|
#define MYNEWT_VAL_BLE_HS_FLOW_CTRL_ITVL CONFIG_BT_NIMBLE_HS_FLOW_CTRL_ITVL
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef MYNEWT_VAL_BLE_HS_FLOW_CTRL_THRESH
|
#ifndef MYNEWT_VAL_BLE_HS_FLOW_CTRL_THRESH
|
||||||
#define MYNEWT_VAL_BLE_HS_FLOW_CTRL_THRESH (2)
|
#define MYNEWT_VAL_BLE_HS_FLOW_CTRL_THRESH CONFIG_BT_NIMBLE_HS_FLOW_CTRL_THRESH
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef MYNEWT_VAL_BLE_HS_FLOW_CTRL_TX_ON_DISCONNECT
|
#ifndef MYNEWT_VAL_BLE_HS_FLOW_CTRL_TX_ON_DISCONNECT
|
||||||
#define MYNEWT_VAL_BLE_HS_FLOW_CTRL_TX_ON_DISCONNECT (0)
|
#define MYNEWT_VAL_BLE_HS_FLOW_CTRL_TX_ON_DISCONNECT CONFIG_BT_NIMBLE_FLOW_CTRL_TX_ON_DISCONNECT
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef MYNEWT_VAL_BLE_HS_PHONY_HCI_ACKS
|
#ifndef MYNEWT_VAL_BLE_HS_PHONY_HCI_ACKS
|
||||||
|
@ -319,6 +319,7 @@ blecent_should_connect(const struct ble_gap_disc_desc *disc)
|
|||||||
static void
|
static void
|
||||||
blecent_connect_if_interesting(const struct ble_gap_disc_desc *disc)
|
blecent_connect_if_interesting(const struct ble_gap_disc_desc *disc)
|
||||||
{
|
{
|
||||||
|
uint8_t own_addr_type;
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
/* Don't do anything if we don't care about this advertiser. */
|
/* Don't do anything if we don't care about this advertiser. */
|
||||||
@ -333,16 +334,23 @@ blecent_connect_if_interesting(const struct ble_gap_disc_desc *disc)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Figure out address to use for connect (no privacy for now) */
|
||||||
|
rc = ble_hs_id_infer_auto(0, &own_addr_type);
|
||||||
|
if (rc != 0) {
|
||||||
|
MODLOG_DFLT(ERROR, "error determining address type; rc=%d\n", rc);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
/* Try to connect the the advertiser. Allow 30 seconds (30000 ms) for
|
/* Try to connect the the advertiser. Allow 30 seconds (30000 ms) for
|
||||||
* timeout.
|
* timeout.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
rc = ble_gap_connect(BLE_OWN_ADDR_PUBLIC, &disc->addr, 30000, NULL,
|
rc = ble_gap_connect(own_addr_type, &disc->addr, 30000, NULL,
|
||||||
blecent_gap_event, NULL);
|
blecent_gap_event, NULL);
|
||||||
if (rc != 0) {
|
if (rc != 0) {
|
||||||
MODLOG_DFLT(ERROR, "Error: Failed to connect to device; addr_type=%d "
|
MODLOG_DFLT(ERROR, "Error: Failed to connect to device; addr_type=%d "
|
||||||
"addr=%s\n",
|
"addr=%s; rc=%d\n",
|
||||||
disc->addr.type, addr_str(disc->addr.val));
|
disc->addr.type, addr_str(disc->addr.val), rc);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user