1 /* btp_aics.h - Bluetooth tester headers */ 2 3 /* 4 * Copyright (c) 2022 Codecoup 5 * 6 * SPDX-License-Identifier: Apache-2.0 7 */ 8 9 #include <stdbool.h> 10 #include <stdint.h> 11 12 #include <zephyr/bluetooth/addr.h> 13 #include <zephyr/bluetooth/conn.h> 14 #include <zephyr/sys/util.h> 15 16 /*AICS service */ 17 struct btp_aics_instance { 18 /** Number of Audio Input Control Service instances */ 19 uint8_t aics_cnt; 20 /** Array of pointers to Audio Input Control Service instances */ 21 struct bt_aics **aics; 22 }; 23 24 extern struct bt_aics_cb aics_client_cb; 25 extern struct btp_aics_instance aics_client_instance; 26 extern struct btp_aics_instance aics_server_instance; 27 void btp_send_aics_state_ev(struct bt_conn *conn, uint8_t att_status, int8_t gain, uint8_t mute, 28 uint8_t mode); 29 void btp_send_gain_setting_properties_ev(struct bt_conn *conn, uint8_t att_status, uint8_t units, 30 int8_t minimum, int8_t maximum); 31 void btp_send_aics_input_type_event(struct bt_conn *conn, uint8_t att_status, uint8_t input_type); 32 void btp_send_aics_status_ev(struct bt_conn *conn, uint8_t att_status, bool active); 33 void btp_send_aics_description_ev(struct bt_conn *conn, uint8_t att_status, uint8_t data_len, 34 char *description); 35 void btp_send_aics_procedure_ev(struct bt_conn *conn, uint8_t att_status, uint8_t opcode); 36 37 #define BTP_AICS_READ_SUPPORTED_COMMANDS 0x01 38 struct btp_aics_read_supported_commands_rp { 39 uint8_t data[0]; 40 } __packed; 41 42 /* AICS client/server commands */ 43 #define BTP_AICS_SET_GAIN 0x02 44 struct btp_aics_set_gain_cmd { 45 bt_addr_le_t address; 46 int8_t gain; 47 } __packed; 48 49 #define BTP_AICS_MUTE 0x03 50 struct btp_aics_mute_cmd { 51 bt_addr_le_t address; 52 } __packed; 53 54 #define BTP_AICS_UNMUTE 0x04 55 struct btp_aics_unmute_cmd { 56 bt_addr_le_t address; 57 } __packed; 58 59 #define BTP_AICS_MAN_GAIN_SET 0x05 60 struct btp_aics_manual_gain_cmd { 61 bt_addr_le_t address; 62 } __packed; 63 64 #define BTP_AICS_AUTO_GAIN_SET 0x06 65 struct btp_aics_auto_gain_cmd { 66 bt_addr_le_t address; 67 } __packed; 68 69 #define BTP_AICS_SET_MAN_GAIN_ONLY 0x07 70 #define BTP_AICS_SET_AUTO_GAIN_ONLY 0x08 71 #define BTP_AICS_AUDIO_DESCRIPTION_SET 0x09 72 struct btp_aics_audio_desc_cmd { 73 uint8_t desc_len; 74 uint8_t desc[0]; 75 } __packed; 76 77 #define BTP_AICS_MUTE_DISABLE 0x0a 78 #define BTP_AICS_GAIN_SETTING_PROP_GET 0x0b 79 struct btp_aics_gain_setting_prop_cmd { 80 bt_addr_le_t address; 81 } __packed; 82 83 #define BTP_AICS_TYPE_GET 0x0c 84 struct btp_aics_type_cmd { 85 bt_addr_le_t address; 86 } __packed; 87 88 #define BTP_AICS_STATUS_GET 0x0d 89 struct btp_aics_status_cmd { 90 bt_addr_le_t address; 91 } __packed; 92 93 #define BTP_AICS_STATE_GET 0x0e 94 struct btp_aics_state_cmd { 95 bt_addr_le_t address; 96 } __packed; 97 98 #define BTP_AICS_DESCRIPTION_GET 0x0f 99 struct btp_aics_desc_cmd { 100 bt_addr_le_t address; 101 } __packed; 102 103 /* AICS events */ 104 #define BTP_AICS_STATE_EV 0x80 105 struct btp_aics_state_ev { 106 bt_addr_le_t address; 107 uint8_t att_status; 108 int8_t gain; 109 uint8_t mute; 110 uint8_t mode; 111 } __packed; 112 113 #define BTP_GAIN_SETTING_PROPERTIES_EV 0x81 114 struct btp_gain_setting_properties_ev { 115 bt_addr_le_t address; 116 uint8_t att_status; 117 uint8_t units; 118 int8_t minimum; 119 int8_t maximum; 120 } __packed; 121 122 #define BTP_AICS_INPUT_TYPE_EV 0x82 123 struct btp_aics_input_type_ev { 124 bt_addr_le_t address; 125 uint8_t att_status; 126 uint8_t input_type; 127 } __packed; 128 129 #define BTP_AICS_STATUS_EV 0x83 130 struct btp_aics_status_ev { 131 bt_addr_le_t address; 132 uint8_t att_status; 133 bool active; 134 } __packed; 135 136 #define BTP_AICS_DESCRIPTION_EV 0x84 137 struct btp_aics_description_ev { 138 bt_addr_le_t address; 139 uint8_t att_status; 140 uint8_t data_len; 141 char data[0]; 142 } __packed; 143 144 #define BTP_AICS_PROCEDURE_EV 0x85 145 struct btp_aics_procedure_ev { 146 bt_addr_le_t address; 147 uint8_t att_status; 148 uint8_t opcode; 149 } __packed; 150