mirror of
https://github.com/espressif/esp-nimble.git
synced 2026-08-05 09:37:53 +00:00
bluetooth: tester: Add explicit functions for event and response
This make is easier to verify if proper use of BTP is maintained. tester_rsp and tester_rsp_full will be removed eventually when BTP is fully async.
This commit is contained in:
committed by
Szymon Janc
parent
e88212a5da
commit
6871cec5f6
@@ -73,7 +73,9 @@ tester_init(void);
|
||||
void
|
||||
tester_rsp(uint8_t service, uint8_t opcode, uint8_t status);
|
||||
void
|
||||
tester_send(uint8_t service, uint8_t opcode, uint8_t *data, size_t len);
|
||||
tester_rsp_full(uint8_t service, uint8_t opcode, const void *rsp, size_t len);
|
||||
void
|
||||
tester_event(uint8_t service, uint8_t opcode, const void *data, size_t len);
|
||||
|
||||
struct btp_handler {
|
||||
uint8_t opcode;
|
||||
|
||||
+29
-32
@@ -674,8 +674,8 @@ device_found(ble_addr_t *addr, int8_t rssi, uint8_t evtype,
|
||||
* current one
|
||||
*/
|
||||
if (adv_buf->om_len) {
|
||||
tester_send(BTP_SERVICE_ID_GAP, BTP_GAP_EV_DEVICE_FOUND,
|
||||
adv_buf->om_data, adv_buf->om_len);
|
||||
tester_event(BTP_SERVICE_ID_GAP, BTP_GAP_EV_DEVICE_FOUND,
|
||||
adv_buf->om_data, adv_buf->om_len);
|
||||
}
|
||||
|
||||
store_adv(addr, rssi, data, len);
|
||||
@@ -688,8 +688,8 @@ device_found(ble_addr_t *addr, int8_t rssi, uint8_t evtype,
|
||||
return;
|
||||
}
|
||||
done:
|
||||
tester_send(BTP_SERVICE_ID_GAP, BTP_GAP_EV_DEVICE_FOUND,
|
||||
adv_buf->om_data, adv_buf->om_len);
|
||||
tester_event(BTP_SERVICE_ID_GAP, BTP_GAP_EV_DEVICE_FOUND,
|
||||
adv_buf->om_data, adv_buf->om_len);
|
||||
}
|
||||
|
||||
static int
|
||||
@@ -786,9 +786,8 @@ device_connected_ev_send(struct os_event *ev)
|
||||
return;
|
||||
}
|
||||
|
||||
tester_send(BTP_SERVICE_ID_GAP, BTP_GAP_EV_DEVICE_CONNECTED,
|
||||
(uint8_t *) &connected_ev,
|
||||
sizeof(connected_ev));
|
||||
tester_event(BTP_SERVICE_ID_GAP, BTP_GAP_EV_DEVICE_CONNECTED,
|
||||
(uint8_t *) &connected_ev, sizeof(connected_ev));
|
||||
|
||||
periph_privacy(desc);
|
||||
}
|
||||
@@ -826,9 +825,9 @@ le_connected(uint16_t conn_handle, int status)
|
||||
os_time_ms_to_ticks32(
|
||||
CONNECTED_EV_DELAY_MS(desc.conn_itvl)));
|
||||
#else
|
||||
tester_send(BTP_SERVICE_ID_GAP, BTP_GAP_EV_DEVICE_CONNECTED,
|
||||
(uint8_t *) &connected_ev,
|
||||
sizeof(connected_ev));
|
||||
tester_event(BTP_SERVICE_ID_GAP, BTP_GAP_EV_DEVICE_CONNECTED,
|
||||
(uint8_t *) &connected_ev,
|
||||
sizeof(connected_ev));
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -869,8 +868,8 @@ le_disconnected(struct ble_gap_conn_desc *conn, int reason)
|
||||
|
||||
memcpy(&ev.address, addr, sizeof(ev.address));
|
||||
|
||||
tester_send(BTP_SERVICE_ID_GAP, BTP_GAP_EV_DEVICE_DISCONNECTED,
|
||||
(uint8_t *) &ev, sizeof(ev));
|
||||
tester_event(BTP_SERVICE_ID_GAP, BTP_GAP_EV_DEVICE_DISCONNECTED,
|
||||
(uint8_t *) &ev, sizeof(ev));
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -924,8 +923,8 @@ auth_passkey_display(uint16_t conn_handle, unsigned int passkey)
|
||||
memcpy(&ev.address, addr, sizeof(ev.address));
|
||||
ev.passkey = htole32(pk.passkey);
|
||||
|
||||
tester_send(BTP_SERVICE_ID_GAP, BTP_GAP_EV_PASSKEY_DISPLAY,
|
||||
(uint8_t *) &ev, sizeof(ev));
|
||||
tester_event(BTP_SERVICE_ID_GAP, BTP_GAP_EV_PASSKEY_DISPLAY,
|
||||
(uint8_t *) &ev, sizeof(ev));
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -947,8 +946,8 @@ auth_passkey_entry(uint16_t conn_handle)
|
||||
|
||||
memcpy(&ev.address, addr, sizeof(ev.address));
|
||||
|
||||
tester_send(BTP_SERVICE_ID_GAP, BTP_GAP_EV_PASSKEY_ENTRY_REQ,
|
||||
(uint8_t *) &ev, sizeof(ev));
|
||||
tester_event(BTP_SERVICE_ID_GAP, BTP_GAP_EV_PASSKEY_ENTRY_REQ,
|
||||
(uint8_t *) &ev, sizeof(ev));
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -971,8 +970,8 @@ auth_passkey_numcmp(uint16_t conn_handle, unsigned int passkey)
|
||||
memcpy(&ev.address, addr, sizeof(ev.address));
|
||||
ev.passkey = htole32(passkey);
|
||||
|
||||
tester_send(BTP_SERVICE_ID_GAP, BTP_GAP_EV_PASSKEY_CONFIRM_REQ,
|
||||
(uint8_t *) &ev, sizeof(ev));
|
||||
tester_event(BTP_SERVICE_ID_GAP, BTP_GAP_EV_PASSKEY_CONFIRM_REQ,
|
||||
(uint8_t *) &ev, sizeof(ev));
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -1051,8 +1050,8 @@ le_identity_resolved(uint16_t conn_handle)
|
||||
memcpy(&ev.identity_address, &desc.peer_id_addr,
|
||||
sizeof(ev.identity_address));
|
||||
|
||||
tester_send(BTP_SERVICE_ID_GAP, BTP_GAP_EV_IDENTITY_RESOLVED,
|
||||
(uint8_t *) &ev, sizeof(ev));
|
||||
tester_event(BTP_SERVICE_ID_GAP, BTP_GAP_EV_IDENTITY_RESOLVED,
|
||||
(uint8_t *) &ev, sizeof(ev));
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -1076,8 +1075,8 @@ le_pairing_failed(uint16_t conn_handle, int reason)
|
||||
|
||||
ev.reason = reason;
|
||||
|
||||
tester_send(BTP_SERVICE_ID_GAP, BTP_GAP_EV_SEC_PAIRING_FAILED,
|
||||
(uint8_t *) &ev, sizeof(ev));
|
||||
tester_event(BTP_SERVICE_ID_GAP, BTP_GAP_EV_SEC_PAIRING_FAILED,
|
||||
(uint8_t *) &ev, sizeof(ev));
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -1093,8 +1092,8 @@ le_conn_param_update(struct ble_gap_conn_desc *desc)
|
||||
ev.conn_latency = desc->conn_latency;
|
||||
ev.supervision_timeout = desc->supervision_timeout;
|
||||
|
||||
tester_send(BTP_SERVICE_ID_GAP, BTP_GAP_EV_CONN_PARAM_UPDATE,
|
||||
(uint8_t *) &ev, sizeof(ev));
|
||||
tester_event(BTP_SERVICE_ID_GAP, BTP_GAP_EV_CONN_PARAM_UPDATE,
|
||||
(uint8_t *) &ev, sizeof(ev));
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -1121,8 +1120,8 @@ le_encryption_changed(struct ble_gap_conn_desc *desc)
|
||||
}
|
||||
}
|
||||
|
||||
tester_send(BTP_SERVICE_ID_GAP, BTP_GAP_EV_SEC_LEVEL_CHANGED,
|
||||
(uint8_t *) &ev, sizeof(ev));
|
||||
tester_event(BTP_SERVICE_ID_GAP, BTP_GAP_EV_SEC_LEVEL_CHANGED,
|
||||
(uint8_t *) &ev, sizeof(ev));
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -1136,10 +1135,8 @@ bond_lost(uint16_t conn_handle)
|
||||
assert(rc == 0);
|
||||
|
||||
memcpy(&ev.address, &desc.peer_id_addr, sizeof(ev.address));
|
||||
tester_send(BTP_SERVICE_ID_GAP,
|
||||
BTP_GAP_EV_BOND_LOST,
|
||||
(uint8_t *) &ev,
|
||||
sizeof(ev));
|
||||
tester_event(BTP_SERVICE_ID_GAP, BTP_GAP_EV_BOND_LOST,
|
||||
(uint8_t *) &ev, sizeof(ev));
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -1212,8 +1209,8 @@ adv_complete(void)
|
||||
current_settings &= ~BIT(BTP_GAP_SETTINGS_ADVERTISING);
|
||||
ev.current_settings = htole32(current_settings);
|
||||
|
||||
tester_send(BTP_SERVICE_ID_GAP, BTP_GAP_EV_NEW_SETTINGS,
|
||||
(uint8_t *) &ev, sizeof(ev));
|
||||
tester_event(BTP_SERVICE_ID_GAP, BTP_GAP_EV_NEW_SETTINGS,
|
||||
(uint8_t *) &ev, sizeof(ev));
|
||||
}
|
||||
|
||||
static int
|
||||
|
||||
@@ -269,8 +269,8 @@ attr_value_changed_ev(uint16_t handle, struct os_mbuf *data)
|
||||
ev->data_length = htole16(os_mbuf_len(data));
|
||||
os_mbuf_appendfrom(buf, data, 0, os_mbuf_len(data));
|
||||
|
||||
tester_send_buf(BTP_SERVICE_ID_GATT, BTP_GATT_EV_ATTR_VALUE_CHANGED,
|
||||
CONTROLLER_INDEX, buf);
|
||||
tester_event(BTP_SERVICE_ID_GATT, BTP_GATT_EV_ATTR_VALUE_CHANGED,
|
||||
buf->om_data, buf->om_len);
|
||||
}
|
||||
|
||||
static int
|
||||
@@ -683,8 +683,8 @@ read_cb(uint16_t conn_handle,
|
||||
|
||||
if (error->status != 0 && error->status != BLE_HS_EDONE) {
|
||||
rp->att_response = (uint8_t) BLE_HS_ATT_ERR(error->status);
|
||||
tester_send(BTP_SERVICE_ID_GATT, btp_opcode, gatt_buf.buf, gatt_buf
|
||||
.len);
|
||||
tester_rsp_full(BTP_SERVICE_ID_GATT, btp_opcode,
|
||||
gatt_buf.buf, gatt_buf.len);
|
||||
read_destroy();
|
||||
return 0;
|
||||
}
|
||||
@@ -697,8 +697,8 @@ read_cb(uint16_t conn_handle,
|
||||
}
|
||||
|
||||
rp->data_length += attr->om->om_len;
|
||||
tester_send(BTP_SERVICE_ID_GATT, btp_opcode,
|
||||
gatt_buf.buf, gatt_buf.len);
|
||||
tester_rsp_full(BTP_SERVICE_ID_GATT, btp_opcode,
|
||||
gatt_buf.buf, gatt_buf.len);
|
||||
read_destroy();
|
||||
|
||||
return 0;
|
||||
@@ -748,15 +748,15 @@ read_long_cb(uint16_t conn_handle,
|
||||
|
||||
if (error->status != 0 && error->status != BLE_HS_EDONE) {
|
||||
rp->att_response = (uint8_t) BLE_HS_ATT_ERR(error->status);
|
||||
tester_send(BTP_SERVICE_ID_GATT, btp_opcode, gatt_buf.buf, gatt_buf
|
||||
.len);
|
||||
tester_rsp_full(BTP_SERVICE_ID_GATT, btp_opcode,
|
||||
gatt_buf.buf, gatt_buf.len);
|
||||
read_destroy();
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (error->status == BLE_HS_EDONE) {
|
||||
tester_send(BTP_SERVICE_ID_GATT, btp_opcode, gatt_buf.buf, gatt_buf
|
||||
.len);
|
||||
tester_rsp_full(BTP_SERVICE_ID_GATT, btp_opcode,
|
||||
gatt_buf.buf, gatt_buf.len);
|
||||
read_destroy();
|
||||
return 0;
|
||||
}
|
||||
@@ -882,8 +882,8 @@ write_rsp(uint16_t conn_handle, const struct ble_gatt_error *error,
|
||||
|
||||
SYS_LOG_DBG("");
|
||||
|
||||
tester_send(BTP_SERVICE_ID_GATT, btp_opcode,
|
||||
&err, sizeof(err));
|
||||
tester_rsp_full(BTP_SERVICE_ID_GATT, btp_opcode,
|
||||
&err, sizeof(err));
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -969,8 +969,8 @@ reliable_write_rsp(uint16_t conn_handle,
|
||||
|
||||
SYS_LOG_DBG("Reliable write status %d", err);
|
||||
|
||||
tester_send(BTP_SERVICE_ID_GATT, BTP_GATT_RELIABLE_WRITE,
|
||||
&err, sizeof(err));
|
||||
tester_rsp_full(BTP_SERVICE_ID_GATT, BTP_GATT_RELIABLE_WRITE,
|
||||
&err, sizeof(err));
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1081,7 +1081,8 @@ disc_prim_uuid_cb(uint16_t conn_handle,
|
||||
}
|
||||
|
||||
if (error->status == BLE_HS_EDONE) {
|
||||
tester_send(BTP_SERVICE_ID_GATT, opcode, gatt_buf.buf, gatt_buf.len);
|
||||
tester_rsp_full(BTP_SERVICE_ID_GATT, opcode,
|
||||
gatt_buf.buf, gatt_buf.len);
|
||||
discover_destroy();
|
||||
return 0;
|
||||
}
|
||||
@@ -1136,8 +1137,8 @@ disc_all_desc_cb(uint16_t conn_handle,
|
||||
}
|
||||
|
||||
if (error->status == BLE_HS_EDONE) {
|
||||
tester_send(BTP_SERVICE_ID_GATT, BTP_GATT_DISC_ALL_DESC, gatt_buf
|
||||
.buf, gatt_buf.len);
|
||||
tester_rsp_full(BTP_SERVICE_ID_GATT, BTP_GATT_DISC_ALL_DESC,
|
||||
gatt_buf.buf, gatt_buf.len);
|
||||
discover_destroy();
|
||||
return 0;
|
||||
}
|
||||
@@ -1253,8 +1254,8 @@ find_included_cb(uint16_t conn_handle,
|
||||
}
|
||||
|
||||
if (error->status == BLE_HS_EDONE) {
|
||||
tester_send(BTP_SERVICE_ID_GATT, BTP_GATT_FIND_INCLUDED, gatt_buf
|
||||
.buf, gatt_buf.len);
|
||||
tester_rsp_full(BTP_SERVICE_ID_GATT, BTP_GATT_FIND_INCLUDED,
|
||||
gatt_buf.buf, gatt_buf.len);
|
||||
discover_destroy();
|
||||
return 0;
|
||||
}
|
||||
@@ -1310,8 +1311,8 @@ disc_chrc_cb(uint16_t conn_handle,
|
||||
}
|
||||
|
||||
if (error->status == BLE_HS_EDONE) {
|
||||
tester_send(BTP_SERVICE_ID_GATT, btp_opcode, gatt_buf.buf, gatt_buf
|
||||
.len);
|
||||
tester_rsp_full(BTP_SERVICE_ID_GATT, btp_opcode,
|
||||
gatt_buf.buf, gatt_buf.len);
|
||||
discover_destroy();
|
||||
return 0;
|
||||
}
|
||||
@@ -2046,8 +2047,8 @@ tester_gatt_notify_rx_ev(uint16_t conn_handle, uint16_t attr_handle,
|
||||
ev->data_length = htole16(os_mbuf_len(om));
|
||||
os_mbuf_appendfrom(buf, om, 0, os_mbuf_len(om));
|
||||
|
||||
tester_send_buf(BTP_SERVICE_ID_GATT, BTP_GATT_EV_NOTIFICATION,
|
||||
CONTROLLER_INDEX, buf);
|
||||
tester_event(BTP_SERVICE_ID_GATT, BTP_GATT_EV_NOTIFICATION,
|
||||
buf->om_data, buf->om_len);
|
||||
|
||||
fail:
|
||||
os_mbuf_free_chain(buf);
|
||||
|
||||
@@ -142,8 +142,8 @@ tester_mtu_exchanged_ev(uint16_t conn_handle,
|
||||
|
||||
ev->mtu = mtu;
|
||||
|
||||
tester_send_buf(BTP_SERVICE_ID_GATTC, BTP_GATTC_EV_MTU_EXCHANGED,
|
||||
CONTROLLER_INDEX, buf);
|
||||
tester_event(BTP_SERVICE_ID_GATTC, BTP_GATTC_EV_MTU_EXCHANGED,
|
||||
buf->om_data, buf->om_len);
|
||||
fail:
|
||||
os_mbuf_free_chain(buf);
|
||||
return 0;
|
||||
@@ -205,8 +205,8 @@ disc_prim_svcs_cb(uint16_t conn_handle,
|
||||
rp->status = err;
|
||||
if (error->status != 0 && error->status != BLE_HS_EDONE) {
|
||||
rp->services_count = 0;
|
||||
tester_send_buf(BTP_SERVICE_ID_GATTC, opcode,
|
||||
CONTROLLER_INDEX, buf);
|
||||
tester_event(BTP_SERVICE_ID_GATTC, opcode,
|
||||
buf->om_data, buf->om_len);
|
||||
discover_destroy();
|
||||
goto free;
|
||||
}
|
||||
@@ -215,8 +215,8 @@ disc_prim_svcs_cb(uint16_t conn_handle,
|
||||
rp->status = 0;
|
||||
rp->services_count = gatt_buf.cnt;
|
||||
os_mbuf_append(buf, gatt_buf.buf, gatt_buf.len);
|
||||
tester_send_buf(BTP_SERVICE_ID_GATTC, opcode,
|
||||
CONTROLLER_INDEX, buf);
|
||||
tester_event(BTP_SERVICE_ID_GATTC, opcode,
|
||||
buf->om_data, buf->om_len);
|
||||
discover_destroy();
|
||||
goto free;
|
||||
}
|
||||
@@ -339,8 +339,8 @@ find_included_cb(uint16_t conn_handle,
|
||||
SYS_LOG_DBG("");
|
||||
if (error->status != 0 && error->status != BLE_HS_EDONE) {
|
||||
rp->services_count = 0;
|
||||
tester_send_buf(BTP_SERVICE_ID_GATTC, BTP_GATTC_FIND_INCLUDED_RP,
|
||||
CONTROLLER_INDEX, buf);
|
||||
tester_event(BTP_SERVICE_ID_GATTC, BTP_GATTC_FIND_INCLUDED_RP,
|
||||
buf->om_data, buf->om_len);
|
||||
discover_destroy();
|
||||
goto free;
|
||||
}
|
||||
@@ -349,8 +349,8 @@ find_included_cb(uint16_t conn_handle,
|
||||
rp->status = 0;
|
||||
rp->services_count = gatt_buf.cnt;
|
||||
os_mbuf_append(buf, gatt_buf.buf, gatt_buf.len);
|
||||
tester_send_buf(BTP_SERVICE_ID_GATTC, BTP_GATTC_FIND_INCLUDED_RP,
|
||||
CONTROLLER_INDEX, buf);
|
||||
tester_event(BTP_SERVICE_ID_GATTC, BTP_GATTC_FIND_INCLUDED_RP,
|
||||
buf->om_data, buf->om_len);
|
||||
discover_destroy();
|
||||
goto free;
|
||||
}
|
||||
@@ -454,8 +454,8 @@ disc_chrc_cb(uint16_t conn_handle,
|
||||
|
||||
if (error->status != 0 && error->status != BLE_HS_EDONE) {
|
||||
rp->characteristics_count = 0;
|
||||
tester_send_buf(BTP_SERVICE_ID_GATTC, opcode,
|
||||
CONTROLLER_INDEX, buf);
|
||||
tester_event(BTP_SERVICE_ID_GATTC, opcode,
|
||||
buf->om_data, buf->om_len);
|
||||
discover_destroy();
|
||||
goto free;
|
||||
}
|
||||
@@ -464,8 +464,8 @@ disc_chrc_cb(uint16_t conn_handle,
|
||||
rp->status = 0;
|
||||
rp->characteristics_count = gatt_buf.cnt;
|
||||
os_mbuf_append(buf, gatt_buf.buf, gatt_buf.len);
|
||||
tester_send_buf(BTP_SERVICE_ID_GATTC, opcode,
|
||||
CONTROLLER_INDEX, buf);
|
||||
tester_event(BTP_SERVICE_ID_GATTC, opcode,
|
||||
buf->om_data, buf->om_len);
|
||||
discover_destroy();
|
||||
goto free;
|
||||
}
|
||||
@@ -602,8 +602,8 @@ disc_all_desc_cb(uint16_t conn_handle,
|
||||
|
||||
if (error->status != 0 && error->status != BLE_HS_EDONE) {
|
||||
rp->descriptors_count = 0;
|
||||
tester_send_buf(BTP_SERVICE_ID_GATTC, BTP_GATTC_DISC_ALL_DESC_RP,
|
||||
CONTROLLER_INDEX, buf);
|
||||
tester_event(BTP_SERVICE_ID_GATTC, BTP_GATTC_DISC_ALL_DESC_RP,
|
||||
buf->om_data, buf->om_len);
|
||||
discover_destroy();
|
||||
goto free;
|
||||
}
|
||||
@@ -612,8 +612,8 @@ disc_all_desc_cb(uint16_t conn_handle,
|
||||
rp->status = 0;
|
||||
rp->descriptors_count = gatt_buf.cnt;
|
||||
os_mbuf_append(buf, gatt_buf.buf, gatt_buf.len);
|
||||
tester_send_buf(BTP_SERVICE_ID_GATTC, BTP_GATTC_DISC_ALL_DESC_RP,
|
||||
CONTROLLER_INDEX, buf);
|
||||
tester_event(BTP_SERVICE_ID_GATTC, BTP_GATTC_DISC_ALL_DESC_RP,
|
||||
buf->om_data, buf->om_len);
|
||||
discover_destroy();
|
||||
goto free;
|
||||
}
|
||||
@@ -710,8 +710,8 @@ read_cb(uint16_t conn_handle,
|
||||
if (error->status != 0 && error->status != BLE_HS_EDONE) {
|
||||
rp->status = (uint8_t) BLE_HS_ATT_ERR(error->status);
|
||||
rp->data_length = 0;
|
||||
tester_send_buf(BTP_SERVICE_ID_GATTC, opcode,
|
||||
CONTROLLER_INDEX, buf);
|
||||
tester_event(BTP_SERVICE_ID_GATTC, opcode,
|
||||
buf->om_data, buf->om_len);
|
||||
read_destroy();
|
||||
goto free;
|
||||
}
|
||||
@@ -725,8 +725,8 @@ read_cb(uint16_t conn_handle,
|
||||
rp->status = 0;
|
||||
rp->data_length = attr->om->om_len;
|
||||
os_mbuf_appendfrom(buf, attr->om, 0, os_mbuf_len(attr->om));
|
||||
tester_send_buf(BTP_SERVICE_ID_GATTC, opcode,
|
||||
CONTROLLER_INDEX, buf);
|
||||
tester_event(BTP_SERVICE_ID_GATTC, opcode,
|
||||
buf->om_data, buf->om_len);
|
||||
read_destroy();
|
||||
free:
|
||||
os_mbuf_free_chain(buf);
|
||||
@@ -794,8 +794,8 @@ read_uuid_cb(uint16_t conn_handle,
|
||||
|
||||
if (error->status != 0 && error->status != BLE_HS_EDONE) {
|
||||
rp->data_length = 0;
|
||||
tester_send_buf(BTP_SERVICE_ID_GATTC, opcode,
|
||||
CONTROLLER_INDEX, buf);
|
||||
tester_event(BTP_SERVICE_ID_GATTC, opcode,
|
||||
buf->om_data, buf->om_len);
|
||||
read_destroy();
|
||||
goto free;
|
||||
}
|
||||
@@ -806,8 +806,8 @@ read_uuid_cb(uint16_t conn_handle,
|
||||
rp->status = 0;
|
||||
os_mbuf_append(buf, gatt_buf.buf, gatt_buf.len);
|
||||
|
||||
tester_send_buf(BTP_SERVICE_ID_GATTC, opcode,
|
||||
CONTROLLER_INDEX, buf);
|
||||
tester_event(BTP_SERVICE_ID_GATTC, opcode,
|
||||
buf->om_data, buf->om_len);
|
||||
read_destroy();
|
||||
goto free;
|
||||
}
|
||||
@@ -897,8 +897,8 @@ read_long_cb(uint16_t conn_handle,
|
||||
|
||||
if (error->status != 0 && error->status != BLE_HS_EDONE) {
|
||||
rp->data_length = 0;
|
||||
tester_send_buf(BTP_SERVICE_ID_GATTC, opcode,
|
||||
CONTROLLER_INDEX, buf);
|
||||
tester_event(BTP_SERVICE_ID_GATTC, opcode,
|
||||
buf->om_data, buf->om_len);
|
||||
read_destroy();
|
||||
goto free;
|
||||
}
|
||||
@@ -907,8 +907,8 @@ read_long_cb(uint16_t conn_handle,
|
||||
rp->status = 0;
|
||||
rp->data_length = gatt_buf.len;
|
||||
os_mbuf_append(buf, gatt_buf.buf, gatt_buf.len);
|
||||
tester_send_buf(BTP_SERVICE_ID_GATTC, opcode,
|
||||
CONTROLLER_INDEX, buf);
|
||||
tester_event(BTP_SERVICE_ID_GATTC, opcode,
|
||||
buf->om_data, buf->om_len);
|
||||
read_destroy();
|
||||
goto free;
|
||||
}
|
||||
@@ -1047,8 +1047,8 @@ write_cb(uint16_t conn_handle, const struct ble_gatt_error *error,
|
||||
memcpy(&rp->address, &conn.peer_ota_addr, sizeof(rp->address));
|
||||
|
||||
rp->status = err;
|
||||
tester_send_buf(BTP_SERVICE_ID_GATTC, opcode,
|
||||
CONTROLLER_INDEX, buf);
|
||||
tester_event(BTP_SERVICE_ID_GATTC, opcode,
|
||||
buf->om_data, buf->om_len);
|
||||
free:
|
||||
os_mbuf_free_chain(buf);
|
||||
return rc;
|
||||
@@ -1116,7 +1116,7 @@ write_long(const void *cmd, uint16_t cmd_len,
|
||||
om, write_cb,
|
||||
(void *) BTP_GATTC_WRITE_LONG_RP);
|
||||
if (!rc) {
|
||||
return BTP_STATUS_DELAY_REPLY;
|
||||
return BTP_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
fail:
|
||||
@@ -1154,8 +1154,8 @@ reliable_write_cb(uint16_t conn_handle,
|
||||
memcpy(&rp->address, &conn.peer_ota_addr, sizeof(rp->address));
|
||||
|
||||
rp->status = err;
|
||||
tester_send_buf(BTP_SERVICE_ID_GATTC, BTP_GATTC_RELIABLE_WRITE_RP,
|
||||
CONTROLLER_INDEX, buf);
|
||||
tester_event(BTP_SERVICE_ID_GATTC, BTP_GATTC_RELIABLE_WRITE_RP,
|
||||
buf->om_data, buf->om_len);
|
||||
free:
|
||||
os_mbuf_free_chain(buf);
|
||||
return rc;
|
||||
@@ -1232,8 +1232,8 @@ subscribe_cb(uint16_t conn_handle,
|
||||
memcpy(&rp->address, &conn.peer_ota_addr, sizeof(rp->address));
|
||||
|
||||
rp->status = err;
|
||||
tester_send_buf(BTP_SERVICE_ID_GATTC, opcode,
|
||||
CONTROLLER_INDEX, buf);
|
||||
tester_event(BTP_SERVICE_ID_GATTC, opcode,
|
||||
buf->om_data, buf->om_len);
|
||||
free:
|
||||
os_mbuf_free_chain(buf);
|
||||
return rc;
|
||||
@@ -1393,8 +1393,8 @@ tester_gattc_notify_rx_ev(uint16_t conn_handle, uint16_t attr_handle,
|
||||
ev->data_length = htole16(os_mbuf_len(om));
|
||||
os_mbuf_appendfrom(buf, om, 0, os_mbuf_len(om));
|
||||
|
||||
tester_send_buf(BTP_SERVICE_ID_GATTC, BTP_GATTC_EV_NOTIFICATION_RXED,
|
||||
CONTROLLER_INDEX, buf);
|
||||
tester_event(BTP_SERVICE_ID_GATTC, BTP_GATTC_EV_NOTIFICATION_RXED,
|
||||
buf->om_data, buf->om_len);
|
||||
|
||||
fail:
|
||||
os_mbuf_free_chain(buf);
|
||||
|
||||
@@ -134,8 +134,8 @@ recv_cb(uint16_t conn_handle, struct ble_l2cap_chan *chan,
|
||||
}
|
||||
os_mbuf_copydata(buf, 0, ev->data_length, ev->data);
|
||||
|
||||
tester_send(BTP_SERVICE_ID_L2CAP, BTP_L2CAP_EV_DATA_RECEIVED,
|
||||
recv_cb_buf, sizeof(*ev) + ev->data_length);
|
||||
tester_event(BTP_SERVICE_ID_L2CAP, BTP_L2CAP_EV_DATA_RECEIVED,
|
||||
recv_cb_buf, sizeof(*ev) + ev->data_length);
|
||||
|
||||
tester_l2cap_coc_recv(chan, buf);
|
||||
}
|
||||
@@ -174,8 +174,8 @@ reconfigured_ev(uint16_t conn_handle, struct ble_l2cap_chan *chan,
|
||||
ev.our_mtu = chan_info->our_coc_mtu;
|
||||
ev.our_mps = chan_info->our_l2cap_mtu;
|
||||
|
||||
tester_send(BTP_SERVICE_ID_L2CAP, BTP_L2CAP_EV_RECONFIGURED,
|
||||
(uint8_t *) &ev, sizeof(ev));
|
||||
tester_event(BTP_SERVICE_ID_L2CAP, BTP_L2CAP_EV_RECONFIGURED,
|
||||
(uint8_t *) &ev, sizeof(ev));
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -203,8 +203,8 @@ connected_cb(uint16_t conn_handle, struct ble_l2cap_chan *chan,
|
||||
memcpy(&ev.address, &desc.peer_ota_addr, sizeof(ev.address));
|
||||
}
|
||||
|
||||
tester_send(BTP_SERVICE_ID_L2CAP, BTP_L2CAP_EV_CONNECTED,
|
||||
(uint8_t *) &ev, sizeof(ev));
|
||||
tester_event(BTP_SERVICE_ID_L2CAP, BTP_L2CAP_EV_CONNECTED,
|
||||
(uint8_t *) &ev, sizeof(ev));
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -229,8 +229,8 @@ disconnected_cb(uint16_t conn_handle, struct ble_l2cap_chan *chan,
|
||||
memcpy(&ev.address, &desc.peer_ota_addr, sizeof(ev.address));
|
||||
}
|
||||
|
||||
tester_send(BTP_SERVICE_ID_L2CAP, BTP_L2CAP_EV_DISCONNECTED,
|
||||
(uint8_t *) &ev, sizeof(ev));
|
||||
tester_event(BTP_SERVICE_ID_L2CAP, BTP_L2CAP_EV_DISCONNECTED,
|
||||
(uint8_t *) &ev, sizeof(ev));
|
||||
}
|
||||
|
||||
static int
|
||||
|
||||
@@ -281,8 +281,8 @@ link_open(bt_mesh_prov_bearer_t bearer)
|
||||
return;
|
||||
}
|
||||
|
||||
tester_send(BTP_SERVICE_ID_MESH, BTP_MESH_EV_PROV_LINK_OPEN,
|
||||
(uint8_t *) &ev, sizeof(ev));
|
||||
tester_event(BTP_SERVICE_ID_MESH, BTP_MESH_EV_PROV_LINK_OPEN,
|
||||
(uint8_t *) &ev, sizeof(ev));
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -305,8 +305,8 @@ link_close(bt_mesh_prov_bearer_t bearer)
|
||||
return;
|
||||
}
|
||||
|
||||
tester_send(BTP_SERVICE_ID_MESH, BTP_MESH_EV_PROV_LINK_CLOSED,
|
||||
(uint8_t *) &ev, sizeof(ev));
|
||||
tester_event(BTP_SERVICE_ID_MESH, BTP_MESH_EV_PROV_LINK_CLOSED,
|
||||
(uint8_t *) &ev, sizeof(ev));
|
||||
}
|
||||
|
||||
static int
|
||||
@@ -319,8 +319,8 @@ output_number(bt_mesh_output_action_t action, uint32_t number)
|
||||
ev.action = htole16(action);
|
||||
ev.number = htole32(number);
|
||||
|
||||
tester_send(BTP_SERVICE_ID_MESH, BTP_MESH_EV_OUT_NUMBER_ACTION,
|
||||
(uint8_t *) &ev, sizeof(ev));
|
||||
tester_event(BTP_SERVICE_ID_MESH, BTP_MESH_EV_OUT_NUMBER_ACTION,
|
||||
(uint8_t *) &ev, sizeof(ev));
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -359,8 +359,8 @@ input(bt_mesh_input_action_t action, uint8_t size)
|
||||
ev.action = htole16(action);
|
||||
ev.size = size;
|
||||
|
||||
tester_send(BTP_SERVICE_ID_MESH, BTP_MESH_EV_IN_ACTION,
|
||||
(uint8_t *) &ev, sizeof(ev));
|
||||
tester_event(BTP_SERVICE_ID_MESH, BTP_MESH_EV_IN_ACTION,
|
||||
(uint8_t *) &ev, sizeof(ev));
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -377,8 +377,8 @@ prov_complete(uint16_t net_idx, uint16_t addr)
|
||||
net.local = addr;
|
||||
net.dst = addr;
|
||||
|
||||
tester_send(BTP_SERVICE_ID_MESH, BTP_MESH_EV_PROVISIONED,
|
||||
NULL, 0);
|
||||
tester_event(BTP_SERVICE_ID_MESH, BTP_MESH_EV_PROVISIONED,
|
||||
NULL, 0);
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -1014,15 +1014,15 @@ invalid_bearer_cb(uint8_t opcode)
|
||||
|
||||
SYS_LOG_DBG("opcode 0x%02x", opcode);
|
||||
|
||||
tester_send(BTP_SERVICE_ID_MESH, BTP_MESH_EV_INVALID_BEARER,
|
||||
(uint8_t *) &ev, sizeof(ev));
|
||||
tester_event(BTP_SERVICE_ID_MESH, BTP_MESH_EV_INVALID_BEARER,
|
||||
(uint8_t *) &ev, sizeof(ev));
|
||||
}
|
||||
|
||||
static void
|
||||
incomp_timer_exp_cb(void)
|
||||
{
|
||||
tester_send(BTP_SERVICE_ID_MESH, BTP_MESH_EV_INCOMP_TIMER_EXP,
|
||||
NULL, 0);
|
||||
tester_event(BTP_SERVICE_ID_MESH, BTP_MESH_EV_INCOMP_TIMER_EXP,
|
||||
NULL, 0);
|
||||
}
|
||||
|
||||
static struct bt_test_cb bt_test_cb = {
|
||||
@@ -1046,8 +1046,8 @@ lpn_established(uint16_t friend_addr)
|
||||
"Friend 0x%04x Queue Size %d Receive Window %d",
|
||||
friend_addr, lpn->queue_size, lpn->recv_win);
|
||||
|
||||
tester_send(BTP_SERVICE_ID_MESH, BTP_MESH_EV_LPN_ESTABLISHED,
|
||||
(uint8_t *) &ev, sizeof(ev));
|
||||
tester_event(BTP_SERVICE_ID_MESH, BTP_MESH_EV_LPN_ESTABLISHED,
|
||||
(uint8_t *) &ev, sizeof(ev));
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -1059,8 +1059,8 @@ lpn_terminated(uint16_t friend_addr)
|
||||
SYS_LOG_DBG("Friendship (as LPN) lost with Friend "
|
||||
"0x%04x", friend_addr);
|
||||
|
||||
tester_send(BTP_SERVICE_ID_MESH, BTP_MESH_EV_LPN_TERMINATED,
|
||||
(uint8_t *) &ev, sizeof(ev));
|
||||
tester_event(BTP_SERVICE_ID_MESH, BTP_MESH_EV_LPN_TERMINATED,
|
||||
(uint8_t *) &ev, sizeof(ev));
|
||||
}
|
||||
|
||||
void
|
||||
|
||||
@@ -68,7 +68,7 @@ tester_mbuf_reset(struct os_mbuf *buf)
|
||||
|
||||
static void
|
||||
tester_send_with_index(uint8_t service, uint8_t opcode, uint8_t index,
|
||||
uint8_t *data, size_t len);
|
||||
const uint8_t *data, size_t len);
|
||||
static void
|
||||
tester_rsp_with_index(uint8_t service, uint8_t opcode, uint8_t index,
|
||||
uint8_t status);
|
||||
@@ -274,7 +274,7 @@ tester_init(void)
|
||||
|
||||
static void
|
||||
tester_send_with_index(uint8_t service, uint8_t opcode, uint8_t index,
|
||||
uint8_t *data, size_t len)
|
||||
const uint8_t *data, size_t len)
|
||||
{
|
||||
struct btp_hdr msg;
|
||||
|
||||
@@ -331,23 +331,29 @@ tester_rsp_with_index(uint8_t service, uint8_t opcode, uint8_t index,
|
||||
}
|
||||
|
||||
void
|
||||
tester_send(uint8_t service, uint8_t opcode, uint8_t *data, size_t len)
|
||||
tester_event(uint8_t service, uint8_t opcode, const void *data, size_t len)
|
||||
{
|
||||
assert(opcode >= 0x80);
|
||||
tester_send_with_index(service, opcode, BTP_INDEX, data, len);
|
||||
}
|
||||
|
||||
/* async response to command */
|
||||
if (opcode < 0x80) {
|
||||
struct btp_buf *cmd;
|
||||
void
|
||||
tester_rsp_full(uint8_t service, uint8_t opcode, const void *rsp, size_t len)
|
||||
{
|
||||
struct btp_buf *cmd;
|
||||
|
||||
assert(delayed_cmd != NULL);
|
||||
assert(opcode < 0x80);
|
||||
assert(delayed_cmd != NULL);
|
||||
|
||||
cmd = delayed_cmd;
|
||||
delayed_cmd = NULL;
|
||||
tester_send_with_index(service, opcode, BTP_INDEX, rsp, len);
|
||||
|
||||
(void)memset(cmd, 0, sizeof(*cmd));
|
||||
os_eventq_put(&avail_queue,
|
||||
CONTAINER_OF(cmd, struct btp_buf, data)->ev);
|
||||
}
|
||||
cmd = delayed_cmd;
|
||||
delayed_cmd = NULL;
|
||||
|
||||
(void)memset(cmd, 0, sizeof(*cmd));
|
||||
|
||||
os_eventq_put(&avail_queue,
|
||||
CONTAINER_OF(cmd, struct btp_buf, data)->ev);
|
||||
}
|
||||
|
||||
void
|
||||
@@ -355,10 +361,11 @@ tester_rsp(uint8_t service, uint8_t opcode, uint8_t status)
|
||||
{
|
||||
struct btp_buf *cmd;
|
||||
|
||||
tester_rsp_with_index(service, opcode, BTP_INDEX, status);
|
||||
|
||||
assert(opcode < 0x80);
|
||||
assert(delayed_cmd != NULL);
|
||||
|
||||
tester_rsp_with_index(service, opcode, BTP_INDEX, status);
|
||||
|
||||
cmd = delayed_cmd;
|
||||
delayed_cmd = NULL;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user