Added time sync via esp now
This commit is contained in:
@ -132,7 +132,6 @@ set(headers
|
||||
drivingstatistics.h
|
||||
esptexthelpers.h
|
||||
espnowfunctions.h
|
||||
espnowwrapper.h
|
||||
feedbackparser.h
|
||||
globals.h
|
||||
handbremse.h
|
||||
@ -336,7 +335,6 @@ set(sources
|
||||
drivingstatistics.cpp
|
||||
esptexthelpers.cpp
|
||||
espnowfunctions.cpp
|
||||
espnowwrapper.cpp
|
||||
feedbackparser.cpp
|
||||
globals.cpp
|
||||
handbremse.cpp
|
||||
|
@ -47,11 +47,27 @@
|
||||
#include "icons/reboot.h"
|
||||
#include "icons/statistics.h"
|
||||
#include "icons/greenpass.h"
|
||||
#include "icons/time.h"
|
||||
#include "tftinstance.h"
|
||||
|
||||
using namespace espgui;
|
||||
|
||||
namespace mainmenu {
|
||||
/*
|
||||
class CurrentTimeText : public virtual TextInterface
|
||||
{
|
||||
public:
|
||||
std::string text() const override
|
||||
{
|
||||
return fmt::format("&7Time: {}", local_clock_string());
|
||||
}
|
||||
};
|
||||
*/
|
||||
} // namespace
|
||||
|
||||
MainMenu::MainMenu()
|
||||
{
|
||||
// constructMenuItem<makeComponent<MenuItem, mainmenu::CurrentTimeText, DummyAction, StaticMenuItemIcon<&bobbyicons::time>>>();
|
||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_STATUS>, SwitchScreenAction<StatusDisplay>, StaticMenuItemIcon<&espgui::icons::back>>>();
|
||||
#ifdef FEATURE_LEDSTRIP
|
||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_LEDSTRIP>, SwitchScreenAction<LedstripMenu>, StaticMenuItemIcon<&bobbyicons::neopixel>>>();
|
||||
@ -94,3 +110,16 @@ void MainMenu::back()
|
||||
{
|
||||
switchScreen<StatusDisplay>();
|
||||
}
|
||||
|
||||
void MainMenu::start()
|
||||
{
|
||||
Base::start();
|
||||
m_label_currentTime.start();
|
||||
}
|
||||
|
||||
void MainMenu::redraw()
|
||||
{
|
||||
Base::redraw();
|
||||
tft.setTextFont(2);
|
||||
m_label_currentTime.redraw(fmt::format("&7Time: {}", local_clock_string()));
|
||||
}
|
||||
|
@ -25,8 +25,12 @@ class MainMenu :
|
||||
public espgui::MenuDisplay,
|
||||
public espgui::StaticText<TEXT_MAINMENU>
|
||||
{
|
||||
using Base = espgui::MenuDisplay;
|
||||
public:
|
||||
MainMenu();
|
||||
|
||||
void back() override;
|
||||
void start() override;
|
||||
void redraw() override;
|
||||
espgui::Label m_label_currentTime{145, 6};
|
||||
};
|
||||
|
@ -37,7 +37,8 @@ public:
|
||||
#ifdef CONFIG_ESPCHRONO_SUPPORT_DEFAULT_TIMEZONE
|
||||
return fmt::format("local: {}", espchrono::toString(espchrono::toDateTime(espchrono::local_clock::now())));
|
||||
#else
|
||||
return "TODO";
|
||||
// Crude local time implementation
|
||||
return fmt::format("local: {}", espchrono::toString(espchrono::toDateTime(espchrono::utc_clock::now() + settings.timeSettings.timezoneOffset)));
|
||||
#endif
|
||||
}
|
||||
};
|
||||
|
@ -337,3 +337,26 @@ uint8_t time_to_percent(espchrono::milliseconds32 repeat, espchrono::millisecond
|
||||
else
|
||||
return invert ? numLeds : 0;
|
||||
}
|
||||
|
||||
void time_set_now(espchrono::utc_clock::time_point now)
|
||||
{
|
||||
using namespace espchrono;
|
||||
// ESP_LOGI("BOBBY", "%s (%lld)%s", toString(toDateTime(now)).c_str(), std::chrono::floor<std::chrono::seconds>(now.time_since_epoch()).count(), time_valid(now) ? "":" (probably invalid)");
|
||||
const auto seconds = std::chrono::floor<std::chrono::seconds>(now.time_since_epoch());
|
||||
|
||||
timeval ts {
|
||||
.tv_sec = (long int)seconds.count(),
|
||||
.tv_usec = (long int)std::chrono::floor<std::chrono::microseconds>(now.time_since_epoch() - seconds).count()
|
||||
};
|
||||
timezone tz {
|
||||
.tz_minuteswest = 0,
|
||||
.tz_dsttime = 0
|
||||
};
|
||||
settimeofday(&ts, &tz);
|
||||
}
|
||||
|
||||
std::string local_clock_string()
|
||||
{
|
||||
const auto dt = espchrono::toDateTime(espchrono::utc_clock::now() + settings.timeSettings.timezoneOffset);
|
||||
return fmt::format("{:02d}:{:02d}:{:02d}", dt.hour, dt.minute, dt.second);
|
||||
}
|
||||
|
@ -59,3 +59,5 @@ void readPotis();
|
||||
float wattToAmpere(float watt);
|
||||
float wattToMotorCurrent(float watt);
|
||||
uint8_t time_to_percent(espchrono::milliseconds32 repeat, espchrono::milliseconds32 riseTime, espchrono::milliseconds32 fullTime, size_t numLeds, bool invert);
|
||||
void time_set_now(espchrono::utc_clock::time_point now);
|
||||
std::string local_clock_string();
|
||||
|
Reference in New Issue
Block a user