| /* btp_aics.h - Bluetooth tester headers */ |
| |
| /* |
| * Copyright (c) 2022 Codecoup |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| #include <zephyr/sys/util.h> |
| #include <zephyr/bluetooth/conn.h> |
| |
| /*AICS service */ |
| struct btp_aics_instance { |
| /** Number of Audio Input Control Service instances */ |
| uint8_t aics_cnt; |
| /** Array of pointers to Audio Input Control Service instances */ |
| struct bt_aics **aics; |
| }; |
| |
| extern struct bt_aics_cb aics_client_cb; |
| extern struct btp_aics_instance aics_client_instance; |
| extern struct btp_aics_instance aics_server_instance; |
| void btp_send_aics_state_ev(struct bt_conn *conn, uint8_t att_status, int8_t gain, uint8_t mute, |
| uint8_t mode); |
| void btp_send_gain_setting_properties_ev(struct bt_conn *conn, uint8_t att_status, uint8_t units, |
| int8_t minimum, int8_t maximum); |
| void btp_send_aics_input_type_event(struct bt_conn *conn, uint8_t att_status, uint8_t input_type); |
| void btp_send_aics_status_ev(struct bt_conn *conn, uint8_t att_status, bool active); |
| void btp_send_aics_description_ev(struct bt_conn *conn, uint8_t att_status, uint8_t data_len, |
| char *description); |
| void btp_send_aics_procedure_ev(struct bt_conn *conn, uint8_t att_status, uint8_t opcode); |
| |
| #define BTP_AICS_READ_SUPPORTED_COMMANDS 0x01 |
| struct btp_aics_read_supported_commands_rp { |
| uint8_t data[0]; |
| } __packed; |
| |
| /* AICS client/server commands */ |
| #define BTP_AICS_SET_GAIN 0x02 |
| struct btp_aics_set_gain_cmd { |
| bt_addr_le_t address; |
| int8_t gain; |
| } __packed; |
| |
| #define BTP_AICS_MUTE 0x03 |
| struct btp_aics_mute_cmd { |
| bt_addr_le_t address; |
| } __packed; |
| |
| #define BTP_AICS_UNMUTE 0x04 |
| struct btp_aics_unmute_cmd { |
| bt_addr_le_t address; |
| } __packed; |
| |
| #define BTP_AICS_MAN_GAIN_SET 0x05 |
| struct btp_aics_manual_gain_cmd { |
| bt_addr_le_t address; |
| } __packed; |
| |
| #define BTP_AICS_AUTO_GAIN_SET 0x06 |
| struct btp_aics_auto_gain_cmd { |
| bt_addr_le_t address; |
| } __packed; |
| |
| #define BTP_AICS_SET_MAN_GAIN_ONLY 0x07 |
| #define BTP_AICS_SET_AUTO_GAIN_ONLY 0x08 |
| #define BTP_AICS_AUDIO_DESCRIPTION_SET 0x09 |
| struct btp_aics_audio_desc_cmd { |
| uint8_t desc_len; |
| uint8_t desc[0]; |
| } __packed; |
| |
| #define BTP_AICS_MUTE_DISABLE 0x0a |
| #define BTP_AICS_GAIN_SETTING_PROP_GET 0x0b |
| struct btp_aics_gain_setting_prop_cmd { |
| bt_addr_le_t address; |
| } __packed; |
| |
| #define BTP_AICS_TYPE_GET 0x0c |
| struct btp_aics_type_cmd { |
| bt_addr_le_t address; |
| } __packed; |
| |
| #define BTP_AICS_STATUS_GET 0x0d |
| struct btp_aics_status_cmd { |
| bt_addr_le_t address; |
| } __packed; |
| |
| #define BTP_AICS_STATE_GET 0x0e |
| struct btp_aics_state_cmd { |
| bt_addr_le_t address; |
| } __packed; |
| |
| #define BTP_AICS_DESCRIPTION_GET 0x0f |
| struct btp_aics_desc_cmd { |
| bt_addr_le_t address; |
| } __packed; |
| |
| /* AICS events */ |
| #define BTP_AICS_STATE_EV 0x80 |
| struct btp_aics_state_ev { |
| bt_addr_le_t address; |
| uint8_t att_status; |
| int8_t gain; |
| uint8_t mute; |
| uint8_t mode; |
| } __packed; |
| |
| #define BTP_GAIN_SETTING_PROPERTIES_EV 0x81 |
| struct btp_gain_setting_properties_ev { |
| bt_addr_le_t address; |
| uint8_t att_status; |
| uint8_t units; |
| int8_t minimum; |
| int8_t maximum; |
| } __packed; |
| |
| #define BTP_AICS_INPUT_TYPE_EV 0x82 |
| struct btp_aics_input_type_ev { |
| bt_addr_le_t address; |
| uint8_t att_status; |
| uint8_t input_type; |
| } __packed; |
| |
| #define BTP_AICS_STATUS_EV 0x83 |
| struct btp_aics_status_ev { |
| bt_addr_le_t address; |
| uint8_t att_status; |
| bool active; |
| } __packed; |
| |
| #define BTP_AICS_DESCRIPTION_EV 0x84 |
| struct btp_aics_description_ev { |
| bt_addr_le_t address; |
| uint8_t att_status; |
| uint8_t data_len; |
| char data[0]; |
| } __packed; |
| |
| #define BTP_AICS_PROCEDURE_EV 0x85 |
| struct btp_aics_procedure_ev { |
| bt_addr_le_t address; |
| uint8_t att_status; |
| uint8_t opcode; |
| } __packed; |