diff --git a/pkg/nimble/Makefile b/pkg/nimble/Makefile index 7c9f0c8713..5face4c675 100644 --- a/pkg/nimble/Makefile +++ b/pkg/nimble/Makefile @@ -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 diff --git a/pkg/nimble/autoconn/include/nimble_autoconn_params.h b/pkg/nimble/autoconn/include/nimble_autoconn_params.h index 4d07935d15..9c259fdbf5 100644 --- a/pkg/nimble/autoconn/include/nimble_autoconn_params.h +++ b/pkg/nimble/autoconn/include/nimble_autoconn_params.h @@ -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 /**@}*/ diff --git a/pkg/nimble/autoconn/nimble_autoconn.c b/pkg/nimble/autoconn/nimble_autoconn.c index 09a4159f67..78809ce5e3 100644 --- a/pkg/nimble/autoconn/nimble_autoconn.c +++ b/pkg/nimble/autoconn/nimble_autoconn.c @@ -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; diff --git a/pkg/nimble/statconn/nimble_statconn.c b/pkg/nimble/statconn/nimble_statconn.c index 8f01f0a7c4..6803c17dad 100644 --- a/pkg/nimble/statconn/nimble_statconn.c +++ b/pkg/nimble/statconn/nimble_statconn.c @@ -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; diff --git a/sys/shell/commands/sc_nimble_netif.c b/sys/shell/commands/sc_nimble_netif.c index 3d2323c4e0..774ad4fb74 100644 --- a/sys/shell/commands/sc_nimble_netif.c +++ b/sys/shell/commands/sc_nimble_netif.c @@ -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; diff --git a/tests/nimble_l2cap/main.c b/tests/nimble_l2cap/main.c index 925ffa7c42..b9887f231a 100644 --- a/tests/nimble_l2cap/main.c +++ b/tests/nimble_l2cap/main.c @@ -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"); diff --git a/tests/nimble_l2cap_server/main.c b/tests/nimble_l2cap_server/main.c index 8a54559b48..0a03f71207 100644 --- a/tests/nimble_l2cap_server/main.c +++ b/tests/nimble_l2cap_server/main.c @@ -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"); diff --git a/tests/nimble_l2cap_server/nimble.inc.mk b/tests/nimble_l2cap_server/nimble.inc.mk index 676480fb49..6c3b98b3f0 100644 --- a/tests/nimble_l2cap_server/nimble.inc.mk +++ b/tests/nimble_l2cap_server/nimble.inc.mk @@ -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