mirror of
https://github.com/espressif/esp-nimble.git
synced 2026-08-29 13:20:04 +00:00
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:
@@ -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
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user