server: Z21 Utils, fix 28 speed step format

Dieser Commit ist enthalten in:
Filippo Gentile 2023-05-15 10:37:54 +02:00
Ursprung e0d5375a35
Commit 2c73473ea8

Datei anzeigen

@ -61,7 +61,7 @@ constexpr bool isEmergencyStop(uint8_t db, uint8_t speedSteps)
constexpr void setEmergencyStop(uint8_t& db)
{
db = (db & directionFlag) | 0x01;
db = (db & directionFlag) | 0x01; // preserve direction flag
}
constexpr uint8_t getSpeedStep(uint8_t db, uint8_t speedSteps)
@ -77,6 +77,8 @@ constexpr uint8_t getSpeedStep(uint8_t db, uint8_t speedSteps)
case 28:
db = ((db & 0x0F) << 1) | ((db & 0x10) >> 4); //! @todo check
if(db >= 3)
db -= 2;
break;
case 14:
@ -86,7 +88,7 @@ constexpr uint8_t getSpeedStep(uint8_t db, uint8_t speedSteps)
default:
return 0;
}
return db > 1 ? db - 1 : 0; // step 1 = EStop
return db >= 1 ? db - 1 : 0; // step 1 = EStop
}
constexpr void setSpeedStep(uint8_t& db, uint8_t speedSteps, uint8_t speedStep)
@ -100,7 +102,8 @@ constexpr void setSpeedStep(uint8_t& db, uint8_t speedSteps, uint8_t speedStep)
break;
case 28:
db |= ((speedStep >> 1) & 0x0F) | ((speedStep << 4) & 0x01);
speedStep += 2;
db |= ((speedStep >> 1) & 0x0F) | ((speedStep & 0x01) << 4);
break;
case 14: