Moved display's update and redraw into task manager

This commit is contained in:
2021-12-20 10:52:02 +01:00
parent 2a56f59d86
commit 1830df26fd
10 changed files with 6 additions and 50 deletions

View File

@@ -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

View File

@@ -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>>>();
} }

View File

@@ -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);

View File

@@ -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,

View File

@@ -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"

View File

@@ -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;

View File

@@ -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);

View File

@@ -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

View File

@@ -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

View File

@@ -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