Skip to content

Commit acd0095

Browse files
committed
feat(UI): Add LapCounter Updater
1 parent db98aa9 commit acd0095

2 files changed

Lines changed: 41 additions & 1 deletion

File tree

.idea/misc.xml

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Core/UI/HomeView.cpp

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,14 @@
1111

1212
#include "Utils/Cards.h"
1313

14+
#include <chrono>
15+
1416
#define MAX_SPEED 45
1517

18+
uint32_t lapTimer = 0;
19+
uint8_t stopCounter = 0;
20+
uint32_t lastRpm = 0;
21+
1622
DualCardInfo HomeView::speedCards = DualCardInfo();
1723
DualCardInfo HomeView::lapCards = DualCardInfo();
1824
DualCardInfo HomeView::efficiencyCards = DualCardInfo();
@@ -25,10 +31,30 @@ static void set_value(lv_obj_t * obj, int32_t v)
2531
lv_label_set_text(obj, buf);
2632
}
2733

34+
static void update_lap_time(lv_obj_t * obj) {
35+
uint32_t minutes = lapTimer / 60;
36+
uint32_t seconds = lapTimer % 60;
37+
38+
static char buf[16]; // Buffer for formatted text
39+
snprintf(buf, sizeof(buf), "%02d:%02d", minutes, seconds);
40+
DebugPrint(buf);
41+
lv_label_set_text(obj, buf);
42+
}
43+
44+
static void reset_lap_timer() {
45+
lapTimer = 0;
46+
DebugPrint("Lap timer reset\n");
47+
update_lap_time(HomeView::lapCards.get_card1()->get_value_label());
48+
}
49+
50+
static void reset_lap_timer(lv_event_t * e) {
51+
reset_lap_timer();
52+
}
53+
2854
static void set_speed(lv_obj_t * obj, int32_t v)
2955
{
3056
static char buf[16]; // Buffer for formatted text
31-
snprintf(buf, sizeof(buf), "%d km/h", v);
57+
snprintf(buf, sizeof(buf), "%d km/h", (v/1000));
3258
lv_label_set_text(obj, buf);
3359
if (v > MAX_SPEED) {
3460
lv_obj_set_style_bg_color(obj, lv_color_hex(0xFF0000), 0);
@@ -107,6 +133,7 @@ HomeView::HomeView(lv_obj_t* parent, DataAggregator& aggregator) : View(parent,
107133
LV_GRID_ALIGN_STRETCH, 0, 1);
108134
lv_obj_set_scroll_dir(obj, LV_DIR_NONE);
109135
// lv_obj_add_event_cb(obj, lv_event_cb_t(event_handler), LV_EVENT_SCROLL, NULL);
136+
lv_obj_add_event_cb(obj, reset_lap_timer, LV_EVENT_CLICKED, NULL);
110137

111138
efficiencyCards = create_efficienty_section(cont, SCREEN_WIDTH/2, SCREEN_HEIGHT/2);
112139
obj = efficiencyCards.get_dualCard();
@@ -154,10 +181,22 @@ HomeView::HomeView(lv_obj_t* parent, DataAggregator& aggregator) : View(parent,
154181
});
155182

156183
aggregator.rpmSpeed.addListener([&](int32_t rpm) {
184+
if (rpm == 0 && lastRpm != 0) {
185+
stopCounter++;
186+
if (stopCounter >= 2) {
187+
reset_lap_timer();
188+
stopCounter = 0;
189+
}
190+
}
157191
set_value(speedCards.get_card2()->get_value_label(), rpm);
158192
});
159193

160194
aggregator.temperature.addListener([&](temperature_t temperature) {
161195
set_value(lapCards.get_card2()->get_value_label(), temperature);
162196
});
197+
198+
__attribute__ ((__unused__)) lv_timer_t * timer = lv_timer_create([](lv_timer_t * timer) {
199+
lapTimer++;
200+
update_lap_time(lapCards.get_card1()->get_value_label());
201+
}, 1000, NULL);
163202
}

0 commit comments

Comments
 (0)