| /** @file |
| * @brief Internal APIs for Bluetooth VOCS. |
| * |
| * Copyright (c) 2020 Bose Corporation |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| #ifndef ZEPHYR_INCLUDE_BLUETOOTH_AUDIO_VOCS_INTERNAL_ |
| #define ZEPHYR_INCLUDE_BLUETOOTH_AUDIO_VOCS_INTERNAL_ |
| #include <zephyr/types.h> |
| |
| #if defined(CONFIG_BT_VOCS) |
| #define BT_VOCS_MAX_DESC_SIZE CONFIG_BT_VOCS_MAX_OUTPUT_DESCRIPTION_SIZE |
| #else |
| #define BT_VOCS_MAX_DESC_SIZE 1 |
| #endif /* CONFIG_BT_VOCS */ |
| |
| /* VOCS opcodes */ |
| #define BT_VOCS_OPCODE_SET_OFFSET 0x01 |
| |
| struct bt_vocs_control { |
| uint8_t opcode; |
| uint8_t counter; |
| int16_t offset; |
| } __packed; |
| |
| struct bt_vocs_state { |
| int16_t offset; |
| uint8_t change_counter; |
| } __packed; |
| |
| struct bt_vocs_client { |
| struct bt_vocs_state state; |
| bool location_writable; |
| uint32_t location; |
| bool desc_writable; |
| bool active; |
| |
| uint16_t start_handle; |
| uint16_t end_handle; |
| uint16_t state_handle; |
| uint16_t location_handle; |
| uint16_t control_handle; |
| uint16_t desc_handle; |
| struct bt_gatt_subscribe_params state_sub_params; |
| struct bt_gatt_subscribe_params location_sub_params; |
| struct bt_gatt_subscribe_params desc_sub_params; |
| uint8_t subscribe_cnt; |
| bool cp_retried; |
| |
| bool busy; |
| struct bt_vocs_control cp; |
| struct bt_gatt_write_params write_params; |
| struct bt_gatt_read_params read_params; |
| struct bt_vocs_cb *cb; |
| struct bt_gatt_discover_params discover_params; |
| struct bt_conn *conn; |
| }; |
| |
| struct bt_vocs_server { |
| struct bt_vocs_state state; |
| uint32_t location; |
| bool initialized; |
| char output_desc[BT_VOCS_MAX_DESC_SIZE]; |
| struct bt_vocs_cb *cb; |
| |
| struct bt_gatt_service *service_p; |
| }; |
| |
| struct bt_vocs { |
| bool client_instance; |
| union { |
| struct bt_vocs_server srv; |
| struct bt_vocs_client cli; |
| }; |
| }; |
| |
| int bt_vocs_client_state_get(struct bt_vocs *inst); |
| int bt_vocs_client_state_set(struct bt_vocs *inst, int16_t offset); |
| int bt_vocs_client_location_get(struct bt_vocs *inst); |
| int bt_vocs_client_location_set(struct bt_vocs *inst, uint32_t location); |
| int bt_vocs_client_description_get(struct bt_vocs *inst); |
| int bt_vocs_client_description_set(struct bt_vocs *inst, |
| const char *description); |
| |
| #endif /* ZEPHYR_INCLUDE_BLUETOOTH_AUDIO_VOCS_INTERNAL_ */ |