Skip to content

Commit 2165fe6

Browse files
committed
NavigationService: Autostart navigation app on nav command
When a paired device sends a navigation message, the navigation service will automatically trigger the navigation app to open if there is no app already loaded.
1 parent ecf24a8 commit 2165fe6

File tree

7 files changed

+25
-2
lines changed

7 files changed

+25
-2
lines changed

src/components/ble/NavigationService.cpp

+3-1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
*/
1818

1919
#include "components/ble/NavigationService.h"
20+
#include "systemtask/SystemTask.h"
2021

2122
namespace {
2223
// 0001yyxx-78fc-48fe-8e23-433b3a1942d0
@@ -43,7 +44,7 @@ namespace {
4344
}
4445
} // namespace
4546

46-
Pinetime::Controllers::NavigationService::NavigationService() {
47+
Pinetime::Controllers::NavigationService::NavigationService(Pinetime::System::SystemTask& systemTask) : systemTask {systemTask} {
4748
characteristicDefinition[0] = {.uuid = &navFlagCharUuid.u,
4849
.access_cb = NAVCallback,
4950
.arg = this,
@@ -96,6 +97,7 @@ int Pinetime::Controllers::NavigationService::OnCommand(struct ble_gatt_access_c
9697
} else if (ble_uuid_cmp(ctxt->chr->uuid, &navProgressCharUuid.u) == 0) {
9798
m_progress = data[0];
9899
}
100+
systemTask.PushMessage(Pinetime::System::Messages::OnNavChange);
99101
}
100102
return 0;
101103
}

src/components/ble/NavigationService.h

+8-1
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,16 @@
2727
#undef min
2828

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

3237
class NavigationService {
3338
public:
34-
NavigationService();
39+
explicit NavigationService(Pinetime::System::SystemTask& systemTask);
3540

3641
void Init();
3742

@@ -53,6 +58,8 @@ namespace Pinetime {
5358
std::string m_narrative;
5459
std::string m_manDist;
5560
int m_progress;
61+
62+
Pinetime::System::SystemTask& systemTask;
5663
};
5764
}
5865
}

src/components/ble/NimbleController.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ NimbleController::NimbleController(Pinetime::System::SystemTask& systemTask,
4444
currentTimeService {dateTimeController},
4545
musicService {systemTask, *this},
4646
weatherService {dateTimeController},
47+
navService {systemTask},
4748
batteryInformationService {batteryController},
4849
immediateAlertService {systemTask, notificationManager},
4950
heartRateService {*this, heartRateController},

src/displayapp/DisplayApp.cpp

+8
Original file line numberDiff line numberDiff line change
@@ -369,6 +369,14 @@ void DisplayApp::Refresh() {
369369
LoadNewScreen(Apps::Music, DisplayApp::FullRefreshDirections::Up);
370370
}
371371
break;
372+
case Messages::NavStarted:
373+
if (currentApp == Apps::Clock && AppAvailable(Apps::Navigation)) {
374+
if (state != States::Running) {
375+
PushMessageToSystemTask(System::Messages::GoToRunning);
376+
}
377+
LoadNewScreen(Apps::Navigation, DisplayApp::FullRefreshDirections::Up);
378+
}
379+
break;
372380
case Messages::TimerDone:
373381
if (state != States::Running) {
374382
PushMessageToSystemTask(System::Messages::GoToRunning);

src/displayapp/Messages.h

+1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ namespace Pinetime {
1616
ButtonDoubleClicked,
1717
NewNotification,
1818
MusicStarted,
19+
NavStarted,
1920
TimerDone,
2021
BleFirmwareUpdateStarted,
2122
// Resets the screen timeout timer when awake

src/systemtask/Messages.h

+1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ namespace Pinetime {
2525
OnChargingEvent,
2626
OnPairing,
2727
OnMusicStarted,
28+
OnNavChange,
2829
SetOffAlarm,
2930
MeasureBatteryTimerExpired,
3031
BatteryPercentageUpdated,

src/systemtask/SystemTask.cpp

+3
Original file line numberDiff line numberDiff line change
@@ -361,6 +361,9 @@ void SystemTask::Work() {
361361
case Messages::OnMusicStarted:
362362
displayApp.PushMessage(Pinetime::Applications::Display::Messages::MusicStarted);
363363
break;
364+
case Messages::OnNavChange:
365+
displayApp.PushMessage(Pinetime::Applications::Display::Messages::NavStarted);
366+
break;
364367
default:
365368
break;
366369
}

0 commit comments

Comments
 (0)