Introduced settings for time intervals

This commit is contained in:
2020-06-11 14:47:13 +02:00
parent 0af50b64b2
commit db4b746743
4 changed files with 39 additions and 17 deletions

View File

@ -32,12 +32,8 @@ ModeInterface *lastMode{};
millis_t lastPotiRead{}; millis_t lastPotiRead{};
millis_t lastModeUpdate{}; millis_t lastModeUpdate{};
millis_t lastStatsUpdate{}; millis_t lastStatsUpdate{};
millis_t lastDisplayUpdate{};
millis_t lastDisplayRedraw{}; millis_t lastDisplayRedraw{};
constexpr auto potiReadRate = 50;
constexpr auto modeUpdateRate = 50;
constexpr auto statsUpdateRate = 50;
constexpr auto displayRedrawRate = 50;
} }
void setup() void setup()
@ -150,18 +146,14 @@ void loop()
dpad3wire::update(); dpad3wire::update();
#endif #endif
if (!lastPotiRead) if (!lastPotiRead || now - lastPotiRead >= 1000/settings.boardcomputerHardware.timersSettings.potiReadRate)
lastPotiRead = now;
else if (now - lastPotiRead >= 1000/potiReadRate)
{ {
readPotis(); readPotis();
lastPotiRead = now; lastPotiRead = now;
} }
if (!lastModeUpdate) if (!lastModeUpdate || now - lastModeUpdate >= 1000/settings.boardcomputerHardware.timersSettings.modeUpdateRate)
lastModeUpdate = now;
else if (now - lastModeUpdate >= 1000/modeUpdateRate)
{ {
if (lastMode != currentMode) if (lastMode != currentMode)
{ {
@ -180,18 +172,21 @@ void loop()
performance.current++; performance.current++;
} }
if (!lastStatsUpdate) if (!lastStatsUpdate || now - lastStatsUpdate >= 1000/settings.boardcomputerHardware.timersSettings.statsUpdateRate)
lastStatsUpdate = now;
else if (now - lastStatsUpdate >= 1000/statsUpdateRate)
{ {
updateAccumulators(); updateAccumulators();
pushStats(); pushStats();
lastStatsUpdate = now; lastStatsUpdate = now;
} }
updateDisplay(); if (!lastDisplayUpdate || now - lastDisplayUpdate >= 1000/settings.boardcomputerHardware.timersSettings.displayUpdateRate)
{
updateDisplay();
if (!lastDisplayRedraw || now - lastDisplayRedraw >= 1000/displayRedrawRate) lastDisplayUpdate = now;
}
if (!lastDisplayRedraw || now - lastDisplayRedraw >= 1000/settings.boardcomputerHardware.timersSettings.displayRedrawRate)
{ {
redrawDisplay(); redrawDisplay();

View File

@ -76,6 +76,14 @@ constexpr Settings::ControllerHardware spinnerControllerHardware {
.swapFrontBack = false .swapFrontBack = false
}; };
constexpr Settings::BoardcomputerHardware::TimersSettings defaultTimersSettings {
.potiReadRate = 50,
.modeUpdateRate = 50,
.statsUpdateRate = 50,
.displayUpdateRate = 50,
.displayRedrawRate = 50
};
constexpr Settings::BoardcomputerHardware defaultBoardcomputerHardware { constexpr Settings::BoardcomputerHardware defaultBoardcomputerHardware {
.sampleCount = 100, .sampleCount = 100,
.gasMin = DEFAULT_GASMIN, .gasMin = DEFAULT_GASMIN,
@ -93,7 +101,8 @@ constexpr Settings::BoardcomputerHardware defaultBoardcomputerHardware {
.gametrakDistMin = DEFAULT_GAMETRAKDISTMIN, .gametrakDistMin = DEFAULT_GAMETRAKDISTMIN,
.gametrakDistMax = DEFAULT_GAMETRAKDISTMAX, .gametrakDistMax = DEFAULT_GAMETRAKDISTMAX,
#endif #endif
.swapScreenBytes = DEFAULT_SWAPSCREENBYTES .swapScreenBytes = DEFAULT_SWAPSCREENBYTES,
.timersSettings = defaultTimersSettings
}; };
constexpr Settings::DefaultMode defaultDefaultMode { constexpr Settings::DefaultMode defaultDefaultMode {

View File

@ -60,6 +60,14 @@ struct Settings
int16_t gametrakXMin, gametrakXMax, gametrakYMin, gametrakYMax, gametrakDistMin, gametrakDistMax; int16_t gametrakXMin, gametrakXMax, gametrakYMin, gametrakYMax, gametrakDistMin, gametrakDistMax;
#endif #endif
bool swapScreenBytes; bool swapScreenBytes;
struct TimersSettings {
int16_t potiReadRate;
int16_t modeUpdateRate;
int16_t statsUpdateRate;
int16_t displayUpdateRate;
int16_t displayRedrawRate;
} timersSettings;
} boardcomputerHardware; } boardcomputerHardware;
struct DefaultMode { struct DefaultMode {
@ -143,6 +151,11 @@ void Settings::executeForEverySetting(T &&callable)
callable("gametrakDistMax", boardcomputerHardware.gametrakDistMax); callable("gametrakDistMax", boardcomputerHardware.gametrakDistMax);
#endif #endif
callable("swapScreenBytes", boardcomputerHardware.swapScreenBytes); callable("swapScreenBytes", boardcomputerHardware.swapScreenBytes);
callable("potiReadRate", boardcomputerHardware.timersSettings.potiReadRate);
callable("modeUpdateRate", boardcomputerHardware.timersSettings.modeUpdateRate);
callable("statsUpdateRate", boardcomputerHardware.timersSettings.statsUpdateRate);
callable("displayUpdateRa", boardcomputerHardware.timersSettings.displayUpdateRate);
callable("displayRedrawRa", boardcomputerHardware.timersSettings.displayRedrawRate);
callable("default.modelMo", defaultMode.modelMode); callable("default.modelMo", defaultMode.modelMode);
callable("default.enableS", defaultMode.enableSmoothing); callable("default.enableS", defaultMode.enableSmoothing);

View File

@ -76,6 +76,11 @@ 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 SwapScreenBytesAccessor : public RefAccessorSaveSettings<bool> { bool &getRef() const override { return settings.boardcomputerHardware.swapScreenBytes; } }; struct SwapScreenBytesAccessor : public RefAccessorSaveSettings<bool> { bool &getRef() const override { return settings.boardcomputerHardware.swapScreenBytes; } };
struct PotiReadRateAccessor : public RefAccessorSaveSettings<int16_t> { int16_t &getRef() const override { return settings.boardcomputerHardware.timersSettings.potiReadRate; } };
struct ModeUpdateRateAccessor : public RefAccessorSaveSettings<int16_t> { int16_t &getRef() const override { return settings.boardcomputerHardware.timersSettings.modeUpdateRate; } };
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; } };
struct DefaultModeModelModeAccessor : public RefAccessorSaveSettings<UnifiedModelMode> { UnifiedModelMode &getRef() const override { return settings.defaultMode.modelMode; } }; struct DefaultModeModelModeAccessor : public RefAccessorSaveSettings<UnifiedModelMode> { UnifiedModelMode &getRef() const override { return settings.defaultMode.modelMode; } };
struct DefaultModeEnableSmoothingAccessor : public RefAccessorSaveSettings<bool> { bool &getRef() const override { return settings.defaultMode.enableSmoothing; } }; struct DefaultModeEnableSmoothingAccessor : public RefAccessorSaveSettings<bool> { bool &getRef() const override { return settings.defaultMode.enableSmoothing; } };