tests: bluetooth: tester: Add support for security_changed callback

This allows to track security levels and check for lost bond of peer
peripherals.

This was affecting GAP/SEC/AUT/BV-21-C qualification test.

Signed-off-by: Szymon Janc <szymon.janc@codecoup.pl>
This commit is contained in:
Szymon Janc 2021-10-20 11:12:08 +02:00 committed by Carles Cufí
commit 8a780680ad

View file

@ -106,11 +106,41 @@ static void le_param_updated(struct bt_conn *conn, uint16_t interval,
CONTROLLER_INDEX, (uint8_t *) &ev, sizeof(ev));
}
static void le_security_changed(struct bt_conn *conn, bt_security_t level,
enum bt_security_err err)
{
const bt_addr_le_t *addr = bt_conn_get_dst(conn);
struct gap_sec_level_changed_ev sec_ev;
struct gap_bond_lost_ev bond_ev;
switch (err) {
case BT_SECURITY_ERR_SUCCESS:
memcpy(sec_ev.address, addr->a.val, sizeof(sec_ev.address));
sec_ev.address_type = addr->type;
/* enum matches BTP values */
sec_ev.sec_level = level;
tester_send(BTP_SERVICE_ID_GAP, GAP_EV_SEC_LEVEL_CHANGED,
CONTROLLER_INDEX, (uint8_t *) &sec_ev, sizeof(sec_ev));
break;
case BT_SECURITY_ERR_PIN_OR_KEY_MISSING:
memcpy(bond_ev.address, addr->a.val, sizeof(bond_ev.address));
bond_ev.address_type = addr->type;
tester_send(BTP_SERVICE_ID_GAP, GAP_EV_BOND_LOST,
CONTROLLER_INDEX, (uint8_t *) &bond_ev, sizeof(bond_ev));
break;
default:
break;
}
}
static struct bt_conn_cb conn_callbacks = {
.connected = le_connected,
.disconnected = le_disconnected,
.identity_resolved = le_identity_resolved,
.le_param_updated = le_param_updated,
.security_changed = le_security_changed,
};
static void supported_commands(uint8_t *data, uint16_t len)