Moved display's update and redraw into task manager
This commit is contained in:
@ -126,8 +126,6 @@ struct GametrakDistMinAccessor : public RefAccessorSaveSettings<int16_t> { int16
|
|||||||
struct GametrakDistMaxAccessor : public RefAccessorSaveSettings<int16_t> { int16_t &getRef() const override { return settings.boardcomputerHardware.gametrakDistMax; } };
|
struct GametrakDistMaxAccessor : public RefAccessorSaveSettings<int16_t> { int16_t &getRef() const override { return settings.boardcomputerHardware.gametrakDistMax; } };
|
||||||
#endif
|
#endif
|
||||||
struct StatsUpdateRateAccessor : public RefAccessorSaveSettings<int16_t> { int16_t &getRef() const override { return settings.boardcomputerHardware.timersSettings.statsUpdateRate; } };
|
struct StatsUpdateRateAccessor : public RefAccessorSaveSettings<int16_t> { int16_t &getRef() const override { return settings.boardcomputerHardware.timersSettings.statsUpdateRate; } };
|
||||||
struct DisplayUpdateRateAccessor : public RefAccessorSaveSettings<int16_t> { int16_t &getRef() const override { return settings.boardcomputerHardware.timersSettings.displayUpdateRate; } };
|
|
||||||
struct DisplayRedrawRateAccessor : public RefAccessorSaveSettings<int16_t> { int16_t &getRef() const override { return settings.boardcomputerHardware.timersSettings.displayRedrawRate; } };
|
|
||||||
|
|
||||||
// Cloud
|
// Cloud
|
||||||
#ifdef FEATURE_CLOUD
|
#ifdef FEATURE_CLOUD
|
||||||
|
@ -18,29 +18,11 @@ using StatsUpdateRateChangeDisplay = makeComponent<
|
|||||||
BackActionInterface<SwitchScreenAction<TimersMenu>>,
|
BackActionInterface<SwitchScreenAction<TimersMenu>>,
|
||||||
SwitchScreenAction<TimersMenu>
|
SwitchScreenAction<TimersMenu>
|
||||||
>;
|
>;
|
||||||
|
|
||||||
using DisplayUpdateRateChangeDisplay = makeComponent<
|
|
||||||
ChangeValueDisplay<int16_t>,
|
|
||||||
StaticText<TEXT_DISPLAYUPDATERATE>,
|
|
||||||
DisplayUpdateRateAccessor,
|
|
||||||
BackActionInterface<SwitchScreenAction<TimersMenu>>,
|
|
||||||
SwitchScreenAction<TimersMenu>
|
|
||||||
>;
|
|
||||||
|
|
||||||
using DisplayRedrawRateChangeDisplay = makeComponent<
|
|
||||||
ChangeValueDisplay<int16_t>,
|
|
||||||
StaticText<TEXT_DISPLAYREDRAWRATE>,
|
|
||||||
DisplayRedrawRateAccessor,
|
|
||||||
BackActionInterface<SwitchScreenAction<TimersMenu>>,
|
|
||||||
SwitchScreenAction<TimersMenu>
|
|
||||||
>;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TimersMenu::TimersMenu()
|
TimersMenu::TimersMenu()
|
||||||
{
|
{
|
||||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_STATSUPDATERATE>, SwitchScreenAction<StatsUpdateRateChangeDisplay>>>();
|
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_STATSUPDATERATE>, SwitchScreenAction<StatsUpdateRateChangeDisplay>>>();
|
||||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_DISPLAYUPDATERATE>, SwitchScreenAction<DisplayUpdateRateChangeDisplay>>>();
|
|
||||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_DISPLAYREDRAWRATE>, SwitchScreenAction<DisplayRedrawRateChangeDisplay>>>();
|
|
||||||
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<BoardcomputerHardwareSettingsMenu>, StaticMenuItemIcon<&espgui::icons::back>>>();
|
constructMenuItem<makeComponent<MenuItem, StaticText<TEXT_BACK>, SwitchScreenAction<BoardcomputerHardwareSettingsMenu>, StaticMenuItemIcon<&espgui::icons::back>>>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -34,8 +34,6 @@ using namespace std::chrono_literals;
|
|||||||
namespace {
|
namespace {
|
||||||
espchrono::millis_clock::time_point lastStatsPush;
|
espchrono::millis_clock::time_point lastStatsPush;
|
||||||
std::optional<espchrono::millis_clock::time_point> lastStatsUpdate;
|
std::optional<espchrono::millis_clock::time_point> lastStatsUpdate;
|
||||||
std::optional<espchrono::millis_clock::time_point> lastDisplayUpdate;
|
|
||||||
std::optional<espchrono::millis_clock::time_point> lastDisplayRedraw;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
extern "C" void app_main()
|
extern "C" void app_main()
|
||||||
@ -123,20 +121,6 @@ extern "C" void app_main()
|
|||||||
lastStatsUpdate = now;
|
lastStatsUpdate = now;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!lastDisplayUpdate || now - *lastDisplayUpdate >= 1000ms/settings.boardcomputerHardware.timersSettings.displayUpdateRate)
|
|
||||||
{
|
|
||||||
updateDisplay();
|
|
||||||
|
|
||||||
lastDisplayUpdate = now;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!lastDisplayRedraw || now - *lastDisplayRedraw >= 1000ms/settings.boardcomputerHardware.timersSettings.displayRedrawRate)
|
|
||||||
{
|
|
||||||
redrawDisplay();
|
|
||||||
|
|
||||||
lastDisplayRedraw = now;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (now - lastStatsPush >= 1s)
|
if (now - lastStatsPush >= 1s)
|
||||||
{
|
{
|
||||||
sched_pushStats(false);
|
sched_pushStats(false);
|
||||||
|
@ -137,8 +137,6 @@ constexpr Settings::ControllerHardware spinnerControllerHardware {
|
|||||||
|
|
||||||
constexpr Settings::BoardcomputerHardware::TimersSettings defaultTimersSettings {
|
constexpr Settings::BoardcomputerHardware::TimersSettings defaultTimersSettings {
|
||||||
.statsUpdateRate = 50,
|
.statsUpdateRate = 50,
|
||||||
.displayUpdateRate = 50,
|
|
||||||
.displayRedrawRate = 50,
|
|
||||||
#ifdef FEATURE_CLOUD
|
#ifdef FEATURE_CLOUD
|
||||||
.cloudCollectRate = 100,
|
.cloudCollectRate = 100,
|
||||||
.cloudSendRate = 1,
|
.cloudSendRate = 1,
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
// 3rdparty lib includes
|
// 3rdparty lib includes
|
||||||
#include <tftinstance.h>
|
#include <tftinstance.h>
|
||||||
|
#include <screenmanager.h>
|
||||||
|
|
||||||
// local includes
|
// local includes
|
||||||
#include "globals.h"
|
#include "globals.h"
|
||||||
|
@ -1,11 +1,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
// system includes
|
|
||||||
#include <optional>
|
|
||||||
|
|
||||||
// 3rdparty lib includes
|
// 3rdparty lib includes
|
||||||
#include <widgets/label.h>
|
#include <widgets/label.h>
|
||||||
#include <screenmanager.h>
|
|
||||||
|
|
||||||
extern espgui::Label bootLabel;
|
extern espgui::Label bootLabel;
|
||||||
|
|
||||||
|
@ -104,8 +104,6 @@ struct Settings
|
|||||||
|
|
||||||
struct TimersSettings {
|
struct TimersSettings {
|
||||||
int16_t statsUpdateRate;
|
int16_t statsUpdateRate;
|
||||||
int16_t displayUpdateRate;
|
|
||||||
int16_t displayRedrawRate;
|
|
||||||
#ifdef FEATURE_CLOUD
|
#ifdef FEATURE_CLOUD
|
||||||
int16_t cloudCollectRate;
|
int16_t cloudCollectRate;
|
||||||
int16_t cloudSendRate;
|
int16_t cloudSendRate;
|
||||||
@ -303,8 +301,6 @@ void Settings::executeForEveryCommonSetting(T &&callable)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
callable("statsUpdateRate", boardcomputerHardware.timersSettings.statsUpdateRate);
|
callable("statsUpdateRate", boardcomputerHardware.timersSettings.statsUpdateRate);
|
||||||
callable("displayUpdateRa", boardcomputerHardware.timersSettings.displayUpdateRate);
|
|
||||||
callable("displayRedrawRa", boardcomputerHardware.timersSettings.displayRedrawRate);
|
|
||||||
#ifdef FEATURE_CLOUD
|
#ifdef FEATURE_CLOUD
|
||||||
callable("cloudCollectRat", boardcomputerHardware.timersSettings.cloudCollectRate);
|
callable("cloudCollectRat", boardcomputerHardware.timersSettings.cloudCollectRate);
|
||||||
callable("cloudSendRate", boardcomputerHardware.timersSettings.cloudSendRate);
|
callable("cloudSendRate", boardcomputerHardware.timersSettings.cloudSendRate);
|
||||||
|
@ -77,12 +77,15 @@
|
|||||||
#ifdef FEATURE_DNS_NS
|
#ifdef FEATURE_DNS_NS
|
||||||
#include "dnsannounce.h"
|
#include "dnsannounce.h"
|
||||||
#endif
|
#endif
|
||||||
|
#include "screens.h"
|
||||||
|
|
||||||
using namespace std::chrono_literals;
|
using namespace std::chrono_literals;
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
constexpr const char * const TAG = "TASKS";
|
constexpr const char * const TAG = "TASKS";
|
||||||
|
|
||||||
|
void not_needed() {}
|
||||||
|
|
||||||
espcpputils::SchedulerTask schedulerTasksArr[] {
|
espcpputils::SchedulerTask schedulerTasksArr[] {
|
||||||
espcpputils::SchedulerTask { "wifi", wifi_begin, wifi_update, 100ms },
|
espcpputils::SchedulerTask { "wifi", wifi_begin, wifi_update, 100ms },
|
||||||
espcpputils::SchedulerTask { "input", InputDispatcher::init, InputDispatcher::update, 20ms },
|
espcpputils::SchedulerTask { "input", InputDispatcher::init, InputDispatcher::update, 20ms },
|
||||||
@ -151,6 +154,8 @@ espcpputils::SchedulerTask schedulerTasksArr[] {
|
|||||||
#ifdef FEATURE_DNS_NS
|
#ifdef FEATURE_DNS_NS
|
||||||
espcpputils::SchedulerTask { "dnsannounce", init_dns_announce, handle_dns_announce, 100ms },
|
espcpputils::SchedulerTask { "dnsannounce", init_dns_announce, handle_dns_announce, 100ms },
|
||||||
#endif
|
#endif
|
||||||
|
espcpputils::SchedulerTask { "updateDisp", not_needed, updateDisplay, 20ms },
|
||||||
|
espcpputils::SchedulerTask { "redrawDisp", not_needed, redrawDisplay, 20ms },
|
||||||
};
|
};
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
|
@ -431,8 +431,6 @@ char TEXT_MOTORTEST[] = "Motortest";
|
|||||||
//TimersMenu
|
//TimersMenu
|
||||||
//char TEXT_TIMERS[] = "Timers";
|
//char TEXT_TIMERS[] = "Timers";
|
||||||
char TEXT_STATSUPDATERATE[] = "Stats update rate";
|
char TEXT_STATSUPDATERATE[] = "Stats update rate";
|
||||||
char TEXT_DISPLAYUPDATERATE[] = "Display update rate";
|
|
||||||
char TEXT_DISPLAYREDRAWRATE[] = "Display redraw rate";
|
|
||||||
//char TEXT_BACK[] = "Back";
|
//char TEXT_BACK[] = "Back";
|
||||||
|
|
||||||
//TimeSettingsMenu
|
//TimeSettingsMenu
|
||||||
|
@ -431,8 +431,6 @@ extern char TEXT_MOTORTEST[];
|
|||||||
//TimersMenu
|
//TimersMenu
|
||||||
//extern char TEXT_TIMERS[];
|
//extern char TEXT_TIMERS[];
|
||||||
extern char TEXT_STATSUPDATERATE[];
|
extern char TEXT_STATSUPDATERATE[];
|
||||||
extern char TEXT_DISPLAYUPDATERATE[];
|
|
||||||
extern char TEXT_DISPLAYREDRAWRATE[];
|
|
||||||
//extern char TEXT_BACK[];
|
//extern char TEXT_BACK[];
|
||||||
|
|
||||||
//TimeSettingsMenu
|
//TimeSettingsMenu
|
||||||
|
Reference in New Issue
Block a user