1 /* btp_cap.h - Bluetooth tester headers */ 2 3 /* 4 * Copyright (c) 2023 Codecoup 5 * 6 * SPDX-License-Identifier: Apache-2.0 7 */ 8 9 #include <stdint.h> 10 11 #include <zephyr/bluetooth/addr.h> 12 #include <zephyr/bluetooth/audio/audio.h> 13 #include <zephyr/bluetooth/iso.h> 14 #include <zephyr/sys/util_macro.h> 15 16 /* CAP commands */ 17 #define BTP_CAP_READ_SUPPORTED_COMMANDS 0x01 18 struct btp_cap_read_supported_commands_rp { 19 uint8_t data[0]; 20 } __packed; 21 22 #define BTP_CAP_DISCOVER 0x02 23 struct btp_cap_discover_cmd { 24 bt_addr_le_t address; 25 } __packed; 26 27 #define BTP_CAP_UNICAST_SETUP_ASE 0x03 28 struct btp_cap_unicast_setup_ase_cmd { 29 bt_addr_le_t address; 30 uint8_t ase_id; 31 uint8_t cis_id; 32 uint8_t cig_id; 33 uint8_t coding_format; 34 uint16_t vid; 35 uint16_t cid; 36 uint8_t sdu_interval[3]; 37 uint8_t framing; 38 uint16_t max_sdu; 39 uint8_t retransmission_num; 40 uint16_t max_transport_latency; 41 uint8_t presentation_delay[3]; 42 uint8_t cc_ltvs_len; 43 uint8_t metadata_ltvs_len; 44 uint8_t ltvs[0]; 45 } __packed; 46 47 #define BTP_CAP_UNICAST_AUDIO_START 0x04 48 struct btp_cap_unicast_audio_start_cmd { 49 uint8_t cig_id; 50 uint8_t set_type; 51 } __packed; 52 #define BTP_CAP_UNICAST_AUDIO_START_SET_TYPE_AD_HOC 0x00 53 #define BTP_CAP_UNICAST_AUDIO_START_SET_TYPE_CSIP 0x01 54 55 #define BTP_CAP_UNICAST_AUDIO_UPDATE 0x05 56 struct btp_cap_unicast_audio_update_cmd { 57 uint8_t stream_count; 58 uint8_t update_data[0]; 59 } __packed; 60 struct btp_cap_unicast_audio_update_data { 61 bt_addr_le_t address; 62 uint8_t ase_id; 63 uint8_t metadata_ltvs_len; 64 uint8_t metadata_ltvs[0]; 65 } __packed; 66 67 #define BTP_CAP_UNICAST_AUDIO_STOP 0x06 68 struct btp_cap_unicast_audio_stop_cmd { 69 uint8_t cig_id; 70 uint8_t flags; 71 } __packed; 72 #define BTP_CAP_UNICAST_AUDIO_STOP_FLAG_RELEASE BIT(0) 73 74 #define BTP_CAP_BROADCAST_SOURCE_SETUP_STREAM 0x07 75 struct btp_cap_broadcast_source_setup_stream_cmd { 76 uint8_t source_id; 77 uint8_t subgroup_id; 78 uint8_t coding_format; 79 uint16_t vid; 80 uint16_t cid; 81 uint8_t cc_ltvs_len; 82 uint8_t metadata_ltvs_len; 83 uint8_t ltvs[0]; 84 } __packed; 85 86 #define BTP_CAP_BROADCAST_SOURCE_SETUP_SUBGROUP 0x08 87 struct btp_cap_broadcast_source_setup_subgroup_cmd { 88 uint8_t source_id; 89 uint8_t subgroup_id; 90 uint8_t coding_format; 91 uint16_t vid; 92 uint16_t cid; 93 uint8_t cc_ltvs_len; 94 uint8_t metadata_ltvs_len; 95 uint8_t ltvs[0]; 96 } __packed; 97 98 #define BTP_CAP_BROADCAST_SOURCE_SETUP 0x09 99 struct btp_cap_broadcast_source_setup_cmd { 100 uint8_t source_id; 101 uint8_t broadcast_id[3]; 102 uint8_t sdu_interval[3]; 103 uint8_t framing; 104 uint16_t max_sdu; 105 uint8_t retransmission_num; 106 uint16_t max_transport_latency; 107 uint8_t presentation_delay[3]; 108 uint8_t flags; 109 uint8_t broadcast_code[BT_ISO_BROADCAST_CODE_SIZE]; 110 } __packed; 111 struct btp_cap_broadcast_source_setup_rp { 112 uint8_t source_id; 113 uint32_t gap_settings; 114 uint8_t broadcast_id[BT_AUDIO_BROADCAST_ID_SIZE]; 115 } __packed; 116 #define BTP_CAP_BROADCAST_SOURCE_SETUP_FLAG_ENCRYPTION BIT(0) 117 #define BTP_CAP_BROADCAST_SOURCE_SETUP_FLAG_SUBGROUP_CODEC BIT(1) 118 119 #define BTP_CAP_BROADCAST_SOURCE_RELEASE 0x0a 120 struct btp_cap_broadcast_source_release_cmd { 121 uint8_t source_id; 122 } __packed; 123 124 #define BTP_CAP_BROADCAST_ADV_START 0x0b 125 struct btp_cap_broadcast_adv_start_cmd { 126 uint8_t source_id; 127 } __packed; 128 129 #define BTP_CAP_BROADCAST_ADV_STOP 0x0c 130 struct btp_cap_broadcast_adv_stop_cmd { 131 uint8_t source_id; 132 } __packed; 133 134 #define BTP_CAP_BROADCAST_SOURCE_START 0x0d 135 struct btp_cap_broadcast_source_start_cmd { 136 uint8_t source_id; 137 } __packed; 138 139 #define BTP_CAP_BROADCAST_SOURCE_STOP 0x0e 140 struct btp_cap_broadcast_source_stop_cmd { 141 uint8_t source_id; 142 } __packed; 143 144 #define BTP_CAP_BROADCAST_SOURCE_UPDATE 0x0f 145 struct btp_cap_broadcast_source_update_cmd { 146 uint8_t source_id; 147 uint8_t metadata_ltvs_len; 148 uint8_t metadata_ltvs[0]; 149 } __packed; 150 151 /* CAP events */ 152 #define BTP_CAP_EV_DISCOVERY_COMPLETED 0x80 153 struct btp_cap_discovery_completed_ev { 154 bt_addr_le_t address; 155 uint8_t status; 156 } __packed; 157 #define BTP_CAP_DISCOVERY_STATUS_SUCCESS 0x00 158 #define BTP_CAP_DISCOVERY_STATUS_FAILED 0x01 159 160 #define BTP_CAP_EV_UNICAST_START_COMPLETED 0x81 161 struct btp_cap_unicast_start_completed_ev { 162 uint8_t cig_id; 163 uint8_t status; 164 } __packed; 165 #define BTP_CAP_UNICAST_START_STATUS_SUCCESS 0x00 166 #define BTP_CAP_UNICAST_START_STATUS_FAILED 0x01 167 168 #define BTP_CAP_EV_UNICAST_STOP_COMPLETED 0x82 169 struct btp_cap_unicast_stop_completed_ev { 170 uint8_t cig_id; 171 uint8_t status; 172 } __packed; 173 #define BTP_CAP_UNICAST_STOP_STATUS_SUCCESS 0x00 174 #define BTP_CAP_UNICAST_STOP_STATUS_FAILED 0x01 175