Introduced settings for time intervals
This commit is contained in:
25
src/main.cpp
25
src/main.cpp
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!lastDisplayUpdate || now - lastDisplayUpdate >= 1000/settings.boardcomputerHardware.timersSettings.displayUpdateRate)
|
||||||
|
{
|
||||||
updateDisplay();
|
updateDisplay();
|
||||||
|
|
||||||
if (!lastDisplayRedraw || now - lastDisplayRedraw >= 1000/displayRedrawRate)
|
lastDisplayUpdate = now;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!lastDisplayRedraw || now - lastDisplayRedraw >= 1000/settings.boardcomputerHardware.timersSettings.displayRedrawRate)
|
||||||
{
|
{
|
||||||
redrawDisplay();
|
redrawDisplay();
|
||||||
|
|
||||||
|
@ -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 {
|
||||||
|
@ -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);
|
||||||
|
@ -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; } };
|
||||||
|
Reference in New Issue
Block a user