Volume Offset Control Service Server API

src/le-audio/gatt-service/volume_offset_control_service_server.h

typedef struct {
    btstack_linked_item_t item;

    hci_con_handle_t con_handle;

    // service
    uint16_t start_handle;
    uint16_t end_handle;
    uint8_t index;

    vocs_info_t * info;

    att_service_handler_t    service_handler;
    btstack_context_callback_registration_t  scheduled_tasks_callback;
    uint8_t scheduled_tasks;

    // ORG_BLUETOOTH_CHARACTERISTIC_OFFSET_STATE
    uint16_t volume_offset_state_value_handle;
    uint8_t  volume_offset_state_change_counter;

    uint16_t volume_offset_state_client_configuration_handle;
    uint16_t volume_offset_state_client_configuration;
    btstack_context_callback_registration_t volume_offset_state_callback;

    // ORG_BLUETOOTH_CHARACTERISTIC_AUDIO_LOCATION
    uint16_t audio_location_value_handle;

    uint16_t audio_location_client_configuration_handle;
    uint16_t audio_location_client_configuration;
    btstack_context_callback_registration_t audio_location_callback;

    // ORG_BLUETOOTH_CHARACTERISTIC_VOLUME_OFFSET_CONTROL_POINT
    uint16_t volume_offset_control_point_value_handle;

    // ORG_BLUETOOTH_CHARACTERISTIC_AUDIO_OUTPUT_DESCRIPTION
    uint16_t audio_output_description_value_handle;
    uint8_t audio_output_description_len;

    uint16_t audio_output_description_client_configuration_handle;
    uint16_t audio_output_description_client_configuration;
    btstack_context_callback_registration_t audio_output_description_callback;
} volume_offset_control_service_server_t;


/**
 * @brief Init Volume Offset Control Service Server with ATT DB
 * @param vocs service storage
 */
void volume_offset_control_service_server_init(volume_offset_control_service_server_t * vocs);

/**
 * @brief Set volume offset of the VOCS service. If successful, all registered clients will be notified of change.
 * @param vocs service
 * @param volume_offset 
 * @return status ERROR_CODE_SUCCESS if successful
 */
uint8_t volume_offset_control_service_server_set_volume_offset(volume_offset_control_service_server_t * vocs, int16_t volume_offset);

/**
 * @brief Set audio location of the VOCS service. If successful, all registered clients will be notified of change.
 * @param vocs service
 * @param audio_location see VOCS_AUDIO_LOCATION_* defines above
 * @return status ERROR_CODE_SUCCESS if successful
 */
uint8_t volume_offset_control_service_server_set_audio_location(volume_offset_control_service_server_t * vocs, uint32_t audio_location);

/**
 * @brief Set audio output description of the VOCS service. If successful, all registered clients will be notified of change.
 * @param vocs service
 * @param audio_output_desc
 * @return status ERROR_CODE_SUCCESS if successful
 */
void volume_offset_control_service_server_set_audio_output_description(volume_offset_control_service_server_t * vocs, const char * audio_output_desc);