blob: 05cb45b32ec289c772421acf8b67f8bcb4014ed5 [file] [log] [blame]
/** @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_ */