You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by cc...@apache.org on 2016/07/12 02:43:13 UTC

incubator-mynewt-core git commit: BLE Host - Add duration param to ble_gap_connect()

Repository: incubator-mynewt-core
Updated Branches:
  refs/heads/ble_hs_api 5ccea9b6c -> 8da07efd3


BLE Host - Add duration param to ble_gap_connect()


Project: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/commit/8da07efd
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/tree/8da07efd
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/diff/8da07efd

Branch: refs/heads/ble_hs_api
Commit: 8da07efd3c2bcad79d4efbafe451c4a3a99f7206
Parents: 5ccea9b
Author: Christopher Collins <cc...@apache.org>
Authored: Mon Jul 11 19:42:43 2016 -0700
Committer: Christopher Collins <cc...@apache.org>
Committed: Mon Jul 11 19:42:43 2016 -0700

----------------------------------------------------------------------
 apps/bletiny/src/bletiny.h                  |   4 +-
 apps/bletiny/src/cmd.c                      |   8 +-
 apps/bletiny/src/main.c                     |   8 +-
 net/nimble/host/include/host/ble_gap.h      |   4 +
 net/nimble/host/src/ble_gap.c               |  61 ++++++++++--
 net/nimble/host/src/test/ble_gap_test.c     | 113 ++++++++++++++++++++---
 net/nimble/host/src/test/ble_hs_conn_test.c |   2 +-
 net/nimble/host/src/test/ble_hs_test_util.c |  12 +--
 net/nimble/host/src/test/ble_hs_test_util.h |   4 +-
 net/nimble/host/src/test/ble_os_test.c      |  12 +--
 10 files changed, 187 insertions(+), 41 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/8da07efd/apps/bletiny/src/bletiny.h
----------------------------------------------------------------------
diff --git a/apps/bletiny/src/bletiny.h b/apps/bletiny/src/bletiny.h
index 95a0706..cb5206b 100644
--- a/apps/bletiny/src/bletiny.h
+++ b/apps/bletiny/src/bletiny.h
@@ -158,8 +158,8 @@ int bletiny_adv_start(uint8_t own_addr_type, uint8_t peer_addr_type,
                       const uint8_t *peer_addr, int32_t duration_ms,
                       const struct ble_gap_adv_params *params);
 int bletiny_adv_stop(void);
-int bletiny_conn_initiate(uint8_t own_addr_type,
-                          uint8_t peer_addr_type, uint8_t *peer_addr,
+int bletiny_conn_initiate(uint8_t own_addr_type, uint8_t peer_addr_type,
+                          uint8_t *peer_addr, int32_t duration_ms,
                           struct ble_gap_conn_params *params);
 int bletiny_conn_cancel(void);
 int bletiny_term_conn(uint16_t conn_handle, uint8_t reason);

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/8da07efd/apps/bletiny/src/cmd.c
----------------------------------------------------------------------
diff --git a/apps/bletiny/src/cmd.c b/apps/bletiny/src/cmd.c
index 3d05fb7..e05a081 100644
--- a/apps/bletiny/src/cmd.c
+++ b/apps/bletiny/src/cmd.c
@@ -380,6 +380,7 @@ static int
 cmd_conn(int argc, char **argv)
 {
     struct ble_gap_conn_params params;
+    int32_t duration_ms;
     uint8_t peer_addr[6];
     int peer_addr_type;
     int own_addr_type;
@@ -465,8 +466,13 @@ cmd_conn(int argc, char **argv)
         return rc;
     }
 
+    duration_ms = parse_arg_long_bounds_default("dur", 1, INT32_MAX, 0, &rc);
+    if (rc != 0) {
+        return rc;
+    }
+
     rc = bletiny_conn_initiate(own_addr_type, peer_addr_type, peer_addr,
-                               &params);
+                               duration_ms, &params);
     if (rc != 0) {
         return rc;
     }

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/8da07efd/apps/bletiny/src/main.c
----------------------------------------------------------------------
diff --git a/apps/bletiny/src/main.c b/apps/bletiny/src/main.c
index e7aab28..042660f 100755
--- a/apps/bletiny/src/main.c
+++ b/apps/bletiny/src/main.c
@@ -1291,12 +1291,14 @@ bletiny_adv_start(uint8_t own_addr_type, uint8_t peer_addr_type,
 
 int
 bletiny_conn_initiate(uint8_t own_addr_type, uint8_t peer_addr_type,
-                      uint8_t *peer_addr, struct ble_gap_conn_params *params)
+                      uint8_t *peer_addr, int32_t duration_ms,
+                      struct ble_gap_conn_params *params)
 {
     int rc;
 
-    rc = ble_gap_connect(own_addr_type, peer_addr_type, peer_addr, params,
-                         bletiny_gap_event, NULL);
+    rc = ble_gap_connect(own_addr_type, peer_addr_type, peer_addr, duration_ms,
+                         params, bletiny_gap_event, NULL);
+
     return rc;
 }
 

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/8da07efd/net/nimble/host/include/host/ble_gap.h
----------------------------------------------------------------------
diff --git a/net/nimble/host/include/host/ble_gap.h b/net/nimble/host/include/host/ble_gap.h
index 79868c5..e26a4c0 100644
--- a/net/nimble/host/include/host/ble_gap.h
+++ b/net/nimble/host/include/host/ble_gap.h
@@ -64,6 +64,9 @@ struct hci_conn_update;
 /** 10.24 seconds. */
 #define BLE_GAP_DISC_DUR_DFLT               (10.24 * 1000)
 
