static int ble_hs_test_util_phony_ack_cb(uint8_t *ack, int ack_buf_len) { struct ble_hs_test_util_phony_ack *entry; if (ble_hs_test_util_num_phony_acks == 0) { return BLE_HS_ETIMEOUT; } entry = ble_hs_test_util_phony_acks; ble_hs_test_util_build_cmd_complete(ack, 256, entry->evt_params_len + 1, 1, entry->opcode); ack[BLE_HCI_EVENT_CMD_COMPLETE_HDR_LEN] = entry->status; memcpy(ack + BLE_HCI_EVENT_CMD_COMPLETE_HDR_LEN + 1, entry->evt_params, entry->evt_params_len); ble_hs_test_util_num_phony_acks--; if (ble_hs_test_util_num_phony_acks > 0) { memmove(ble_hs_test_util_phony_acks, ble_hs_test_util_phony_acks + 1, sizeof *entry * ble_hs_test_util_num_phony_acks); } return 0; }
void ble_hs_test_util_rx_ack_param(uint16_t opcode, uint8_t status, void *param, int param_len) { uint8_t buf[256]; int rc; ble_hs_test_util_build_cmd_complete(buf, sizeof buf, param_len + 1, 1, opcode); buf[BLE_HCI_EVENT_CMD_COMPLETE_HDR_LEN] = status; memcpy(buf + BLE_HCI_EVENT_CMD_COMPLETE_HDR_LEN + 1, param, param_len); rc = host_hci_event_rx(buf); TEST_ASSERT(rc == 0); }
void ble_hs_test_util_rx_hci_buf_size_ack(uint16_t buf_size) { uint8_t buf[BLE_HCI_EVENT_CMD_COMPLETE_HDR_LEN + BLE_HCI_RD_BUF_SIZE_RSPLEN + 1]; int rc; ble_hs_test_util_build_cmd_complete(buf, sizeof buf, BLE_HCI_RD_BUF_SIZE_RSPLEN + 1, 1, (BLE_HCI_OGF_LE << 10) | BLE_HCI_OCF_LE_RD_BUF_SIZE); buf[BLE_HCI_EVENT_CMD_COMPLETE_HDR_LEN + 0] = 0; htole16(buf + BLE_HCI_EVENT_CMD_COMPLETE_HDR_LEN + 1, buf_size); buf[BLE_HCI_EVENT_CMD_COMPLETE_HDR_LEN + 3] = 1; rc = host_hci_event_rx(buf); TEST_ASSERT(rc == 0); }