Skip to content

Commit 9f9218d

Browse files
committed
Keep heart rate tracking setting after reboot
1 parent 51a6fb6 commit 9f9218d

File tree

5 files changed

+29
-1
lines changed

5 files changed

+29
-1
lines changed

src/components/heartrate/HeartRateController.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ namespace Pinetime {
3232
return heartRate;
3333
}
3434

35+
void SaveSettings() const;
36+
3537
void SetService(Pinetime::Controllers::HeartRateService* service);
3638

3739
private:

src/components/settings/Settings.h

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -336,6 +336,15 @@ namespace Pinetime {
336336
return (settings.dfuAndFsEnabledOnBoot ? DfuAndFsMode::Enabled : DfuAndFsMode::Disabled);
337337
};
338338

339+
void SetHeartRateRebootMode(bool enabled) {
340+
settingsChanged = settingsChanged || (enabled != settings.heartRateEnabledOnBoot);
341+
settings.heartRateEnabledOnBoot = enabled;
342+
}
343+
344+
bool GetHeartRateRebootMode() {
345+
return settings.heartRateEnabledOnBoot;
346+
}
347+
339348
std::optional<uint16_t> GetHeartRateBackgroundMeasurementInterval() const {
340349
if (settings.heartRateBackgroundPeriod == std::numeric_limits<uint16_t>::max()) {
341350
return std::nullopt;
@@ -354,7 +363,7 @@ namespace Pinetime {
354363
private:
355364
Pinetime::Controllers::FS& fs;
356365

357-
static constexpr uint32_t settingsVersion = 0x000a;
366+
static constexpr uint32_t settingsVersion = 0x000b;
358367

359368
struct SettingsData {
360369
uint32_t version = settingsVersion;
@@ -383,6 +392,7 @@ namespace Pinetime {
383392

384393
bool dfuAndFsEnabledOnBoot = false;
385394
uint16_t heartRateBackgroundPeriod = std::numeric_limits<uint16_t>::max(); // Disabled by default
395+
bool heartRateEnabledOnBoot = false;
386396
};
387397

388398
SettingsData settings;

src/displayapp/screens/HeartRate.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ HeartRate::HeartRate(Controllers::HeartRateController& heartRateController, Syst
7272
HeartRate::~HeartRate() {
7373
lv_task_del(taskRefresh);
7474
lv_obj_clean(lv_scr_act());
75+
heartRateController.SaveSettings();
7576
}
7677

7778
void HeartRate::Refresh() {

src/heartratetask/HeartRateTask.cpp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,9 +96,17 @@ void HeartRateTask::Start() {
9696

9797
if (pdPASS != xTaskCreate(HeartRateTask::Process, "Heartrate", 500, this, 1, &taskHandle)) {
9898
APP_ERROR_HANDLER(NRF_ERROR_NO_MEM);
99+
} else {
100+
if (settings.GetHeartRateRebootMode())
101+
controller.Enable();
99102
}
100103
}
101104

105+
void HeartRateTask::SaveSettings() {
106+
if (task)
107+
task->SaveSettings();
108+
}
109+
102110
void HeartRateTask::Process(void* instance) {
103111
auto* app = static_cast<HeartRateTask*>(instance);
104112
app->Work();
@@ -143,9 +151,11 @@ void HeartRateTask::Work() {
143151
// will self-resolve at the next screen on event
144152
newState = States::ForegroundMeasuring;
145153
valueCurrentlyShown = false;
154+
settings.SetHeartRateRebootMode(true);
146155
break;
147156
case Messages::Disable:
148157
newState = States::Disabled;
158+
settings.SetHeartRateRebootMode(false);
149159
break;
150160
}
151161
}
@@ -172,6 +182,10 @@ void HeartRateTask::Work() {
172182
}
173183
}
174184

185+
void HeartRateTask::SaveSettings() {
186+
settings.SaveSettings();
187+
}
188+
175189
void HeartRateTask::PushMessage(HeartRateTask::Messages msg) {
176190
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
177191
xQueueSendFromISR(messageQueue, &msg, &xHigherPriorityTaskWoken);

src/heartratetask/HeartRateTask.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ namespace Pinetime {
2727
void Start();
2828
void Work();
2929
void PushMessage(Messages msg);
30+
void SaveSettings();
3031

3132
private:
3233
enum class States : uint8_t { Disabled, Waiting, BackgroundMeasuring, ForegroundMeasuring };

0 commit comments

Comments
 (0)