From 0a5e654df7c5db891ea7f0ca68ef27c9d3bb4597 Mon Sep 17 00:00:00 2001 From: Filippo Gentile Date: Sat, 24 Jun 2023 15:41:08 +0200 Subject: [PATCH] server: Z21 use less hardcoded values - Add new labels for message values - Remove unneeded Z21 namespace prefix - Fix newlines after case --- .../z21/iohandler/simulationiohandler.cpp | 6 +-- server/src/hardware/protocol/z21/messages.cpp | 20 ++++---- server/src/hardware/protocol/z21/messages.hpp | 51 +++++++++++++------ .../hardware/protocol/z21/serverkernel.cpp | 6 +-- 4 files changed, 52 insertions(+), 31 deletions(-) diff --git a/server/src/hardware/protocol/z21/iohandler/simulationiohandler.cpp b/server/src/hardware/protocol/z21/iohandler/simulationiohandler.cpp index a0108f2e..e48119a4 100644 --- a/server/src/hardware/protocol/z21/iohandler/simulationiohandler.cpp +++ b/server/src/hardware/protocol/z21/iohandler/simulationiohandler.cpp @@ -99,7 +99,7 @@ bool SimulationIOHandler::send(const Message& message) } break; - case 0xE3: + case LAN_X_GET_LOCO_INFO: if(const auto& getLocoInfo = static_cast(message); getLocoInfo.db0 == 0xF0) { @@ -107,7 +107,7 @@ bool SimulationIOHandler::send(const Message& message) } break; - case 0xE4: + case LAN_X_SET_LOCO: if(const auto& setLocoDrive = static_cast(message); setLocoDrive.db0 >= 0x10 && setLocoDrive.db0 <= 0x13) { @@ -121,7 +121,7 @@ bool SimulationIOHandler::send(const Message& message) } break; - case 0xF1: + case LAN_X_GET_FIRMWARE_VERSION: if(message == LanXGetFirmwareVersion()) { reply(LanXGetFirmwareVersionReply(firmwareVersionMajor, ServerConfig::firmwareVersionMinor)); diff --git a/server/src/hardware/protocol/z21/messages.cpp b/server/src/hardware/protocol/z21/messages.cpp index 050028d3..2df19aa9 100644 --- a/server/src/hardware/protocol/z21/messages.cpp +++ b/server/src/hardware/protocol/z21/messages.cpp @@ -71,7 +71,7 @@ std::string toString(const Message& message, bool raw) switch(message.header()) { case LAN_LOGOFF: - if(message.dataLen() != sizeof(Z21::LanLogoff)) + if(message.dataLen() != sizeof(LanLogoff)) raw = true; break; @@ -91,7 +91,7 @@ std::string toString(const Message& message, bool raw) raw = true; break; - case 0x53: + case LAN_X_SET_TURNOUT: { const auto& setTurnout = static_cast(message); s = "LAN_X_SET_TURNOUT"; @@ -102,6 +102,7 @@ std::string toString(const Message& message, bool raw) s.append(" queue=").append(setTurnout.queue() ? "yes" : "no"); break; } + case LAN_X_BC: if(message == LanXBCTrackPowerOff()) s = "LAN_X_BC_TRACK_POWER_OFF"; @@ -113,7 +114,7 @@ std::string toString(const Message& message, bool raw) raw = true; break; - case 0x62: + case LAN_X_STATUS_CHANGED: if(const LanXStatusChanged& statusChanged = static_cast(message); statusChanged.db0 == 0x22) { s = "LAN_X_STATUS_CHANGED"; @@ -140,7 +141,7 @@ std::string toString(const Message& message, bool raw) raw = true; break; - case 0xE3: + case LAN_X_GET_LOCO_INFO: if(const auto& getLocoInfo = static_cast(message); getLocoInfo.db0 == 0xF0) { s = "LAN_X_GET_LOCO_INFO"; @@ -152,7 +153,7 @@ std::string toString(const Message& message, bool raw) raw = true; break; - case 0xE4: + case LAN_X_SET_LOCO: if(const auto& setLocoDrive = static_cast(message); setLocoDrive.db0 >= 0x10 && setLocoDrive.db0 <= 0x13) { @@ -181,7 +182,7 @@ std::string toString(const Message& message, bool raw) raw = true; break; - case 0xEF: + case LAN_X_LOCO_INFO: { const auto& locoInfo = static_cast(message); s = "LAN_X_LOCO_INFO"; @@ -199,14 +200,15 @@ std::string toString(const Message& message, bool raw) s.append(" busy=").append(locoInfo.isBusy() ? "1" : "0"); break; } - case 0xF1: + + case LAN_X_GET_FIRMWARE_VERSION: if(message == LanXGetFirmwareVersion()) s = "LAN_X_GET_FIRMWARE_VERSION"; else raw = true; break; - case 0xF3: + case LAN_X_GET_FIRMWARE_VERSION_REPLY: if(message.dataLen() == sizeof(LanXGetFirmwareVersionReply)) { const auto& getFirmwareVersion = static_cast(message); @@ -237,7 +239,7 @@ std::string toString(const Message& message, bool raw) break; case LAN_SET_BROADCASTFLAGS: - if(message.dataLen() == sizeof(Z21::LanSetBroadcastFlags)) + if(message.dataLen() == sizeof(LanSetBroadcastFlags)) { s = "LAN_SET_BROADCASTFLAGS"; s.append(" flags=0x").append(toHex(static_cast>(static_cast(message).broadcastFlags()))); diff --git a/server/src/hardware/protocol/z21/messages.hpp b/server/src/hardware/protocol/z21/messages.hpp index a6ca9bbd..a857717f 100644 --- a/server/src/hardware/protocol/z21/messages.hpp +++ b/server/src/hardware/protocol/z21/messages.hpp @@ -142,18 +142,37 @@ enum LocoMode : uint8_t Motorola = 1, }; -static constexpr uint8_t LAN_X_SET_STOP = 0x80; static constexpr uint8_t LAN_X_TURNOUT_INFO = 0x43; +static constexpr uint8_t LAN_X_SET_TURNOUT = 0x53; + static constexpr uint8_t LAN_X_BC = 0x61; + +static constexpr uint8_t LAN_X_STATUS_CHANGED = 0x62; +static constexpr uint8_t LAN_X_GET_VERSION_REPLY = 0x63; + +//static constexpr uint8_t LAN_X_CV_NACK_SC = 0x12; +//static constexpr uint8_t LAN_X_CV_NACK = 0x13; +//static constexpr uint8_t LAN_X_UNKNOWN_COMMAND = 0x82; + +static constexpr uint8_t LAN_X_SET_STOP = 0x80; +static constexpr uint8_t LAN_X_BC_STOPPED = 0x81; + +static constexpr uint8_t LAN_X_GET_LOCO_INFO = 0xE3; +static constexpr uint8_t LAN_X_SET_LOCO = 0xE4; +static constexpr uint8_t LAN_X_LOCO_INFO = 0xEF; + +static constexpr uint8_t LAN_X_GET_FIRMWARE_VERSION = 0xF1; +static constexpr uint8_t LAN_X_GET_FIRMWARE_VERSION_REPLY = 0xF3; + +// db0 for xHeader 0x21 +static constexpr uint8_t LAN_X_SET_TRACK_POWER_OFF = 0x80; +static constexpr uint8_t LAN_X_SET_TRACK_POWER_ON = 0x81; + +// db0 for xHeader LAN_X_BC static constexpr uint8_t LAN_X_BC_TRACK_POWER_OFF = 0x00; static constexpr uint8_t LAN_X_BC_TRACK_POWER_ON = 0x01; //static constexpr uint8_t LAN_X_BC_PROGRAMMING_MODE = 0x02; static constexpr uint8_t LAN_X_BC_TRACK_SHORT_CIRCUIT = 0x08; -//static constexpr uint8_t LAN_X_CV_NACK_SC = 0x12; -//static constexpr uint8_t LAN_X_CV_NACK = 0x13; -//static constexpr uint8_t LAN_X_UNKNOWN_COMMAND = 0x82; -static constexpr uint8_t LAN_X_BC_STOPPED = 0x81; -static constexpr uint8_t LAN_X_LOCO_INFO = 0xEF; enum HardwareType : uint32_t { @@ -332,7 +351,7 @@ struct LanXGetFirmwareVersion : LanX uint8_t checksum = 0xFB; LanXGetFirmwareVersion() : - LanX(sizeof(LanXGetFirmwareVersion), 0xF1) + LanX(sizeof(LanXGetFirmwareVersion), LAN_X_GET_FIRMWARE_VERSION) { } } ATTRIBUTE_PACKED; @@ -354,7 +373,7 @@ static_assert(sizeof(LanXGetStatus) == 7); // LAN_X_SET_TRACK_POWER_OFF struct LanXSetTrackPowerOff : LanX { - uint8_t db0 = 0x80; + uint8_t db0 = LAN_X_SET_TRACK_POWER_OFF; uint8_t checksum = 0xa1; LanXSetTrackPowerOff() : @@ -367,7 +386,7 @@ static_assert(sizeof(LanXSetTrackPowerOff) == 7); // LAN_X_SET_TRACK_POWER_ON struct LanXSetTrackPowerOn : LanX { - uint8_t db0 = 0x81; + uint8_t db0 = LAN_X_SET_TRACK_POWER_OFF; uint8_t checksum = 0xa0; LanXSetTrackPowerOn() : @@ -422,7 +441,7 @@ struct LanXSetTurnout : LanX uint8_t checksum; LanXSetTurnout(uint16_t linearAddress, bool activate, bool queue = false) - : LanX(sizeof(LanXSetTurnout), 0x53) + : LanX(sizeof(LanXSetTurnout), LAN_X_SET_TURNOUT) , db0(linearAddress >> 9) , db1((linearAddress >> 1) & 0xFF) { @@ -484,7 +503,7 @@ struct LanXGetLocoInfo : LanX uint8_t checksum; LanXGetLocoInfo(uint16_t address, bool longAddress) : - LanX(sizeof(LanXGetLocoInfo), 0xE3) + LanX(sizeof(LanXGetLocoInfo), LAN_X_GET_LOCO_INFO) { setAddress(address, longAddress); updateChecksum(); @@ -518,7 +537,7 @@ struct LanXSetLocoDrive : LanX uint8_t checksum; LanXSetLocoDrive() : - LanX(sizeof(LanXSetLocoDrive), 0xE4) + LanX(sizeof(LanXSetLocoDrive), LAN_X_SET_LOCO) { } @@ -623,7 +642,7 @@ struct LanXSetLocoFunction : LanX uint8_t checksum; LanXSetLocoFunction() : - LanX(sizeof(LanXSetLocoFunction), 0xE4) + LanX(sizeof(LanXSetLocoFunction), LAN_X_SET_LOCO) { } @@ -909,7 +928,7 @@ struct LanXGetVersionReply : LanX uint8_t checksum; LanXGetVersionReply() - : LanX(sizeof(LanXGetVersionReply), 0x63) + : LanX(sizeof(LanXGetVersionReply), LAN_X_GET_VERSION_REPLY) { } @@ -945,7 +964,7 @@ struct LanXGetFirmwareVersionReply : LanX uint8_t checksum; LanXGetFirmwareVersionReply() : - LanX(sizeof(LanXGetFirmwareVersionReply), 0xF3) + LanX(sizeof(LanXGetFirmwareVersionReply), LAN_X_GET_FIRMWARE_VERSION_REPLY) { } @@ -1068,7 +1087,7 @@ struct LanXStatusChanged : LanX uint8_t checksum; LanXStatusChanged() : - LanX(sizeof(LanXStatusChanged), 0x62) + LanX(sizeof(LanXStatusChanged), LAN_X_STATUS_CHANGED) { } } ATTRIBUTE_PACKED; diff --git a/server/src/hardware/protocol/z21/serverkernel.cpp b/server/src/hardware/protocol/z21/serverkernel.cpp index bde85557..69cb6ea4 100644 --- a/server/src/hardware/protocol/z21/serverkernel.cpp +++ b/server/src/hardware/protocol/z21/serverkernel.cpp @@ -150,7 +150,7 @@ void ServerKernel::receiveFrom(const Message& message, IOHandler::ClientId clien } break; - case 0xE3: + case LAN_X_GET_LOCO_INFO: if(const auto& getLocoInfo = static_cast(message); getLocoInfo.db0 == 0xF0) { @@ -165,7 +165,7 @@ void ServerKernel::receiveFrom(const Message& message, IOHandler::ClientId clien } break; - case 0xE4: + case LAN_X_SET_LOCO: if(const auto& setLocoDrive = static_cast(message); setLocoDrive.db0 >= 0x10 && setLocoDrive.db0 <= 0x13) { @@ -221,7 +221,7 @@ void ServerKernel::receiveFrom(const Message& message, IOHandler::ClientId clien } break; - case 0xF1: + case LAN_X_GET_FIRMWARE_VERSION: if(message == LanXGetFirmwareVersion()) sendTo(LanXGetFirmwareVersionReply(ServerConfig::firmwareVersionMajor, ServerConfig::firmwareVersionMinor), clientId); break;