+/** 30 seconds (not from the spec). */
+#define BLE_GAP_CONN_DUR_DFLT               (30 * 1000)
+
 /** 1 second. */
 #define BLE_GAP_CONN_PAUSE_CENTRAL          (1 * 1000)
 
@@ -444,6 +447,7 @@ int ble_gap_disc_cancel(void);
 int ble_gap_disc_active(void);
 int ble_gap_connect(uint8_t own_addr_type,
                     uint8_t peer_addr_type, const uint8_t *peer_addr,
+                    int32_t duration_ms,
                     const struct ble_gap_conn_params *params,
                     ble_gap_event_fn *cb, void *cb_arg);
 int ble_gap_conn_cancel(void);

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/8da07efd/net/nimble/host/src/ble_gap.c
----------------------------------------------------------------------
diff --git a/net/nimble/host/src/ble_gap.c b/net/nimble/host/src/ble_gap.c
index 27616f2..bd85cf3 100644
--- a/net/nimble/host/src/ble_gap.c
+++ b/net/nimble/host/src/ble_gap.c
@@ -66,6 +66,12 @@
 #define BLE_GAP_OP_S_ADV                                1
 
 /**
+ * If an attempt to cancel an active procedure fails, the attempt is retried
+ * at this rate (ms).
+ */
+#define BLE_GAP_CANCEL_RETRY_RATE                              100 /* ms */
+
+/**
  * The maximum amount of user data that can be put into the advertising data.
  * The stack will automatically insert the flags field on its own if requested
  * by the application, limiting the maximum amount of user data.
@@ -134,8 +140,9 @@ static bssnz_t struct {
     unsigned adv_auto_flags:1;
 } ble_gap_slave;
 
-static int ble_gap_disc_tx_disable(void);
+static int ble_gap_disc_disable_tx(void);
 static int ble_gap_adv_disable_tx(void);
+static int ble_gap_conn_cancel_tx(void);
 
 struct ble_gap_snapshot {
     struct ble_gap_conn_desc *desc;
@@ -1064,15 +1071,21 @@ ble_gap_master_heartbeat(void)
 
     switch (ble_gap_master.op) {
     case BLE_GAP_OP_M_CONN:
+        rc = ble_gap_conn_cancel_tx();
+        if (rc != 0) {
+            /* Failed to stop connecting; try again in 100 ms. */
+            return BLE_GAP_CANCEL_RETRY_RATE;
+        }
+
         ble_gap_master_failed(BLE_HS_ETIMEOUT);
         break;
 
     case BLE_GAP_OP_M_DISC:
         /* When a discovery procedure times out, it is not a failure. */
