/* btp_cap.h - Bluetooth tester headers */

/*
 * Copyright (c) 2023 Codecoup
 *
 * SPDX-License-Identifier: Apache-2.0
 */

/* CAP commands */
#define BTP_CAP_READ_SUPPORTED_COMMANDS		0x01
struct btp_cap_read_supported_commands_rp {
	uint8_t data[0];
} __packed;

#define BTP_CAP_DISCOVER			0x02
struct btp_cap_discover_cmd {
	bt_addr_le_t address;
} __packed;

#define BTP_CAP_UNICAST_SETUP_ASE		0x03
struct btp_cap_unicast_setup_ase_cmd {
	bt_addr_le_t address;
	uint8_t ase_id;
	uint8_t cis_id;
	uint8_t cig_id;
	uint8_t coding_format;
	uint16_t vid;
	uint16_t cid;
	uint8_t sdu_interval[3];
	uint8_t framing;
	uint16_t max_sdu;
	uint8_t retransmission_num;
	uint16_t max_transport_latency;
	uint8_t presentation_delay[3];
	uint8_t cc_ltvs_len;
	uint8_t metadata_ltvs_len;
	uint8_t ltvs[0];
} __packed;

#define BTP_CAP_UNICAST_AUDIO_START		0x04
struct btp_cap_unicast_audio_start_cmd {
	uint8_t cig_id;
	uint8_t set_type;
} __packed;
#define BTP_CAP_UNICAST_AUDIO_START_SET_TYPE_AD_HOC	0x00
#define BTP_CAP_UNICAST_AUDIO_START_SET_TYPE_CSIP	0x01

#define BTP_CAP_UNICAST_AUDIO_UPDATE		0x05
struct btp_cap_unicast_audio_update_cmd {
	uint8_t stream_count;
	uint8_t update_data[0];
} __packed;
struct btp_cap_unicast_audio_update_data {
	bt_addr_le_t address;
	uint8_t ase_id;
	uint8_t metadata_ltvs_len;
	uint8_t metadata_ltvs[0];
} __packed;

#define BTP_CAP_UNICAST_AUDIO_STOP		0x06
struct btp_cap_unicast_audio_stop_cmd {
	uint8_t cig_id;
} __packed;

#define BTP_CAP_BROADCAST_SOURCE_SETUP_STREAM	0x07
struct btp_cap_broadcast_source_setup_stream_cmd {
	uint8_t source_id;
	uint8_t subgroup_id;
	uint8_t coding_format;
	uint16_t vid;
	uint16_t cid;
	uint8_t cc_ltvs_len;
	uint8_t metadata_ltvs_len;
	uint8_t ltvs[0];
} __packed;

#define BTP_CAP_BROADCAST_SOURCE_SETUP_SUBGROUP	0x08
struct btp_cap_broadcast_source_setup_subgroup_cmd {
	uint8_t source_id;
	uint8_t subgroup_id;
	uint8_t coding_format;
	uint16_t vid;
	uint16_t cid;
	uint8_t cc_ltvs_len;
	uint8_t metadata_ltvs_len;
	uint8_t ltvs[0];
} __packed;

#define BTP_CAP_BROADCAST_SOURCE_SETUP		0x09
struct btp_cap_broadcast_source_setup_cmd {
	uint8_t source_id;
	uint8_t broadcast_id[3];
	uint8_t sdu_interval[3];
	uint8_t framing;
	uint16_t max_sdu;
	uint8_t retransmission_num;
	uint16_t max_transport_latency;
	uint8_t presentation_delay[3];
	uint8_t flags;
	uint8_t broadcast_code[BT_AUDIO_BROADCAST_CODE_SIZE];
} __packed;
struct btp_cap_broadcast_source_setup_rp {
	uint8_t source_id;
	uint32_t gap_settings;
	uint8_t broadcast_id[BT_AUDIO_BROADCAST_ID_SIZE];
} __packed;
#define BTP_CAP_BROADCAST_SOURCE_SETUP_FLAG_ENCRYPTION		BIT(0)
#define BTP_CAP_BROADCAST_SOURCE_SETUP_FLAG_SUBGROUP_CODEC	BIT(1)

#define BTP_CAP_BROADCAST_SOURCE_RELEASE	0x0a
struct btp_cap_broadcast_source_release_cmd {
	uint8_t source_id;
} __packed;

#define BTP_CAP_BROADCAST_ADV_START		0x0b
struct btp_cap_broadcast_adv_start_cmd {
	uint8_t source_id;
} __packed;

#define BTP_CAP_BROADCAST_ADV_STOP		0x0c
struct btp_cap_broadcast_adv_stop_cmd {
	uint8_t source_id;
} __packed;

#define BTP_CAP_BROADCAST_SOURCE_START		0x0d
struct btp_cap_broadcast_source_start_cmd {
	uint8_t source_id;
} __packed;

#define BTP_CAP_BROADCAST_SOURCE_STOP		0x0e
struct btp_cap_broadcast_source_stop_cmd {
	uint8_t source_id;
} __packed;

#define BTP_CAP_BROADCAST_SOURCE_UPDATE		0x0f
struct btp_cap_broadcast_source_update_cmd {
	uint8_t source_id;
	uint8_t metadata_ltvs_len;
	uint8_t metadata_ltvs[0];
} __packed;

/* CAP events */
#define BTP_CAP_EV_DISCOVERY_COMPLETED		0x80
struct btp_cap_discovery_completed_ev {
	bt_addr_le_t address;
	uint8_t status;
} __packed;
#define BTP_CAP_DISCOVERY_STATUS_SUCCESS	0x00
#define BTP_CAP_DISCOVERY_STATUS_FAILED		0x01

#define BTP_CAP_EV_UNICAST_START_COMPLETED	0x81
struct btp_cap_unicast_start_completed_ev {
	uint8_t cig_id;
	uint8_t status;
} __packed;
#define BTP_CAP_UNICAST_START_STATUS_SUCCESS	0x00
#define BTP_CAP_UNICAST_START_STATUS_FAILED	0x01

#define BTP_CAP_EV_UNICAST_STOP_COMPLETED	0x82
struct btp_cap_unicast_stop_completed_ev {
	uint8_t cig_id;
	uint8_t status;
} __packed;
#define BTP_CAP_UNICAST_STOP_STATUS_SUCCESS	0x00
#define BTP_CAP_UNICAST_STOP_STATUS_FAILED	0x01
