@@ -56,6 +56,9 @@ void LcdTask::display(const char *msg, int x, int y, int time, uint32_t flags)
56
56
57
57
void LcdTask::begin (EvseManager &evse, Scheduler &scheduler, ManualOverride &manual)
58
58
{
59
+ _evse = &evse;
60
+ _scheduler = &scheduler;
61
+ _manual = &manual;
59
62
MicroTask.startTask (this );
60
63
}
61
64
@@ -96,22 +99,17 @@ unsigned long LcdTask::loop(MicroTasks::WakeReason reason)
96
99
case State::Charge:
97
100
render_image (" /ChargeScreen.png" , 0 , 0 );
98
101
99
- // _lcd.setCursor(120, 180);
100
- // _lcd.setTextColor(TFT_BLACK, TFT_WHITE);
101
- // _lcd.setFreeFont(&DejaVu_Sans_72);
102
- // _lcd.setTextSize(1);
103
- // _lcd.setFreeFont(&FreeSans24pt7b);
104
- // _lcd.setTextSize(3);
105
- // _lcd.print("16");
106
-
107
102
render_right_text (" 16" , 266 , 180 , &FreeSans24pt7b, TFT_BLACK, 3 );
108
103
_lcd.setTextSize (1 );
109
104
_lcd.print (" A" );
110
105
106
+ char buffer[32 ];
107
+
111
108
render_centered_text (esp_hostname.c_str (), 324 , 72 , 140 , &FreeSans9pt7b, TFT_OPENEVSE_TEXT);
112
109
render_centered_text (" 11/08/2023, 3:45 AM" , 324 , 92 , 140 , &FreeSans9pt7b, TFT_OPENEVSE_TEXT);
113
110
render_centered_text (" 00:00:00" , 324 , 144 , 140 , &FreeSans9pt7b, TFT_WHITE);
114
- render_centered_text (" 0 kWh" , 324 , 196 , 140 , &FreeSans9pt7b, TFT_WHITE);
111
+ get_scaled_number_value (_evse->getSessionEnergy (), 0 , " Wh" , buffer, sizeof (buffer));
112
+ render_centered_text (buffer, 324 , 196 , 140 , &FreeSans9pt7b, TFT_WHITE);
115
113
// nextUpdate = 1000;
116
114
break ;
117
115
@@ -123,6 +121,28 @@ unsigned long LcdTask::loop(MicroTasks::WakeReason reason)
123
121
return nextUpdate;
124
122
}
125
123
124
+ void LcdTask::get_scaled_number_value (double value, int precision, const char *unit, char *buffer, size_t size)
125
+ {
126
+ static const char *mod[] = {
127
+ " " ,
128
+ " k" ,
129
+ " M" ,
130
+ " G" ,
131
+ " T" ,
132
+ " P"
133
+ };
134
+
135
+ int index = 0 ;
136
+ while (value > 1000 && index < ARRAY_ITEMS (mod))
137
+ {
138
+ value /= 1000 ;
139
+ index++;
140
+ }
141
+
142
+ snprintf (buffer, size, " %.*f %s%s" , precision, value, mod[index], unit);
143
+ }
144
+
145
+
126
146
void LcdTask::render_centered_text (const char *text, int16_t x, int16_t y, int16_t width, const GFXfont *font, uint16_t color, uint8_t size)
127
147
{
128
148
_lcd.setFreeFont (font);
0 commit comments