Introduced settings for time intervals
This commit is contained in:
27
src/main.cpp
27
src/main.cpp
@ -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();
|
||||
|
||||
|
@ -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 {
|
||||
|
@ -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);
|
||||
|
@ -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; } };
|
||||
|
Reference in New Issue
Block a user