Added time sync via esp now
This commit is contained in:
@ -132,7 +132,6 @@ set(headers
|
|||||||
drivingstatistics.h
|
drivingstatistics.h
|
||||||
esptexthelpers.h
|
esptexthelpers.h
|
||||||
espnowfunctions.h
|
espnowfunctions.h
|
||||||
espnowwrapper.h
|
|
||||||
feedbackparser.h
|
feedbackparser.h
|
||||||
globals.h
|
globals.h
|
||||||
handbremse.h
|
handbremse.h
|
||||||
@ -336,7 +335,6 @@ set(sources
|
|||||||
drivingstatistics.cpp
|
drivingstatistics.cpp
|
||||||
esptexthelpers.cpp
|
esptexthelpers.cpp
|
||||||
espnowfunctions.cpp
|
espnowfunctions.cpp
|
||||||
espnowwrapper.cpp
|
|
||||||
feedbackparser.cpp
|
feedbackparser.cpp
|
||||||
globals.cpp
|
globals.cpp
|
||||||
handbremse.cpp
|
handbremse.cpp
|
||||||
|
@ -47,11 +47,27 @@
|
|||||||
#include "icons/reboot.h"
|
#include "icons/reboot.h"
|
||||||
#include "icons/statistics.h"
|
#include "icons/statistics.h"
|
||||||
#include "icons/greenpass.h"
|
#include "icons/greenpass.h"
|
||||||
|
#include "icons/time.h"
|
||||||
|
#include "tftinstance.h"
|
||||||
|
|
||||||
using namespace espgui;
|
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()
|
MainMenu::MainMenu()
|
||||||
{
|
{
|
||||||
|
// constructMenuItem<makeComponent<MenuItem, mainmenu::CurrentTimeText, DummyAction, StaticMenuItemIcon<&bobbyicons::time>>>();
|
||||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_STATUS>, SwitchScreenAction<StatusDisplay>, StaticMenuItemIcon<&espgui::icons::back>>>();
|
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_STATUS>, SwitchScreenAction<StatusDisplay>, StaticMenuItemIcon<&espgui::icons::back>>>();
|
||||||
#ifdef FEATURE_LEDSTRIP
|
#ifdef FEATURE_LEDSTRIP
|
||||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_LEDSTRIP>, SwitchScreenAction<LedstripMenu>, StaticMenuItemIcon<&bobbyicons::neopixel>>>();
|
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_LEDSTRIP>, SwitchScreenAction<LedstripMenu>, StaticMenuItemIcon<&bobbyicons::neopixel>>>();
|
||||||
@ -94,3 +110,16 @@ void MainMenu::back()
|
|||||||
{
|
{
|
||||||
switchScreen<StatusDisplay>();
|
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::MenuDisplay,
|
||||||
public espgui::StaticText<TEXT_MAINMENU>
|
public espgui::StaticText<TEXT_MAINMENU>
|
||||||
{
|
{
|
||||||
|
using Base = espgui::MenuDisplay;
|
||||||
public:
|
public:
|
||||||
MainMenu();
|
MainMenu();
|
||||||
|
|
||||||
void back() override;
|
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
|
#ifdef CONFIG_ESPCHRONO_SUPPORT_DEFAULT_TIMEZONE
|
||||||
return fmt::format("local: {}", espchrono::toString(espchrono::toDateTime(espchrono::local_clock::now())));
|
return fmt::format("local: {}", espchrono::toString(espchrono::toDateTime(espchrono::local_clock::now())));
|
||||||
#else
|
#else
|
||||||
return "TODO";
|
// Crude local time implementation
|
||||||
|
return fmt::format("local: {}", espchrono::toString(espchrono::toDateTime(espchrono::utc_clock::now() + settings.timeSettings.timezoneOffset)));
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -337,3 +337,26 @@ uint8_t time_to_percent(espchrono::milliseconds32 repeat, espchrono::millisecond
|
|||||||
else
|
else
|
||||||
return invert ? numLeds : 0;
|
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 wattToAmpere(float watt);
|
||||||
float wattToMotorCurrent(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);
|
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