summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWilliam San Filippo <wills@runtime.io>2016-08-29 22:35:40 -0700
committerWilliam San Filippo <wills@runtime.io>2016-08-29 22:35:40 -0700
commit7b5462126e58ea775cfab07f63e71740e0b706f1 (patch)
tree44b14ad428334eb41afce945877da91f0c64fa10
parent70987f7d2e3c791132509f08566fe77de34142ac (diff)
MYNEWT-374 Code does not build if BLE_LLC_FEAT_LL_PRIVACY=0
The code would not compile if this setting was turned off. It is now possible to set this feature to zero to reduce code and ram usage of the controller. Also fixed the comment that said this feature (privacy) was not supported by the nimble controller.
-rwxr-xr-xapps/bletest/src/main.c6
-rw-r--r--net/nimble/controller/src/ble_ll_adv.c4
-rw-r--r--net/nimble/controller/src/ble_ll_conn.c15
-rw-r--r--net/nimble/controller/src/ble_ll_scan.c12
-rw-r--r--net/nimble/include/nimble/nimble_opt.h3
5 files changed, 31 insertions, 9 deletions
diff --git a/apps/bletest/src/main.c b/apps/bletest/src/main.c
index b6468a84..d21cc50c 100755
--- a/apps/bletest/src/main.c
+++ b/apps/bletest/src/main.c
@@ -120,7 +120,7 @@ os_membuf_t g_mbuf_buffer[MBUF_MEMPOOL_SIZE];
#define BLETEST_CFG_SCAN_WINDOW (700000 / BLE_HCI_SCAN_ITVL)
#define BLETEST_CFG_SCAN_TYPE (BLE_HCI_SCAN_TYPE_PASSIVE)
#define BLETEST_CFG_SCAN_OWN_ADDR_TYPE (BLE_HCI_ADV_OWN_ADDR_PUBLIC)
-#define BLETEST_CFG_SCAN_FILT_POLICY (BLE_HCI_SCAN_FILT_USE_WL)
+#define BLETEST_CFG_SCAN_FILT_POLICY (BLE_HCI_SCAN_FILT_NO_WL)
#define BLETEST_CFG_FILT_DUP_ADV (1)
/* Connection config */
@@ -428,7 +428,7 @@ bletest_init_scanner(void)
rc = ble_hs_hci_cmd_build_le_set_scan_params(BLETEST_CFG_SCAN_TYPE,
BLETEST_CFG_SCAN_ITVL,
BLETEST_CFG_SCAN_WINDOW,
- BLETEST_CFG_SCAN_OWN_ADDR_TYPE,
+ own_addr_type,
BLETEST_CFG_SCAN_FILT_POLICY,
buf, sizeof buf);
assert(rc == 0);
@@ -659,9 +659,11 @@ bletest_execute_advertiser(void)
int i;
#if (BLETEST_CONCURRENT_CONN_TEST == 1)
int j;
+#if (BLE_LL_CFG_FEAT_LE_ENCRYPTION == 1)
uint16_t mask;
uint16_t reply_handle;
#endif
+#endif
int rc;
uint16_t handle;
uint16_t pktlen;
diff --git a/net/nimble/controller/src/ble_ll_adv.c b/net/nimble/controller/src/ble_ll_adv.c
index 0c6df3b1..ceb50254 100644
--- a/net/nimble/controller/src/ble_ll_adv.c
+++ b/net/nimble/controller/src/ble_ll_adv.c
@@ -988,7 +988,9 @@ ble_ll_adv_conn_req_rxd(uint8_t *rxbuf, struct ble_mbuf_hdr *hdr)
{
int valid;
uint8_t pyld_len;
+#if (BLE_LL_CFG_FEAT_LL_PRIVACY == 1)
uint8_t resolved;
+#endif
uint8_t addr_type;
uint8_t *inita;
uint8_t *ident_addr;
@@ -997,7 +999,9 @@ ble_ll_adv_conn_req_rxd(uint8_t *rxbuf, struct ble_mbuf_hdr *hdr)
/* Check filter policy. */
valid = 0;
+#if (BLE_LL_CFG_FEAT_LL_PRIVACY == 1)
resolved = BLE_MBUF_HDR_RESOLVED(hdr);
+#endif
advsm = &g_ble_ll_adv_sm;
inita = rxbuf + BLE_LL_PDU_HDR_LEN;
if (hdr->rxinfo.flags & BLE_MBUF_HDR_F_DEVMATCH) {
diff --git a/net/nimble/controller/src/ble_ll_conn.c b/net/nimble/controller/src/ble_ll_conn.c
index e3c40e26..38220ea5 100644
--- a/net/nimble/controller/src/ble_ll_conn.c
+++ b/net/nimble/controller/src/ble_ll_conn.c
@@ -1953,14 +1953,17 @@ static void
ble_ll_conn_req_pdu_update(struct os_mbuf *m, uint8_t *adva, uint8_t addr_type,
uint16_t txoffset, int rpa_index)
{
- int is_rpa;
uint8_t hdr;
uint8_t *dptr;
uint8_t *addr;
struct ble_mbuf_hdr *ble_hdr;
- struct ble_ll_resolv_entry *rl;
struct ble_ll_conn_sm *connsm;
+#if (BLE_LL_CFG_FEAT_LL_PRIVACY == 1)
+ int is_rpa;
+ struct ble_ll_resolv_entry *rl;
+#endif
+
assert(m != NULL);
/* Retain pdu type but clear txadd/rxadd bits */
@@ -1983,6 +1986,7 @@ ble_ll_conn_req_pdu_update(struct os_mbuf *m, uint8_t *adva, uint8_t addr_type,
}
/* XXX: do this ahead of time? Calculate the local rpa I mean */
+#if (BLE_LL_CFG_FEAT_LL_PRIVACY == 1)
if (connsm->own_addr_type > BLE_HCI_ADV_OWN_ADDR_RANDOM) {
rl = NULL;
is_rpa = ble_ll_is_rpa(adva, addr_type);
@@ -2002,6 +2006,7 @@ ble_ll_conn_req_pdu_update(struct os_mbuf *m, uint8_t *adva, uint8_t addr_type,
addr = NULL;
}
}
+#endif
if (addr) {
memcpy(dptr, addr, BLE_DEV_ADDR_LEN);
@@ -2130,7 +2135,9 @@ ble_ll_conn_event_halt(void)
void
ble_ll_init_rx_pkt_in(uint8_t *rxbuf, struct ble_mbuf_hdr *ble_hdr)
{
+#if (BLE_LL_CFG_FEAT_LL_PRIVACY == 1)
int8_t rpa_index;
+#endif
uint8_t addr_type;
uint8_t payload_len;
uint8_t *addr;
@@ -2151,6 +2158,7 @@ ble_ll_init_rx_pkt_in(uint8_t *rxbuf, struct ble_mbuf_hdr *ble_hdr)
addr_type = BLE_HCI_CONN_PEER_ADDR_PUBLIC;
}
+#if (BLE_LL_CFG_FEAT_LL_PRIVACY == 1)
/*
* Did we resolve this address? If so, set correct peer address
* and peer address type.
@@ -2163,6 +2171,9 @@ ble_ll_init_rx_pkt_in(uint8_t *rxbuf, struct ble_mbuf_hdr *ble_hdr)
} else {
addr = rxbuf + BLE_LL_PDU_HDR_LEN;
}
+#else
+ addr = rxbuf + BLE_LL_PDU_HDR_LEN;
+#endif
connsm->peer_addr_type = addr_type;
memcpy(connsm->peer_addr, addr, BLE_DEV_ADDR_LEN);
diff --git a/net/nimble/controller/src/ble_ll_scan.c b/net/nimble/controller/src/ble_ll_scan.c
index 29193dc8..4890d187 100644
--- a/net/nimble/controller/src/ble_ll_scan.c
+++ b/net/nimble/controller/src/ble_ll_scan.c
@@ -386,7 +386,9 @@ ble_ll_hci_send_adv_report(uint8_t pdu_type, uint8_t txadd, uint8_t *rxbuf,
struct ble_ll_scan_sm *scansm)
{
int rc;
+#if (BLE_LL_CFG_FEAT_LL_PRIVACY == 1)
int index;
+#endif
uint8_t evtype;
uint8_t subev;
uint8_t *evbuf;
@@ -440,6 +442,7 @@ ble_ll_hci_send_adv_report(uint8_t pdu_type, uint8_t txadd, uint8_t *rxbuf,
}
rxbuf += BLE_LL_PDU_HDR_LEN;
+#if (BLE_LL_CFG_FEAT_LL_PRIVACY == 1)
if (BLE_MBUF_HDR_RESOLVED(hdr)) {
index = scansm->scan_rpa_index;
adv_addr = g_ble_ll_resolv_list[index].rl_identity_addr;
@@ -449,9 +452,12 @@ ble_ll_hci_send_adv_report(uint8_t pdu_type, uint8_t txadd, uint8_t *rxbuf,
* we just add 2 here.
*/
addr_type = g_ble_ll_resolv_list[index].rl_addr_type + 2;
- } else{
+ } else {
adv_addr = rxbuf;
}
+#else
+ adv_addr = rxbuf;
+#endif
orig_evbuf = evbuf;
evbuf += 5;
@@ -1098,7 +1104,9 @@ ble_ll_scan_wfr_timer_exp(void)
void
ble_ll_scan_rx_pkt_in(uint8_t ptype, uint8_t *rxbuf, struct ble_mbuf_hdr *hdr)
{
+#if (BLE_LL_CFG_FEAT_LL_PRIVACY == 1)
int index;
+#endif
uint8_t *adv_addr;
uint8_t *adva;
uint8_t *ident_addr;
@@ -1137,8 +1145,6 @@ ble_ll_scan_rx_pkt_in(uint8_t ptype, uint8_t *rxbuf, struct ble_mbuf_hdr *hdr)
ident_addr = g_ble_ll_resolv_list[index].rl_identity_addr;
ident_addr_type = g_ble_ll_resolv_list[index].rl_addr_type;
}
-#else
- index = -1;
#endif
/*
diff --git a/net/nimble/include/nimble/nimble_opt.h b/net/nimble/include/nimble/nimble_opt.h
index c82bcb5a..859b0aa6 100644
--- a/net/nimble/include/nimble/nimble_opt.h
+++ b/net/nimble/include/nimble/nimble_opt.h
@@ -377,8 +377,7 @@
#endif
/*
- * This option is used to enable/disable LL privacy. Currently, this feature
- * is not supported by the nimble controller.
+ * This option is used to enable/disable LL privacy.
*/
#ifndef BLE_LL_CFG_FEAT_LL_PRIVACY
#define BLE_LL_CFG_FEAT_LL_PRIVACY (1)