7#ifndef BT_AMS_CLIENT_H_
8#define BT_AMS_CLIENT_H_
18#include <zephyr/bluetooth/gatt.h>
19#include <zephyr/bluetooth/conn.h>
27#define BT_UUID_AMS_VAL \
28 BT_UUID_128_ENCODE(0x89d3502b, 0x0f36, 0x433a, 0x8ef4, 0xc502ad55f8dc)
31#define BT_UUID_AMS_REMOTE_COMMAND_VAL \
32 BT_UUID_128_ENCODE(0x9b3c81d8, 0x57b1, 0x4a8a, 0xb8df, 0x0e56f7ca51c2)
35#define BT_UUID_AMS_ENTITY_UPDATE_VAL \
36 BT_UUID_128_ENCODE(0x2f7cabce, 0x808d, 0x411f, 0x9a0c, 0xbb92ba96c102)
39#define BT_UUID_AMS_ENTITY_ATTRIBUTE_VAL \
40 BT_UUID_128_ENCODE(0xc6b2f38c, 0x23ab, 0x46d8, 0xa6ab, 0xa3a870bbd5d7)
42#define BT_UUID_AMS BT_UUID_DECLARE_128(BT_UUID_AMS_VAL)
43#define BT_UUID_AMS_REMOTE_COMMAND \
44 BT_UUID_DECLARE_128(BT_UUID_AMS_REMOTE_COMMAND_VAL)
45#define BT_UUID_AMS_ENTITY_UPDATE \
46 BT_UUID_DECLARE_128(BT_UUID_AMS_ENTITY_UPDATE_VAL)
47#define BT_UUID_AMS_ENTITY_ATTRIBUTE BT_UUID_DECLARE_128(BT_UUID_AMS_ENTITY_ATTRIBUTE_VAL)
50#define BT_AMS_EU_NOTIF_ENTITY_IDX 0
52#define BT_AMS_EU_NOTIF_ATTRIBUTE_IDX 1
54#define BT_AMS_EU_NOTIF_FLAGS_IDX 2
56#define BT_AMS_EU_NOTIF_VALUE_IDX 3
59#define BT_AMS_ENTITY_UPDATE_FLAG_TRUNCATED 0
62#define BT_AMS_EU_CMD_ENTITY_IDX 0
64#define BT_AMS_EU_CMD_ATTRIBUTE_IDX 1
66#define BT_AMS_EU_CMD_ATTRIBUTE_COUNT_MAX 4
69#define BT_AMS_EA_CMD_ENTITY_IDX 0
71#define BT_AMS_EA_CMD_ATTRIBUTE_IDX 1
73#define BT_AMS_EA_CMD_LEN 2
76#define BT_ATT_ERR_AMS_MS_INVALID_STATE 0xA0
78#define BT_ATT_ERR_AMS_MS_INVALID_COMMAND 0xA1
80#define BT_ATT_ERR_AMS_MS_ABSENT_ATTRIBUTE 0xA2
229 uint8_t err,
const uint8_t *data,
size_t len);
int bt_ams_write_entity_attribute(struct bt_ams_client *ams_c, const struct bt_ams_entity_attribute *ent_attr, bt_ams_write_cb func)
Write data to the Entity Attribute characteristic.
int bt_ams_unsubscribe_entity_update(struct bt_ams_client *ams_c)
Unsubscribe from the Entity Update notification.
#define BT_AMS_EU_CMD_ATTRIBUTE_COUNT_MAX
Entity Update command: Maximum value of Attribute ID count.
Definition ams_client.h:66
bt_ams_player_attribute_id
Player Attribute ID values.
Definition ams_client.h:108
@ BT_AMS_PLAYER_ATTRIBUTE_ID_PLAYBACK_INFO
Definition ams_client.h:110
@ BT_AMS_PLAYER_ATTRIBUTE_ID_VOLUME
Definition ams_client.h:111
@ BT_AMS_PLAYER_ATTRIBUTE_ID_NAME
Definition ams_client.h:109
bt_ams_repeat_mode
Repeat Mode constants.
Definition ams_client.h:130
@ BT_AMS_REPEAT_MODE_ONE
Definition ams_client.h:132
@ BT_AMS_REPEAT_MODE_OFF
Definition ams_client.h:131
@ BT_AMS_REPEAT_MODE_ALL
Definition ams_client.h:133
int bt_ams_write_entity_update(struct bt_ams_client *ams_c, const struct bt_ams_entity_attribute_list *ent_attr_list, bt_ams_write_cb func)
Write data to the Entity Update characteristic.
int bt_ams_handles_assign(struct bt_gatt_dm *dm, struct bt_ams_client *ams_c)
Assign handles to the AMS Client instance.
bt_ams_entity_id
Entity ID values.
Definition ams_client.h:101
@ BT_AMS_ENTITY_ID_PLAYER
Definition ams_client.h:102
@ BT_AMS_ENTITY_ID_TRACK
Definition ams_client.h:104
@ BT_AMS_ENTITY_ID_QUEUE
Definition ams_client.h:103
bt_ams_queue_attribute_id
Queue Attribute ID values.
Definition ams_client.h:115
@ BT_AMS_QUEUE_ATTRIBUTE_ID_REPEAT_MODE
Definition ams_client.h:119
@ BT_AMS_QUEUE_ATTRIBUTE_ID_COUNT
Definition ams_client.h:117
@ BT_AMS_QUEUE_ATTRIBUTE_ID_INDEX
Definition ams_client.h:116
@ BT_AMS_QUEUE_ATTRIBUTE_ID_SHUFFLE_MODE
Definition ams_client.h:118
bt_ams_remote_command_id
Remote Command ID values.
Definition ams_client.h:83
@ BT_AMS_REMOTE_COMMAND_ID_VOLUME_DOWN
Definition ams_client.h:90
@ BT_AMS_REMOTE_COMMAND_ID_TOGGLE_PLAY_PAUSE
Definition ams_client.h:86
@ BT_AMS_REMOTE_COMMAND_ID_PLAY
Definition ams_client.h:84
@ BT_AMS_REMOTE_COMMAND_ID_LIKE_TRACK
Definition ams_client.h:95
@ BT_AMS_REMOTE_COMMAND_ID_DISLIKE_TRACK
Definition ams_client.h:96
@ BT_AMS_REMOTE_COMMAND_ID_NEXT_TRACK
Definition ams_client.h:87
@ BT_AMS_REMOTE_COMMAND_ID_BOOKMARK_TRACK
Definition ams_client.h:97
@ BT_AMS_REMOTE_COMMAND_ID_SKIP_BACKWARD
Definition ams_client.h:94
@ BT_AMS_REMOTE_COMMAND_ID_SKIP_FORWARD
Definition ams_client.h:93
@ BT_AMS_REMOTE_COMMAND_ID_PAUSE
Definition ams_client.h:85
@ BT_AMS_REMOTE_COMMAND_ID_VOLUME_UP
Definition ams_client.h:89
@ BT_AMS_REMOTE_COMMAND_ID_ADVANCE_SHUFFLE_MODE
Definition ams_client.h:92
@ BT_AMS_REMOTE_COMMAND_ID_PREVIOUS_TRACK
Definition ams_client.h:88
@ BT_AMS_REMOTE_COMMAND_ID_ADVANCE_REPEAT_MODE
Definition ams_client.h:91
int bt_ams_subscribe_remote_command(struct bt_ams_client *ams_c, bt_ams_remote_command_notify_cb func)
Subscribe to the Remote Command notification.
void(* bt_ams_read_cb)(struct bt_ams_client *ams_c, uint8_t err, const uint8_t *data, size_t len)
Read response callback function.
Definition ams_client.h:228
void(* bt_ams_entity_update_notify_cb)(struct bt_ams_client *ams_c, const struct bt_ams_entity_update_notif *notif, int err)
Entity Update notification callback function.
Definition ams_client.h:208
#define BT_AMS_EA_CMD_LEN
Entity Attribute command length.
Definition ams_client.h:73
int bt_ams_unsubscribe_remote_command(struct bt_ams_client *ams_c)
Unsubscribe from the Remote Command notification.
int bt_ams_read_entity_attribute(struct bt_ams_client *ams_c, bt_ams_read_cb func)
Read data from the Entity Attribute characteristic.
bt_ams_shuffle_mode
Shuffle Mode constants.
Definition ams_client.h:123
@ BT_AMS_SHUFFLE_MODE_ALL
Definition ams_client.h:126
@ BT_AMS_SHUFFLE_MODE_ONE
Definition ams_client.h:125
@ BT_AMS_SHUFFLE_MODE_OFF
Definition ams_client.h:124
bt_ams_track_attribute_id
Track Attribute ID values.
Definition ams_client.h:137
@ BT_AMS_TRACK_ATTRIBUTE_ID_DURATION
Definition ams_client.h:141
@ BT_AMS_TRACK_ATTRIBUTE_ID_ALBUM
Definition ams_client.h:139
@ BT_AMS_TRACK_ATTRIBUTE_ID_TITLE
Definition ams_client.h:140
@ BT_AMS_TRACK_ATTRIBUTE_ID_ARTIST
Definition ams_client.h:138
int bt_ams_client_init(struct bt_ams_client *ams_c)
Initialize the AMS Client instance.
void(* bt_ams_remote_command_notify_cb)(struct bt_ams_client *ams_c, const uint8_t *data, size_t len)
Remote Command notification callback function.
Definition ams_client.h:196
int bt_ams_subscribe_entity_update(struct bt_ams_client *ams_c, bt_ams_entity_update_notify_cb func)
Subscribe to the Entity Update notification.
int bt_ams_write_remote_command(struct bt_ams_client *ams_c, enum bt_ams_remote_command_id command, bt_ams_write_cb func)
Write data to the Remote Command characteristic.
void(* bt_ams_write_cb)(struct bt_ams_client *ams_c, uint8_t err)
Write response callback function.
Definition ams_client.h:218
uint8_t data[2]
Definition ams_client.h:296
bt_ams_read_cb read_cb
Definition ams_client.h:302
uint16_t handle
Definition ams_client.h:287
struct bt_gatt_read_params read_params
Definition ams_client.h:299
struct bt_gatt_write_params write_params
Definition ams_client.h:290
bt_ams_write_cb write_cb
Definition ams_client.h:293
Definition ams_client.h:285
bt_ams_write_cb write_cb
Definition ams_client.h:278
struct bt_gatt_write_params write_params
Definition ams_client.h:275
uint16_t handle_ccc
Definition ams_client.h:266
uint16_t handle
Definition ams_client.h:263
bt_ams_entity_update_notify_cb notify_cb
Definition ams_client.h:272
uint8_t data[4+1]
Definition ams_client.h:281
struct bt_gatt_subscribe_params notif_params
Definition ams_client.h:269
Definition ams_client.h:261
struct bt_gatt_subscribe_params notif_params
Definition ams_client.h:245
uint8_t data
Definition ams_client.h:257
bt_ams_remote_command_notify_cb notify_cb
Definition ams_client.h:248
bt_ams_write_cb write_cb
Definition ams_client.h:254
uint16_t handle
Definition ams_client.h:239
uint16_t handle_ccc
Definition ams_client.h:242
struct bt_gatt_write_params write_params
Definition ams_client.h:251
Definition ams_client.h:237
struct bt_ams_client::bt_ams_entity_update_characteristic entity_update
atomic_t state
Definition ams_client.h:306
struct bt_conn * conn
Definition ams_client.h:234
struct bt_ams_client::bt_ams_remote_command_characteristic remote_command
struct bt_ams_client::bt_ams_entity_attribute_characteristic entity_attribute
AMS client structure, which contains various status information for the client.
Definition ams_client.h:232
union bt_ams_entity_attribute_list::@172 attribute
enum bt_ams_queue_attribute_id * queue
Definition ams_client.h:165
enum bt_ams_entity_id entity
Definition ams_client.h:160
size_t attribute_count
Definition ams_client.h:170
enum bt_ams_player_attribute_id * player
Definition ams_client.h:164
enum bt_ams_track_attribute_id * track
Definition ams_client.h:166
Structure for Entity Attribute pair list.
Definition ams_client.h:158
union bt_ams_entity_attribute::@171 attribute
enum bt_ams_entity_id entity
Definition ams_client.h:147
enum bt_ams_player_attribute_id player
Definition ams_client.h:151
enum bt_ams_queue_attribute_id queue
Definition ams_client.h:152
enum bt_ams_track_attribute_id track
Definition ams_client.h:153
Structure for Entity Attribute pair.
Definition ams_client.h:145
size_t len
Definition ams_client.h:185
const uint8_t * data
Definition ams_client.h:182
struct bt_ams_entity_attribute ent_attr
Definition ams_client.h:176
uint8_t flags
Definition ams_client.h:179
Structure for Entity Update notification.
Definition ams_client.h:174