mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2026-01-01 01:41:18 +01:00
Merge pull request #14445 from haukepetersen/opt_nimble_tparams
nimble/x: update NimBLE ver + timing param cleanup
This commit is contained in:
commit
a80455fa2a
@ -1,6 +1,6 @@
|
||||
PKG_NAME = nimble
|
||||
PKG_URL = https://github.com/apache/mynewt-nimble.git
|
||||
PKG_VERSION = 37245d0c3f239c35c0c734a337c7b6301fcfd70b
|
||||
PKG_VERSION = cd7d7aa286ee1083818cbaac1e89bf69fe554f42
|
||||
PKG_LICENSE = Apache-2.0
|
||||
|
||||
include $(RIOTBASE)/pkg/pkg.mk
|
||||
|
||||
@ -27,38 +27,38 @@ extern "C" {
|
||||
* @name Default parameters used for the nimble_netif_autoconn module
|
||||
* @{
|
||||
*/
|
||||
#ifndef NIMBLE_AUTOCONN_PERIOD_SCAN
|
||||
#define NIMBLE_AUTOCONN_PERIOD_SCAN (2000U) /* 2s */
|
||||
#ifndef NIMBLE_AUTOCONN_PERIOD_SCAN_MS
|
||||
#define NIMBLE_AUTOCONN_PERIOD_SCAN_MS (2000U) /* 2s */
|
||||
#endif
|
||||
#ifndef NIMBLE_AUTOCONN_PERIOD_ADV
|
||||
#define NIMBLE_AUTOCONN_PERIOD_ADV (10000U) /* 10s */
|
||||
#ifndef NIMBLE_AUTOCONN_PERIOD_ADV_MS
|
||||
#define NIMBLE_AUTOCONN_PERIOD_ADV_MS (10000U) /* 10s */
|
||||
#endif
|
||||
#ifndef NIMBLE_AUTOCONN_PERIOD_JITTER
|
||||
#define NIMBLE_AUTOCONN_PERIOD_JITTER (5000U) /* 0-5s */
|
||||
#ifndef NIMBLE_AUTOCONN_PERIOD_JITTER_MS
|
||||
#define NIMBLE_AUTOCONN_PERIOD_JITTER_MS (5000U) /* 0-5s */
|
||||
#endif
|
||||
|
||||
#ifndef NIMBLE_AUTOCONN_ADV_ITVL
|
||||
#define NIMBLE_AUTOCONN_ADV_ITVL (100U) /* 100ms */
|
||||
#ifndef NIMBLE_AUTOCONN_ADV_ITVL_MS
|
||||
#define NIMBLE_AUTOCONN_ADV_ITVL_MS (100U) /* 100ms */
|
||||
#endif
|
||||
|
||||
#ifndef NIMBLE_AUTOCONN_SCAN_ITVL
|
||||
#define NIMBLE_AUTOCONN_SCAN_ITVL (1500U) /* 1.5s */
|
||||
#ifndef NIMBLE_AUTOCONN_SCAN_ITVL_MS
|
||||
#define NIMBLE_AUTOCONN_SCAN_ITVL_MS (1500U) /* 1.5s */
|
||||
#endif
|
||||
#ifndef NIMBLE_AUTOCONN_SCAN_WIN
|
||||
#define NIMBLE_AUTOCONN_SCAN_WIN (110U) /* 110ms */
|
||||
#ifndef NIMBLE_AUTOCONN_SCAN_WIN_MS
|
||||
#define NIMBLE_AUTOCONN_SCAN_WIN_MS (110U) /* 110ms */
|
||||
#endif
|
||||
|
||||
#ifndef NIMBLE_AUTOCONN_CONN_TIMEOUT
|
||||
#define NIMBLE_AUTOCONN_CONN_TIMEOUT (330U) /* 3 * SCAN_WIN */
|
||||
#ifndef NIMBLE_AUTOCONN_CONN_TIMEOUT_MS
|
||||
#define NIMBLE_AUTOCONN_CONN_TIMEOUT_MS (3 * NIMBLE_AUTOCONN_SCAN_WIN_MS)
|
||||
#endif
|
||||
#ifndef NIMBLE_AUTOCONN_CONN_ITVL
|
||||
#define NIMBLE_AUTOCONN_CONN_ITVL (75U) /* 75ms */
|
||||
#ifndef NIMBLE_AUTOCONN_CONN_ITVL_MS
|
||||
#define NIMBLE_AUTOCONN_CONN_ITVL_MS (75U) /* 75ms */
|
||||
#endif
|
||||
#ifndef NIMBLE_AUTOCONN_CONN_LATENCY
|
||||
#define NIMBLE_AUTOCONN_CONN_LATENCY (0)
|
||||
#endif
|
||||
#ifndef NIMBLE_AUTOCONN_CONN_SUPER_TO
|
||||
#define NIMBLE_AUTOCONN_CONN_SUPER_TO (2500U) /* 2.5s */
|
||||
#ifndef NIMBLE_AUTOCONN_CONN_SVTO_MS
|
||||
#define NIMBLE_AUTOCONN_CONN_SVTO_MS (2500U) /* 2.5s */
|
||||
#endif
|
||||
|
||||
#ifndef NIMBLE_AUTOCONN_NODE_ID
|
||||
@ -66,17 +66,17 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
#ifndef NIMBLE_AUTOCONN_PARAMS
|
||||
#define NIMBLE_AUTOCONN_PARAMS \
|
||||
{ .period_scan = NIMBLE_AUTOCONN_PERIOD_SCAN, \
|
||||
.period_adv = NIMBLE_AUTOCONN_PERIOD_ADV, \
|
||||
.period_jitter = NIMBLE_AUTOCONN_PERIOD_JITTER, \
|
||||
.adv_itvl = NIMBLE_AUTOCONN_ADV_ITVL, \
|
||||
.scan_itvl = NIMBLE_AUTOCONN_SCAN_ITVL, \
|
||||
.scan_win = NIMBLE_AUTOCONN_SCAN_WIN, \
|
||||
.conn_timeout = NIMBLE_AUTOCONN_CONN_TIMEOUT, \
|
||||
.conn_itvl = NIMBLE_AUTOCONN_CONN_ITVL, \
|
||||
.conn_latency = NIMBLE_AUTOCONN_CONN_LATENCY, \
|
||||
.conn_super_to = NIMBLE_AUTOCONN_CONN_SUPER_TO, \
|
||||
#define NIMBLE_AUTOCONN_PARAMS \
|
||||
{ .period_scan = NIMBLE_AUTOCONN_PERIOD_SCAN_MS, \
|
||||
.period_adv = NIMBLE_AUTOCONN_PERIOD_ADV_MS, \
|
||||
.period_jitter = NIMBLE_AUTOCONN_PERIOD_JITTER_MS, \
|
||||
.adv_itvl = NIMBLE_AUTOCONN_ADV_ITVL_MS, \
|
||||
.scan_itvl = NIMBLE_AUTOCONN_SCAN_ITVL_MS, \
|
||||
.scan_win = NIMBLE_AUTOCONN_SCAN_WIN_MS, \
|
||||
.conn_timeout = NIMBLE_AUTOCONN_CONN_TIMEOUT_MS, \
|
||||
.conn_itvl = NIMBLE_AUTOCONN_CONN_ITVL_MS, \
|
||||
.conn_latency = NIMBLE_AUTOCONN_CONN_LATENCY, \
|
||||
.conn_super_to = NIMBLE_AUTOCONN_CONN_SVTO_MS, \
|
||||
.node_id = NIMBLE_AUTOCONN_NODE_ID, }
|
||||
#endif
|
||||
/**@}*/
|
||||
|
||||
@ -279,15 +279,16 @@ int nimble_autoconn_update(const nimble_autoconn_params_t *params,
|
||||
ble_npl_time_ms_to_ticks(params->period_jitter, &_period_jitter);
|
||||
|
||||
/* populate the connection parameters */
|
||||
_conn_params.scan_itvl = ((params->scan_win * 1000) / BLE_HCI_SCAN_ITVL);
|
||||
_conn_params.scan_window = ((params->scan_win * 1000) / BLE_HCI_SCAN_ITVL);
|
||||
_conn_params.itvl_min = ((params->conn_itvl * 1000) / BLE_HCI_CONN_ITVL);
|
||||
_conn_params.itvl_max = ((params->conn_itvl * 1000) / BLE_HCI_CONN_ITVL);
|
||||
_conn_params.scan_itvl = BLE_GAP_SCAN_ITVL_MS(params->scan_win);
|
||||
_conn_params.scan_window = _conn_params.scan_itvl;
|
||||
_conn_params.itvl_min = BLE_GAP_CONN_ITVL_MS(params->conn_itvl);
|
||||
_conn_params.itvl_max = _conn_params.itvl_min;
|
||||
_conn_params.latency = 0;
|
||||
_conn_params.supervision_timeout = (params->conn_super_to / 10);
|
||||
_conn_params.supervision_timeout = BLE_GAP_SUPERVISION_TIMEOUT_MS(
|
||||
params->conn_super_to);
|
||||
_conn_params.min_ce_len = 0;
|
||||
_conn_params.max_ce_len = 0;
|
||||
_conn_timeout = ((params->conn_timeout * 1000) / BLE_HCI_SCAN_ITVL);
|
||||
_conn_timeout = params->conn_timeout;
|
||||
|
||||
/* we use the same values to updated existing connections */
|
||||
struct ble_gap_upd_params conn_update_params;
|
||||
@ -300,18 +301,18 @@ int nimble_autoconn_update(const nimble_autoconn_params_t *params,
|
||||
|
||||
/* calculate the used scan parameters */
|
||||
struct ble_gap_disc_params scan_params;
|
||||
scan_params.itvl = ((params->scan_itvl * 1000) / BLE_HCI_SCAN_ITVL),
|
||||
scan_params.window = ((params->scan_win * 1000) / BLE_HCI_SCAN_ITVL),
|
||||
scan_params.filter_policy = 0,
|
||||
scan_params.limited = 0,
|
||||
scan_params.passive = 0,
|
||||
scan_params.filter_duplicates = 1,
|
||||
scan_params.itvl = BLE_GAP_SCAN_ITVL_MS(params->scan_itvl);
|
||||
scan_params.window = BLE_GAP_SCAN_WIN_MS(params->scan_win);
|
||||
scan_params.filter_policy = 0;
|
||||
scan_params.limited = 0;
|
||||
scan_params.passive = 0;
|
||||
scan_params.filter_duplicates = 1;
|
||||
|
||||
/* set the advertising parameters used */
|
||||
_adv_params.conn_mode = BLE_GAP_CONN_MODE_UND;
|
||||
_adv_params.disc_mode = BLE_GAP_DISC_MODE_GEN;
|
||||
_adv_params.itvl_min = ((params->adv_itvl * 1000) / BLE_HCI_ADV_ITVL);
|
||||
_adv_params.itvl_max = ((params->adv_itvl * 1000) / BLE_HCI_ADV_ITVL);
|
||||
_adv_params.itvl_min = BLE_GAP_ADV_ITVL_MS(params->adv_itvl);
|
||||
_adv_params.itvl_max = _adv_params.itvl_min;
|
||||
_adv_params.channel_map = 0;
|
||||
_adv_params.filter_policy = 0;
|
||||
_adv_params.high_duty_cycle = 0;
|
||||
|
||||
@ -176,19 +176,20 @@ void nimble_statconn_init(void)
|
||||
/* set the advertising parameters used */
|
||||
_adv_params.conn_mode = BLE_GAP_CONN_MODE_UND;
|
||||
_adv_params.disc_mode = BLE_GAP_DISC_MODE_GEN;
|
||||
_adv_params.itvl_min = ((NIMBLE_STATCONN_ADV_ITVL_MS * 1000) / BLE_HCI_ADV_ITVL);
|
||||
_adv_params.itvl_max = ((NIMBLE_STATCONN_ADV_ITVL_MS * 1000) / BLE_HCI_ADV_ITVL);
|
||||
_adv_params.itvl_min = BLE_GAP_ADV_ITVL_MS(NIMBLE_STATCONN_ADV_ITVL_MS);
|
||||
_adv_params.itvl_max = _adv_params.itvl_min;
|
||||
_adv_params.channel_map = 0;
|
||||
_adv_params.filter_policy = 0;
|
||||
_adv_params.high_duty_cycle = 0;
|
||||
|
||||
/* set connection parameters */
|
||||
_conn_params.scan_itvl = ((NIMBLE_STATCONN_CONN_WIN_MS * 1000) / BLE_HCI_SCAN_ITVL);
|
||||
_conn_params.scan_window = ((NIMBLE_STATCONN_CONN_WIN_MS * 1000) / BLE_HCI_SCAN_ITVL);
|
||||
_conn_params.itvl_min = ((NIMBLE_STATCONN_CONN_ITVL_MS * 1000) / BLE_HCI_CONN_ITVL);
|
||||
_conn_params.itvl_max = ((NIMBLE_STATCONN_CONN_ITVL_MS * 1000) / BLE_HCI_CONN_ITVL);
|
||||
_conn_params.scan_itvl = BLE_GAP_SCAN_ITVL_MS(NIMBLE_STATCONN_CONN_WIN_MS);
|
||||
_conn_params.scan_window = _conn_params.scan_itvl;
|
||||
_conn_params.itvl_min = BLE_GAP_CONN_ITVL_MS(NIMBLE_STATCONN_CONN_ITVL_MS);
|
||||
_conn_params.itvl_max = _conn_params.itvl_min;
|
||||
_conn_params.latency = NIMBLE_STATCONN_CONN_LATENCY;
|
||||
_conn_params.supervision_timeout = (NIMBLE_STATCONN_CONN_SUPERTO_MS / 10);
|
||||
_conn_params.supervision_timeout = BLE_GAP_SUPERVISION_TIMEOUT_MS(
|
||||
NIMBLE_STATCONN_CONN_SUPERTO_MS);
|
||||
_conn_params.min_ce_len = 0;
|
||||
_conn_params.max_ce_len = 0;
|
||||
_conn_timeout = NIMBLE_STATCONN_CONN_TIMEOUT_MS;
|
||||
|
||||
@ -343,8 +343,8 @@ static void _cmd_close(int handle)
|
||||
static void _cmd_update(int handle, int itvl, int timeout)
|
||||
{
|
||||
struct ble_gap_upd_params params;
|
||||
params.itvl_min = (uint16_t)((itvl * 1000) / BLE_HCI_CONN_ITVL);
|
||||
params.itvl_max = (uint16_t)((itvl * 1000) / BLE_HCI_CONN_ITVL);
|
||||
params.itvl_min = (uint16_t)BLE_GAP_CONN_ITVL_MS(itvl);
|
||||
params.itvl_max = (uint16_t)BLE_GAP_CONN_ITVL_MS(itvl);
|
||||
params.latency = 0;
|
||||
params.supervision_timeout = (uint16_t)(timeout / 10);
|
||||
params.min_ce_len = BLE_GAP_INITIAL_CONN_MIN_CE_LEN;
|
||||
|
||||
@ -329,9 +329,11 @@ int main(void)
|
||||
|
||||
/* wait until we are connected to the test server */
|
||||
thread_flags_wait_all(FLAG_UP);
|
||||
struct ble_l2cap_chan_info info;
|
||||
ble_l2cap_get_chan_info(_coc, &info);
|
||||
puts("# Connection established");
|
||||
printf("# MTUs: our %i, remote %i\n",
|
||||
ble_l2cap_get_our_mtu(_coc), ble_l2cap_get_peer_mtu(_coc));
|
||||
(int)info.our_l2cap_mtu, (int)info.peer_l2cap_mtu);
|
||||
|
||||
/* start shell */
|
||||
puts("# Shell is now available");
|
||||
|
||||
@ -100,12 +100,15 @@ static int _on_l2cap_evt(struct ble_l2cap_event *event, void *arg)
|
||||
(void)arg;
|
||||
|
||||
switch (event->type) {
|
||||
case BLE_L2CAP_EVENT_COC_CONNECTED:
|
||||
case BLE_L2CAP_EVENT_COC_CONNECTED: {
|
||||
_coc = event->connect.chan;
|
||||
struct ble_l2cap_chan_info info;
|
||||
ble_l2cap_get_chan_info(_coc, &info);
|
||||
puts("# L2CAP: CONNECTED");
|
||||
printf("# MTUs: our %i, remote %i\n",
|
||||
ble_l2cap_get_our_mtu(_coc), ble_l2cap_get_peer_mtu(_coc));
|
||||
(int)info.our_l2cap_mtu, (int)info.peer_l2cap_mtu);
|
||||
break;
|
||||
}
|
||||
case BLE_L2CAP_EVENT_COC_DISCONNECTED:
|
||||
_coc = NULL;
|
||||
puts("# L2CAP: DISCONNECTED");
|
||||
|
||||
@ -25,7 +25,7 @@ CFLAGS += -DAPP_CID=$(APP_CID)
|
||||
|
||||
# configure NimBLE
|
||||
USEPKG += nimble
|
||||
MSYS_CNT ?= 23
|
||||
MSYS_CNT ?= 40
|
||||
CFLAGS += -DMYNEWT_VAL_BLE_L2CAP_COC_MAX_NUM=1
|
||||
CFLAGS += -DMYNEWT_VAL_BLE_L2CAP_COC_MPS=250
|
||||
CFLAGS += -DMYNEWT_VAL_BLE_MAX_CONNECTIONS=1
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user