Skip to content

Commit 33efe44

Browse files
committed
add state machine and simplify code
1 parent d1cbdf3 commit 33efe44

File tree

2 files changed

+54
-4
lines changed

2 files changed

+54
-4
lines changed

src/heartratetask/HeartRateTask.cpp

+1-4
Original file line numberDiff line numberDiff line change
@@ -138,12 +138,12 @@ void HeartRateTask::HandleWakeUp() {
138138

139139
void HeartRateTask::HandleStartMeasurement(int* lastBpm) {
140140
switch (state) {
141-
case States::ScreenOffAndStopped:
142141
case States::ScreenOnAndStopped:
143142
state = States::ScreenOnAndMeasuring;
144143
*lastBpm = 0;
145144
StartMeasurement();
146145
break;
146+
case States::ScreenOffAndStopped:
147147
case States::ScreenOnAndMeasuring:
148148
case States::ScreenOffAndMeasuring:
149149
case States::ScreenOffAndWaiting:
@@ -160,9 +160,6 @@ void HeartRateTask::HandleStopMeasurement() {
160160
break;
161161
case States::ScreenOffAndMeasuring:
162162
case States::ScreenOffAndWaiting:
163-
state = States::ScreenOffAndStopped;
164-
StopMeasurement();
165-
break;
166163
case States::ScreenOnAndStopped:
167164
case States::ScreenOffAndStopped:
168165
// shouldn't happen -> ignore

src/heartratetask/HeartRateTask.h

+53
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,59 @@
77

88
#define DURATION_UNTIL_BACKGROUND_MEASUREMENT_IS_STOPPED pdMS_TO_TICKS(30 * 1000)
99

10+
11+
/*
12+
*** Background Measurement deactivated ***
13+
14+
15+
16+
┌─────────────────────────┐ ┌─────────────────────────┐
17+
│ ├───StartMeasurement───►│ │
18+
│ ScreenOnAndStopped │ │ ScreenOnAndMeasuring │
19+
│ │◄──StopMeasurement │ │
20+
└──▲────────────────┬─────┘ └──▲──────────────────┬───┘
21+
│ │ │ │
22+
WakeUp GoToSleep WakeUp GoToSleep
23+
│ │ │ │
24+
┌──┴────────────────▼─────┐ ┌──┴──────────────────▼───┐
25+
│ │ │ │
26+
│ ScreenOffAndStopped │ │ ScreenOffAndWaiting │
27+
│ │ │ │
28+
└─────────────────────────┘ └─────────────────────────┘
29+
30+
31+
32+
33+
34+
*** Background Measurement activated ***
35+
36+
37+
38+
┌─────────────────────────┐ ┌─────────────────────────┐
39+
│ ├───StartMeasurement───►│ │
40+
│ ScreenOnAndStopped │ │ ScreenOnAndMeasuring │
41+
│ │◄──StopMeasurement │ │
42+
└──▲────────────────┬─────┘ └──▲──────────────────┬───┘
43+
│ │ ┌───────┘ │
44+
WakeUp GoToSleep │ WakeUp GoToSleep
45+
│ │ │ │ │
46+
┌──┴────────────────▼─────┐ │ ┌──┴──────────────────▼───┐
47+
│ │ │ │ │
48+
│ ScreenOffAndStopped │ │ │ ScreenOffAndMeasuring │
49+
│ │ │ │ │
50+
└─────────────────────────┘ │ └───▲──────────────────┬──┘
51+
│ │ │
52+
│ Waited Got sensor
53+
│ interval data
54+
│ time │
55+
│ │ │
56+
WakeUp ┌───┴──────────────────▼──┐
57+
│ │ │
58+
└────┤ ScreenOffAndWaiting │
59+
│ │
60+
└─────────────────────────┘
61+
*/
62+
1063
namespace Pinetime {
1164
namespace Drivers {
1265
class Hrs3300;

0 commit comments

Comments
 (0)