Bluetooth Audio Volume Control
API Reference
- group bt_gatt_vcs
Volume Control Service (VCS)
[Experimental] Users should note that the APIs can change as a part of ongoing development.
Defines
-
BT_VCS_VOCS_CNT
-
BT_VCS_AICS_CNT
-
BT_VCS_ERR_INVALID_COUNTER
Volume Control Service Error codes
-
BT_VCS_ERR_OP_NOT_SUPPORTED
-
BT_VCS_STATE_UNMUTED
Volume Control Service Mute Values
-
BT_VCS_STATE_MUTED
Typedefs
-
typedef void (*bt_vcs_discover_cb)(struct bt_vcs *vcs, int err, uint8_t vocs_count, uint8_t aics_count)
Callback function for bt_vcs_discover.
This callback is only used for the client.
- Param vcs
Volume Control Service instance pointer.
- Param err
Error value. 0 on success, GATT error on positive value or errno on negative value.
- Param vocs_count
Number of Volume Offset Control Service instances on peer device.
- Param aics_count
Number of Audio Input Control Service instances on peer device.
-
typedef void (*bt_vcs_state_cb)(struct bt_vcs *vcs, int err, uint8_t volume, uint8_t mute)
Callback function for Volume Control Service volume state.
Called when the value is locally read as the server. Called when the value is remotely read as the client. Called if the value is changed by either the server or client.
- Param vcs
Volume Control Service instance pointer.
- Param err
Error value. 0 on success, GATT error on positive value or errno on negative value.
- Param volume
The volume of the Volume Control Service server.
- Param mute
The mute setting of the Volume Control Service server.
-
typedef void (*bt_vcs_flags_cb)(struct bt_vcs *vcs, int err, uint8_t flags)
Callback function for Volume Control Service flags.
Called when the value is locally read as the server. Called when the value is remotely read as the client. Called if the value is changed by either the server or client.
- Param vcs
Volume Control Service instance pointer.
- Param err
Error value. 0 on success, GATT error on positive value or errno on negative value.
- Param flags
The flags of the Volume Control Service server.
-
typedef void (*bt_vcs_write_cb)(struct bt_vcs *vcs, int err)
Callback function for writes.
This callback is only used for the client.
- Param vcs
Volume Control Service instance pointer.
- Param err
Error value. 0 on success, GATT error on fail.
Functions
-
int bt_vcs_register(struct bt_vcs_register_param *param, struct bt_vcs **vcs)
Register the Volume Control Service.
This will register and enable the service and make it discoverable by clients.
- Parameters
param – Volume Control Service register parameters.
vcs – [out] Pointer to the registered Volume Control Service. This will still be valid if the return value is -EALREADY.
- Returns
0 if success, errno on failure.
-
int bt_vcs_included_get(struct bt_vcs *vcs, struct bt_vcs_included *included)
Get Volume Control Service included services.
Returns a pointer to a struct that contains information about the Volume Control Service included service instances, such as pointers to the Volume Offset Control Service (Volume Offset Control Service) or Audio Input Control Service (AICS) instances.
- Parameters
vcs – Volume Control Service instance pointer.
included – [out] Pointer to store the result in.
- Returns
0 if success, errno on failure.
-
int bt_vcs_client_conn_get(const struct bt_vcs *vcs, struct bt_conn **conn)
Get the connection pointer of a client instance.
Get the Bluetooth connection pointer of a Volume Control Service client instance.
- Parameters
vcs – Volume Control Service client instance pointer.
conn – [out] Connection pointer.
- Returns
0 if success, errno on failure.
-
int bt_vcs_discover(struct bt_conn *conn, struct bt_vcs **vcs)
Discover Volume Control Service and included services.
This will start a GATT discovery and setup handles and subscriptions. This shall be called once before any other actions can be executed for the peer device, and the bt_vcs_discover_cb callback will notify when it is possible to start remote operations.
This shall only be done as the client,
- Parameters
conn – The connection to discover Volume Control Service for.
vcs – [out] Valid remote instance object on success.
- Returns
0 if success, errno on failure.
-
int bt_vcs_vol_step_set(uint8_t volume_step)
Set the Volume Control Service volume step size.
Set the value that the volume changes, when changed relatively with e.g. bt_vcs_vol_down or bt_vcs_vol_up.
This can only be done as the server.
- Parameters
volume_step – The volume step size (1-255).
- Returns
0 if success, errno on failure.
-
int bt_vcs_vol_get(struct bt_vcs *vcs)
Read the Volume Control Service volume state.
- Parameters
vcs – Volume Control Service instance pointer.
- Returns
0 if success, errno on failure.
-
int bt_vcs_flags_get(struct bt_vcs *vcs)
Read the Volume Control Service flags.
- Parameters
vcs – Volume Control Service instance pointer.
- Returns
0 if success, errno on failure.
-
int bt_vcs_vol_down(struct bt_vcs *vcs)
Turn the volume down by one step on the server.
- Parameters
vcs – Volume Control Service instance pointer.
- Returns
0 if success, errno on failure.
-
int bt_vcs_vol_up(struct bt_vcs *vcs)
Turn the volume up by one step on the server.
- Parameters
vcs – Volume Control Service instance pointer.
- Returns
0 if success, errno on failure.
-
int bt_vcs_unmute_vol_down(struct bt_vcs *vcs)
Turn the volume down and unmute the server.
- Parameters
vcs – Volume Control Service instance pointer.
- Returns
0 if success, errno on failure.
-
int bt_vcs_unmute_vol_up(struct bt_vcs *vcs)
Turn the volume up and unmute the server.
- Parameters
vcs – Volume Control Service instance pointer.
- Returns
0 if success, errno on failure.
-
int bt_vcs_vol_set(struct bt_vcs *vcs, uint8_t volume)
Set the volume on the server.
- Parameters
vcs – Volume Control Service instance pointer.
volume – The absolute volume to set.
- Returns
0 if success, errno on failure.
-
int bt_vcs_unmute(struct bt_vcs *vcs)
Unmute the server.
- Parameters
vcs – Volume Control Service instance pointer.
- Returns
0 if success, errno on failure.
-
int bt_vcs_mute(struct bt_vcs *vcs)
Mute the server.
- Parameters
vcs – Volume Control Service instance pointer.
- Returns
0 if success, errno on failure.
-
int bt_vcs_vocs_state_get(struct bt_vcs *vcs, struct bt_vocs *inst)
Read the Volume Offset Control Service offset state.
- Parameters
vcs – Volume Control Service instance pointer.
inst – Pointer to the Volume Offset Control Service instance.
- Returns
0 if success, errno on failure.
-
int bt_vcs_vocs_location_get(struct bt_vcs *vcs, struct bt_vocs *inst)
Read the Volume Offset Control Service location.
- Parameters
vcs – Volume Control Service instance pointer.
inst – Pointer to the Volume Offset Control Service instance.
- Returns
0 if success, errno on failure.
-
int bt_vcs_vocs_location_set(struct bt_vcs *vcs, struct bt_vocs *inst, uint8_t location)
Set the Volume Offset Control Service location.
- Parameters
vcs – Volume Control Service instance pointer.
inst – Pointer to the Volume Offset Control Service instance.
location – The location to set.
- Returns
0 if success, errno on failure.
-
int bt_vcs_vocs_state_set(struct bt_vcs *vcs, struct bt_vocs *inst, int16_t offset)
Set the Volume Offset Control Service offset state.
- Parameters
vcs – Volume Control Service instance pointer.
inst – Pointer to the Volume Offset Control Service instance.
offset – The offset to set (-255 to 255).
- Returns
0 if success, errno on failure.
-
int bt_vcs_vocs_description_get(struct bt_vcs *vcs, struct bt_vocs *inst)
Read the Volume Offset Control Service output description.
- Parameters
vcs – Volume Control Service instance pointer.
inst – Pointer to the Volume Offset Control Service instance.
- Returns
0 if success, errno on failure.
-
int bt_vcs_vocs_description_set(struct bt_vcs *vcs, struct bt_vocs *inst, const char *description)
Set the Volume Offset Control Service description.
- Parameters
vcs – Volume Control Service instance pointer.
inst – Pointer to the Volume Offset Control Service instance.
description – The description to set.
- Returns
0 if success, errno on failure.
-
int bt_vcs_aics_deactivate(struct bt_vcs *vcs, struct bt_aics *inst)
Deactivates an Audio Input Control Service instance.
Audio Input Control Services are activated by default, but this will allow the server to deactivate an Audio Input Control Service.
- Parameters
vcs – Volume Control Service instance pointer.
inst – Pointer to the Audio Input Control Service instance.
- Returns
0 if success, errno on failure.
-
int bt_vcs_aics_activate(struct bt_vcs *vcs, struct bt_aics *inst)
Activates an Audio Input Control Service instance.
Audio Input Control Services are activated by default, but this will allow the server to reactivate an Audio Input Control Service instance after it has been deactivated with bt_vcs_aics_deactivate.
- Parameters
vcs – Volume Control Service instance pointer.
inst – Pointer to the Audio Input Control Service instance.
- Returns
0 if success, errno on failure.
-
int bt_vcs_aics_state_get(struct bt_vcs *vcs, struct bt_aics *inst)
Read the Audio Input Control Service input state.
- Parameters
vcs – Volume Control Service instance pointer.
inst – Pointer to the Audio Input Control Service instance.
- Returns
0 if success, errno on failure.
-
int bt_vcs_aics_gain_setting_get(struct bt_vcs *vcs, struct bt_aics *inst)
Read the Audio Input Control Service gain settings.
- Parameters
vcs – Volume Control Service instance pointer.
inst – Pointer to the Audio Input Control Service instance.
- Returns
0 if success, errno on failure.
-
int bt_vcs_aics_type_get(struct bt_vcs *vcs, struct bt_aics *inst)
Read the Audio Input Control Service input type.
- Parameters
vcs – Volume Control Service instance pointer.
inst – Pointer to the Audio Input Control Service instance.
- Returns
0 if success, errno on failure.
-
int bt_vcs_aics_status_get(struct bt_vcs *vcs, struct bt_aics *inst)
Read the Audio Input Control Service input status.
- Parameters
vcs – Volume Control Service instance pointer.
inst – Pointer to the Audio Input Control Service instance.
- Returns
0 if success, errno on failure.
-
int bt_vcs_aics_mute(struct bt_vcs *vcs, struct bt_aics *inst)
Mute the Audio Input Control Service input.
- Parameters
vcs – Volume Control Service instance pointer.
inst – Pointer to the Audio Input Control Service instance.
- Returns
0 if success, errno on failure.
-
int bt_vcs_aics_unmute(struct bt_vcs *vcs, struct bt_aics *inst)
Unmute the Audio Input Control Service input.
- Parameters
vcs – Volume Control Service instance pointer.
inst – Pointer to the Audio Input Control Service instance.
- Returns
0 if success, errno on failure.
-
int bt_vcs_aics_manual_gain_set(struct bt_vcs *vcs, struct bt_aics *inst)
Set input gain to manual.
- Parameters
vcs – Volume Control Service instance pointer.
inst – Pointer to the Audio Input Control Service instance.
- Returns
0 if success, errno on failure.
-
int bt_vcs_aics_automatic_gain_set(struct bt_vcs *vcs, struct bt_aics *inst)
Set the input gain to automatic.
- Parameters
vcs – Volume Control Service instance pointer.
inst – Pointer to the Audio Input Control Service instance.
- Returns
0 if success, errno on failure.
-
int bt_vcs_aics_gain_set(struct bt_vcs *vcs, struct bt_aics *inst, int8_t gain)
Set the input gain.
- Parameters
vcs – Volume Control Service instance pointer.
inst – Pointer to the Audio Input Control Service instance.
gain – The gain in dB to set (-128 to 127).
- Returns
0 if success, errno on failure.
-
int bt_vcs_aics_description_get(struct bt_vcs *vcs, struct bt_aics *inst)
Read the Audio Input Control Service description.
- Parameters
vcs – Volume Control Service instance pointer.
inst – Pointer to the Audio Input Control Service instance.
- Returns
0 if success, errno on failure.
-
int bt_vcs_aics_description_set(struct bt_vcs *vcs, struct bt_aics *inst, const char *description)
Set the Audio Input Control Service description.
- Parameters
vcs – Volume Control Service instance pointer.
inst – Pointer to the Audio Input Control Service instance.
description – The description to set.
- Returns
0 if success, errno on failure.
-
struct bt_vcs_register_param
- #include <vcs.h>
Register structure for Volume Control Service
Public Members
-
uint8_t step
Initial step size (1-255)
-
uint8_t mute
Initial mute state (0-1)
-
uint8_t volume
Initial volume level (0-255)
-
struct bt_vocs_register_param vocs_param[0]
Register parameters for Volume Offset Control Services
-
struct bt_aics_register_param aics_param[0]
Register parameters for Audio Input Control Services
-
uint8_t step
-
struct bt_vcs_included
- #include <vcs.h>
Volume Control Service included services.
Used for to represent the Volume Control Service included service instances, for either a client or a server. The instance pointers either represent local server instances, or remote service instances.
Public Members
-
uint8_t vocs_cnt
Number of Volume Offset Control Service instances
-
struct bt_vocs **vocs
Array of pointers to Volume Offset Control Service instances
-
uint8_t aics_cnt
Number of Audio Input Control Service instances
-
struct bt_aics **aics
Array of pointers to Audio Input Control Service instances
-
uint8_t vocs_cnt
-
struct bt_vcs_cb
- #include <vcs.h>
-
BT_VCS_VOCS_CNT