XpressNet: add more message to logger

Dieser Commit ist enthalten in:
Filippo Gentile 2024-09-17 14:08:16 +02:00
Ursprung 71ccb413b0
Commit b78cdd46b7
2 geänderte Dateien mit 64 neuen und 8 gelöschten Zeilen

Datei anzeigen

@ -44,13 +44,61 @@ bool isChecksumValid(const Message& msg, const int dataSize)
return calcChecksum(msg, dataSize) == *(reinterpret_cast<const uint8_t*>(&msg) + dataSize + 1);
}
std::string toString(const Message& message)
std::string toString(const Message& message, bool raw)
{
std::string s;
std::string s = toHex(message.identification());
// Human readable:
switch(message.header)
switch(message.identification())
{
case 0x21:
{
if(message == ResumeOperationsRequest())
{
s = "RESUME_OPERATIONS_REQUEST";
}
else if(message == StopOperationsRequest())
{
s = "STOP_OPERATIONS_REQUEST";
}
else
raw = true;
break;
}
case 0x61:
{
if(message == NormalOperationResumed())
{
s = "NORMAL_OPERATIONS_RESUMED";
}
else if(message == TrackPowerOff())
{
s = "TRACK_POWER_OFF";
}
else
raw = true;
break;
}
case 0x80:
{
if(message == StopAllLocomotivesRequest())
{
s = "STOP_ALL_LOCO_REQUEST";
}
else
raw = true;
break;
}
case 0x81:
{
if(message == EmergencyStop())
{
s = "EMERGENCY_STOP";
}
else
raw = true;
break;
}
case 0x52:
{
const auto& req = static_cast<const AccessoryDecoderOperationRequest&>(message);
@ -60,13 +108,21 @@ std::string toString(const Message& message)
s.append(req.activate() ? " activate" : " deactivate");
break;
}
default:
{
raw = true;
break;
}
// FIXME: add all messages
}
// Raw data:
s.append(" [");
s.append(toHex(reinterpret_cast<const uint8_t*>(&message), message.size(), true));
s.append("]");
if(raw)
{
// Raw data:
s.append(" [");
s.append(toHex(reinterpret_cast<const uint8_t*>(&message), message.size(), true));
s.append("]");
}
return s;
}

Datei anzeigen

@ -48,7 +48,7 @@ void updateChecksum(Message& msg);
inline bool isChecksumValid(const Message& msg);
bool isChecksumValid(const Message& msg, const int dataSize);
std::string toString(const Message& message);
std::string toString(const Message& message, bool raw = false);
struct Message
{