Skip to content

Commit f396e9d

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

File tree

4 files changed

+22
-1
lines changed

4 files changed

+22
-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/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: 9 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
}
@@ -176,6 +181,10 @@ void HeartRateTask::Work() {
176181
}
177182
}
178183

184+
void HeartRateTask::SaveSettings() {
185+
settings.SaveSettings();
186+
}
187+
179188
void HeartRateTask::PushMessage(HeartRateTask::Messages msg) {
180189
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
181190
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)