nimble/controller: Use single function for DCI calculation

Select CSA #1 or #2 from within ble_ll_conn_calc_dci.


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/6b57da91
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/tree/6b57da91
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/diff/6b57da91

Branch: refs/heads/bluetooth5
Commit: 6b57da91fd474655a8a1e8342b05ae84b0b9e41a
Parents: 2227104
Author: Szymon Janc <[email protected]>
Authored: Tue Apr 11 11:30:31 2017 +0200
Committer: Szymon Janc <[email protected]>
Committed: Tue Apr 11 11:30:31 2017 +0200

----------------------------------------------------------------------
 .../controller/include/controller/ble_ll_conn.h |  2 +-
 net/nimble/controller/src/ble_ll_conn.c         | 20 +++++++++++++-------
 .../controller/test/src/ble_ll_csa2_test.c      | 16 ++++++++++------
 3 files changed, 24 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/6b57da91/net/nimble/controller/include/controller/ble_ll_conn.h
----------------------------------------------------------------------
diff --git a/net/nimble/controller/include/controller/ble_ll_conn.h 
b/net/nimble/controller/include/controller/ble_ll_conn.h
index 47b2e48..3267cda 100644
--- a/net/nimble/controller/include/controller/ble_ll_conn.h
+++ b/net/nimble/controller/include/controller/ble_ll_conn.h
@@ -288,7 +288,7 @@ struct ble_ll_conn_sm
 struct ble_ll_conn_sm *ble_ll_conn_find_active_conn(uint16_t handle);
 
 /* required for unit testing */
-uint8_t ble_ll_conn_calc_dci_csa2(struct ble_ll_conn_sm *conn);
+uint8_t ble_ll_conn_calc_dci(struct ble_ll_conn_sm *conn);
 
 #ifdef __cplusplus
 }

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/6b57da91/net/nimble/controller/src/ble_ll_conn.c
----------------------------------------------------------------------
diff --git a/net/nimble/controller/src/ble_ll_conn.c 
b/net/nimble/controller/src/ble_ll_conn.c
index b827182..6d3e5e5 100644
--- a/net/nimble/controller/src/ble_ll_conn.c
+++ b/net/nimble/controller/src/ble_ll_conn.c
@@ -637,7 +637,7 @@ ble_ll_conn_csa2_prng(uint16_t counter, uint16_t ch_id)
     return prn_e;
 }
 
-uint8_t
+static uint8_t
 ble_ll_conn_calc_dci_csa2(struct ble_ll_conn_sm *conn)
 {
     uint16_t channel_unmapped;
@@ -679,6 +679,10 @@ ble_ll_conn_calc_dci(struct ble_ll_conn_sm *conn)
     uint8_t remap_index;
     uint8_t bitpos;
 
+    if (CONN_F_CSA2_SUPP(conn)) {
+        return ble_ll_conn_calc_dci_csa2(conn);
+    }
+
     /* Get next unmapped channel */
     curchan = conn->last_unmapped_chan + conn->hop_inc;
     if (curchan > BLE_PHY_NUM_DATA_CHANS) {
@@ -1571,18 +1575,20 @@ ble_ll_conn_master_init(struct ble_ll_conn_sm *connsm,
 }
 
 static void
-ble_ll_conn_set_csa(struct ble_ll_conn_sm *connsm, bool use_csa2)
+ble_ll_conn_set_csa(struct ble_ll_conn_sm *connsm, bool chsel)
 {
     /* calculate the next data channel */
-    if (use_csa2) {
+    if (chsel) {
         CONN_F_CSA2_SUPP(connsm) = 1;
         connsm->channel_id = ((connsm->access_addr & 0xffff0000) >> 16) ^
                               (connsm->access_addr & 0x0000ffff);
-        connsm->data_chan_index = ble_ll_conn_calc_dci_csa2(connsm);
-    } else {
-        connsm->last_unmapped_chan = 0;
+
         connsm->data_chan_index = ble_ll_conn_calc_dci(connsm);
+        return;
     }
+
+    connsm->last_unmapped_chan = 0;
+    connsm->data_chan_index = ble_ll_conn_calc_dci(connsm);
 }
 
 /**
@@ -1944,7 +1950,7 @@ ble_ll_conn_next_event(struct ble_ll_conn_sm *connsm)
 
     /* Calculate data channel index of next connection event */
     if (CONN_F_CSA2_SUPP(connsm)) {
-        connsm->data_chan_index = ble_ll_conn_calc_dci_csa2(connsm);
+        connsm->data_chan_index = ble_ll_conn_calc_dci(connsm);
     } else {
         while (latency > 0) {
             connsm->last_unmapped_chan = connsm->unmapped_chan;

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/6b57da91/net/nimble/controller/test/src/ble_ll_csa2_test.c
----------------------------------------------------------------------
diff --git a/net/nimble/controller/test/src/ble_ll_csa2_test.c 
b/net/nimble/controller/test/src/ble_ll_csa2_test.c
index 3cf8101..9ba882c 100644
--- a/net/nimble/controller/test/src/ble_ll_csa2_test.c
+++ b/net/nimble/controller/test/src/ble_ll_csa2_test.c
@@ -36,6 +36,8 @@ TEST_CASE(ble_ll_csa2_test_1)
 
     memset(&conn, 0, sizeof(conn));
 
+    CONN_F_CSA2_SUPP(&conn) = 1;
+
     /*
      * based on sample data from CoreSpec 5.0 Vol 6 Part C 3.1
      * (all channels used)
@@ -51,15 +53,15 @@ TEST_CASE(ble_ll_csa2_test_1)
     conn.chanmap[3] = 0x1f;
 
     conn.event_cntr = 1;
-    rc = ble_ll_conn_calc_dci_csa2(&conn);
+    rc = ble_ll_conn_calc_dci(&conn);
     TEST_ASSERT(rc == 20);
 
     conn.event_cntr = 2;
-    rc = ble_ll_conn_calc_dci_csa2(&conn);
+    rc = ble_ll_conn_calc_dci(&conn);
     TEST_ASSERT(rc == 6);
 
     conn.event_cntr = 3;
-    rc = ble_ll_conn_calc_dci_csa2(&conn);
+    rc = ble_ll_conn_calc_dci(&conn);
     TEST_ASSERT(rc == 21);
 }
 
@@ -76,6 +78,8 @@ TEST_CASE(ble_ll_csa2_test_2)
 
     memset(&conn, 0, sizeof(conn));
 
+    CONN_F_CSA2_SUPP(&conn) = 1;
+
     /*
      * based on sample data from CoreSpec 5.0 Vol 6 Part C 3.2
      * (9 channels used)
@@ -91,15 +95,15 @@ TEST_CASE(ble_ll_csa2_test_2)
     conn.chanmap[4] = 0x1e;
 
     conn.event_cntr = 6;
-    rc = ble_ll_conn_calc_dci_csa2(&conn);
+    rc = ble_ll_conn_calc_dci(&conn);
     TEST_ASSERT(rc == 23);
 
     conn.event_cntr = 7;
-    rc = ble_ll_conn_calc_dci_csa2(&conn);
+    rc = ble_ll_conn_calc_dci(&conn);
     TEST_ASSERT(rc == 9);
 
     conn.event_cntr = 8;
-    rc = ble_ll_conn_calc_dci_csa2(&conn);
+    rc = ble_ll_conn_calc_dci(&conn);
     TEST_ASSERT(rc == 34);
 }
 

Reply via email to