Skip to content

Commit b19a2a7

Browse files
committed
Use enum classes, remove old comment
1 parent d5dfa80 commit b19a2a7

4 files changed

Lines changed: 30 additions & 31 deletions

File tree

src/buttonhandler/ButtonHandler.cpp

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@ using namespace Pinetime::Controllers;
44

55
void ButtonTimerCallback(TimerHandle_t xTimer) {
66
auto* buttonHandler = static_cast<ButtonHandler*>(pvTimerGetTimerID(xTimer));
7-
buttonHandler->HandleEvent(ButtonHandler::Timer);
7+
buttonHandler->HandleEvent(ButtonHandler::Events::Timer);
88
}
99

1010
void ButtonHandler::Init(Pinetime::System::SystemTask* systemTask) {
1111
this->systemTask = systemTask;
1212
buttonTimer = xTimerCreate("buttonTimer", 0, pdFALSE, this, ButtonTimerCallback);
1313
}
1414

15-
void ButtonHandler::HandleEvent(events event) {
15+
void ButtonHandler::HandleEvent(Events event) {
1616
static constexpr TickType_t doubleClickTime = pdMS_TO_TICKS(200);
1717
static constexpr TickType_t longPressTime = pdMS_TO_TICKS(400);
1818
static constexpr TickType_t longerPressTime = pdMS_TO_TICKS(2000);
@@ -24,61 +24,61 @@ void ButtonHandler::HandleEvent(events event) {
2424
systemTask->PushMessage(System::Messages::ReloadIdleTimer);
2525
}
2626

27-
if (event == Press) {
27+
if (event == Events::Press) {
2828
buttonPressed = true;
29-
} else if (event == Release) {
29+
} else if (event == Events::Release) {
3030
releaseTime = xTaskGetTickCount();
3131
buttonPressed = false;
3232
}
3333

3434
switch (state) {
35-
case Idle:
36-
if (event == Press) {
35+
case States::Idle:
36+
if (event == Events::Press) {
3737
xTimerChangePeriod(buttonTimer, doubleClickTime, 0);
3838
xTimerStart(buttonTimer, 0);
39-
state = Pressed;
39+
state = States::Pressed;
4040
}
4141
break;
42-
case Pressed:
43-
if (event == Press) {
42+
case States::Pressed:
43+
if (event == Events::Press) {
4444
if (xTaskGetTickCount() - releaseTime < doubleClickTime) {
4545
systemTask->PushMessage(System::Messages::OnButtonDoubleClicked);
4646
xTimerStop(buttonTimer, 0);
47-
state = Idle;
47+
state = States::Idle;
4848
}
49-
} else if (event == Release) {
49+
} else if (event == Events::Release) {
5050
xTimerChangePeriod(buttonTimer, doubleClickTime, 0);
5151
xTimerStart(buttonTimer, 0);
52-
} else if (event == Timer) {
52+
} else if (event == Events::Timer) {
5353
if (buttonPressed) {
5454
xTimerChangePeriod(buttonTimer, longPressTime - doubleClickTime, 0);
5555
xTimerStart(buttonTimer, 0);
56-
state = Holding;
56+
state = States::Holding;
5757
} else {
5858
systemTask->PushMessage(System::Messages::OnButtonPushed);
59-
state = Idle;
59+
state = States::Idle;
6060
}
6161
}
6262
break;
63-
case Holding:
64-
if (event == Release) {
63+
case States::Holding:
64+
if (event == Events::Release) {
6565
systemTask->PushMessage(System::Messages::OnButtonPushed);
6666
xTimerStop(buttonTimer, 0);
67-
state = Idle;
68-
} else if (event == Timer) {
67+
state = States::Idle;
68+
} else if (event == Events::Timer) {
6969
xTimerChangePeriod(buttonTimer, longerPressTime - longPressTime - doubleClickTime, 0);
7070
xTimerStart(buttonTimer, 0);
7171
systemTask->PushMessage(System::Messages::OnButtonLongPressed);
72-
state = LongHeld;
72+
state = States::LongHeld;
7373
}
7474
break;
75-
case LongHeld:
76-
if (event == Release) {
75+
case States::LongHeld:
76+
if (event == Events::Release) {
7777
xTimerStop(buttonTimer, 0);
78-
state = Idle;
79-
} else if (event == Timer) {
78+
state = States::Idle;
79+
} else if (event == Events::Timer) {
8080
systemTask->PushMessage(System::Messages::OnButtonLongerPressed);
81-
state = Idle;
81+
state = States::Idle;
8282
}
8383
break;
8484
}

src/buttonhandler/ButtonHandler.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,17 @@ namespace Pinetime {
88
namespace Controllers {
99
class ButtonHandler {
1010
public:
11-
enum events { Press, Release, Timer };
11+
enum class Events : uint8_t { Press, Release, Timer };
1212
void Init(Pinetime::System::SystemTask* systemTask);
13-
void HandleEvent(events event);
13+
void HandleEvent(Events event);
1414

1515
private:
16+
enum class States : uint8_t { Idle, Pressed, Holding, LongHeld };
1617
Pinetime::System::SystemTask* systemTask = nullptr;
1718
TickType_t releaseTime = 0;
1819
TimerHandle_t buttonTimer;
1920
bool buttonPressed = false;
20-
enum states { Idle, Pressed, Holding, LongHeld };
21-
states state = Idle;
21+
States state = States::Idle;
2222
};
2323
}
2424
}

src/main.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,6 @@ void nrfx_gpiote_evt_handler(nrfx_gpiote_pin_t pin, nrf_gpiote_polarity_t action
178178
xTimerStartFromISR(debounceChargeTimer, &xHigherPriorityTaskWoken);
179179
portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
180180
} else if (pin == Pinetime::PinMap::Button) {
181-
// This activates on button release as well due to bouncing
182181
xTimerStartFromISR(debounceTimer, &xHigherPriorityTaskWoken);
183182
portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
184183
}

src/systemtask/SystemTask.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -357,9 +357,9 @@ void SystemTask::Work() {
357357
break;
358358
case Messages::HandleButtonEvent:
359359
if (nrf_gpio_pin_read(Pinetime::PinMap::Button) == 0) {
360-
buttonHandler.HandleEvent(Pinetime::Controllers::ButtonHandler::Release);
360+
buttonHandler.HandleEvent(Pinetime::Controllers::ButtonHandler::Events::Release);
361361
} else {
362-
buttonHandler.HandleEvent(Pinetime::Controllers::ButtonHandler::Press);
362+
buttonHandler.HandleEvent(Pinetime::Controllers::ButtonHandler::Events::Press);
363363
}
364364
break;
365365
case Messages::OnDisplayTaskSleeping:

0 commit comments

Comments
 (0)