apps/bttester: set filter accept list

Receive addrs and save them to filter accept list.
Fix for GAP/CONN/ACEP/BV-04-C test.
This commit is contained in:
Jakub
2022-03-16 10:32:52 +01:00
committed by Michał Narajowski
parent a59d9a4416
commit 788fd3e378
2 changed files with 35 additions and 1 deletions
+5
View File
@@ -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 {
+30 -1
View File
@@ -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);