Skip to content

Commit e9df27a

Browse files
committed
MusicService: Autostart music app on music start
When starting music on a paired device, the music service will automatically trigger the music app to open.
1 parent 44be356 commit e9df27a

File tree

7 files changed

+26
-3
lines changed

7 files changed

+26
-3
lines changed

src/components/ble/MusicService.cpp

+4-1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
*/
1818
#include "components/ble/MusicService.h"
1919
#include "components/ble/NimbleController.h"
20+
#include "systemtask/SystemTask.h"
2021
#include <cstring>
2122

2223
namespace {
@@ -53,7 +54,8 @@ namespace {
5354
}
5455
}
5556

56-
Pinetime::Controllers::MusicService::MusicService(Pinetime::Controllers::NimbleController& nimble) : nimble(nimble) {
57+
Pinetime::Controllers::MusicService::MusicService(Pinetime::System::SystemTask& systemTask, Pinetime::Controllers::NimbleController& nimble)
58+
: systemTask {systemTask}, nimble(nimble) {
5759
characteristicDefinition[0] = {.uuid = &msEventCharUuid.u,
5860
.access_cb = MusicCallback,
5961
.arg = this,
@@ -152,6 +154,7 @@ int Pinetime::Controllers::MusicService::OnCommand(struct ble_gatt_access_ctxt*
152154
// These variables need to be updated, because the progress may not be updated immediately,
153155
// leading to getProgress() returning an incorrect position.
154156
if (playing) {
157+
systemTask.PushMessage(Pinetime::System::Messages::OnMusicStarted);
155158
trackProgressUpdateTime = xTaskGetTickCount();
156159
} else {
157160
trackProgress +=

src/components/ble/MusicService.h

+7-1
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,17 @@
2727
#undef min
2828

2929
namespace Pinetime {
30+
31+
namespace System {
32+
class SystemTask;
33+
}
34+
3035
namespace Controllers {
3136
class NimbleController;
3237

3338
class MusicService {
3439
public:
35-
explicit MusicService(NimbleController& nimble);
40+
explicit MusicService(Pinetime::System::SystemTask& systemTask, NimbleController& nimble);
3641

3742
void Init();
3843

@@ -87,6 +92,7 @@ namespace Pinetime {
8792
bool repeat {false};
8893
bool shuffle {false};
8994

95+
Pinetime::System::SystemTask& systemTask;
9096
NimbleController& nimble;
9197
};
9298
}

src/components/ble/NimbleController.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ NimbleController::NimbleController(Pinetime::System::SystemTask& systemTask,
4242
anService {systemTask, notificationManager},
4343
alertNotificationClient {systemTask, notificationManager},
4444
currentTimeService {dateTimeController},
45-
musicService {*this},
45+
musicService {systemTask, *this},
4646
weatherService {dateTimeController},
4747
batteryInformationService {batteryController},
4848
immediateAlertService {systemTask, notificationManager},

src/displayapp/DisplayApp.cpp

+9
Original file line numberDiff line numberDiff line change
@@ -261,6 +261,15 @@ void DisplayApp::Refresh() {
261261
case Messages::NewNotification:
262262
LoadNewScreen(Apps::NotificationsPreview, DisplayApp::FullRefreshDirections::Down);
263263
break;
264+
case Messages::MusicStarted:
265+
if (state != States::Running) {
266+
PushMessageToSystemTask(System::Messages::GoToRunning);
267+
}
268+
// Load music app if not loaded
269+
if (currentApp != Apps::Music) {
270+
LoadNewScreen(Apps::Music, DisplayApp::FullRefreshDirections::Up);
271+
}
272+
break;
264273
case Messages::TimerDone:
265274
if (state != States::Running) {
266275
PushMessageToSystemTask(System::Messages::GoToRunning);

src/displayapp/Messages.h

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ namespace Pinetime {
1515
ButtonLongerPressed,
1616
ButtonDoubleClicked,
1717
NewNotification,
18+
MusicStarted,
1819
TimerDone,
1920
BleFirmwareUpdateStarted,
2021
DimScreen,

src/systemtask/Messages.h

+1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ namespace Pinetime {
2424
OnNewHalfHour,
2525
OnChargingEvent,
2626
OnPairing,
27+
OnMusicStarted,
2728
SetOffAlarm,
2829
MeasureBatteryTimerExpired,
2930
BatteryPercentageUpdated,

src/systemtask/SystemTask.cpp

+3
Original file line numberDiff line numberDiff line change
@@ -385,6 +385,9 @@ void SystemTask::Work() {
385385
nimbleController.DisableRadio();
386386
}
387387
break;
388+
case Messages::OnMusicStarted:
389+
displayApp.PushMessage(Pinetime::Applications::Display::Messages::MusicStarted);
390+
break;
388391
default:
389392
break;
390393
}

0 commit comments

Comments
 (0)