Zephyr API Documentation  3.6.0
A Scalable Open Source RTOS
3.6.0
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
csip.h
Go to the documentation of this file.
1
7#ifndef ZEPHYR_SUBSYS_BLUETOOTH_AUDIO_CSIP_H_
8#define ZEPHYR_SUBSYS_BLUETOOTH_AUDIO_CSIP_H_
9
22
23#ifdef __cplusplus
24extern "C" {
25#endif
26
28#define BT_CSIP_SET_COORDINATOR_DISCOVER_TIMER_VALUE K_SECONDS(10)
29
30#if defined(CONFIG_BT_CSIP_SET_COORDINATOR)
31#define BT_CSIP_SET_COORDINATOR_MAX_CSIS_INSTANCES CONFIG_BT_CSIP_SET_COORDINATOR_MAX_CSIS_INSTANCES
32#else
33#define BT_CSIP_SET_COORDINATOR_MAX_CSIS_INSTANCES 0
34#endif /* CONFIG_BT_CSIP_SET_COORDINATOR */
35
37#define BT_CSIP_READ_SIRK_REQ_RSP_ACCEPT 0x00
39#define BT_CSIP_READ_SIRK_REQ_RSP_ACCEPT_ENC 0x01
41#define BT_CSIP_READ_SIRK_REQ_RSP_REJECT 0x02
43#define BT_CSIP_READ_SIRK_REQ_RSP_OOB_ONLY 0x03
44
46#define BT_CSIP_SET_SIRK_SIZE 16
47
49#define BT_CSIP_RSI_SIZE 6
50
51/* Coordinate Set Identification Service Error codes */
53#define BT_CSIP_ERROR_LOCK_DENIED 0x80
55#define BT_CSIP_ERROR_LOCK_RELEASE_DENIED 0x81
57#define BT_CSIP_ERROR_LOCK_INVAL_VALUE 0x82
59#define BT_CSIP_ERROR_SIRK_OOB_ONLY 0x83
61#define BT_CSIP_ERROR_LOCK_ALREADY_GRANTED 0x84
62
71#define BT_CSIP_DATA_RSI(_rsi) BT_DATA(BT_DATA_CSIS_RSI, _rsi, BT_CSIP_RSI_SIZE)
72
74struct bt_csip_set_member_svc_inst;
75
89 void (*lock_changed)(struct bt_conn *conn,
90 struct bt_csip_set_member_svc_inst *svc_inst,
91 bool locked);
92
106 uint8_t (*sirk_read_req)(struct bt_conn *conn,
107 struct bt_csip_set_member_svc_inst *svc_inst);
108};
109
118
126
133
142
145
146#if CONFIG_BT_CSIP_SET_MEMBER_MAX_INSTANCE_COUNT > 1
156 const struct bt_gatt_service *parent;
157#endif /* CONFIG_BT_CSIP_SET_MEMBER_MAX_INSTANCE_COUNT > 1 */
158};
159
169void *bt_csip_set_member_svc_decl_get(const struct bt_csip_set_member_svc_inst *svc_inst);
170
187 struct bt_csip_set_member_svc_inst **svc_inst);
188
198int bt_csip_set_member_unregister(struct bt_csip_set_member_svc_inst *svc_inst);
199
205void bt_csip_set_member_print_sirk(const struct bt_csip_set_member_svc_inst *svc_inst);
206
217int bt_csip_set_member_generate_rsi(const struct bt_csip_set_member_svc_inst *svc_inst,
219
231int bt_csip_set_member_lock(struct bt_csip_set_member_svc_inst *svc_inst,
232 bool lock, bool force);
233
243
250
257
260};
261
270
272 void *svc_inst;
273};
274
279};
280
291 struct bt_conn *conn,
292 const struct bt_csip_set_coordinator_set_member *member,
293 int err, size_t set_count);
294
303int bt_csip_set_coordinator_discover(struct bt_conn *conn);
304
311typedef void (*bt_csip_set_coordinator_lock_set_cb)(int err);
312
324 struct bt_csip_set_coordinator_csis_inst *inst, bool locked);
325
341 const struct bt_csip_set_coordinator_set_info *set_info,
342 int err, bool locked,
344
346 /* Set callbacks */
350
351 /* Device specific callbacks */
354
356 sys_snode_t _node;
357};
358
368 struct bt_data *data);
369
378
391 const struct bt_csip_set_coordinator_set_info *set_info,
392 struct bt_csip_set_coordinator_set_member *members[],
393 size_t count);
394
419 const struct bt_csip_set_coordinator_set_member *members[],
420 uint8_t count,
421 const struct bt_csip_set_coordinator_set_info *set_info,
423
439 uint8_t count,
440 const struct bt_csip_set_coordinator_set_info *set_info);
441
455 uint8_t count,
456 const struct bt_csip_set_coordinator_set_info *set_info);
457
458
459#ifdef __cplusplus
460}
461#endif
462
467#endif /* ZEPHYR_SUBSYS_BLUETOOTH_AUDIO_CSIP_H_ */
Bluetooth connection handling.
int bt_csip_set_coordinator_register_cb(struct bt_csip_set_coordinator_cb *cb)
Registers callbacks for csip_set_coordinator.
void(* bt_csip_set_coordinator_ordered_access_cb_t)(const struct bt_csip_set_coordinator_set_info *set_info, int err, bool locked, struct bt_csip_set_coordinator_set_member *member)
Callback for bt_csip_set_coordinator_ordered_access()
Definition: csip.h:340
void(* bt_csip_set_coordinator_lock_set_cb)(int err)
Callback for locking a set across one or more devices.
Definition: csip.h:311
bool(* bt_csip_set_coordinator_ordered_access_t)(const struct bt_csip_set_coordinator_set_info *set_info, struct bt_csip_set_coordinator_set_member *members[], size_t count)
Callback function definition for bt_csip_set_coordinator_ordered_access()
Definition: csip.h:390
int bt_csip_set_coordinator_lock(const struct bt_csip_set_coordinator_set_member **members, uint8_t count, const struct bt_csip_set_coordinator_set_info *set_info)
Lock an array of set members.
bool bt_csip_set_coordinator_is_set_member(const uint8_t set_sirk[16], struct bt_data *data)
Check if advertising data indicates a set member.
#define BT_CSIP_SET_SIRK_SIZE
Size of the Set Identification Resolving Key (SIRK)
Definition: csip.h:46
#define BT_CSIP_SET_COORDINATOR_MAX_CSIS_INSTANCES
Definition: csip.h:33
void(* bt_csip_set_coordinator_lock_changed_cb)(struct bt_csip_set_coordinator_csis_inst *inst, bool locked)
Callback when the lock value on a set of a connected device changes.
Definition: csip.h:323
int bt_csip_set_coordinator_release(const struct bt_csip_set_coordinator_set_member **members, uint8_t count, const struct bt_csip_set_coordinator_set_info *set_info)
Release an array of set members.
#define BT_CSIP_RSI_SIZE
Size of the Resolvable Set Identifier (RSI)
Definition: csip.h:49
int bt_csip_set_coordinator_discover(struct bt_conn *conn)
Initialise the csip_set_coordinator instance for a connection.
int bt_csip_set_member_generate_rsi(const struct bt_csip_set_member_svc_inst *svc_inst, uint8_t rsi[6])
Generate the Resolvable Set Identifier (RSI) value.
int bt_csip_set_member_lock(struct bt_csip_set_member_svc_inst *svc_inst, bool lock, bool force)
Locks a specific Coordinated Set Identification Service instance on the server.
int bt_csip_set_member_unregister(struct bt_csip_set_member_svc_inst *svc_inst)
Unregister a Coordinated Set Identification Service instance.
int bt_csip_set_member_register(const struct bt_csip_set_member_register_param *param, struct bt_csip_set_member_svc_inst **svc_inst)
Register a Coordinated Set Identification Service instance.
void * bt_csip_set_member_svc_decl_get(const struct bt_csip_set_member_svc_inst *svc_inst)
Get the service declaration attribute.
int bt_csip_set_coordinator_ordered_access(const struct bt_csip_set_coordinator_set_member *members[], uint8_t count, const struct bt_csip_set_coordinator_set_info *set_info, bt_csip_set_coordinator_ordered_access_t cb)
Access Coordinated Set devices in an ordered manner as a client.
void bt_csip_set_member_print_sirk(const struct bt_csip_set_member_svc_inst *svc_inst)
Print the SIRK to the debug output.
void(* bt_csip_set_coordinator_discover_cb)(struct bt_conn *conn, const struct bt_csip_set_coordinator_set_member *member, int err, size_t set_count)
Callback for discovering Coordinated Set Identification Services.
Definition: csip.h:290
struct _snode sys_snode_t
Single-linked list node structure.
Definition: slist.h:39
#define bool
Definition: stdbool.h:13
__UINT8_TYPE__ uint8_t
Definition: stdint.h:88
Definition: csip.h:345
bt_csip_set_coordinator_lock_set_cb lock_set
Definition: csip.h:347
bt_csip_set_coordinator_discover_cb discover
Definition: csip.h:352
bt_csip_set_coordinator_lock_set_cb release_set
Definition: csip.h:348
bt_csip_set_coordinator_lock_changed_cb lock_changed
Definition: csip.h:349
bt_csip_set_coordinator_ordered_access_cb_t ordered_access
Definition: csip.h:353
Struct representing a coordinated set instance on a remote device.
Definition: csip.h:268
struct bt_csip_set_coordinator_set_info info
Definition: csip.h:269
void * svc_inst
Internally used pointer value.
Definition: csip.h:272
Information about a specific set.
Definition: csip.h:235
uint8_t rank
The rank of the set on on the remote device.
Definition: csip.h:256
bool lockable
Whether or not the set can be locked on this device.
Definition: csip.h:259
uint8_t set_sirk[16]
The 16 octet set Set Identity Resolving Key (SIRK)
Definition: csip.h:242
uint8_t set_size
The size of the set.
Definition: csip.h:249
Struct representing a remote device as a set member.
Definition: csip.h:276
struct bt_csip_set_coordinator_csis_inst insts[0]
Array of Coordinated Set Identification Service instances for the remote device.
Definition: csip.h:278
Callback structure for the Coordinated Set Identification Service.
Definition: csip.h:77
uint8_t(* sirk_read_req)(struct bt_conn *conn, struct bt_csip_set_member_svc_inst *svc_inst)
Request from a peer device to read the sirk.
Definition: csip.h:106
void(* lock_changed)(struct bt_conn *conn, struct bt_csip_set_member_svc_inst *svc_inst, bool locked)
Callback whenever the lock changes on the server.
Definition: csip.h:89
Register structure for Coordinated Set Identification Service.
Definition: csip.h:111
struct bt_csip_set_member_cb * cb
Pointer to the callback structure.
Definition: csip.h:144
uint8_t set_sirk[16]
The unique Set Identity Resolving Key (SIRK)
Definition: csip.h:125
bool lockable
Boolean to set whether the set is lockable by clients.
Definition: csip.h:132
uint8_t rank
Rank of this device in this set.
Definition: csip.h:141
uint8_t set_size
Size of the set.
Definition: csip.h:117
Bluetooth data.
Definition: bluetooth.h:439
GATT Service structure.
Definition: gatt.h:195