-        rc = ble_gap_disc_tx_disable();
+        rc = ble_gap_disc_disable_tx();
         if (rc != 0) {
             /* Failed to stop discovery; try again in 100 ms. */
-            return 100;
+            return BLE_GAP_CANCEL_RETRY_RATE;
         }
 
         ble_gap_disc_complete();
@@ -1851,7 +1864,7 @@ ble_gap_adv_active(void)
  *****************************************************************************/
 
 static int
-ble_gap_disc_tx_disable(void)
+ble_gap_disc_disable_tx(void)
 {
     uint8_t buf[BLE_HCI_CMD_HDR_LEN + BLE_HCI_SET_SCAN_ENABLE_LEN];
     int rc;
@@ -1936,7 +1949,7 @@ ble_gap_disc_cancel(void)
         goto done;
     }
 
-    rc = ble_gap_disc_tx_disable();
+    rc = ble_gap_disc_disable_tx();
     if (rc != 0) {
         goto done;
     }
@@ -2205,6 +2218,7 @@ ble_gap_conn_create_tx(uint8_t own_addr_type,
 int
 ble_gap_connect(uint8_t own_addr_type,
                 uint8_t peer_addr_type, const uint8_t *peer_addr,
+                int32_t duration_ms,
                 const struct ble_gap_conn_params *conn_params,
                 ble_gap_event_fn *cb, void *cb_arg)
 {
@@ -2212,6 +2226,7 @@ ble_gap_connect(uint8_t own_addr_type,
     return BLE_HS_ENOTSUP;
 #endif
 
+    uint32_t duration_ticks;
     int rc;
 
     STATS_INC(ble_gap_stats, initiate);
@@ -2242,6 +2257,19 @@ ble_gap_connect(uint8_t own_addr_type,
         conn_params = &ble_gap_conn_params_dflt;
     }
 
+    if (duration_ms == 0) {
+        duration_ms = BLE_GAP_CONN_DUR_DFLT;
+    }
+
+    if (duration_ms != BLE_HS_FOREVER) {
+        rc = os_time_ms_to_ticks(duration_ms, &duration_ticks);
+        if (rc != 0) {
+            /* Duration too great. */
+            rc = BLE_HS_EINVAL;
+            goto done;
+        }
+    }
+
     /* XXX: Verify conn_params. */
 
     rc = ble_hs_id_use_addr(own_addr_type);
@@ -2264,6 +2292,10 @@ ble_gap_connect(uint8_t own_addr_type,
         goto done;
     }
 
+    if (duration_ms != BLE_HS_FOREVER) {
+        ble_gap_master_set_timer(duration_ticks);
+    }
+
     ble_gap_master.op = BLE_GAP_OP_M_CONN;
 
     rc = 0;
@@ -2348,6 +2380,21 @@ done:
  * $cancel                                                                   *
  *****************************************************************************/
 
+static int
+ble_gap_conn_cancel_tx(void)
+{
+    uint8_t buf[BLE_HCI_CMD_HDR_LEN];
+    int rc;
+
+    host_hci_cmd_build_le_create_conn_cancel(buf, sizeof buf);
+    rc = ble_hci_cmd_tx_empty_ack(buf);
+    if (rc != 0) {
+        return rc;
+    }
+
+    return 0;
+}
+
 /**
  * Aborts a connect procedure in progress.
  *
@@ -2359,7 +2406,6 @@ done:
 int
 ble_gap_conn_cancel(void)
 {
-    uint8_t buf[BLE_HCI_CMD_HDR_LEN];
     int rc;
 
     STATS_INC(ble_gap_stats, cancel);
@@ -2373,8 +2419,7 @@ ble_gap_conn_cancel(void)
 
     BLE_HS_LOG(INFO, "GAP procedure initiated: cancel connection\n");
 
-    host_hci_cmd_build_le_create_conn_cancel(buf, sizeof buf);
-    rc = ble_hci_cmd_tx_empty_ack(buf);
+    rc = ble_gap_conn_cancel_tx();
     if (rc != 0) {
         goto done;
     }

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/8da07efd/net/nimble/host/src/test/ble_gap_test.c
----------------------------------------------------------------------
diff --git a/net/nimble/host/src/test/ble_gap_test.c b/net/nimble/host/src/test/ble_gap_test.c
index 51469a2..aac297b 100644
--- a/net/nimble/host/src/test/ble_gap_test.c
+++ b/net/nimble/host/src/test/ble_gap_test.c
@@ -204,7 +204,7 @@ ble_gap_test_util_verify_tx_scan_enable(uint8_t enable,
 }
 
 static void
-ble_gap_test_util_verify_tx_create_conn(uint8_t filter_policy)
+ble_gap_test_util_verify_tx_create_conn(const struct hci_create_conn *exp)
 {
     uint8_t param_len;
     uint8_t *param;
@@ -214,9 +214,52 @@ ble_gap_test_util_verify_tx_create_conn(uint8_t filter_policy)
                                            &param_len);
     TEST_ASSERT(param_len == BLE_HCI_CREATE_CONN_LEN);
 
-    TEST_ASSERT(param[4] == filter_policy);
+    TEST_ASSERT(le16toh(param + 0) == exp->scan_itvl);
+    TEST_ASSERT(le16toh(param + 2) == exp->scan_window);
+    TEST_ASSERT(param[4] == exp->filter_policy);
+    TEST_ASSERT(param[5] == exp->peer_addr_type);
+    TEST_ASSERT(memcmp(param + 6, exp->peer_addr, 6) == 0);
+    TEST_ASSERT(param[12] == exp->own_addr_type);
+    TEST_ASSERT(le16toh(param + 13) == exp->conn_itvl_min);
+    TEST_ASSERT(le16toh(param + 15) == exp->conn_itvl_max);
+    TEST_ASSERT(le16toh(param + 17) == exp->conn_latency);
+    TEST_ASSERT(le16toh(param + 19) == exp->supervision_timeout);
+    TEST_ASSERT(le16toh(param + 21) == exp->min_ce_len);
+    TEST_ASSERT(le16toh(param + 23) == exp->max_ce_len);
+}
+
+static void
+ble_gap_test_util_hcc_from_conn_params(
+    struct hci_create_conn *hcc, uint8_t own_addr_type, uint8_t peer_addr_type,
+    const uint8_t *peer_addr, const struct ble_gap_conn_params *conn_params)
+{
+    hcc->scan_itvl = conn_params->scan_itvl;
+    hcc->scan_window = conn_params->scan_window;
+    hcc->filter_policy = peer_addr_type == BLE_GAP_ADDR_TYPE_WL ?
+        BLE_HCI_CONN_FILT_USE_WL :
+        BLE_HCI_CONN_FILT_NO_WL;
+    hcc->peer_addr_type = peer_addr_type;
+    memcpy(hcc->peer_addr, peer_addr, 6);
+    hcc->own_addr_type = own_addr_type;
+    hcc->conn_itvl_min = conn_params->itvl_min;
+    hcc->conn_itvl_max = conn_params->itvl_max;
+    hcc->conn_latency = conn_params->latency;
+    hcc->supervision_timeout = conn_params->supervision_timeout;
+    hcc->min_ce_len = conn_params->min_ce_len;
+    hcc->max_ce_len = conn_params->max_ce_len;
+}
 
-    /* XXX: Verify other fields. */
+static void
+ble_gap_test_util_conn_params_dflt(struct ble_gap_conn_params *conn_params)
+{
+    conn_params->scan_itvl = 0x0010;
+    conn_params->scan_window = 0x0010;
+    conn_params->itvl_min = BLE_GAP_INITIAL_CONN_ITVL_MIN;
+    conn_params->itvl_max = BLE_GAP_INITIAL_CONN_ITVL_MAX;
+    conn_params->latency = BLE_GAP_INITIAL_CONN_LATENCY;
+    conn_params->supervision_timeout = BLE_GAP_INITIAL_SUPERVISION_TIMEOUT;
+    conn_params->min_ce_len = BLE_GAP_INITIAL_CONN_MIN_CE_LEN;
+    conn_params->max_ce_len = BLE_GAP_INITIAL_CONN_MAX_CE_LEN;
 }
 
 static void
@@ -458,7 +501,7 @@ TEST_CASE(ble_gap_test_case_wl_bad_args)
 
     /*** White-list-using connection in progress. */
     rc = ble_hs_test_util_connect(BLE_ADDR_TYPE_PUBLIC,
-                                  BLE_GAP_ADDR_TYPE_WL, NULL, NULL,
+                                  BLE_GAP_ADDR_TYPE_WL, NULL, 0, NULL,
                                   ble_gap_test_util_connect_cb, NULL, 0);
     TEST_ASSERT(rc == 0);
 
@@ -584,7 +627,7 @@ TEST_CASE(ble_gap_test_case_disc_bad_args)
     /*** Master operation already in progress. */
     params.filter_policy = BLE_HCI_SCAN_FILT_NO_WL;
     rc = ble_hs_test_util_connect(BLE_ADDR_TYPE_PUBLIC,
-                                  BLE_GAP_ADDR_TYPE_WL, NULL, NULL,
+                                  BLE_GAP_ADDR_TYPE_WL, NULL, 0, NULL,
                                   ble_gap_test_util_connect_cb, NULL, 0);
     rc = ble_gap_disc(BLE_ADDR_TYPE_PUBLIC, 0, &params,
                       ble_gap_test_util_disc_cb, NULL);
@@ -785,6 +828,8 @@ TEST_SUITE(ble_gap_test_suite_disc)
 TEST_CASE(ble_gap_test_case_conn_dir_good)
 {
     struct hci_le_conn_complete evt;
+    struct ble_gap_conn_params params;
+    struct hci_create_conn hcc;
     int rc;
 
     uint8_t peer_addr[6] = { 1, 2, 3, 4, 5, 6 };
@@ -794,8 +839,17 @@ TEST_CASE(ble_gap_test_case_conn_dir_good)
     TEST_ASSERT(!ble_gap_master_in_progress());
     TEST_ASSERT(!ble_gap_conn_active());
 
+    params.scan_itvl = 0x12;
+    params.scan_window = 0x11;
+    params.itvl_min = 25;
+    params.itvl_max = 26;
+    params.latency = 1;
+    params.supervision_timeout = 20;
+    params.min_ce_len = 3;
+    params.max_ce_len = 4;
+
     rc = ble_hs_test_util_connect(BLE_ADDR_TYPE_PUBLIC,
-                                  BLE_ADDR_TYPE_PUBLIC, peer_addr, NULL,
+                                  BLE_ADDR_TYPE_PUBLIC, peer_addr, 0, &params,
                                   ble_gap_test_util_connect_cb, NULL, 0);
     TEST_ASSERT(rc == 0);
 
@@ -803,7 +857,10 @@ TEST_CASE(ble_gap_test_case_conn_dir_good)
     TEST_ASSERT(ble_gap_conn_active());
 
     /* Verify tx of create connection command. */
-    ble_gap_test_util_verify_tx_create_conn(BLE_HCI_CONN_FILT_NO_WL);
+    ble_gap_test_util_hcc_from_conn_params(&hcc, BLE_ADDR_TYPE_PUBLIC,
+                                           BLE_ADDR_TYPE_PUBLIC, peer_addr,
+                                           &params);
+    ble_gap_test_util_verify_tx_create_conn(&hcc);
     TEST_ASSERT(ble_gap_master_in_progress());
     TEST_ASSERT(ble_hs_atomic_conn_flags(2, NULL) == BLE_HS_ENOTCONN);
 
@@ -836,7 +893,7 @@ TEST_CASE(ble_gap_test_case_conn_dir_bad_args)
 
     /*** Invalid address type. */
     rc = ble_gap_connect(BLE_ADDR_TYPE_PUBLIC, 5,
-                         ((uint8_t[]){ 1, 2, 3, 4, 5, 6 }), NULL,
+                         ((uint8_t[]){ 1, 2, 3, 4, 5, 6 }), 0, NULL,
                          ble_gap_test_util_connect_cb, NULL);
     TEST_ASSERT(rc == BLE_HS_EINVAL);
     TEST_ASSERT(!ble_gap_master_in_progress());
@@ -844,22 +901,45 @@ TEST_CASE(ble_gap_test_case_conn_dir_bad_args)
     /*** Connection already in progress. */
     rc = ble_hs_test_util_connect(BLE_ADDR_TYPE_PUBLIC,
                                   BLE_ADDR_TYPE_PUBLIC,
-                                  ((uint8_t[]){ 1, 2, 3, 4, 5, 6 }),
+                                  ((uint8_t[]){ 1, 2, 3, 4, 5, 6 }), 0,
                                   NULL, ble_gap_test_util_connect_cb,
                                   NULL, 0);
     TEST_ASSERT(rc == 0);
     TEST_ASSERT(ble_gap_master_in_progress());
 
     rc = ble_gap_connect(BLE_ADDR_TYPE_PUBLIC, BLE_ADDR_TYPE_PUBLIC,
-                               ((uint8_t[]){ 2, 3, 4, 5, 6, 7 }), NULL,
-                               ble_gap_test_util_connect_cb, NULL);
+                         ((uint8_t[]){ 1, 2, 3, 4, 5, 6 }), 0, NULL,
+                         ble_gap_test_util_connect_cb, NULL);
     TEST_ASSERT(rc == BLE_HS_EALREADY);
 }
 
+TEST_CASE(ble_gap_test_case_conn_dir_dflt_params)
+{
+    static const uint8_t peer_addr[6] = { 2, 3, 8, 6, 6, 1 };
+
+    struct ble_gap_conn_params conn_params;
+    struct hci_create_conn hcc;
+    int rc;
+
+    ble_gap_test_util_init();
+
+    rc = ble_hs_test_util_connect(BLE_ADDR_TYPE_PUBLIC,
+                                  BLE_ADDR_TYPE_PUBLIC, peer_addr, 0, NULL,
+                                  ble_gap_test_util_connect_cb, NULL, 0);
+    TEST_ASSERT(rc == 0);
+
+    ble_gap_test_util_conn_params_dflt(&conn_params);
+    ble_gap_test_util_hcc_from_conn_params(&hcc, BLE_ADDR_TYPE_PUBLIC,
+                                           BLE_ADDR_TYPE_PUBLIC, peer_addr,
+                                           &conn_params);
+    ble_gap_test_util_verify_tx_create_conn(&hcc);
+}
+
 TEST_SUITE(ble_gap_test_suite_conn_dir)
 {
     ble_gap_test_case_conn_dir_good();
     ble_gap_test_case_conn_dir_bad_args();
+    ble_gap_test_case_conn_dir_dflt_params();
 }
 
 /*****************************************************************************
@@ -870,17 +950,24 @@ static void
 ble_gap_test_util_conn_cancel(uint8_t *peer_addr, uint8_t hci_status)
 {
     struct hci_le_conn_complete evt;
+    struct ble_gap_conn_params conn_params;
+    struct hci_create_conn hcc;
     int rc;
 
     ble_gap_test_util_init();
 
     /* Begin creating a connection. */
     rc = ble_hs_test_util_connect(BLE_ADDR_TYPE_PUBLIC,
-                                  BLE_ADDR_TYPE_PUBLIC, peer_addr, NULL,
+                                  BLE_ADDR_TYPE_PUBLIC, peer_addr, 0, NULL,
                                   ble_gap_test_util_connect_cb, NULL, 0);
     TEST_ASSERT(rc == 0);
     TEST_ASSERT(ble_gap_master_in_progress());
-    ble_gap_test_util_verify_tx_create_conn(BLE_HCI_CONN_FILT_NO_WL);
+
+    ble_gap_test_util_conn_params_dflt(&conn_params);
+    ble_gap_test_util_hcc_from_conn_params(&hcc, BLE_ADDR_TYPE_PUBLIC,
+                                           BLE_ADDR_TYPE_PUBLIC, peer_addr,
+                                           &conn_params);
+    ble_gap_test_util_verify_tx_create_conn(&hcc);
 
     /* Initiate cancel procedure. */
     rc = ble_hs_test_util_conn_cancel(hci_status);

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/8da07efd/net/nimble/host/src/test/ble_hs_conn_test.c
----------------------------------------------------------------------
diff --git a/net/nimble/host/src/test/ble_hs_conn_test.c b/net/nimble/host/src/test/ble_hs_conn_test.c
index 02eba78..87df5b1 100644
--- a/net/nimble/host/src/test/ble_hs_conn_test.c
+++ b/net/nimble/host/src/test/ble_hs_conn_test.c
@@ -56,7 +56,7 @@ TEST_CASE(ble_hs_conn_test_direct_connect_success)
     /* Initiate connection. */
     rc = ble_hs_test_util_connect(BLE_ADDR_TYPE_PUBLIC,
                                         BLE_ADDR_TYPE_PUBLIC,
-                                        addr, NULL, NULL, NULL, 0);
+                                        addr, 0, NULL, NULL, NULL, 0);
     TEST_ASSERT(rc == 0);
 
     TEST_ASSERT(ble_gap_master_in_progress());

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/8da07efd/net/nimble/host/src/test/ble_hs_test_util.c
----------------------------------------------------------------------
diff --git a/net/nimble/host/src/test/ble_hs_test_util.c b/net/nimble/host/src/test/ble_hs_test_util.c
index 895a608..c5d72c6 100644
--- a/net/nimble/host/src/test/ble_hs_test_util.c
+++ b/net/nimble/host/src/test/ble_hs_test_util.c
@@ -376,7 +376,7 @@ ble_hs_test_util_create_rpa_conn(uint16_t handle, uint8_t own_addr_type,
     int rc;
 
     ble_hs_test_util_connect(own_addr_type, peer_addr_type,
-                                   peer_id_addr, NULL, cb, cb_arg, 0);
+                             peer_id_addr, 0, NULL, cb, cb_arg, 0);
 
     memset(&evt, 0, sizeof evt);
     evt.subevent_code = BLE_HCI_LE_SUBEV_CONN_COMPLETE;
@@ -410,10 +410,10 @@ ble_hs_test_util_create_conn(uint16_t handle, uint8_t *peer_id_addr,
 
 int
 ble_hs_test_util_connect(uint8_t own_addr_type, uint8_t peer_addr_type,
-                               const uint8_t *peer_addr,
-                               const struct ble_gap_conn_params *params,
-                               ble_gap_event_fn *cb, void *cb_arg,
-                               uint8_t ack_status)
+                         const uint8_t *peer_addr, int32_t duration_ms,
+                         const struct ble_gap_conn_params *params,
+                         ble_gap_event_fn *cb, void *cb_arg,
+                         uint8_t ack_status)
 {
     int rc;
 
@@ -421,7 +421,7 @@ ble_hs_test_util_connect(uint8_t own_addr_type, uint8_t peer_addr_type,
         host_hci_opcode_join(BLE_HCI_OGF_LE, BLE_HCI_OCF_LE_CREATE_CONN),
         ack_status);
 
-    rc = ble_gap_connect(own_addr_type, peer_addr_type, peer_addr,
+    rc = ble_gap_connect(own_addr_type, peer_addr_type, peer_addr, duration_ms,
                          params, cb, cb_arg);
 
     TEST_ASSERT(rc == BLE_HS_HCI_ERR(ack_status));

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/8da07efd/net/nimble/host/src/test/ble_hs_test_util.h
----------------------------------------------------------------------
diff --git a/net/nimble/host/src/test/ble_hs_test_util.h b/net/nimble/host/src/test/ble_hs_test_util.h
index 8d2221a..350f8e5 100644
--- a/net/nimble/host/src/test/ble_hs_test_util.h
+++ b/net/nimble/host/src/test/ble_hs_test_util.h
@@ -66,8 +66,10 @@ void ble_hs_test_util_create_conn(uint16_t handle, uint8_t *addr,
 int ble_hs_test_util_connect(uint8_t own_addr_type,
                                    uint8_t peer_addr_type,
                                    const uint8_t *peer_addr,
+                                   int32_t duration_ms,
                                    const struct ble_gap_conn_params *params,
-                                   ble_gap_event_fn *cb, void *cb_arg,
+                                   ble_gap_event_fn *cb,
+                                   void *cb_arg,
                                    uint8_t ack_status);
 int ble_hs_test_util_conn_cancel(uint8_t ack_status);
 int ble_hs_test_util_conn_terminate(uint16_t conn_handle, uint8_t hci_status);

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/8da07efd/net/nimble/host/src/test/ble_os_test.c
----------------------------------------------------------------------
diff --git a/net/nimble/host/src/test/ble_os_test.c b/net/nimble/host/src/test/ble_os_test.c
index 4df85d9..ef51d9e 100644
--- a/net/nimble/host/src/test/ble_os_test.c
+++ b/net/nimble/host/src/test/ble_os_test.c
@@ -129,9 +129,9 @@ ble_gap_direct_connect_test_task_handler(void *arg)
 
     /* Initiate a direct connection. */
     ble_hs_test_util_connect(BLE_ADDR_TYPE_PUBLIC, BLE_ADDR_TYPE_PUBLIC,
-                                   addr, NULL,
-                                   ble_gap_direct_connect_test_connect_cb,
-                                   &cb_called, 0);
+                             addr, 0, NULL,
+                             ble_gap_direct_connect_test_connect_cb,
+                             &cb_called, 0);
     TEST_ASSERT(!ble_os_test_misc_conn_exists(BLE_HS_CONN_HANDLE_NONE));
     TEST_ASSERT(!cb_called);
 
@@ -291,7 +291,7 @@ ble_gap_terminate_test_task_handler(void *arg)
 
     /* Create two direct connections. */
     ble_hs_test_util_connect(BLE_ADDR_TYPE_PUBLIC, BLE_ADDR_TYPE_PUBLIC,
-                             addr1, NULL, ble_gap_terminate_cb,
+                             addr1, 0, NULL, ble_gap_terminate_cb,
                              &disconn_handle, 0);
     memset(&conn_evt, 0, sizeof conn_evt);
     conn_evt.subevent_code = BLE_HCI_LE_SUBEV_CONN_COMPLETE;
@@ -302,8 +302,8 @@ ble_gap_terminate_test_task_handler(void *arg)
     TEST_ASSERT(rc == 0);
 
     ble_hs_test_util_connect(BLE_ADDR_TYPE_PUBLIC, BLE_ADDR_TYPE_PUBLIC,
-                                   addr2, NULL, ble_gap_terminate_cb,
-                                   &disconn_handle, 0);
+                             addr2, 0, NULL, ble_gap_terminate_cb,
+                             &disconn_handle, 0);
     memset(&conn_evt, 0, sizeof conn_evt);
     conn_evt.subevent_code = BLE_HCI_LE_SUBEV_CONN_COMPLETE;
     conn_evt.status = BLE_ERR_SUCCESS;