You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by ry...@apache.org on 2019/01/15 01:32:29 UTC

[mynewt-nimble] branch master updated (d4f9bad -> 479eceb)

This is an automated email from the ASF dual-hosted git repository.

rymek pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-nimble.git.


    from d4f9bad  Merge pull request #292 from sjanc/blehci
     new 280f85d  nimble/ll: Set local RPA per peer device
     new 479eceb  nimble/ll: Fix handling LL_PAUSE_ENC_REQ

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 nimble/controller/include/controller/ble_ll_resolv.h |  1 +
 nimble/controller/src/ble_ll_conn.c                  | 11 +++++++++--
 nimble/controller/src/ble_ll_resolv.c                | 12 ++++++++++++
 3 files changed, 22 insertions(+), 2 deletions(-)


[mynewt-nimble] 01/02: nimble/ll: Set local RPA per peer device

Posted by ry...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

rymek pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-nimble.git

commit 280f85d8635a69887ae1763fcde1a008248914f2
Author: Łukasz Rymanowski <lu...@codecoup.pl>
AuthorDate: Tue Jan 15 00:38:24 2019 +0100

    nimble/ll: Set local RPA per peer device
    
    When remote connects to Nimble and uses RPA we should make sure to store
    this RPA in case HOST would like to read it.
    
    It fixes LL/CM/BV-02
---
 nimble/controller/include/controller/ble_ll_resolv.h |  1 +
 nimble/controller/src/ble_ll_conn.c                  |  8 +++++++-
 nimble/controller/src/ble_ll_resolv.c                | 12 ++++++++++++
 3 files changed, 20 insertions(+), 1 deletion(-)

diff --git a/nimble/controller/include/controller/ble_ll_resolv.h b/nimble/controller/include/controller/ble_ll_resolv.h
index 5401a70..e28e6e5 100644
--- a/nimble/controller/include/controller/ble_ll_resolv.h
+++ b/nimble/controller/include/controller/ble_ll_resolv.h
@@ -81,6 +81,7 @@ void ble_ll_resolv_get_priv_addr(struct ble_ll_resolv_entry *rl, int local,
                                  uint8_t *addr);
 
 void ble_ll_resolv_set_peer_rpa(int index, uint8_t *rpa);
+void ble_ll_resolv_set_local_rpa(int index, uint8_t *rpa);
 
 /* Generate a resolvable private address. */
 int ble_ll_resolv_gen_rpa(uint8_t *addr, uint8_t addr_type, uint8_t *rpa,
diff --git a/nimble/controller/src/ble_ll_conn.c b/nimble/controller/src/ble_ll_conn.c
index 8aab5c1..de8edd0 100644
--- a/nimble/controller/src/ble_ll_conn.c
+++ b/nimble/controller/src/ble_ll_conn.c
@@ -2952,6 +2952,8 @@ ble_ll_init_rx_pkt_in(uint8_t pdu_type, uint8_t *rxbuf,
     uint8_t addr_type;
     uint8_t *addr;
     uint8_t *adv_addr;
+    uint8_t *inita;
+    uint8_t inita_type;
     struct ble_ll_conn_sm *connsm;
     int ext_adv_mode = -1;
 #if MYNEWT_VAL(BLE_LL_CFG_FEAT_LL_EXT_ADV)
@@ -3008,7 +3010,7 @@ ble_ll_init_rx_pkt_in(uint8_t pdu_type, uint8_t *rxbuf,
 
         if (ble_ll_scan_adv_decode_addr(pdu_type, rxbuf, ble_hdr,
                                         &adv_addr, &addr_type,
-                                        NULL, NULL, &ext_adv_mode)) {
+                                        &inita, &inita_type, &ext_adv_mode)) {
             /* Something got wrong, keep trying to connect */
             goto scan_continue;
         }
@@ -3042,6 +3044,10 @@ ble_ll_init_rx_pkt_in(uint8_t pdu_type, uint8_t *rxbuf,
 #if MYNEWT_VAL(BLE_LL_CFG_FEAT_LL_PRIVACY)
             /* Update resolving list with current peer RPA */
             ble_ll_resolv_set_peer_rpa(connsm->rpa_index, rxbuf + BLE_LL_PDU_HDR_LEN);
+            if (ble_ll_is_rpa(inita, inita_type)) {
+                ble_ll_resolv_set_local_rpa(connsm->rpa_index, inita);
+            }
+
 #endif
         }
 
diff --git a/nimble/controller/src/ble_ll_resolv.c b/nimble/controller/src/ble_ll_resolv.c
index cc0dbfc..068a325 100644
--- a/nimble/controller/src/ble_ll_resolv.c
+++ b/nimble/controller/src/ble_ll_resolv.c
@@ -542,6 +542,18 @@ ble_ll_resolv_set_peer_rpa(int index, uint8_t *rpa)
     OS_EXIT_CRITICAL(sr);
 }
 
+void
+ble_ll_resolv_set_local_rpa(int index, uint8_t *rpa)
+{
+    os_sr_t sr;
+    struct ble_ll_resolv_entry *rl;
+
+    OS_ENTER_CRITICAL(sr);
+    rl = &g_ble_ll_resolv_list[index];
+    memcpy(rl->rl_local_rpa, rpa, BLE_DEV_ADDR_LEN);
+    OS_EXIT_CRITICAL(sr);
+}
+
 /**
  * Generate a resolvable private address.
  *


[mynewt-nimble] 02/02: nimble/ll: Fix handling LL_PAUSE_ENC_REQ

Posted by ry...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

rymek pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/mynewt-nimble.git

commit 479eceb55d8be6d31c1a1a9a27d1511f0d6ab014
Author: Łukasz Rymanowski <lu...@codecoup.pl>
AuthorDate: Tue Jan 15 01:00:48 2019 +0100

    nimble/ll: Fix handling LL_PAUSE_ENC_REQ
    
    Nimble incorretly was trying to handle LL_PAUSE_ENC_RSP in a Slave role.
    This patch fixes it.
    
    This fixes LL/PAC/SLA/BI-01-C
---
 nimble/controller/src/ble_ll_conn.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/nimble/controller/src/ble_ll_conn.c b/nimble/controller/src/ble_ll_conn.c
index de8edd0..992b6ab 100644
--- a/nimble/controller/src/ble_ll_conn.c
+++ b/nimble/controller/src/ble_ll_conn.c
@@ -3990,7 +3990,8 @@ chk_rx_terminate_ind:
             /* A slave always replies */
             reply = 1;
 #if MYNEWT_VAL(BLE_LL_CFG_FEAT_LE_ENCRYPTION)
-            if (is_ctrl && (opcode == BLE_LL_CTRL_PAUSE_ENC_RSP)) {
+            if (is_ctrl && (opcode == BLE_LL_CTRL_PAUSE_ENC_REQ)
+                        && (rx_pyld_len == (1 + BLE_LL_CTRL_PAUSE_ENC_REQ_LEN))) {
                 connsm->enc_data.enc_state = CONN_ENC_S_PAUSED;
             }
 #endif