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
2625Pinetime::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
14596void 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
154105int 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+
209167void 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+ }
0 commit comments