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

View File

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

View File

@ -60,6 +60,14 @@ struct Settings
int16_t gametrakXMin, gametrakXMax, gametrakYMin, gametrakYMax, gametrakDistMin, gametrakDistMax;
#endif
bool swapScreenBytes;
struct TimersSettings {
int16_t potiReadRate;
int16_t modeUpdateRate;
int16_t statsUpdateRate;
int16_t displayUpdateRate;
int16_t displayRedrawRate;
} timersSettings;
} boardcomputerHardware;
struct DefaultMode {
@ -143,6 +151,11 @@ void Settings::executeForEverySetting(T &&callable)
callable("gametrakDistMax", boardcomputerHardware.gametrakDistMax);
#endif
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.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; } };
#endif
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 DefaultModeEnableSmoothingAccessor : public RefAccessorSaveSettings<bool> { bool &getRef() const override { return settings.defaultMode.enableSmoothing; } };