blob: bce0e10ed974eac47cf5b65b57a1555f74f5251d [file] [log] [blame]
/* bttester.h - Bluetooth tester headers */
/*
* Copyright (c) 2015-2016 Intel Corporation
* Copyright (c) 2022 Codecoup
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <zephyr/types.h>
#include <zephyr/sys/util.h>
#include <zephyr/bluetooth/addr.h>
#include <sys/types.h>
static inline void tester_set_bit(uint8_t *addr, unsigned int bit)
{
uint8_t *p = addr + (bit / 8U);
*p |= BIT(bit % 8);
}
static inline uint8_t tester_test_bit(const uint8_t *addr, unsigned int bit)
{
const uint8_t *p = addr + (bit / 8U);
return *p & BIT(bit % 8);
}
void tester_init(void);
void tester_rsp(uint8_t service, uint8_t opcode, uint8_t status);
void 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);
int tester_rsp_buffer_lock(void);
void tester_rsp_buffer_unlock(void);
void tester_rsp_buffer_free(void);
void tester_rsp_buffer_allocate(size_t len, uint8_t **data);
/* Used to indicate that command length is variable and that validation will
* be done in handler.
*/
#define BTP_HANDLER_LENGTH_VARIABLE (-1)
struct btp_handler {
uint8_t opcode;
uint8_t index;
ssize_t expect_len;
uint8_t (*func)(const void *cmd, uint16_t cmd_len,
void *rsp, uint16_t *rsp_len);
};
void tester_register_command_handlers(uint8_t service,
const struct btp_handler *handlers,
size_t num);
uint8_t tester_init_gatt(void);
uint8_t tester_unregister_gatt(void);
uint8_t tester_init_l2cap(void);
uint8_t tester_unregister_l2cap(void);
uint8_t tester_init_mesh(void);
uint8_t tester_unregister_mesh(void);
uint8_t tester_init_vcp(void);
uint8_t tester_unregister_vcp(void);
uint8_t tester_init_vcs(void);
uint8_t tester_unregister_vcs(void);
uint8_t tester_init_aics(void);
uint8_t tester_unregister_aics(void);
uint8_t tester_init_vocs(void);
uint8_t tester_unregister_vocs(void);
uint8_t tester_init_ias(void);
uint8_t tester_unregister_ias(void);
uint8_t tester_init_mmdl(void);
uint8_t tester_unregister_mmdl(void);
uint8_t tester_init_gap(void);
uint8_t tester_unregister_gap(void);
void tester_init_core(void);
uint8_t tester_init_pacs(void);
uint8_t tester_unregister_pacs(void);
uint8_t tester_init_ascs(void);
uint8_t tester_unregister_ascs(void);
uint8_t tester_init_bap(void);
uint8_t tester_unregister_bap(void);
uint8_t tester_init_has(void);
uint8_t tester_unregister_has(void);
uint8_t tester_init_csis(void);
uint8_t tester_unregister_csis(void);
uint8_t tester_init_csip(void);
uint8_t tester_unregister_csip(void);
uint8_t tester_init_micp(void);
uint8_t tester_unregister_micp(void);
uint8_t tester_init_mics(void);
uint8_t tester_unregister_mics(void);
uint8_t tester_init_ccp(void);
uint8_t tester_unregister_ccp(void);
uint8_t tester_init_vcp(void);
uint8_t tester_unregister_vcp(void);
uint8_t tester_init_cas(void);
uint8_t tester_unregister_cas(void);
uint8_t tester_init_cap(void);
uint8_t tester_unregister_cap(void);
uint8_t tester_init_mcp(void);
uint8_t tester_unregister_mcp(void);
uint8_t tester_init_mcs(void);
uint8_t tester_unregister_mcs(void);
uint8_t tester_init_hap(void);
uint8_t tester_unregister_hap(void);