Ursprung
024980f831
Commit
f6115ba207
@ -251,6 +251,14 @@ std::string toString(const Message& message)
|
||||
|
||||
case Command::Ping:
|
||||
s.append("Ping");
|
||||
if(message.dlc == 8)
|
||||
{
|
||||
const auto& pingReply = static_cast<const PingReply&>(message);
|
||||
s.append(" ").append(UID::toString(pingReply.uid()));
|
||||
s.append(" software_version=").append(std::to_string(pingReply.softwareVersionMajor())).append(".").append(std::to_string(pingReply.softwareVersionMinor()));
|
||||
s.append(" device_id=0x").append(toHex(static_cast<uint16_t>(pingReply.deviceId())));
|
||||
s.append(" (").append(toString(pingReply.deviceId())).append(")");
|
||||
}
|
||||
break;
|
||||
|
||||
case Command::Update:
|
||||
@ -295,4 +303,30 @@ std::string toString(const Message& message)
|
||||
return s;
|
||||
}
|
||||
|
||||
std::string_view toString(MarklinCAN::DeviceId value)
|
||||
{
|
||||
switch(value)
|
||||
{
|
||||
case DeviceId::GleisFormatProzessorOrBooster:
|
||||
return "Gleis Format Prozessor 60213,60214 / Booster 60173, 60174";
|
||||
|
||||
case DeviceId::Gleisbox:
|
||||
return "Gleisbox 60112 und 60113";
|
||||
|
||||
case DeviceId::Connect6021:
|
||||
return "Connect 6021 Art-Nr.60128";
|
||||
|
||||
case DeviceId::MS2:
|
||||
return "MS 2 60653, Txxxxx";
|
||||
|
||||
case DeviceId::WirelessDevices:
|
||||
return "Wireless Devices";
|
||||
|
||||
case DeviceId::CS2GUI:
|
||||
return "CS2-GUI (Master)";
|
||||
}
|
||||
assert(false);
|
||||
return {};
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -83,6 +83,16 @@ enum class SystemSubCommand : uint8_t
|
||||
ModelClock = 0x20,
|
||||
};
|
||||
|
||||
enum class DeviceId : uint16_t
|
||||
{
|
||||
GleisFormatProzessorOrBooster= 0x0000, //!< Gleis Format Prozessor 60213,60214 / Booster 60173, 60174
|
||||
Gleisbox = 0x0010, //!< Gleisbox 60112 und 60113
|
||||
Connect6021 = 0x0020, //!< Connect 6021 Art-Nr.60128
|
||||
MS2 = 0x0030, //!< MS 2 60653, Txxxxx
|
||||
WirelessDevices = 0xFFE0, //!< Wireless Devices
|
||||
CS2GUI = 0xFFFF //!< CS2-GUI (Master)
|
||||
};
|
||||
|
||||
struct Message
|
||||
{
|
||||
static constexpr uint32_t responseMask = 0x00010000;
|
||||
@ -638,6 +648,52 @@ struct FeedbackState : FeedbackMessage
|
||||
}
|
||||
};
|
||||
|
||||
struct Ping : Message
|
||||
{
|
||||
Ping()
|
||||
: Message(Command::Ping, false)
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
struct PingReply : UidMessage
|
||||
{
|
||||
PingReply(uint32_t uid)
|
||||
: UidMessage(Command::Ping, true, uid)
|
||||
{
|
||||
dlc = 8;
|
||||
}
|
||||
|
||||
uint8_t softwareVersionMajor() const
|
||||
{
|
||||
return data[4];
|
||||
}
|
||||
|
||||
uint8_t softwareVersionMinor() const
|
||||
{
|
||||
return data[5];
|
||||
}
|
||||
|
||||
void setSoftwareVersion(uint8_t major, uint8_t minor)
|
||||
{
|
||||
data[4] = major;
|
||||
data[5] = minor;
|
||||
}
|
||||
|
||||
DeviceId deviceId() const
|
||||
{
|
||||
return static_cast<DeviceId>(to16(data[7], data[6]));
|
||||
}
|
||||
|
||||
void setDeviceId(DeviceId value)
|
||||
{
|
||||
data[6] = high8(static_cast<uint16_t>(value));
|
||||
data[7] = low8(static_cast<uint16_t>(value));
|
||||
}
|
||||
};
|
||||
|
||||
std::string_view toString(MarklinCAN::DeviceId value);
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
Laden…
x
In neuem Issue referenzieren
Einen Benutzer sperren