/* * Copyright (c) 2020-2021 Nordic Semiconductor ASA * * SPDX-License-Identifier: Apache-2.0 */ #ifndef ZEPHYR_INCLUDE_BLUETOOTH_AUDIO_MICS_INTERNAL_ #define ZEPHYR_INCLUDE_BLUETOOTH_AUDIO_MICS_INTERNAL_ #include #include #if defined(CONFIG_BT_MICS) struct bt_mics_server { uint8_t mute; struct bt_mics_cb *cb; struct bt_gatt_service *service_p; struct bt_aics *aics_insts[CONFIG_BT_MICS_AICS_INSTANCE_COUNT]; }; #endif /* CONFIG_BT_MICS */ #if defined(CONFIG_BT_MICS_CLIENT) struct bt_mics_client { uint16_t start_handle; uint16_t end_handle; uint16_t mute_handle; struct bt_gatt_subscribe_params mute_sub_params; struct bt_gatt_discover_params mute_sub_disc_params; bool busy; uint8_t mute_val_buf[1]; /* Mute value is a single octet */ struct bt_gatt_write_params write_params; struct bt_gatt_read_params read_params; struct bt_gatt_discover_params discover_params; struct bt_conn *conn; uint8_t aics_inst_cnt; struct bt_aics *aics[CONFIG_BT_MICS_CLIENT_MAX_AICS_INST]; }; #endif /* CONFIG_BT_MICS_CLIENT */ /* Struct used as a common type for the api */ struct bt_mics { bool client_instance; union { #if defined(CONFIG_BT_MICS) struct bt_mics_server srv; #endif /* CONFIG_BT_MICS */ #if defined(CONFIG_BT_MICS_CLIENT) struct bt_mics_client cli; #endif /* CONFIG_BT_MICS_CLIENT */ }; }; int bt_mics_client_included_get(struct bt_mics *mics, struct bt_mics_included *included); int bt_mics_client_mute_get(struct bt_mics *mics); int bt_mics_client_mute(struct bt_mics *mics); int bt_mics_client_unmute(struct bt_mics *mics); bool bt_mics_client_valid_aics_inst(struct bt_mics *mics, struct bt_aics *aics); #endif /* ZEPHYR_INCLUDE_BLUETOOTH_AUDIO_MICS_INTERNAL_ */