Skip to content

Commit 884c53d

Browse files
committed
Keep heart rate tracking setting after reboot
1 parent 716deff commit 884c53d

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

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/heartratetask/HeartRateTask.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,9 @@ void HeartRateTask::Start() {
100100

101101
if (pdPASS != xTaskCreate(HeartRateTask::Process, "Heartrate", 500, this, 1, &taskHandle)) {
102102
APP_ERROR_HANDLER(NRF_ERROR_NO_MEM);
103+
} else {
104+
if (settings.GetHeartRateRebootMode())
105+
controller.Enable();
103106
}
104107
}
105108

@@ -147,9 +150,11 @@ void HeartRateTask::Work() {
147150
// will self-resolve at the next screen on event
148151
newState = States::ForegroundMeasuring;
149152
valueCurrentlyShown = false;
153+
settings.SetHeartRateRebootMode(true);
150154
break;
151155
case Messages::Disable:
152156
newState = States::Disabled;
157+
settings.SetHeartRateRebootMode(false);
153158
break;
154159
}
155160
}

0 commit comments

Comments
 (0)