Zephyr API Documentation 4.4.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
csip.h
Go to the documentation of this file.
1
5
6/*
7 * Copyright (c) 2021-2024 Nordic Semiconductor ASA
8 *
9 * SPDX-License-Identifier: Apache-2.0
10 */
11
12#ifndef ZEPHYR_SUBSYS_BLUETOOTH_AUDIO_CSIP_H_
13#define ZEPHYR_SUBSYS_BLUETOOTH_AUDIO_CSIP_H_
14
29
30#include <stdbool.h>
31#include <stddef.h>
32#include <stdint.h>
33
34#include <zephyr/autoconf.h>
41#include <zephyr/kernel.h>
42#include <zephyr/sys/slist.h>
43
44#ifdef __cplusplus
45extern "C" {
46#endif
47
49#define BT_CSIP_SET_COORDINATOR_DISCOVER_TIMER_VALUE K_SECONDS(10)
50
55#if defined(CONFIG_BT_CSIP_SET_COORDINATOR)
56#define BT_CSIP_SET_COORDINATOR_MAX_CSIS_INSTANCES CONFIG_BT_CSIP_SET_COORDINATOR_MAX_CSIS_INSTANCES
57#else
58#define BT_CSIP_SET_COORDINATOR_MAX_CSIS_INSTANCES 0
59#endif /* CONFIG_BT_CSIP_SET_COORDINATOR */
60
62#define BT_CSIP_READ_SIRK_REQ_RSP_ACCEPT 0x00
64#define BT_CSIP_READ_SIRK_REQ_RSP_ACCEPT_ENC 0x01
66#define BT_CSIP_READ_SIRK_REQ_RSP_REJECT 0x02
68#define BT_CSIP_READ_SIRK_REQ_RSP_OOB_ONLY 0x03
69
71#define BT_CSIP_SIRK_SIZE 16
72
74#define BT_CSIP_RSI_SIZE 6
75
76/* Coordinate Set Identification Service Error codes */
78#define BT_CSIP_ERROR_LOCK_DENIED 0x80
80#define BT_CSIP_ERROR_LOCK_RELEASE_DENIED 0x81
82#define BT_CSIP_ERROR_LOCK_INVAL_VALUE 0x82
84#define BT_CSIP_ERROR_SIRK_OOB_ONLY 0x83
86#define BT_CSIP_ERROR_LOCK_ALREADY_GRANTED 0x84
87
96#define BT_CSIP_DATA_RSI(_rsi) BT_DATA(BT_DATA_CSIS_RSI, _rsi, BT_CSIP_RSI_SIZE)
97
103
117 void (*lock_changed)(struct bt_conn *conn,
118 struct bt_csip_set_member_svc_inst *svc_inst,
119 bool locked);
120
135 struct bt_csip_set_member_svc_inst *svc_inst);
136};
137
148
156
165
178
181
182#if CONFIG_BT_CSIP_SET_MEMBER_MAX_INSTANCE_COUNT > 1 || defined(__DOXYGEN__)
192 const struct bt_gatt_service *parent;
193#endif /* CONFIG_BT_CSIP_SET_MEMBER_MAX_INSTANCE_COUNT > 1 */
194};
195
206
223 struct bt_csip_set_member_svc_inst **svc_inst);
224
235
243 const uint8_t sirk[BT_CSIP_SIRK_SIZE]);
244
272 uint8_t rank);
273
318
329 struct bt_csip_set_member_set_info *info);
330
343
358 bool lock, bool force);
359
387
401
407
418 struct bt_conn *conn,
419 const struct bt_csip_set_coordinator_set_member *member,
420 int err, size_t set_count);
421
431
446
453typedef void (*bt_csip_set_coordinator_lock_set_cb)(int err);
454
466 struct bt_csip_set_coordinator_csis_inst *inst, bool locked);
467
477
494 struct bt_conn *conn, const struct bt_csip_set_coordinator_csis_inst *inst);
495
511 const struct bt_csip_set_coordinator_set_info *set_info,
512 int err, bool locked,
514
541
551 struct bt_data *data);
552
561
574 const struct bt_csip_set_coordinator_set_info *set_info,
575 struct bt_csip_set_coordinator_set_member *members[],
576 size_t count);
577
602 const struct bt_csip_set_coordinator_set_member *members[],
603 uint8_t count,
604 const struct bt_csip_set_coordinator_set_info *set_info,
606
624 uint8_t count,
625 const struct bt_csip_set_coordinator_set_info *set_info);
626
642 uint8_t count,
643 const struct bt_csip_set_coordinator_set_info *set_info);
644
645#ifdef __cplusplus
646}
647#endif
648
652
653#endif /* ZEPHYR_SUBSYS_BLUETOOTH_AUDIO_CSIP_H_ */
Bluetooth device address definitions and utilities.
Bluetooth Assigned Numbers, codes and identifiers.
Bluetooth subsystem core APIs.
Bluetooth connection handling.
Bluetooth data types and helpers.
Bluetooth Generic Access Profile defines and Assigned Numbers.
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:510
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:573
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.
#define BT_CSIP_SIRK_SIZE
Size of the Set Identification Resolving Key (SIRK).
Definition csip.h:71
#define BT_CSIP_SET_COORDINATOR_MAX_CSIS_INSTANCES
Defines the maximum number of Coordinated Set Identification service instances for the Coordinated Se...
Definition csip.h:58
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:74
int bt_csip_set_coordinator_discover(struct bt_conn *conn)
Initialise the csip_set_coordinator instance for a connection.
struct bt_csip_set_coordinator_set_member * bt_csip_set_coordinator_set_member_by_conn(const struct bt_conn *conn)
Get the set member from a connection pointer.
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.
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:465
void(* bt_csip_set_coordinator_lock_set_cb)(int err)
Callback for locking a set across one or more devices.
Definition csip.h:453
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.
bool bt_csip_set_coordinator_is_set_member(const uint8_t sirk[16], struct bt_data *data)
Check if advertising data indicates a set member.
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_coordinator_sirk_changed_cb)(struct bt_csip_set_coordinator_csis_inst *inst)
Callback when the SIRK value of a set of a connected device changes.
Definition csip.h:475
int bt_csip_set_member_get_info(const struct bt_csip_set_member_svc_inst *svc_inst, struct bt_csip_set_member_set_info *info)
Get information about a service instances.
int bt_csip_set_member_sirk(struct bt_csip_set_member_svc_inst *svc_inst, const uint8_t sirk[16])
Set the SIRK of a service instance.
void(* bt_csip_set_coordinator_size_changed_cb)(struct bt_conn *conn, const struct bt_csip_set_coordinator_csis_inst *inst)
Callback when the size of a set of a connected device changes.
Definition csip.h:493
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:417
int bt_csip_set_member_set_size_and_rank(struct bt_csip_set_member_svc_inst *svc_inst, uint8_t size, uint8_t rank)
Set a new size and rank for a service instance.
struct _snode sys_snode_t
Single-linked list node structure.
Definition slist.h:39
Public kernel APIs.
#define bool
Definition stdbool.h:13
__UINT8_TYPE__ uint8_t
Definition stdint.h:88
Bluetooth LE Device Address.
Definition addr.h:49
Opaque type representing a connection to a remote device.
Struct to hold the Coordinated Set Identification Profile Set Coordinator callbacks.
Definition csip.h:520
bt_csip_set_coordinator_lock_set_cb lock_set
Callback when locking a set has finished.
Definition csip.h:524
bt_csip_set_coordinator_sirk_changed_cb sirk_changed
Callback when a set's SIRK has changed.
Definition csip.h:530
bt_csip_set_coordinator_discover_cb discover
Callback when discovery has finished.
Definition csip.h:522
bt_csip_set_coordinator_size_changed_cb size_changed
Callback when a set's size has changed.
Definition csip.h:532
bt_csip_set_coordinator_lock_set_cb release_set
Callback when unlocking a set has finished.
Definition csip.h:526
bt_csip_set_coordinator_lock_changed_cb lock_changed
Callback when a set's lock state has changed.
Definition csip.h:528
bt_csip_set_coordinator_ordered_access_cb_t ordered_access
Callback for the ordered access procedure.
Definition csip.h:534
Struct representing a coordinated set instance on a remote device.
Definition csip.h:394
struct bt_csip_set_coordinator_set_info info
Information about the coordinated set.
Definition csip.h:396
void * svc_inst
Internally used pointer value.
Definition csip.h:399
Information about a specific set.
Definition csip.h:361
uint8_t rank
The rank of the set on the remote device.
Definition csip.h:382
uint8_t sirk[16]
The 16 octet set Set Identity Resolving Key (SIRK).
Definition csip.h:368
bool lockable
Whether or not the set can be locked on this device.
Definition csip.h:385
uint8_t set_size
The size of the set.
Definition csip.h:375
Struct representing a remote device as a set member.
Definition csip.h:403
struct bt_csip_set_coordinator_csis_inst insts[0]
Array of Coordinated Set Identification Service instances for the remote device.
Definition csip.h:405
Callback structure for the Coordinated Set Identification Service.
Definition csip.h:105
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:134
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:117
Register structure for Coordinated Set Identification Service.
Definition csip.h:139
struct bt_csip_set_member_cb * cb
Pointer to the callback structure.
Definition csip.h:180
const struct bt_gatt_service * parent
Parent service pointer.
Definition csip.h:192
uint8_t sirk[16]
The unique Set Identity Resolving Key (SIRK).
Definition csip.h:155
bool lockable
Boolean to set whether the set is lockable by clients.
Definition csip.h:164
uint8_t rank
Rank of this device in this set.
Definition csip.h:177
uint8_t set_size
Size of the set.
Definition csip.h:147
Struct to hold information about a service instance.
Definition csip.h:275
bool lockable
Whether the set is lockable.
Definition csip.h:301
bt_addr_le_t lock_client_addr
The address of the client that currently holds the lock.
Definition csip.h:316
uint8_t rank
The rank.
Definition csip.h:293
bool locked
Whether the set is currently locked.
Definition csip.h:309
uint8_t sirk[16]
The 16-octet SIRK.
Definition csip.h:277
uint8_t set_size
The set size.
Definition csip.h:285
Opaque Coordinated Set Identification Service instance.
Bluetooth data.
Definition data.h:40
GATT Service structure.
Definition gatt.h:332