Skip to content

Commit 8a78068

Browse files
sjanccarlescufi
authored andcommitted
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 <[email protected]>
1 parent ea6ad73 commit 8a78068

File tree

1 file changed

+30
-0
lines changed
  • tests/bluetooth/tester/src

1 file changed

+30
-0
lines changed

tests/bluetooth/tester/src/gap.c

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,11 +106,41 @@ static void le_param_updated(struct bt_conn *conn, uint16_t interval,
106106
CONTROLLER_INDEX, (uint8_t *) &ev, sizeof(ev));
107107
}
108108

109+
static void le_security_changed(struct bt_conn *conn, bt_security_t level,
110+
enum bt_security_err err)
111+
{
112+
const bt_addr_le_t *addr = bt_conn_get_dst(conn);
113+
struct gap_sec_level_changed_ev sec_ev;
114+
struct gap_bond_lost_ev bond_ev;
115+
116+
switch (err) {
117+
case BT_SECURITY_ERR_SUCCESS:
118+
memcpy(sec_ev.address, addr->a.val, sizeof(sec_ev.address));
119+
sec_ev.address_type = addr->type;
120+
/* enum matches BTP values */
121+
sec_ev.sec_level = level;
122+
123+
tester_send(BTP_SERVICE_ID_GAP, GAP_EV_SEC_LEVEL_CHANGED,
124+
CONTROLLER_INDEX, (uint8_t *) &sec_ev, sizeof(sec_ev));
125+
break;
126+
case BT_SECURITY_ERR_PIN_OR_KEY_MISSING:
127+
memcpy(bond_ev.address, addr->a.val, sizeof(bond_ev.address));
128+
bond_ev.address_type = addr->type;
129+
130+
tester_send(BTP_SERVICE_ID_GAP, GAP_EV_BOND_LOST,
131+
CONTROLLER_INDEX, (uint8_t *) &bond_ev, sizeof(bond_ev));
132+
break;
133+
default:
134+
break;
135+
}
136+
}
137+
109138
static struct bt_conn_cb conn_callbacks = {
110139
.connected = le_connected,
111140
.disconnected = le_disconnected,
112141
.identity_resolved = le_identity_resolved,
113142
.le_param_updated = le_param_updated,
143+
.security_changed = le_security_changed,
114144
};
115145

116146
static void supported_commands(uint8_t *data, uint16_t len)

0 commit comments

Comments
 (0)