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:
parent
ea6ad7337c
commit
8a780680ad
1 changed files with 30 additions and 0 deletions
|
@ -106,11 +106,41 @@ static void le_param_updated(struct bt_conn *conn, uint16_t interval,
|
||||||
CONTROLLER_INDEX, (uint8_t *) &ev, sizeof(ev));
|
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 = {
|
static struct bt_conn_cb conn_callbacks = {
|
||||||
.connected = le_connected,
|
.connected = le_connected,
|
||||||
.disconnected = le_disconnected,
|
.disconnected = le_disconnected,
|
||||||
.identity_resolved = le_identity_resolved,
|
.identity_resolved = le_identity_resolved,
|
||||||
.le_param_updated = le_param_updated,
|
.le_param_updated = le_param_updated,
|
||||||
|
.security_changed = le_security_changed,
|
||||||
};
|
};
|
||||||
|
|
||||||
static void supported_commands(uint8_t *data, uint16_t len)
|
static void supported_commands(uint8_t *data, uint16_t len)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue