server: Z21 ClientKernel prevent speed trend override
Dieser Commit ist enthalten in:
Ursprung
379c22c0fc
Commit
5b48969fbb
@ -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
|
||||
|
||||
@ -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;
|
||||
};
|
||||
|
||||
Laden…
x
In neuem Issue referenzieren
Einen Benutzer sperren