You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by an...@apache.org on 2017/04/11 22:45:41 UTC

[12/14] incubator-mynewt-core git commit: nimble/controller: Allow to configure CSA #2 support

nimble/controller: Allow to configure CSA #2 support

This allows to enable/disable CSA #2 support in Nimble controller.
By default it is disabled.


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

Branch: refs/heads/bluetooth5
Commit: 1630d8e37459fc2ce8259a05c2f1e0f6bf5c2e98
Parents: 3acdf38
Author: Szymon Janc <sz...@codecoup.pl>
Authored: Tue Apr 11 14:47:26 2017 +0200
Committer: Szymon Janc <sz...@codecoup.pl>
Committed: Tue Apr 11 14:47:26 2017 +0200

----------------------------------------------------------------------
 net/nimble/controller/src/ble_ll.c          |  2 ++
 net/nimble/controller/src/ble_ll_adv.c      |  9 +++++++--
 net/nimble/controller/src/ble_ll_conn.c     | 12 +++++++++++-
 net/nimble/controller/src/ble_ll_conn_hci.c |  3 ++-
 net/nimble/controller/src/ble_ll_hci_ev.c   |  2 ++
 net/nimble/controller/syscfg.yml            |  6 ++++++
 net/nimble/controller/test/syscfg.yml       |  1 +
 7 files changed, 31 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/1630d8e3/net/nimble/controller/src/ble_ll.c
----------------------------------------------------------------------
diff --git a/net/nimble/controller/src/ble_ll.c b/net/nimble/controller/src/ble_ll.c
index dd71dbd..5fe03d0 100644
--- a/net/nimble/controller/src/ble_ll.c
+++ b/net/nimble/controller/src/ble_ll.c
@@ -1339,8 +1339,10 @@ ble_ll_init(void)
     features |= BLE_LL_FEAT_LE_PING;
 #endif
 
+#if (MYNEWT_VAL(BLE_LL_CFG_FEAT_LE_CSA2) == 1)
     /* CSA2 */
     features |= BLE_LL_FEAT_CSA2;
+#endif
 
     /* Initialize random number generation */
     ble_ll_rand_init();

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/1630d8e3/net/nimble/controller/src/ble_ll_adv.c
----------------------------------------------------------------------
diff --git a/net/nimble/controller/src/ble_ll_adv.c b/net/nimble/controller/src/ble_ll_adv.c
index 8ce9bf3..f72446a 100644
--- a/net/nimble/controller/src/ble_ll_adv.c
+++ b/net/nimble/controller/src/ble_ll_adv.c
@@ -244,8 +244,9 @@ ble_ll_adv_pdu_make(struct ble_ll_adv_sm *advsm, struct os_mbuf *m)
     case BLE_HCI_ADV_TYPE_ADV_IND:
         pdu_type = BLE_ADV_PDU_TYPE_ADV_IND;
 
-        /* CSA #2 is supported */
+#if (MYNEWT_VAL(BLE_LL_CFG_FEAT_LE_CSA2) == 1)
         pdu_type |= BLE_ADV_PDU_HDR_CHSEL;
+#endif
         break;
 
     case BLE_HCI_ADV_TYPE_ADV_NONCONN_IND:
@@ -260,8 +261,9 @@ ble_ll_adv_pdu_make(struct ble_ll_adv_sm *advsm, struct os_mbuf *m)
     case BLE_HCI_ADV_TYPE_ADV_DIRECT_IND_LD:
         pdu_type = BLE_ADV_PDU_TYPE_ADV_DIRECT_IND;
 
-        /* CSA #2 is supported */
+#if (MYNEWT_VAL(BLE_LL_CFG_FEAT_LE_CSA2) == 1)
         pdu_type |= BLE_ADV_PDU_HDR_CHSEL;
+#endif
 
         adv_data_len = 0;
         pdulen = BLE_ADV_DIRECT_IND_LEN;
@@ -1724,7 +1726,10 @@ ble_ll_adv_send_conn_comp_ev(struct ble_ll_conn_sm *connsm,
     advsm->conn_comp_ev = NULL;
 
     ble_ll_conn_comp_event_send(connsm, BLE_ERR_SUCCESS, evbuf, advsm);
+
+#if (MYNEWT_VAL(BLE_LL_CFG_FEAT_LE_CSA2) == 1)
     ble_ll_hci_ev_le_csa(connsm);
+#endif
 }
 
 /**

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/1630d8e3/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 9a86bbb..681a122 100644
--- a/net/nimble/controller/src/ble_ll_conn.c
+++ b/net/nimble/controller/src/ble_ll_conn.c
@@ -599,6 +599,7 @@ ble_ll_conn_remapped_channel(uint8_t remap_index, const uint8_t *chanmap)
     return 0;
 }
 
+#if (MYNEWT_VAL(BLE_LL_CFG_FEAT_LE_CSA2) == 1)
 static uint16_t
 ble_ll_conn_csa2_perm(uint16_t in)
 {
@@ -663,6 +664,7 @@ ble_ll_conn_calc_dci_csa2(struct ble_ll_conn_sm *conn)
 
     return ble_ll_conn_remapped_channel(remap_index, conn->chanmap);
 }
+#endif
 
 static uint8_t
 ble_ll_conn_calc_dci_csa1(struct ble_ll_conn_sm *conn)
@@ -706,9 +708,11 @@ ble_ll_conn_calc_dci(struct ble_ll_conn_sm *conn, uint16_t latency)
 {
     uint8_t index;
 
+#if (MYNEWT_VAL(BLE_LL_CFG_FEAT_LE_CSA2) == 1)
     if (CONN_F_CSA2_SUPP(conn)) {
         return ble_ll_conn_calc_dci_csa2(conn);
     }
+#endif
 
     index = conn->data_chan_index;
 
@@ -1593,17 +1597,21 @@ 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 chsel)
 {
-    /* calculate the next data channel */
+#if (MYNEWT_VAL(BLE_LL_CFG_FEAT_LE_CSA2) == 1)
     if (chsel) {
         CONN_F_CSA2_SUPP(connsm) = 1;
         connsm->channel_id = ((connsm->access_addr & 0xffff0000) >> 16) ^
                               (connsm->access_addr & 0x0000ffff);
 
+        /* calculate the next data channel */
         connsm->data_chan_index = ble_ll_conn_calc_dci(connsm, 0);
         return;
     }
