From 8c4e70ebfd1dad3b28af3ddbc217215bc88dd2f1 Mon Sep 17 00:00:00 2001 From: Hauke Petersen Date: Thu, 23 Jan 2020 17:18:36 +0100 Subject: [PATCH] pkg/nimble/autoconn: make conn_timeout configurable --- pkg/nimble/autoconn/include/nimble_autoconn.h | 2 ++ pkg/nimble/autoconn/include/nimble_autoconn_params.h | 4 ++++ pkg/nimble/autoconn/nimble_autoconn.c | 4 +--- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/pkg/nimble/autoconn/include/nimble_autoconn.h b/pkg/nimble/autoconn/include/nimble_autoconn.h index c3e28360d7..0730657f2d 100644 --- a/pkg/nimble/autoconn/include/nimble_autoconn.h +++ b/pkg/nimble/autoconn/include/nimble_autoconn.h @@ -143,6 +143,8 @@ typedef struct { uint32_t scan_itvl; /** scan window applied while in scanning state [in ms] */ uint32_t scan_win; + /** opening a new connection is aborted after this time [in ms] */ + uint32_t conn_timeout; /** connection interval used when opening a new connection [in ms] */ uint32_t conn_itvl; /** slave latency used for new connections [in ms] */ diff --git a/pkg/nimble/autoconn/include/nimble_autoconn_params.h b/pkg/nimble/autoconn/include/nimble_autoconn_params.h index 2ee945da3c..4d07935d15 100644 --- a/pkg/nimble/autoconn/include/nimble_autoconn_params.h +++ b/pkg/nimble/autoconn/include/nimble_autoconn_params.h @@ -48,6 +48,9 @@ extern "C" { #define NIMBLE_AUTOCONN_SCAN_WIN (110U) /* 110ms */ #endif +#ifndef NIMBLE_AUTOCONN_CONN_TIMEOUT +#define NIMBLE_AUTOCONN_CONN_TIMEOUT (330U) /* 3 * SCAN_WIN */ +#endif #ifndef NIMBLE_AUTOCONN_CONN_ITVL #define NIMBLE_AUTOCONN_CONN_ITVL (75U) /* 75ms */ #endif @@ -70,6 +73,7 @@ extern "C" { .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, \ diff --git a/pkg/nimble/autoconn/nimble_autoconn.c b/pkg/nimble/autoconn/nimble_autoconn.c index fc5b510037..e7830a6669 100644 --- a/pkg/nimble/autoconn/nimble_autoconn.c +++ b/pkg/nimble/autoconn/nimble_autoconn.c @@ -42,8 +42,6 @@ #error "NimBLE autoconn: please select a fitting submodule" #endif -#define CONN_TIMEOUT_MUL (5U) - enum { STATE_SCAN, STATE_ADV, @@ -268,7 +266,7 @@ int nimble_autoconn_update(const nimble_autoconn_params_t *params, _conn_params.supervision_timeout = (params->conn_super_to / 10); _conn_params.min_ce_len = 0; _conn_params.max_ce_len = 0; - _conn_timeout = params->adv_itvl * CONN_TIMEOUT_MUL; + _conn_timeout = ((params->conn_timeout * 1000) / BLE_HCI_SCAN_ITVL); /* we use the same values to updated existing connections */ struct ble_gap_upd_params conn_update_params;