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