+#endif
 
     connsm->last_unmapped_chan = 0;
+
+    /* calculate the next data channel */
     connsm->data_chan_index = ble_ll_conn_calc_dci(connsm, 1);
 }
 
@@ -2133,7 +2141,9 @@ ble_ll_conn_created(struct ble_ll_conn_sm *connsm, struct ble_mbuf_hdr *rxhdr)
         } else {
             evbuf = ble_ll_init_get_conn_comp_ev();
             ble_ll_conn_comp_event_send(connsm, BLE_ERR_SUCCESS, evbuf, NULL);
+#if (MYNEWT_VAL(BLE_LL_CFG_FEAT_LE_CSA2) == 1)
             ble_ll_hci_ev_le_csa(connsm);
+#endif
         }
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/1630d8e3/net/nimble/controller/src/ble_ll_conn_hci.c
----------------------------------------------------------------------
diff --git a/net/nimble/controller/src/ble_ll_conn_hci.c b/net/nimble/controller/src/ble_ll_conn_hci.c
index 84d1b53..31b6c04 100644
--- a/net/nimble/controller/src/ble_ll_conn_hci.c
+++ b/net/nimble/controller/src/ble_ll_conn_hci.c
@@ -126,8 +126,9 @@ ble_ll_conn_req_pdu_make(struct ble_ll_conn_sm *connsm)
     /* Construct first PDU header byte */
     pdu_type = BLE_ADV_PDU_TYPE_CONNECT_REQ;
 
-    /* CSA #2 is supported */
+#if (MYNEWT_VAL(BLE_LL_CFG_FEAT_LE_CSA2) == 1)
     pdu_type |= BLE_ADV_PDU_HDR_CHSEL;
+#endif
 
     /* Set BLE transmit header */
     ble_ll_mbuf_init(m, BLE_CONNECT_REQ_LEN, pdu_type);

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/1630d8e3/net/nimble/controller/src/ble_ll_hci_ev.c
----------------------------------------------------------------------
diff --git a/net/nimble/controller/src/ble_ll_hci_ev.c b/net/nimble/controller/src/ble_ll_hci_ev.c
index ac9398e..3319db3 100644
--- a/net/nimble/controller/src/ble_ll_hci_ev.c
+++ b/net/nimble/controller/src/ble_ll_hci_ev.c
@@ -273,6 +273,7 @@ ble_ll_hci_ev_databuf_overflow(void)
  *
  * @param connsm Pointer to connection state machine
  */
+#if (MYNEWT_VAL(BLE_LL_CFG_FEAT_LE_CSA2) == 1)
 void
 ble_ll_hci_ev_le_csa(struct ble_ll_conn_sm *connsm)
 {
@@ -290,3 +291,4 @@ ble_ll_hci_ev_le_csa(struct ble_ll_conn_sm *connsm)
         }
     }
 }
+#endif

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/1630d8e3/net/nimble/controller/syscfg.yml
----------------------------------------------------------------------
diff --git a/net/nimble/controller/syscfg.yml b/net/nimble/controller/syscfg.yml
index fd4f48a..0fe7a48 100644
--- a/net/nimble/controller/syscfg.yml
+++ b/net/nimble/controller/syscfg.yml
@@ -204,6 +204,12 @@ syscfg.defs:
             nimble controller.
         value: '0'
 
+    BLE_LL_CFG_FEAT_LE_CSA2:
+        description: >
+            This option is used to enable/disable support for LE Channel
+            Selection Algorithm #2.
+        value: '0'
+
     BLE_PUBLIC_DEV_ADDR:
         description: >
             Allows the target or app to override the public device address

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/1630d8e3/net/nimble/controller/test/syscfg.yml
----------------------------------------------------------------------
diff --git a/net/nimble/controller/test/syscfg.yml b/net/nimble/controller/test/syscfg.yml
index 47a61a2..979e7a0 100644
--- a/net/nimble/controller/test/syscfg.yml
+++ b/net/nimble/controller/test/syscfg.yml
@@ -19,3 +19,4 @@
 # Package: net/nimble/controller/test
 
 syscfg.vals:
+    BLE_LL_CFG_FEAT_LE_CSA2: 1