Skip to content

Commit d1c8514

Browse files
committed
refactor:
1 parent 1d3150c commit d1c8514

File tree

9 files changed

+486
-402
lines changed

9 files changed

+486
-402
lines changed

src/App.h

Lines changed: 15 additions & 104 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,12 @@
11
#include <Arduino.h>
22
#include <stddef.h>
33

4-
#include "domain/Clock.h"
5-
#include "domain/DataStore.h"
6-
#include "domain/Trip.h"
74
#include "hardware/Gnss.h"
8-
#include "hardware/OLED.h"
9-
#include "hardware/VoltageSensor.h"
10-
#include "ui/Input.h"
11-
#include "ui/Mode.h"
12-
#include "ui/Renderer.h"
13-
14-
constexpr int BTN_A = PIN_D09;
15-
constexpr int BTN_B = PIN_D04;
16-
constexpr int WARN_LED = PIN_D00;
17-
constexpr int VOLTAGE_PIN = PIN_A5;
18-
constexpr float LOW_VOLTAGE_THRESHOLD = 4.5f;
19-
20-
class VoltageMonitor {
21-
private:
22-
VoltageSensor voltageSensor;
23-
24-
public:
25-
VoltageMonitor() : voltageSensor(VOLTAGE_PIN) {}
26-
27-
void begin() {
28-
voltageSensor.begin();
29-
pinMode(WARN_LED, OUTPUT);
30-
}
31-
32-
float update() {
33-
const float currentVoltage = voltageSensor.readVoltage();
34-
if (currentVoltage <= LOW_VOLTAGE_THRESHOLD) digitalWrite(WARN_LED, HIGH);
35-
else digitalWrite(WARN_LED, LOW);
36-
return currentVoltage;
37-
}
38-
};
5+
#include "logic/Clock.h"
6+
#include "logic/DataStore.h"
7+
#include "logic/Trip.h"
8+
#include "logic/VoltageMonitor.h"
9+
#include "ui/UI.h"
3910

4011
class DataPersistence {
4112
private:
@@ -56,97 +27,37 @@ class DataPersistence {
5627
void update(bool isGnssUpdated, float currentVoltage) {
5728
if ((millis() - lastSaveMillis > DataStore::SAVE_INTERVAL_MS) && !isGnssUpdated) {
5829
AppData currentData;
59-
const Trip::State &state = trip.getState();
60-
currentData.totalDistance = state.totalKm;
61-
currentData.tripDistance = state.tripDistance;
62-
currentData.movingTimeMs = state.totalMovingMs;
63-
currentData.maxSpeed = state.maxSpeed;
64-
currentData.batteryVoltage = currentVoltage;
30+
const Trip::State &state = trip.getState();
31+
currentData.totalDistance = state.totalKm;
32+
currentData.tripDistance = state.tripDistance;
33+
currentData.movingTimeMs = state.totalMovingMs;
34+
currentData.maxSpeed = state.maxSpeed;
35+
currentData.voltage = currentVoltage;
6536

6637
dataStore.save(currentData);
6738
lastSaveMillis = millis();
6839
}
6940
}
7041
};
7142

72-
class UserInterface {
73-
private:
74-
OLED oled;
75-
Input input;
76-
Mode mode;
77-
Renderer renderer;
78-
79-
Frame createFrame(const SpNavData &navData, const Trip &trip, const Clock &clock) const {
80-
Frame frame;
81-
82-
switch (navData.posFixMode) {
83-
case Fix2D:
84-
strcpy(frame.header.fixStatus, "2D");
85-
break;
86-
case Fix3D:
87-
strcpy(frame.header.fixStatus, "3D");
88-
break;
89-
default:
90-
strcpy(frame.header.fixStatus, "WAIT");
91-
break;
92-
}
93-
94-
mode.fillFrame(frame, trip, clock);
95-
96-
return frame;
97-
}
98-
99-
public:
100-
UserInterface() : input(BTN_A, BTN_B) {}
101-
102-
void begin() {
103-
oled.begin();
104-
input.begin();
105-
}
106-
107-
void update(Trip &trip, DataStore &dataStore, const Clock &clock, const SpNavData &navData) {
108-
Input::Event id = input.update();
109-
110-
if (id == Input::Event::RESET_LONG) {
111-
oled.clear();
112-
oled.setTextSize(1);
113-
oled.setTextColor(WHITE);
114-
const char *msg = "RESETTING...";
115-
OLED::Rect rect = oled.getTextBounds(msg);
116-
oled.setCursor((oled.getWidth() - rect.w) / 2, (oled.getHeight() - rect.h) / 2);
117-
oled.print(msg);
118-
oled.display();
119-
delay(500); // Visual feedback
120-
121-
oled.restart();
122-
renderer.reset();
123-
}
124-
125-
if (id != Input::Event::NONE) { mode.handleInput(id, trip, dataStore); }
126-
127-
Frame frame = createFrame(navData, trip, clock);
128-
renderer.render(oled, frame);
129-
}
130-
};
131-
13243
class App {
13344
private:
13445
Gnss gnss;
13546
Trip trip;
13647

13748
DataStore dataStore;
13849

139-
VoltageMonitor batteryMonitor;
50+
VoltageMonitor voltageMonitor;
14051
DataPersistence dataPersistence;
141-
UserInterface userInterface;
52+
UI userInterface;
14253

14354
public:
14455
App() : dataPersistence(dataStore, trip) {}
14556

14657
void begin() {
14758
gnss.begin();
14859
trip.begin();
149-
batteryMonitor.begin();
60+
voltageMonitor.begin();
15061
dataPersistence.load();
15162
userInterface.begin();
15263
}
@@ -158,7 +69,7 @@ class App {
15869
trip.update(navData, millis(), isGnssUpdated);
15970
Clock clock(navData);
16071

161-
float currentVoltage = batteryMonitor.update();
72+
float currentVoltage = voltageMonitor.update();
16273
dataPersistence.update(isGnssUpdated, currentVoltage);
16374
userInterface.update(trip, dataStore, clock, navData);
16475
}

src/domain/Trip.h

Lines changed: 0 additions & 185 deletions
This file was deleted.
File renamed without changes.

0 commit comments

Comments
 (0)