mirror of
https://github.com/InfiniTimeOrg/InfiniTime.git
synced 2024-10-22 23:21:53 +02:00
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.
This commit is contained in:
parent
92c66ed163
commit
0d112cfe55
|
@ -17,6 +17,7 @@
|
|||
*/
|
||||
|
||||
#include "components/ble/NavigationService.h"
|
||||
#include "systemtask/SystemTask.h"
|
||||
|
||||
namespace {
|
||||
// 0001yyxx-78fc-48fe-8e23-433b3a1942d0
|
||||
|
@ -43,7 +44,7 @@ namespace {
|
|||
}
|
||||
} // namespace
|
||||
|
||||
Pinetime::Controllers::NavigationService::NavigationService() {
|
||||
Pinetime::Controllers::NavigationService::NavigationService(Pinetime::System::SystemTask& systemTask) : systemTask {systemTask} {
|
||||
characteristicDefinition[0] = {.uuid = &navFlagCharUuid.u,
|
||||
.access_cb = NAVCallback,
|
||||
.arg = this,
|
||||
|
@ -96,6 +97,7 @@ int Pinetime::Controllers::NavigationService::OnCommand(struct ble_gatt_access_c
|
|||
} else if (ble_uuid_cmp(ctxt->chr->uuid, &navProgressCharUuid.u) == 0) {
|
||||
m_progress = data[0];
|
||||
}
|
||||
systemTask.PushMessage(Pinetime::System::Messages::OnNavChange);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -27,11 +27,16 @@
|
|||
#undef min
|
||||
|
||||
namespace Pinetime {
|
||||
|
||||
namespace System {
|
||||
class SystemTask;
|
||||
}
|
||||
|
||||
namespace Controllers {
|
||||
|
||||
class NavigationService {
|
||||
public:
|
||||
NavigationService();
|
||||
explicit NavigationService(Pinetime::System::SystemTask& systemTask);
|
||||
|
||||
void Init();
|
||||
|
||||
|
@ -53,6 +58,8 @@ namespace Pinetime {
|
|||
std::string m_narrative;
|
||||
std::string m_manDist;
|
||||
int m_progress;
|
||||
|
||||
Pinetime::System::SystemTask& systemTask;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
|
@ -44,6 +44,7 @@ NimbleController::NimbleController(Pinetime::System::SystemTask& systemTask,
|
|||
currentTimeService {dateTimeController},
|
||||
musicService {systemTask, *this},
|
||||
weatherService {dateTimeController},
|
||||
navService {systemTask},
|
||||
batteryInformationService {batteryController},
|
||||
immediateAlertService {systemTask, notificationManager},
|
||||
heartRateService {*this, heartRateController},
|
||||
|
|
|
@ -335,6 +335,14 @@ void DisplayApp::Refresh() {
|
|||
LoadNewScreen(Apps::Music, DisplayApp::FullRefreshDirections::Up);
|
||||
}
|
||||
break;
|
||||
case Messages::NavStarted:
|
||||
if (currentApp == Apps::Clock && AppAvailable(Apps::Navigation)) {
|
||||
if (state != States::Running) {
|
||||
PushMessageToSystemTask(System::Messages::GoToRunning);
|
||||
}
|
||||
LoadNewScreen(Apps::Navigation, DisplayApp::FullRefreshDirections::Up);
|
||||
}
|
||||
break;
|
||||
case Messages::TimerDone:
|
||||
if (state != States::Running) {
|
||||
PushMessageToSystemTask(System::Messages::GoToRunning);
|
||||
|
|
|
@ -16,6 +16,7 @@ namespace Pinetime {
|
|||
ButtonDoubleClicked,
|
||||
NewNotification,
|
||||
MusicStarted,
|
||||
NavStarted,
|
||||
TimerDone,
|
||||
BleFirmwareUpdateStarted,
|
||||
DimScreen,
|
||||
|
|
|
@ -25,6 +25,7 @@ namespace Pinetime {
|
|||
OnChargingEvent,
|
||||
OnPairing,
|
||||
OnMusicStarted,
|
||||
OnNavChange,
|
||||
SetOffAlarm,
|
||||
MeasureBatteryTimerExpired,
|
||||
BatteryPercentageUpdated,
|
||||
|
|
|
@ -405,6 +405,9 @@ void SystemTask::Work() {
|
|||
case Messages::OnMusicStarted:
|
||||
displayApp.PushMessage(Pinetime::Applications::Display::Messages::MusicStarted);
|
||||
break;
|
||||
case Messages::OnNavChange:
|
||||
displayApp.PushMessage(Pinetime::Applications::Display::Messages::NavStarted);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue