Skip to content

Commit fbb1dd7

Browse files
committed
add back button
1 parent 78ff71d commit fbb1dd7

File tree

4 files changed

+41
-2
lines changed

4 files changed

+41
-2
lines changed

src/system/CycleComputer.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,14 @@ void CycleComputer::handleInput() {
3535
modeManager.nextMode();
3636
forceUpdate = true;
3737
break;
38+
case InputEvent::BTN_B:
39+
modeManager.prevMode();
40+
forceUpdate = true;
41+
break;
3842
case InputEvent::BTN_BOTH:
3943
tripComputer.reset();
4044
forceUpdate = true;
4145
break;
42-
case InputEvent::BTN_B:
43-
break;
4446
default:
4547
break;
4648
}

src/system/ModeManager.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@ void ModeManager::nextMode() {
44
currentMode = static_cast<Mode>((static_cast<int>(currentMode) + 1) % static_cast<int>(Mode::TOTAL_MODES));
55
}
66

7+
void ModeManager::prevMode() {
8+
currentMode = static_cast<Mode>((static_cast<int>(currentMode) - 1 + static_cast<int>(Mode::TOTAL_MODES)) % static_cast<int>(Mode::TOTAL_MODES));
9+
}
10+
711
Mode ModeManager::getMode() {
812
return currentMode;
913
}

src/system/ModeManager.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,6 @@ class ModeManager {
88

99
public:
1010
void nextMode();
11+
void prevMode();
1112
Mode getMode();
1213
};

tests/host/ModeManagerTest.cpp

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,3 +42,35 @@ TEST_F(ModeManagerTest, CycleThroughModes) {
4242
mm.nextMode();
4343
EXPECT_EQ(mm.getMode(), Mode::SPEED);
4444
}
45+
46+
TEST_F(ModeManagerTest, ReverseCycleThroughModes) {
47+
ModeManager mm;
48+
49+
// SPEED -> AVG_SPEED (Wrap around backward)
50+
mm.prevMode();
51+
EXPECT_EQ(mm.getMode(), Mode::AVG_SPEED);
52+
53+
// AVG_SPEED -> ELAPSED_TIME
54+
mm.prevMode();
55+
EXPECT_EQ(mm.getMode(), Mode::ELAPSED_TIME);
56+
57+
// ELAPSED_TIME -> MOVING_TIME
58+
mm.prevMode();
59+
EXPECT_EQ(mm.getMode(), Mode::MOVING_TIME);
60+
61+
// MOVING_TIME -> DISTANCE
62+
mm.prevMode();
63+
EXPECT_EQ(mm.getMode(), Mode::DISTANCE);
64+
65+
// DISTANCE -> MAX_SPEED
66+
mm.prevMode();
67+
EXPECT_EQ(mm.getMode(), Mode::MAX_SPEED);
68+
69+
// MAX_SPEED -> TIME
70+
mm.prevMode();
71+
EXPECT_EQ(mm.getMode(), Mode::TIME);
72+
73+
// TIME -> SPEED
74+
mm.prevMode();
75+
EXPECT_EQ(mm.getMode(), Mode::SPEED);
76+
}

0 commit comments

Comments
 (0)