static int ble_att_clt_build_read_req(struct ble_att_read_req *req, struct os_mbuf **out_txom) { struct os_mbuf *txom; int rc; txom = NULL; rc = ble_att_clt_init_req(BLE_ATT_READ_REQ_SZ, &txom); if (rc != 0) { goto done; } ble_att_read_req_write(txom->om_data, txom->om_len, req); done: if (rc != 0) { os_mbuf_free_chain(txom); txom = NULL; } *out_txom = txom; return rc; }
static void ble_gatts_read_test_once(uint16_t conn_handle, uint16_t attr_id, void *expected_value, uint16_t expected_len) { struct ble_att_read_req read_req; uint8_t buf[BLE_ATT_READ_REQ_SZ]; int rc; read_req.barq_handle = attr_id; ble_att_read_req_write(buf, sizeof buf, &read_req); rc = ble_hs_test_util_l2cap_rx_payload_flat(conn_handle, BLE_L2CAP_CID_ATT, buf, sizeof buf); TEST_ASSERT(rc == 0); ble_hs_test_util_verify_tx_read_rsp(expected_value, expected_len); }