Skip to content

Commit a1b3537

Browse files
authored
Merge pull request #359 from Avamander/patch-2
Used a macro for UUID generation, switched from C-style casts to reinterpret_cast, renamed callback
2 parents 314a8eb + 8568b5f commit a1b3537

2 files changed

Lines changed: 95 additions & 157 deletions

File tree

Lines changed: 73 additions & 123 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* Copyright (C) 2020 JF, Adam Pigg, Avamander
1+
/* Copyright (C) 2020-2021 JF, Adam Pigg, Avamander
22
33
This file is part of InfiniTime.
44
@@ -18,117 +18,68 @@
1818
#include "MusicService.h"
1919
#include "systemtask/SystemTask.h"
2020

21-
int MSCallback(uint16_t conn_handle, uint16_t attr_handle, struct ble_gatt_access_ctxt* ctxt, void* arg) {
22-
auto musicService = static_cast<Pinetime::Controllers::MusicService*>(arg);
23-
return musicService->OnCommand(conn_handle, attr_handle, ctxt);
21+
int MusicCallback(uint16_t conn_handle, uint16_t attr_handle, struct ble_gatt_access_ctxt* ctxt, void* arg) {
22+
return static_cast<Pinetime::Controllers::MusicService*>(arg)->OnCommand(conn_handle, attr_handle, ctxt);
2423
}
2524

2625
Pinetime::Controllers::MusicService::MusicService(Pinetime::System::SystemTask& system) : m_system(system) {
27-
msUuid.value[14] = msId[0];
28-
msUuid.value[15] = msId[1];
29-
30-
msEventCharUuid.value[12] = msEventCharId[0];
31-
msEventCharUuid.value[13] = msEventCharId[1];
32-
msEventCharUuid.value[14] = msId[0];
33-
msEventCharUuid.value[15] = msId[1];
34-
35-
msStatusCharUuid.value[12] = msStatusCharId[0];
36-
msStatusCharUuid.value[13] = msStatusCharId[1];
37-
msStatusCharUuid.value[14] = msId[0];
38-
msStatusCharUuid.value[15] = msId[1];
39-
40-
msTrackCharUuid.value[12] = msTrackCharId[0];
41-
msTrackCharUuid.value[13] = msTrackCharId[1];
42-
msTrackCharUuid.value[14] = msId[0];
43-
msTrackCharUuid.value[15] = msId[1];
44-
45-
msArtistCharUuid.value[12] = msArtistCharId[0];
46-
msArtistCharUuid.value[13] = msArtistCharId[1];
47-
msArtistCharUuid.value[14] = msId[0];
48-
msArtistCharUuid.value[15] = msId[1];
49-
50-
msAlbumCharUuid.value[12] = msAlbumCharId[0];
51-
msAlbumCharUuid.value[13] = msAlbumCharId[1];
52-
msAlbumCharUuid.value[14] = msId[0];
53-
msAlbumCharUuid.value[15] = msId[1];
54-
55-
msPositionCharUuid.value[12] = msPositionCharId[0];
56-
msPositionCharUuid.value[13] = msPositionCharId[1];
57-
msPositionCharUuid.value[14] = msId[0];
58-
msPositionCharUuid.value[15] = msId[1];
59-
60-
msTotalLengthCharUuid.value[12] = msTotalLengthCharId[0];
61-
msTotalLengthCharUuid.value[13] = msTotalLengthCharId[1];
62-
msTotalLengthCharUuid.value[14] = msId[0];
63-
msTotalLengthCharUuid.value[15] = msId[1];
64-
65-
msTrackNumberCharUuid.value[12] = msTrackNumberCharId[0];
66-
msTrackNumberCharUuid.value[13] = msTrackNumberCharId[1];
67-
msTrackNumberCharUuid.value[14] = msId[0];
68-
msTrackNumberCharUuid.value[15] = msId[1];
69-
70-
msTrackTotalCharUuid.value[12] = msTrackTotalCharId[0];
71-
msTrackTotalCharUuid.value[13] = msTrackTotalCharId[1];
72-
msTrackTotalCharUuid.value[14] = msId[0];
73-
msTrackTotalCharUuid.value[15] = msId[1];
74-
75-
msPlaybackSpeedCharUuid.value[12] = msPlaybackSpeedCharId[0];
76-
msPlaybackSpeedCharUuid.value[13] = msPlaybackSpeedCharId[1];
77-
msPlaybackSpeedCharUuid.value[14] = msId[0];
78-
msPlaybackSpeedCharUuid.value[15] = msId[1];
79-
80-
msRepeatCharUuid.value[12] = msRepeatCharId[0];
81-
msRepeatCharUuid.value[13] = msRepeatCharId[1];
82-
msRepeatCharUuid.value[14] = msId[0];
83-
msRepeatCharUuid.value[15] = msId[1];
84-
85-
msShuffleCharUuid.value[12] = msShuffleCharId[0];
86-
msShuffleCharUuid.value[13] = msShuffleCharId[1];
87-
msShuffleCharUuid.value[14] = msId[0];
88-
msShuffleCharUuid.value[15] = msId[1];
89-
90-
characteristicDefinition[0] = {.uuid = (ble_uuid_t*) (&msEventCharUuid),
91-
.access_cb = MSCallback,
26+
characteristicDefinition[0] = {.uuid = reinterpret_cast<ble_uuid_t*>(&msEventCharUuid),
27+
.access_cb = MusicCallback,
9228
.arg = this,
9329
.flags = BLE_GATT_CHR_F_NOTIFY,
9430
.val_handle = &eventHandle};
95-
characteristicDefinition[1] = {
96-
.uuid = (ble_uuid_t*) (&msStatusCharUuid), .access_cb = MSCallback, .arg = this, .flags = BLE_GATT_CHR_F_WRITE | BLE_GATT_CHR_F_READ};
97-
characteristicDefinition[2] = {
98-
.uuid = (ble_uuid_t*) (&msTrackCharUuid), .access_cb = MSCallback, .arg = this, .flags = BLE_GATT_CHR_F_WRITE | BLE_GATT_CHR_F_READ};
99-
characteristicDefinition[3] = {
100-
.uuid = (ble_uuid_t*) (&msArtistCharUuid), .access_cb = MSCallback, .arg = this, .flags = BLE_GATT_CHR_F_WRITE | BLE_GATT_CHR_F_READ};
101-
characteristicDefinition[4] = {
102-
.uuid = (ble_uuid_t*) (&msAlbumCharUuid), .access_cb = MSCallback, .arg = this, .flags = BLE_GATT_CHR_F_WRITE | BLE_GATT_CHR_F_READ};
103-
characteristicDefinition[5] = {
104-
.uuid = (ble_uuid_t*) (&msPositionCharUuid), .access_cb = MSCallback, .arg = this, .flags = BLE_GATT_CHR_F_WRITE | BLE_GATT_CHR_F_READ};
105-
characteristicDefinition[6] = {.uuid = (ble_uuid_t*) (&msTotalLengthCharUuid),
106-
.access_cb = MSCallback,
31+
characteristicDefinition[1] = {.uuid = reinterpret_cast<ble_uuid_t*>(&msStatusCharUuid),
32+
.access_cb = MusicCallback,
10733
.arg = this,
10834
.flags = BLE_GATT_CHR_F_WRITE | BLE_GATT_CHR_F_READ};
109-
characteristicDefinition[7] = {.uuid = (ble_uuid_t*) (&msTotalLengthCharUuid),
110-
.access_cb = MSCallback,
35+
characteristicDefinition[2] = {.uuid = reinterpret_cast<ble_uuid_t*>(&msTrackCharUuid),
36+
.access_cb = MusicCallback,
11137
.arg = this,
11238
.flags = BLE_GATT_CHR_F_WRITE | BLE_GATT_CHR_F_READ};
113-
characteristicDefinition[8] = {.uuid = (ble_uuid_t*) (&msTrackNumberCharUuid),
114-
.access_cb = MSCallback,
39+
characteristicDefinition[3] = {.uuid = reinterpret_cast<ble_uuid_t*>(&msArtistCharUuid),
40+
.access_cb = MusicCallback,
11541
.arg = this,
11642
.flags = BLE_GATT_CHR_F_WRITE | BLE_GATT_CHR_F_READ};
117-
characteristicDefinition[9] = {.uuid = (ble_uuid_t*) (&msTrackTotalCharUuid),
118-
.access_cb = MSCallback,
43+
characteristicDefinition[4] = {.uuid = reinterpret_cast<ble_uuid_t*>(&msAlbumCharUuid),
44+
.access_cb = MusicCallback,
11945
.arg = this,
12046
.flags = BLE_GATT_CHR_F_WRITE | BLE_GATT_CHR_F_READ};
121-
characteristicDefinition[10] = {.uuid = (ble_uuid_t*) (&msPlaybackSpeedCharUuid),
122-
.access_cb = MSCallback,
47+
characteristicDefinition[5] = {.uuid = reinterpret_cast<ble_uuid_t*>(&msPositionCharUuid),
48+
.access_cb = MusicCallback,
49+
.arg = this,
50+
.flags = BLE_GATT_CHR_F_WRITE | BLE_GATT_CHR_F_READ};
51+
characteristicDefinition[6] = {.uuid = reinterpret_cast<ble_uuid_t*>(&msTotalLengthCharUuid),
52+
.access_cb = MusicCallback,
53+
.arg = this,
54+
.flags = BLE_GATT_CHR_F_WRITE | BLE_GATT_CHR_F_READ};
55+
characteristicDefinition[7] = {.uuid = reinterpret_cast<ble_uuid_t*>(&msTotalLengthCharUuid),
56+
.access_cb = MusicCallback,
57+
.arg = this,
58+
.flags = BLE_GATT_CHR_F_WRITE | BLE_GATT_CHR_F_READ};
59+
characteristicDefinition[8] = {.uuid = reinterpret_cast<ble_uuid_t*>(&msTrackNumberCharUuid),
60+
.access_cb = MusicCallback,
61+
.arg = this,
62+
.flags = BLE_GATT_CHR_F_WRITE | BLE_GATT_CHR_F_READ};
63+
characteristicDefinition[9] = {.uuid = reinterpret_cast<ble_uuid_t*>(&msTrackTotalCharUuid),
64+
.access_cb = MusicCallback,
65+
.arg = this,
66+
.flags = BLE_GATT_CHR_F_WRITE | BLE_GATT_CHR_F_READ};
67+
characteristicDefinition[10] = {.uuid = reinterpret_cast<ble_uuid_t*>(&msPlaybackSpeedCharUuid),
68+
.access_cb = MusicCallback,
69+
.arg = this,
70+
.flags = BLE_GATT_CHR_F_WRITE | BLE_GATT_CHR_F_READ};
71+
characteristicDefinition[11] = {.uuid = reinterpret_cast<ble_uuid_t*>(&msRepeatCharUuid),
72+
.access_cb = MusicCallback,
73+
.arg = this,
74+
.flags = BLE_GATT_CHR_F_WRITE | BLE_GATT_CHR_F_READ};
75+
characteristicDefinition[12] = {.uuid = reinterpret_cast<ble_uuid_t*>(&msShuffleCharUuid),
76+
.access_cb = MusicCallback,
12377
.arg = this,
12478
.flags = BLE_GATT_CHR_F_WRITE | BLE_GATT_CHR_F_READ};
125-
characteristicDefinition[11] = {
126-
.uuid = (ble_uuid_t*) (&msRepeatCharUuid), .access_cb = MSCallback, .arg = this, .flags = BLE_GATT_CHR_F_WRITE | BLE_GATT_CHR_F_READ};
127-
characteristicDefinition[12] = {
128-
.uuid = (ble_uuid_t*) (&msShuffleCharUuid), .access_cb = MSCallback, .arg = this, .flags = BLE_GATT_CHR_F_WRITE | BLE_GATT_CHR_F_READ};
12979
characteristicDefinition[13] = {0};
13080

131-
serviceDefinition[0] = {.type = BLE_GATT_SVC_TYPE_PRIMARY, .uuid = (ble_uuid_t*) &msUuid, .characteristics = characteristicDefinition};
81+
serviceDefinition[0] = {
82+
.type = BLE_GATT_SVC_TYPE_PRIMARY, .uuid = reinterpret_cast<ble_uuid_t*>(&msUuid), .characteristics = characteristicDefinition};
13283
serviceDefinition[1] = {0};
13384

13485
artistName = "Waiting for";
@@ -143,7 +94,7 @@ Pinetime::Controllers::MusicService::MusicService(Pinetime::System::SystemTask&
14394
}
14495

14596
void Pinetime::Controllers::MusicService::Init() {
146-
int res = 0;
97+
uint8_t res = 0;
14798
res = ble_gatts_count_cfg(serviceDefinition);
14899
ASSERT(res == 0);
149100

@@ -152,60 +103,67 @@ void Pinetime::Controllers::MusicService::Init() {
152103
}
153104

154105
int Pinetime::Controllers::MusicService::OnCommand(uint16_t conn_handle, uint16_t attr_handle, struct ble_gatt_access_ctxt* ctxt) {
155-
156106
if (ctxt->op == BLE_GATT_ACCESS_OP_WRITE_CHR) {
157107
size_t notifSize = OS_MBUF_PKTLEN(ctxt->om);
158-
uint8_t data[notifSize + 1];
108+
char data[notifSize + 1];
159109
data[notifSize] = '\0';
160110
os_mbuf_copydata(ctxt->om, 0, notifSize, data);
161-
char* s = (char*) &data[0];
162-
if (ble_uuid_cmp(ctxt->chr->uuid, (ble_uuid_t*) &msArtistCharUuid) == 0) {
111+
char* s = &data[0];
112+
if (ble_uuid_cmp(ctxt->chr->uuid, reinterpret_cast<ble_uuid_t*>(&msArtistCharUuid)) == 0) {
163113
artistName = s;
164-
} else if (ble_uuid_cmp(ctxt->chr->uuid, (ble_uuid_t*) &msTrackCharUuid) == 0) {
114+
} else if (ble_uuid_cmp(ctxt->chr->uuid, reinterpret_cast<ble_uuid_t*>(&msTrackCharUuid)) == 0) {
165115
trackName = s;
166-
} else if (ble_uuid_cmp(ctxt->chr->uuid, (ble_uuid_t*) &msAlbumCharUuid) == 0) {
116+
} else if (ble_uuid_cmp(ctxt->chr->uuid, reinterpret_cast<ble_uuid_t*>(&msAlbumCharUuid)) == 0) {
167117
albumName = s;
168-
} else if (ble_uuid_cmp(ctxt->chr->uuid, (ble_uuid_t*) &msStatusCharUuid) == 0) {
118+
} else if (ble_uuid_cmp(ctxt->chr->uuid, reinterpret_cast<ble_uuid_t*>(&msStatusCharUuid)) == 0) {
169119
playing = s[0];
170-
} else if (ble_uuid_cmp(ctxt->chr->uuid, (ble_uuid_t*) &msRepeatCharUuid) == 0) {
120+
} else if (ble_uuid_cmp(ctxt->chr->uuid, reinterpret_cast<ble_uuid_t*>(&msRepeatCharUuid)) == 0) {
171121
repeat = s[0];
172-
} else if (ble_uuid_cmp(ctxt->chr->uuid, (ble_uuid_t*) &msShuffleCharUuid) == 0) {
122+
} else if (ble_uuid_cmp(ctxt->chr->uuid, reinterpret_cast<ble_uuid_t*>(&msShuffleCharUuid)) == 0) {
173123
shuffle = s[0];
174-
} else if (ble_uuid_cmp(ctxt->chr->uuid, (ble_uuid_t*) &msPositionCharUuid) == 0) {
124+
} else if (ble_uuid_cmp(ctxt->chr->uuid, reinterpret_cast<ble_uuid_t*>(&msPositionCharUuid)) == 0) {
175125
trackProgress = (s[0] << 24) | (s[1] << 16) | (s[2] << 8) | s[3];
176-
} else if (ble_uuid_cmp(ctxt->chr->uuid, (ble_uuid_t*) &msTotalLengthCharUuid) == 0) {
126+
} else if (ble_uuid_cmp(ctxt->chr->uuid, reinterpret_cast<ble_uuid_t*>(&msTotalLengthCharUuid)) == 0) {
177127
trackLength = (s[0] << 24) | (s[1] << 16) | (s[2] << 8) | s[3];
178-
} else if (ble_uuid_cmp(ctxt->chr->uuid, (ble_uuid_t*) &msTrackNumberCharUuid) == 0) {
128+
} else if (ble_uuid_cmp(ctxt->chr->uuid, reinterpret_cast<ble_uuid_t*>(&msTrackNumberCharUuid)) == 0) {
179129
trackNumber = (s[0] << 24) | (s[1] << 16) | (s[2] << 8) | s[3];
180-
} else if (ble_uuid_cmp(ctxt->chr->uuid, (ble_uuid_t*) &msTrackTotalCharUuid) == 0) {
130+
} else if (ble_uuid_cmp(ctxt->chr->uuid, reinterpret_cast<ble_uuid_t*>(&msTrackTotalCharUuid)) == 0) {
181131
tracksTotal = (s[0] << 24) | (s[1] << 16) | (s[2] << 8) | s[3];
182-
} else if (ble_uuid_cmp(ctxt->chr->uuid, (ble_uuid_t*) &msPlaybackSpeedCharUuid) == 0) {
132+
} else if (ble_uuid_cmp(ctxt->chr->uuid, reinterpret_cast<ble_uuid_t*>(&msPlaybackSpeedCharUuid)) == 0) {
183133
playbackSpeed = static_cast<float>(((s[0] << 24) | (s[1] << 16) | (s[2] << 8) | s[3])) / 100.0f;
184134
}
185135
}
186136
return 0;
187137
}
188138

189-
std::string Pinetime::Controllers::MusicService::getAlbum() {
139+
std::string Pinetime::Controllers::MusicService::getAlbum() const {
190140
return albumName;
191141
}
192142

193-
std::string Pinetime::Controllers::MusicService::getArtist() {
143+
std::string Pinetime::Controllers::MusicService::getArtist() const {
194144
return artistName;
195145
}
196146

197-
std::string Pinetime::Controllers::MusicService::getTrack() {
147+
std::string Pinetime::Controllers::MusicService::getTrack() const {
198148
return trackName;
199149
}
200150

201-
bool Pinetime::Controllers::MusicService::isPlaying() {
151+
bool Pinetime::Controllers::MusicService::isPlaying() const {
202152
return playing;
203153
}
204154

205-
float Pinetime::Controllers::MusicService::getPlaybackSpeed() {
155+
float Pinetime::Controllers::MusicService::getPlaybackSpeed() const {
206156
return playbackSpeed;
207157
}
208158

159+
int Pinetime::Controllers::MusicService::getProgress() const {
160+
return trackProgress;
161+
}
162+
163+
int Pinetime::Controllers::MusicService::getTrackLength() const {
164+
return trackLength;
165+
}
166+
209167
void Pinetime::Controllers::MusicService::event(char event) {
210168
auto* om = ble_hs_mbuf_from_flat(&event, 1);
211169

@@ -216,12 +174,4 @@ void Pinetime::Controllers::MusicService::event(char event) {
216174
}
217175

218176
ble_gattc_notify_custom(connectionHandle, eventHandle, om);
219-
}
220-
221-
int Pinetime::Controllers::MusicService::getProgress() {
222-
return trackProgress;
223-
}
224-
225-
int Pinetime::Controllers::MusicService::getTrackLength() {
226-
return trackLength;
227-
}
177+
}

src/components/ble/MusicService.h

Lines changed: 22 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* Copyright (C) 2020 JF, Adam Pigg, Avamander
1+
/* Copyright (C) 2020-2021 JF, Adam Pigg, Avamander
22
33
This file is part of InfiniTime.
44
@@ -29,6 +29,8 @@
2929
// 00000000-78fc-48fe-8e23-433b3a1942d0
3030
#define MUSIC_SERVICE_UUID_BASE \
3131
{ 0xd0, 0x42, 0x19, 0x3a, 0x3b, 0x43, 0x23, 0x8e, 0xfe, 0x48, 0xfc, 0x78, 0x00, 0x00, 0x00, 0x00 }
32+
#define MUSIC_SERVICE_CHAR_UUID(x, y) \
33+
{ 0xd0, 0x42, 0x19, 0x3a, 0x3b, 0x43, 0x23, 0x8e, 0xfe, 0x48, 0xfc, 0x78, x, y, 0x00, 0x00 }
3234

3335
namespace Pinetime {
3436
namespace System {
@@ -46,19 +48,19 @@ namespace Pinetime {
4648

4749
void event(char event);
4850

49-
std::string getArtist();
51+
std::string getArtist() const;
5052

51-
std::string getTrack();
53+
std::string getTrack() const;
5254

53-
std::string getAlbum();
55+
std::string getAlbum() const;
5456

55-
int getProgress();
57+
int getProgress() const;
5658

57-
int getTrackLength();
59+
int getTrackLength() const;
5860

59-
float getPlaybackSpeed();
61+
float getPlaybackSpeed() const;
6062

61-
bool isPlaying();
63+
bool isPlaying() const;
6264

6365
static const char EVENT_MUSIC_OPEN = 0xe0;
6466
static const char EVENT_MUSIC_PLAY = 0x00;
@@ -71,34 +73,20 @@ namespace Pinetime {
7173
enum MusicStatus { NotPlaying = 0x00, Playing = 0x01 };
7274

7375
private:
74-
static constexpr uint8_t msId[2] = {0x00, 0x00};
75-
static constexpr uint8_t msEventCharId[2] = {0x01, 0x00};
76-
static constexpr uint8_t msStatusCharId[2] = {0x02, 0x00};
77-
static constexpr uint8_t msArtistCharId[2] = {0x03, 0x00};
78-
static constexpr uint8_t msTrackCharId[2] = {0x04, 0x00};
79-
static constexpr uint8_t msAlbumCharId[2] = {0x05, 0x00};
80-
static constexpr uint8_t msPositionCharId[2] = {0x06, 0x00};
81-
static constexpr uint8_t msTotalLengthCharId[2] = {0x07, 0x00};
82-
static constexpr uint8_t msTrackNumberCharId[2] = {0x08, 0x00};
83-
static constexpr uint8_t msTrackTotalCharId[2] = {0x09, 0x00};
84-
static constexpr uint8_t msPlaybackSpeedCharId[2] = {0x0a, 0x00};
85-
static constexpr uint8_t msRepeatCharId[2] = {0x0b, 0x00};
86-
static constexpr uint8_t msShuffleCharId[2] = {0x0c, 0x00};
87-
8876
ble_uuid128_t msUuid {.u = {.type = BLE_UUID_TYPE_128}, .value = MUSIC_SERVICE_UUID_BASE};
8977

90-
ble_uuid128_t msEventCharUuid {.u = {.type = BLE_UUID_TYPE_128}, .value = MUSIC_SERVICE_UUID_BASE};
91-
ble_uuid128_t msStatusCharUuid {.u = {.type = BLE_UUID_TYPE_128}, .value = MUSIC_SERVICE_UUID_BASE};
92-
ble_uuid128_t msArtistCharUuid {.u = {.type = BLE_UUID_TYPE_128}, .value = MUSIC_SERVICE_UUID_BASE};
93-
ble_uuid128_t msTrackCharUuid {.u = {.type = BLE_UUID_TYPE_128}, .value = MUSIC_SERVICE_UUID_BASE};
94-
ble_uuid128_t msAlbumCharUuid {.u = {.type = BLE_UUID_TYPE_128}, .value = MUSIC_SERVICE_UUID_BASE};
95-
ble_uuid128_t msPositionCharUuid {.u = {.type = BLE_UUID_TYPE_128}, .value = MUSIC_SERVICE_UUID_BASE};
96-
ble_uuid128_t msTotalLengthCharUuid {.u = {.type = BLE_UUID_TYPE_128}, .value = MUSIC_SERVICE_UUID_BASE};
97-
ble_uuid128_t msTrackNumberCharUuid {.u = {.type = BLE_UUID_TYPE_128}, .value = MUSIC_SERVICE_UUID_BASE};
98-
ble_uuid128_t msTrackTotalCharUuid {.u = {.type = BLE_UUID_TYPE_128}, .value = MUSIC_SERVICE_UUID_BASE};
99-
ble_uuid128_t msPlaybackSpeedCharUuid {.u = {.type = BLE_UUID_TYPE_128}, .value = MUSIC_SERVICE_UUID_BASE};
100-
ble_uuid128_t msRepeatCharUuid {.u = {.type = BLE_UUID_TYPE_128}, .value = MUSIC_SERVICE_UUID_BASE};
101-
ble_uuid128_t msShuffleCharUuid {.u = {.type = BLE_UUID_TYPE_128}, .value = MUSIC_SERVICE_UUID_BASE};
78+
ble_uuid128_t msEventCharUuid {.u = {.type = BLE_UUID_TYPE_128}, .value = MUSIC_SERVICE_CHAR_UUID(0x01, 0x00)};
79+
ble_uuid128_t msStatusCharUuid {.u = {.type = BLE_UUID_TYPE_128}, .value = MUSIC_SERVICE_CHAR_UUID(0x02, 0x00)};
80+
ble_uuid128_t msArtistCharUuid {.u = {.type = BLE_UUID_TYPE_128}, .value = MUSIC_SERVICE_CHAR_UUID(0x03, 0x00)};
81+
ble_uuid128_t msTrackCharUuid {.u = {.type = BLE_UUID_TYPE_128}, .value = MUSIC_SERVICE_CHAR_UUID(0x04, 0x00)};
82+
ble_uuid128_t msAlbumCharUuid {.u = {.type = BLE_UUID_TYPE_128}, .value = MUSIC_SERVICE_CHAR_UUID(0x05, 0x00)};
83+
ble_uuid128_t msPositionCharUuid {.u = {.type = BLE_UUID_TYPE_128}, .value = MUSIC_SERVICE_CHAR_UUID(0x06, 0x00)};
84+
ble_uuid128_t msTotalLengthCharUuid {.u = {.type = BLE_UUID_TYPE_128}, .value = MUSIC_SERVICE_CHAR_UUID(0x07, 0x00)};
85+
ble_uuid128_t msTrackNumberCharUuid {.u = {.type = BLE_UUID_TYPE_128}, .value = MUSIC_SERVICE_CHAR_UUID(0x08, 0x00)};
86+
ble_uuid128_t msTrackTotalCharUuid {.u = {.type = BLE_UUID_TYPE_128}, .value = MUSIC_SERVICE_CHAR_UUID(0x09, 0x00)};
87+
ble_uuid128_t msPlaybackSpeedCharUuid {.u = {.type = BLE_UUID_TYPE_128}, .value = MUSIC_SERVICE_CHAR_UUID(0x0a, 0x00)};
88+
ble_uuid128_t msRepeatCharUuid {.u = {.type = BLE_UUID_TYPE_128}, .value = MUSIC_SERVICE_CHAR_UUID(0x0b, 0x00)};
89+
ble_uuid128_t msShuffleCharUuid {.u = {.type = BLE_UUID_TYPE_128}, .value = MUSIC_SERVICE_CHAR_UUID(0x0c, 0x00)};
10290

10391
struct ble_gatt_chr_def characteristicDefinition[14];
10492
struct ble_gatt_svc_def serviceDefinition[2];

0 commit comments

Comments
 (0)