33#include " ../Config.h"
44#include " DisplayData.h"
55#include " InputEvent.h"
6- #include " ModeManager.h"
7- #include " PowerManager.h"
8- #include " TripManager.h"
6+ #include " Mode.h"
7+ #include " Trip.h"
98#include < cstdio>
109
1110namespace application {
1211
1312template <typename DisplayT, typename GnssT, typename InputT> class CycleComputer {
1413private:
1514 DisplayT &display;
16- InputT &inputProvider;
17- GnssT &gnssProvider;
18- ModeManager modeManager;
19- TripManager tripManager;
20- PowerManager powerManager;
15+ InputT &input;
16+ GnssT &gnss;
17+ Mode mode;
18+ Trip trip;
2119 unsigned long lastDisplayUpdate = 0 ;
2220 bool forceUpdate = false ;
2321
2422public:
25- CycleComputer (DisplayT &displayData, GnssT &gnss, InputT &input) : display(displayData), gnssProvider (gnss), inputProvider (input) {}
23+ CycleComputer (DisplayT &displayData, GnssT &gnss, InputT &input) : display(displayData), gnss (gnss), input (input) {}
2624
2725 void begin () {
2826 display.begin ();
29- inputProvider.begin ();
30- gnssProvider.begin ();
31- tripManager.begin ();
32- powerManager.begin ();
27+ input.begin ();
28+ gnss.begin ();
29+ trip.begin ();
3330 }
3431
3532 void update () {
3633 handleInput ();
37- gnssProvider.update ();
38- tripManager.update (gnssProvider.getSpeedKmh (), millis ());
39- powerManager.update ();
34+ gnss.update ();
35+ trip.update (gnss.getSpeedKmh (), millis ());
4036 updateDisplay ();
4137 }
4238
@@ -48,19 +44,19 @@ template <typename DisplayT, typename GnssT, typename InputT> class CycleCompute
4844 }
4945
5046 void handleInput () {
51- InputEvent event = inputProvider .update ();
47+ InputEvent event = input .update ();
5248
5349 switch (event) {
5450 case InputEvent::BTN_A:
55- modeManager. nextMode ();
51+ mode. next ();
5652 forceUpdate = true ;
5753 break ;
5854 case InputEvent::BTN_B:
59- modeManager. prevMode ();
55+ mode. prev ();
6056 forceUpdate = true ;
6157 break ;
6258 case InputEvent::BTN_BOTH:
63- tripManager .reset ();
59+ trip .reset ();
6460 forceUpdate = true ;
6561 break ;
6662 default :
@@ -78,40 +74,40 @@ template <typename DisplayT, typename GnssT, typename InputT> class CycleCompute
7874
7975 char buf[20 ];
8076 DisplayDataType type;
81- getDisplayData (modeManager. getMode (), type, buf, sizeof (buf));
77+ getDisplayData (mode. get (), type, buf, sizeof (buf));
8278
8379 display.show (type, buf);
8480 }
8581
86- void getDisplayData (Mode mode , DisplayDataType &type, char *buf, size_t size) {
87- switch (mode ) {
88- case Mode::SPEED:
82+ void getDisplayData (Mode::ID modeId , DisplayDataType &type, char *buf, size_t size) {
83+ switch (modeId ) {
84+ case Mode::ID:: SPEED:
8985 type = DisplayDataType::SPEED;
90- formatFloat (gnssProvider .getSpeedKmh (), 4 , 1 , buf, size);
86+ formatFloat (gnss .getSpeedKmh (), 4 , 1 , buf, size);
9187 break ;
92- case Mode::TIME:
88+ case Mode::ID:: TIME:
9389 type = DisplayDataType::TIME;
94- gnssProvider .getTimeJST (buf, size);
90+ gnss .getTimeJST (buf, size);
9591 break ;
96- case Mode::MAX_SPEED:
92+ case Mode::ID:: MAX_SPEED:
9793 type = DisplayDataType::MAX_SPEED;
98- formatFloat (tripManager .getMaxSpeedKmh (), 4 , 1 , buf, size);
94+ formatFloat (trip .getMaxSpeedKmh (), 4 , 1 , buf, size);
9995 break ;
100- case Mode::DISTANCE:
96+ case Mode::ID:: DISTANCE:
10197 type = DisplayDataType::DISTANCE;
102- formatFloat (tripManager .getDistanceKm (), 5 , 2 , buf, size);
98+ formatFloat (trip .getDistanceKm (), 5 , 2 , buf, size);
10399 break ;
104- case Mode::MOVING_TIME:
100+ case Mode::ID:: MOVING_TIME:
105101 type = DisplayDataType::MOVING_TIME;
106- tripManager .getMovingTimeStr (buf, size);
102+ trip .getMovingTimeStr (buf, size);
107103 break ;
108- case Mode::ELAPSED_TIME:
104+ case Mode::ID:: ELAPSED_TIME:
109105 type = DisplayDataType::ELAPSED_TIME;
110- tripManager .getElapsedTimeStr (buf, size);
106+ trip .getElapsedTimeStr (buf, size);
111107 break ;
112- case Mode::AVG_SPEED:
108+ case Mode::ID:: AVG_SPEED:
113109 type = DisplayDataType::AVG_SPEED;
114- formatFloat (tripManager .getAvgSpeedKmh (), 4 , 1 , buf, size);
110+ formatFloat (trip .getAvgSpeedKmh (), 4 , 1 , buf, size);
115111 break ;
116112 default :
117113 type = DisplayDataType::INVALID;
0 commit comments