1 /* btp_ascs.h - Bluetooth tester headers */
2 
3 /*
4  * Copyright (c) 2023 Codecoup
5  *
6  * SPDX-License-Identifier: Apache-2.0
7  */
8 #include <stdint.h>
9 
10 #include <zephyr/bluetooth/addr.h>
11 
12 /* ASCS commands */
13 #define BTP_ASCS_READ_SUPPORTED_COMMANDS	0x01
14 struct btp_ascs_read_supported_commands_rp {
15 	uint8_t data[0];
16 } __packed;
17 
18 #define BTP_ASCS_CONFIGURE_CODEC	0x02
19 struct btp_ascs_configure_codec_cmd {
20 	bt_addr_le_t address;
21 	uint8_t ase_id;
22 	uint8_t coding_format;
23 	uint16_t vid;
24 	uint16_t cid;
25 	uint8_t cc_ltvs_len;
26 	uint8_t cc_ltvs[0];
27 } __packed;
28 
29 #define BTP_ASCS_CONFIGURE_QOS	0x03
30 struct btp_ascs_configure_qos_cmd {
31 	bt_addr_le_t address;
32 	uint8_t ase_id;
33 	uint8_t cig_id;
34 	uint8_t cis_id;
35 	uint8_t sdu_interval[3];
36 	uint8_t framing;
37 	uint16_t max_sdu;
38 	uint8_t retransmission_num;
39 	uint16_t max_transport_latency;
40 	uint8_t presentation_delay[3];
41 } __packed;
42 
43 #define BTP_ASCS_ENABLE	0x04
44 struct btp_ascs_enable_cmd {
45 	bt_addr_le_t address;
46 	uint8_t ase_id;
47 } __packed;
48 
49 #define BTP_ASCS_RECEIVER_START_READY	0x05
50 struct btp_ascs_receiver_start_ready_cmd {
51 	bt_addr_le_t address;
52 	uint8_t ase_id;
53 } __packed;
54 
55 #define BTP_ASCS_RECEIVER_STOP_READY	0x06
56 struct btp_ascs_receiver_stop_ready_cmd {
57 	bt_addr_le_t address;
58 	uint8_t ase_id;
59 } __packed;
60 
61 #define BTP_ASCS_DISABLE	0x07
62 struct btp_ascs_disable_cmd {
63 	bt_addr_le_t address;
64 	uint8_t ase_id;
65 } __packed;
66 
67 #define BTP_ASCS_RELEASE	0x08
68 struct btp_ascs_release_cmd {
69 	bt_addr_le_t address;
70 	uint8_t ase_id;
71 } __packed;
72 
73 #define BTP_ASCS_UPDATE_METADATA	0x09
74 struct btp_ascs_update_metadata_cmd {
75 	bt_addr_le_t address;
76 	uint8_t ase_id;
77 } __packed;
78 
79 #define BTP_ASCS_ADD_ASE_TO_CIS		0x0a
80 struct btp_ascs_add_ase_to_cis {
81 	bt_addr_le_t address;
82 	uint8_t ase_id;
83 	uint8_t cig_id;
84 	uint8_t cis_id;
85 } __packed;
86 
87 #define BTP_ASCS_PRECONFIGURE_QOS	0x0b
88 struct btp_ascs_preconfigure_qos_cmd {
89 	uint8_t cig_id;
90 	uint8_t cis_id;
91 	uint8_t sdu_interval[3];
92 	uint8_t framing;
93 	uint16_t max_sdu;
94 	uint8_t retransmission_num;
95 	uint16_t max_transport_latency;
96 	uint8_t presentation_delay[3];
97 } __packed;
98 
99 /* ASCS events */
100 #define BTP_ASCS_EV_OPERATION_COMPLETED	0x80
101 struct btp_ascs_operation_completed_ev {
102 	bt_addr_le_t address;
103 	uint8_t ase_id;
104 	uint8_t opcode;
105 	uint8_t status;
106 
107 	/* RFU */
108 	uint8_t flags;
109 } __packed;
110 
111 #define BTP_ASCS_EV_CHARACTERISTIC_SUBSCRIBED 0x81
112 
113 #define BTP_ASCS_EV_ASE_STATE_CHANGED	0x82
114 struct btp_ascs_ase_state_changed_ev {
115 	bt_addr_le_t address;
116 	uint8_t ase_id;
117 	uint8_t state;
118 } __packed;
119 
120 #define BTP_ASCS_STATUS_SUCCESS	0x00
121 #define BTP_ASCS_STATUS_FAILED	0x01
122