You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by na...@apache.org on 2022/03/16 09:35:29 UTC

[mynewt-nimble] branch master updated: apps/bttester: set filter accept list

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 788fd3e  apps/bttester: set filter accept list
788fd3e is described below

commit 788fd3e378940bf72b2240a14afbd2eedcf778c9
Author: Jakub <ja...@codecoup.pl>
AuthorDate: Thu Sep 23 12:24:32 2021 +0200

    apps/bttester: set filter accept list
    
    Receive addrs and save them to filter accept list.
    Fix for GAP/CONN/ACEP/BV-04-C test.
---
 apps/bttester/src/bttester.h |  5 +++++
 apps/bttester/src/gap.c      | 31 ++++++++++++++++++++++++++++++-
 2 files changed, 35 insertions(+), 1 deletion(-)

diff --git a/apps/bttester/src/bttester.h b/apps/bttester/src/bttester.h
index 4a8fc47..4bf7485 100644
--- a/apps/bttester/src/bttester.h
+++ b/apps/bttester/src/bttester.h
@@ -320,6 +320,11 @@ struct gap_set_mitm_cmd {
     uint8_t mitm;
 } __packed;
 
+#define GAP_SET_FILTER_ACCEPT_LIST	0x1c
+struct gap_set_filter_accept_list_cmd {
+    uint8_t list_len;
+    ble_addr_t addrs[];
+} __packed;
 /* events */
 #define GAP_EV_NEW_SETTINGS		0x80
 struct gap_new_settings_ev {
diff --git a/apps/bttester/src/gap.c b/apps/bttester/src/gap.c
index 75adeb9..ce6cf33 100644
--- a/apps/bttester/src/gap.c
+++ b/apps/bttester/src/gap.c
@@ -1230,10 +1230,15 @@ static int gap_event_cb(struct ble_gap_event *event, void *arg)
 static void connect(const uint8_t *data, uint16_t len)
 {
 	uint8_t status = BTP_STATUS_SUCCESS;
+	ble_addr_t *addr = (ble_addr_t *) data;
 
 	SYS_LOG_DBG("");
 
-	if (ble_gap_connect(own_addr_type, (ble_addr_t *) data, 0,
+	if (ble_addr_cmp(BLE_ADDR_ANY, addr) == 0) {
+		addr = NULL;
+	}
+
+	if (ble_gap_connect(own_addr_type, addr, 0,
 			    &dflt_conn_params, gap_event_cb, NULL)) {
 		status = BTP_STATUS_FAILED;
 	}
@@ -1574,6 +1579,27 @@ static void set_mitm(const uint8_t *data, uint16_t len)
 		   CONTROLLER_INDEX, BTP_STATUS_SUCCESS);
 }
 
+static void set_filter_accept_list(const uint8_t *data, uint16_t len)
+{
+	uint8_t status = BTP_STATUS_SUCCESS;
+	struct gap_set_filter_accept_list_cmd *tmp =
+			(struct gap_set_filter_accept_list_cmd *) data;
+
+	SYS_LOG_DBG("");
+
+	/*
+	 * Check if the nb of bytes received matches the len of addrs list.
+	 * Then set the filter accept list.
+	 */
+	if (((len - sizeof(tmp->list_len))/sizeof(ble_addr_t) !=
+		tmp->list_len) || ble_gap_wl_set(tmp->addrs, tmp->list_len)) {
+		status = BTP_STATUS_FAILED;
+	}
+
+	tester_rsp(BTP_SERVICE_ID_GAP, GAP_SET_FILTER_ACCEPT_LIST,
+		   			CONTROLLER_INDEX, status);
+}
+
 void tester_handle_gap(uint8_t opcode, uint8_t index, uint8_t *data,
 		       uint16_t len)
 {
@@ -1665,6 +1691,9 @@ void tester_handle_gap(uint8_t opcode, uint8_t index, uint8_t *data,
 	case GAP_SET_MITM:
 		set_mitm(data, len);
 		return;
+	case GAP_SET_FILTER_ACCEPT_LIST:
+		set_filter_accept_list(data, len);
+		return;
 	default:
 		tester_rsp(BTP_SERVICE_ID_GAP, opcode, index,
 			   BTP_STATUS_UNKNOWN_CMD);