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;
 

Reply via email to