Zephyr API Documentation 4.4.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
aics.h
Go to the documentation of this file.
1
5
6/*
7 * Copyright (c) 2020-2024 Nordic Semiconductor ASA
8 *
9 * SPDX-License-Identifier: Apache-2.0
10 */
11
12#ifndef ZEPHYR_INCLUDE_BLUETOOTH_AUDIO_AICS_H_
13#define ZEPHYR_INCLUDE_BLUETOOTH_AUDIO_AICS_H_
14
35#include <stdint.h>
36#include <stdbool.h>
37
38#include <zephyr/autoconf.h>
40
41#ifdef __cplusplus
42extern "C" {
43#endif
44
50#define BT_AICS_STATE_UNMUTED 0x00U
52#define BT_AICS_STATE_MUTED 0x01U
54#define BT_AICS_STATE_MUTE_DISABLED 0x02U
56
66#define BT_AICS_MODE_MANUAL_ONLY 0x00U
72#define BT_AICS_MODE_AUTO_ONLY 0x01U
78#define BT_AICS_MODE_MANUAL 0x02U
84#define BT_AICS_MODE_AUTO 0x03U
86
94static inline const char *bt_aics_mode_to_str(uint8_t mode)
95{
96 switch (mode) {
98 return "Manual only";
100 return "Auto only";
102 return "Manual";
104 return "Auto";
105 default:
106 return "Unknown";
107 }
108}
109
115#define BT_AICS_INPUT_TYPE_UNSPECIFIED 0x00U
117#define BT_AICS_INPUT_TYPE_BLUETOOTH 0x01U
119#define BT_AICS_INPUT_TYPE_MICROPHONE 0x02U
121#define BT_AICS_INPUT_TYPE_ANALOG 0x03U
123#define BT_AICS_INPUT_TYPE_DIGITAL 0x04U
125#define BT_AICS_INPUT_TYPE_RADIO 0x05U
127#define BT_AICS_INPUT_TYPE_STREAMING 0x06U
129#define BT_AICS_INPUT_TYPE_AMBIENT 0x07U
131
140#define BT_AICS_ERR_INVALID_COUNTER 0x80U
142#define BT_AICS_ERR_OP_NOT_SUPPORTED 0x81U
144#define BT_AICS_ERR_MUTE_DISABLED 0x82U
146#define BT_AICS_ERR_OUT_OF_RANGE 0x83U
148#define BT_AICS_ERR_GAIN_MODE_NOT_ALLOWED 0x84U
150
155struct bt_aics;
156
192
208
215
225void *bt_aics_svc_decl_get(struct bt_aics *aics);
226
238int bt_aics_client_conn_get(const struct bt_aics *aics, struct bt_conn **conn);
239
248int bt_aics_register(struct bt_aics *aics, struct bt_aics_register_param *param);
249
257typedef void (*bt_aics_write_cb)(struct bt_aics *inst, int err);
258
273typedef void (*bt_aics_state_cb)(struct bt_aics *inst, int err, int8_t gain,
274 uint8_t mute, uint8_t mode);
275
291typedef void (*bt_aics_gain_setting_cb)(struct bt_aics *inst, int err,
292 uint8_t units, int8_t minimum,
293 int8_t maximum);
294
306typedef void (*bt_aics_type_cb)(struct bt_aics *inst, int err, uint8_t type);
307
319typedef void (*bt_aics_status_cb)(struct bt_aics *inst, int err, bool active);
320
332typedef void (*bt_aics_description_cb)(struct bt_aics *inst, int err,
333 char *description);
334
346typedef void (*bt_aics_discover_cb)(struct bt_aics *inst, int err);
347
380
381
394int bt_aics_discover(struct bt_conn *conn, struct bt_aics *inst,
395 const struct bt_aics_discover_param *param);
396
407int bt_aics_deactivate(struct bt_aics *inst);
408
420int bt_aics_activate(struct bt_aics *inst);
421
429int bt_aics_state_get(struct bt_aics *inst);
430
439
447int bt_aics_type_get(struct bt_aics *inst);
448
456int bt_aics_status_get(struct bt_aics *inst);
457
469
477int bt_aics_unmute(struct bt_aics *inst);
478
486int bt_aics_mute(struct bt_aics *inst);
487
496
508
517
526
536int bt_aics_gain_set(struct bt_aics *inst, int8_t gain);
537
546
555int bt_aics_description_set(struct bt_aics *inst, const char *description);
556
563
570void bt_aics_client_cb_register(struct bt_aics *inst, struct bt_aics_cb *cb);
571
572#ifdef __cplusplus
573}
574#endif
575
579
580#endif /* ZEPHYR_INCLUDE_BLUETOOTH_AUDIO_AICS_H_ */
Bluetooth subsystem core APIs.
int bt_aics_register(struct bt_aics *aics, struct bt_aics_register_param *param)
Initialize the Audio Input Control Service instance.
void(* bt_aics_status_cb)(struct bt_aics *inst, int err, bool active)
Callback function for the input status.
Definition aics.h:319
int bt_aics_gain_set_manual_only(struct bt_aics *inst)
Set manual only gain mode in Audio Input Control Service.
#define BT_AICS_MODE_AUTO
The gain mode is automatic.
Definition aics.h:84
int bt_aics_client_conn_get(const struct bt_aics *aics, struct bt_conn **conn)
Get the connection pointer of a client instance.
void(* bt_aics_gain_setting_cb)(struct bt_aics *inst, int err, uint8_t units, int8_t minimum, int8_t maximum)
Callback function for the gain settings.
Definition aics.h:291
int bt_aics_gain_set(struct bt_aics *inst, int8_t gain)
Set the input gain.
int bt_aics_gain_set_auto_only(struct bt_aics *inst)
Set automatic only gain mode in Audio Input Control Service.
int bt_aics_state_get(struct bt_aics *inst)
Read the Audio Input Control Service input state.
void(* bt_aics_state_cb)(struct bt_aics *inst, int err, int8_t gain, uint8_t mute, uint8_t mode)
Callback function for the input state.
Definition aics.h:273
void(* bt_aics_write_cb)(struct bt_aics *inst, int err)
Callback function for writes.
Definition aics.h:257
int bt_aics_gain_setting_get(struct bt_aics *inst)
Read the Audio Input Control Service gain settings.
int bt_aics_unmute(struct bt_aics *inst)
Unmute the Audio Input Control Service input.
int bt_aics_deactivate(struct bt_aics *inst)
Deactivates a Audio Input Control Service instance.
static const char * bt_aics_mode_to_str(uint8_t mode)
Convert an AICS gain mode to a human-readable string.
Definition aics.h:94
int bt_aics_mute(struct bt_aics *inst)
Mute the Audio Input Control Service input.
int bt_aics_disable_mute(struct bt_aics *inst)
Disable mute in the Audio Input Control Service.
#define BT_AICS_MODE_AUTO_ONLY
The gain mode is automatic only and cannot be changed to manual.
Definition aics.h:72
void(* bt_aics_type_cb)(struct bt_aics *inst, int err, uint8_t type)
Callback function for the input type.
Definition aics.h:306
int bt_aics_automatic_gain_set(struct bt_aics *inst)
Set the input gain to automatic.
#define BT_AICS_MODE_MANUAL
The gain mode is manual.
Definition aics.h:78
int bt_aics_manual_gain_set(struct bt_aics *inst)
Set input gain to manual.
int bt_aics_description_set(struct bt_aics *inst, const char *description)
Set the Audio Input Control Service description.
void * bt_aics_svc_decl_get(struct bt_aics *aics)
Get the service declaration attribute.
struct bt_aics * bt_aics_client_free_instance_get(void)
Get a new Audio Input Control Service client instance.
void(* bt_aics_description_cb)(struct bt_aics *inst, int err, char *description)
Callback function for the description.
Definition aics.h:332
void(* bt_aics_discover_cb)(struct bt_aics *inst, int err)
Callback function for bt_aics_discover.
Definition aics.h:346
struct bt_aics * bt_aics_free_instance_get(void)
Get a free instance of Audio Input Control Service from the pool.
void bt_aics_client_cb_register(struct bt_aics *inst, struct bt_aics_cb *cb)
Registers the callbacks for the Audio Input Control Service client.
int bt_aics_activate(struct bt_aics *inst)
Activates a Audio Input Control Service instance.
int bt_aics_discover(struct bt_conn *conn, struct bt_aics *inst, const struct bt_aics_discover_param *param)
Discover a Audio Input Control Service.
int bt_aics_status_get(struct bt_aics *inst)
Read the Audio Input Control Service input status.
#define BT_AICS_MODE_MANUAL_ONLY
The gain mode is manual only and cannot be changed to automatic.
Definition aics.h:66
int bt_aics_description_get(struct bt_aics *inst)
Read the Audio Input Control Service description.
int bt_aics_type_get(struct bt_aics *inst)
Read the Audio Input Control Service input type.
__UINT8_TYPE__ uint8_t
Definition stdint.h:88
__UINT16_TYPE__ uint16_t
Definition stdint.h:89
__INT8_TYPE__ int8_t
Definition stdint.h:72
Struct to hold callbacks for the Audio Input Control Service.
Definition aics.h:353
bt_aics_write_cb set_manual_mode
The set manual mode operation has completed.
Definition aics.h:375
bt_aics_write_cb set_gain
The set gain operation has completed.
Definition aics.h:369
bt_aics_write_cb mute
The mut operation has completed.
Definition aics.h:373
bt_aics_type_cb type
The audio input type has changed.
Definition aics.h:359
bt_aics_gain_setting_cb gain_setting
The gain setting has changed.
Definition aics.h:357
bt_aics_state_cb state
The audio input state has changed.
Definition aics.h:355
bt_aics_write_cb unmute
The unmute operation has completed.
Definition aics.h:371
bt_aics_write_cb set_auto_mode
The set automatic mode has completed.
Definition aics.h:377
bt_aics_status_cb status
The audio input status has changed.
Definition aics.h:361
bt_aics_description_cb description
The audio input description has changed.
Definition aics.h:363
bt_aics_discover_cb discover
The discovery has completed.
Definition aics.h:367
Structure for discovering a Audio Input Control Service instance.
Definition aics.h:194
uint16_t end_handle
The end handle of the discovering.
Definition aics.h:206
uint16_t start_handle
The start handle of the discovering.
Definition aics.h:200
Structure for initializing a Audio Input Control Service instance.
Definition aics.h:158
uint8_t gain_mode
Initial audio input mode.
Definition aics.h:166
bool status
Initial audio input status (active/inactive).
Definition aics.h:181
uint8_t units
Initial audio input gain units (N * 0.1 dB).
Definition aics.h:169
struct bt_aics_cb * cb
Pointer to the callback structure.
Definition aics.h:190
int8_t gain
Initial audio input gain (-128 to 127).
Definition aics.h:160
int8_t max_gain
Initial audio input maximum gain.
Definition aics.h:175
int8_t min_gain
Initial audio input minimum gain.
Definition aics.h:172
uint8_t mute
Initial audio input mute state.
Definition aics.h:163
bool desc_writable
Boolean to set whether the description is writable by clients.
Definition aics.h:184
uint8_t type
Initial audio input type.
Definition aics.h:178
char * description
Initial audio input description.
Definition aics.h:187
Opaque Audio Input Control Service instance.
Opaque type representing a connection to a remote device.