Zephyr API Documentation  2.7.0-rc2
A Scalable Open Source RTOS
aics.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2020 Nordic Semiconductor ASA
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7#ifndef ZEPHYR_INCLUDE_BLUETOOTH_SERVICES_AICS_H_
8#define ZEPHYR_INCLUDE_BLUETOOTH_SERVICES_AICS_H_
9
29#include <zephyr/types.h>
30#include <bluetooth/bluetooth.h>
31
32#ifdef __cplusplus
33extern "C" {
34#endif
35
37#define BT_AICS_STATE_UNMUTED 0x00
38#define BT_AICS_STATE_MUTED 0x01
39#define BT_AICS_STATE_MUTE_DISABLED 0x02
40
42#define BT_AICS_MODE_MANUAL_ONLY 0x00
43#define BT_AICS_MODE_AUTO_ONLY 0x01
44#define BT_AICS_MODE_MANUAL 0x02
45#define BT_AICS_MODE_AUTO 0x03
46
48#define BT_AICS_INPUT_TYPE_UNSPECIFIED 0x00
49#define BT_AICS_INPUT_TYPE_BLUETOOTH 0x01
50#define BT_AICS_INPUT_TYPE_MICROPHONE 0x02
51#define BT_AICS_INPUT_TYPE_ANALOG 0x03
52#define BT_AICS_INPUT_TYPE_DIGITAL 0x04
53#define BT_AICS_INPUT_TYPE_RADIO 0x05
54#define BT_AICS_INPUT_TYPE_STREAMING 0x06
55
57#define BT_AICS_ERR_INVALID_COUNTER 0x80
58#define BT_AICS_ERR_OP_NOT_SUPPORTED 0x81
59#define BT_AICS_ERR_MUTE_DISABLED 0x82
60#define BT_AICS_ERR_OUT_OF_RANGE 0x83
61#define BT_AICS_ERR_GAIN_MODE_NOT_ALLOWED 0x84
62
64struct bt_aics;
65
70
73
76
79
82
85
88
90 bool status;
91
94
97
99 struct bt_aics_cb *cb;
100};
101
114};
115
121struct bt_aics *bt_aics_free_instance_get(void);
122
132void *bt_aics_svc_decl_get(struct bt_aics *aics);
133
145int bt_aics_client_conn_get(const struct bt_aics *aics, struct bt_conn **conn);
146
155int bt_aics_register(struct bt_aics *aics, struct bt_aics_register_param *param);
156
164typedef void (*bt_aics_write_cb)(struct bt_aics *inst, int err);
165
180typedef void (*bt_aics_state_cb)(struct bt_aics *inst, int err, int8_t gain,
181 uint8_t mute, uint8_t mode);
182
198typedef void (*bt_aics_gain_setting_cb)(struct bt_aics *inst, int err,
199 uint8_t units, int8_t minimum,
200 int8_t maximum);
201
213typedef void (*bt_aics_type_cb)(struct bt_aics *inst, int err, uint8_t type);
214
226typedef void (*bt_aics_status_cb)(struct bt_aics *inst, int err, bool active);
227
239typedef void (*bt_aics_description_cb)(struct bt_aics *inst, int err,
240 char *description);
241
253typedef void (*bt_aics_discover_cb)(struct bt_aics *inst, int err);
254
261
262#if defined(CONFIG_BT_AICS_CLIENT)
263 bt_aics_discover_cb discover;
264 bt_aics_write_cb set_gain;
265 bt_aics_write_cb unmute;
266 bt_aics_write_cb mute;
267 bt_aics_write_cb set_manual_mode;
268 bt_aics_write_cb set_auto_mode;
269#endif /* CONFIG_BT_AICS_CLIENT */
270};
271
272
285int bt_aics_discover(struct bt_conn *conn, struct bt_aics *inst,
286 const struct bt_aics_discover_param *param);
287
298int bt_aics_deactivate(struct bt_aics *inst);
299
311int bt_aics_activate(struct bt_aics *inst);
312
320int bt_aics_state_get(struct bt_aics *inst);
321
329int bt_aics_gain_setting_get(struct bt_aics *inst);
330
338int bt_aics_type_get(struct bt_aics *inst);
339
347int bt_aics_status_get(struct bt_aics *inst);
348
356int bt_aics_unmute(struct bt_aics *inst);
357
365int bt_aics_mute(struct bt_aics *inst);
366
374int bt_aics_manual_gain_set(struct bt_aics *inst);
375
383int bt_aics_automatic_gain_set(struct bt_aics *inst);
384
394int bt_aics_gain_set(struct bt_aics *inst, int8_t gain);
395
403int bt_aics_description_get(struct bt_aics *inst);
404
413int bt_aics_description_set(struct bt_aics *inst, const char *description);
414
421
428void bt_aics_client_cb_register(struct bt_aics *inst, struct bt_aics_cb *cb);
429
430#ifdef __cplusplus
431}
432#endif
433
438#endif /* ZEPHYR_INCLUDE_BLUETOOTH_SERVICES_AICS_H_ */
Bluetooth subsystem core APIs.
void
Definition: eswifi_shell.c:15
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:226
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:198
int bt_aics_gain_set(struct bt_aics *inst, int8_t gain)
Set the input gain.
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:180
void(* bt_aics_write_cb)(struct bt_aics *inst, int err)
Callback function for writes.
Definition: aics.h:164
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.
int bt_aics_mute(struct bt_aics *inst)
Mute the Audio Input Control Service input.
void(* bt_aics_type_cb)(struct bt_aics *inst, int err, uint8_t type)
Callback function for the input type.
Definition: aics.h:213
int bt_aics_automatic_gain_set(struct bt_aics *inst)
Set the input gain to automatic.
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:239
void(* bt_aics_discover_cb)(struct bt_aics *inst, int err)
Callback function for bt_aics_discover.
Definition: aics.h:253
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.
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:58
__UINT16_TYPE__ uint16_t
Definition: stdint.h:59
__INT8_TYPE__ int8_t
Definition: stdint.h:42
Definition: aics.h:255
bt_aics_type_cb type
Definition: aics.h:258
bt_aics_gain_setting_cb gain_setting
Definition: aics.h:257
bt_aics_state_cb state
Definition: aics.h:256
bt_aics_status_cb status
Definition: aics.h:259
bt_aics_description_cb description
Definition: aics.h:260
Structure for discovering a Audio Input Control Service instance.
Definition: aics.h:103
uint16_t end_handle
The end handle of the discovering.
Definition: aics.h:113
uint16_t start_handle
The start handle of the discovering.
Definition: aics.h:108
Structure for initializing a Audio Input Control Service instance.
Definition: aics.h:67
uint8_t gain_mode
Definition: aics.h:75
bool status
Definition: aics.h:90
uint8_t units
Definition: aics.h:78
struct bt_aics_cb * cb
Definition: aics.h:99
int8_t gain
Definition: aics.h:69
int8_t max_gain
Definition: aics.h:84
int8_t min_gain
Definition: aics.h:81
uint8_t mute
Definition: aics.h:72
bool desc_writable
Definition: aics.h:93
uint8_t type
Definition: aics.h:87
char * description
Definition: aics.h:96
units
Definition: timer_convert.c:13