Bluetooth: tester: Implement Friend and LPN callbacks
Use these callbacks to send BTP events. They are useful for test automation in auto-pts. Signed-off-by: Michał Narajowski <michal.narajowski@codecoup.pl>
This commit is contained in:
parent
d4247b3503
commit
b386853367
2 changed files with 107 additions and 0 deletions
|
@ -969,6 +969,41 @@ struct mesh_invalid_bearer_ev {
|
|||
|
||||
#define MESH_EV_INCOMP_TIMER_EXP 0x88
|
||||
|
||||
#define MESH_EV_FRND_ESTABLISHED 0x89
|
||||
struct mesh_frnd_established_ev {
|
||||
uint16_t net_idx;
|
||||
uint16_t lpn_addr;
|
||||
uint8_t recv_delay;
|
||||
uint32_t polltimeout;
|
||||
} __packed;
|
||||
|
||||
#define MESH_EV_FRND_TERMINATED 0x8a
|
||||
struct mesh_frnd_terminated_ev {
|
||||
uint16_t net_idx;
|
||||
uint16_t lpn_addr;
|
||||
} __packed;
|
||||
|
||||
#define MESH_EV_LPN_ESTABLISHED 0x8b
|
||||
struct mesh_lpn_established_ev {
|
||||
uint16_t net_idx;
|
||||
uint16_t friend_addr;
|
||||
uint8_t queue_size;
|
||||
uint8_t recv_win;
|
||||
} __packed;
|
||||
|
||||
#define MESH_EV_LPN_TERMINATED 0x8c
|
||||
struct mesh_lpn_terminated_ev {
|
||||
uint16_t net_idx;
|
||||
uint16_t friend_addr;
|
||||
} __packed;
|
||||
|
||||
#define MESH_EV_LPN_POLLED 0x8d
|
||||
struct mesh_lpn_polled_ev {
|
||||
uint16_t net_idx;
|
||||
uint16_t friend_addr;
|
||||
uint8_t retry;
|
||||
} __packed;
|
||||
|
||||
void tester_init(void);
|
||||
void tester_rsp(uint8_t service, uint8_t opcode, uint8_t index, uint8_t status);
|
||||
void tester_send(uint8_t service, uint8_t opcode, uint8_t index, uint8_t *data,
|
||||
|
|
|
@ -904,6 +904,78 @@ static struct bt_test_cb bt_test_cb = {
|
|||
.mesh_trans_incomp_timer_exp = incomp_timer_exp_cb,
|
||||
};
|
||||
|
||||
static void friend_established(uint16_t net_idx, uint16_t lpn_addr,
|
||||
uint8_t recv_delay, uint32_t polltimeout)
|
||||
{
|
||||
struct mesh_frnd_established_ev ev = { net_idx, lpn_addr, recv_delay,
|
||||
polltimeout };
|
||||
|
||||
LOG_DBG("Friendship (as Friend) established with "
|
||||
"LPN 0x%04x Receive Delay %u Poll Timeout %u",
|
||||
lpn_addr, recv_delay, polltimeout);
|
||||
|
||||
|
||||
tester_send(BTP_SERVICE_ID_MESH, MESH_EV_FRND_ESTABLISHED,
|
||||
CONTROLLER_INDEX, (uint8_t *) &ev, sizeof(ev));
|
||||
}
|
||||
|
||||
static void friend_terminated(uint16_t net_idx, uint16_t lpn_addr)
|
||||
{
|
||||
struct mesh_frnd_terminated_ev ev = { net_idx, lpn_addr };
|
||||
|
||||
LOG_DBG("Friendship (as Friend) lost with LPN "
|
||||
"0x%04x", lpn_addr);
|
||||
|
||||
tester_send(BTP_SERVICE_ID_MESH, MESH_EV_FRND_TERMINATED,
|
||||
CONTROLLER_INDEX, (uint8_t *) &ev, sizeof(ev));
|
||||
}
|
||||
|
||||
BT_MESH_FRIEND_CB_DEFINE(friend_cb) = {
|
||||
.established = friend_established,
|
||||
.terminated = friend_terminated,
|
||||
};
|
||||
|
||||
static void lpn_established(uint16_t net_idx, uint16_t friend_addr,
|
||||
uint8_t queue_size, uint8_t recv_win)
|
||||
{
|
||||
struct mesh_lpn_established_ev ev = { net_idx, friend_addr, queue_size,
|
||||
recv_win };
|
||||
|
||||
LOG_DBG("Friendship (as LPN) established with "
|
||||
"Friend 0x%04x Queue Size %d Receive Window %d",
|
||||
friend_addr, queue_size, recv_win);
|
||||
|
||||
tester_send(BTP_SERVICE_ID_MESH, MESH_EV_LPN_ESTABLISHED,
|
||||
CONTROLLER_INDEX, (uint8_t *) &ev, sizeof(ev));
|
||||
}
|
||||
|
||||
static void lpn_terminated(uint16_t net_idx, uint16_t friend_addr)
|
||||
{
|
||||
struct mesh_lpn_polled_ev ev = { net_idx, friend_addr };
|
||||
|
||||
LOG_DBG("Friendship (as LPN) lost with Friend "
|
||||
"0x%04x", friend_addr);
|
||||
|
||||
tester_send(BTP_SERVICE_ID_MESH, MESH_EV_LPN_TERMINATED,
|
||||
CONTROLLER_INDEX, (uint8_t *) &ev, sizeof(ev));
|
||||
}
|
||||
|
||||
static void lpn_polled(uint16_t net_idx, uint16_t friend_addr, bool retry)
|
||||
{
|
||||
struct mesh_lpn_polled_ev ev = { net_idx, friend_addr, (uint8_t)retry };
|
||||
|
||||
LOG_DBG("LPN polled 0x%04x %s", friend_addr, retry ? "(retry)" : "");
|
||||
|
||||
tester_send(BTP_SERVICE_ID_MESH, MESH_EV_LPN_POLLED,
|
||||
CONTROLLER_INDEX, (uint8_t *) &ev, sizeof(ev));
|
||||
}
|
||||
|
||||
BT_MESH_LPN_CB_DEFINE(lpn_cb) = {
|
||||
.established = lpn_established,
|
||||
.terminated = lpn_terminated,
|
||||
.polled = lpn_polled,
|
||||
};
|
||||
|
||||
uint8_t tester_init_mesh(void)
|
||||
{
|
||||
if (IS_ENABLED(CONFIG_BT_TESTING)) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue