This is an automated email from the ASF dual-hosted git repository. janc pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/mynewt-nimble.git
commit 6871cec5f6bdbabdd326cf4e2d1962ec032e056e Author: Krzysztof Kopyściński <[email protected]> AuthorDate: Thu Jul 13 10:04:56 2023 +0200 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. --- apps/bttester/src/btp/bttester.h | 4 ++- apps/bttester/src/btp_gap.c | 61 +++++++++++++++---------------- apps/bttester/src/btp_gatt.c | 47 ++++++++++++------------ apps/bttester/src/btp_gatt_cl.c | 78 ++++++++++++++++++++-------------------- apps/bttester/src/btp_l2cap.c | 16 ++++----- apps/bttester/src/btp_mesh.c | 36 +++++++++---------- apps/bttester/src/bttester.c | 37 +++++++++++-------- 7 files changed, 143 insertions(+), 136 deletions(-) diff --git a/apps/bttester/src/btp/bttester.h b/apps/bttester/src/btp/bttester.h index c986a7e97..120e623db 100644 --- a/apps/bttester/src/btp/bttester.h +++ b/apps/bttester/src/btp/bttester.h @@ -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; diff --git a/apps/bttester/src/btp_gap.c b/apps/bttester/src/btp_gap.c index 946bda75e..30c36e229 100644 --- a/apps/bttester/src/btp_gap.c +++ b/apps/bttester/src/btp_gap.c @@ -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 diff --git a/apps/bttester/src/btp_gatt.c b/apps/bttester/src/btp_gatt.c index 09bd8d723..b77919466 100644 --- a/apps/bttester/src/btp_gatt.c +++ b/apps/bttester/src/btp_gatt.c @@ -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); diff --git a/apps/bttester/src/btp_gatt_cl.c b/apps/bttester/src/btp_gatt_cl.c index 501c46030..63f657562 100644 --- a/apps/bttester/src/btp_gatt_cl.c +++ b/apps/bttester/src/btp_gatt_cl.c @@ -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); diff --git a/apps/bttester/src/btp_l2cap.c b/apps/bttester/src/btp_l2cap.c index aa6e158d3..f8450760b 100644 --- a/apps/bttester/src/btp_l2cap.c +++ b/apps/bttester/src/btp_l2cap.c @@ -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 diff --git a/apps/bttester/src/btp_mesh.c b/apps/bttester/src/btp_mesh.c index 3b9054a81..8d557e2af 100644 --- a/apps/bttester/src/btp_mesh.c +++ b/apps/bttester/src/btp_mesh.c @@ -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 diff --git a/apps/bttester/src/bttester.c b/apps/bttester/src/bttester.c index b07661d78..d5e0399a4 100644 --- a/apps/bttester/src/bttester.c +++ b/apps/bttester/src/bttester.c @@ -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;
