server: Z21 ClientKernel prevent speed trend override

Dieser Commit ist enthalten in:
Filippo Gentile 2023-06-19 10:21:36 +02:00
Ursprung 379c22c0fc
Commit 5b48969fbb
2 geänderte Dateien mit 11 neuen und 4 gelöschten Zeilen

Datei anzeigen

@ -148,10 +148,15 @@ void ClientKernel::receive(const Message& message)
targetSpeedStep = float(targetSpeedStep) / float(cache->speedSteps) * 126.0;
}
if(cache->lastReceivedSpeedStep <= currentSpeedStep)
cache->speedTrend = LocoCache::Trend::Ascending;
else
cache->speedTrend = LocoCache::Trend::Descending;
if(!cache->speedTrendExplicitlySet)
{
//Calculate new speed trend
if(cache->lastReceivedSpeedStep <= currentSpeedStep)
cache->speedTrend = LocoCache::Trend::Ascending;
else
cache->speedTrend = LocoCache::Trend::Descending;
}
cache->speedTrendExplicitlySet = false;
if(reply.speedSteps() != cache->speedSteps || reply.speedStep() != cache->speedStep)
{
@ -591,6 +596,7 @@ void ClientKernel::decoderChanged(const Decoder& decoder, DecoderChangeFlags cha
if(cache->lastReceivedSpeedStep < newTargetSpeedStep)
cache->lastReceivedSpeedStep = 126; //Reset to maximum
}
cache->speedTrendExplicitlySet = true;
//Update last seen time to ignore feedback messages of our own changes
//This potentially ignores also user commands coming from Z21 if issued

Datei anzeigen

@ -122,6 +122,7 @@ class ClientKernel final : public Kernel
uint8_t speedSteps = 0;
uint8_t lastReceivedSpeedStep = 0; //Always in 126 steps
Trend speedTrend = Trend::Ascending;
bool speedTrendExplicitlySet = false;
Direction direction = Direction::Unknown;
std::chrono::steady_clock::time_point lastSetTime;
};