Ursprung
024980f831
Commit
f6115ba207
@ -251,6 +251,14 @@ std::string toString(const Message& message)
|
|||||||
|
|
||||||
case Command::Ping:
|
case Command::Ping:
|
||||||
s.append("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;
|
break;
|
||||||
|
|
||||||
case Command::Update:
|
case Command::Update:
|
||||||
@ -295,4 +303,30 @@ std::string toString(const Message& message)
|
|||||||
return s;
|
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,
|
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
|
struct Message
|
||||||
{
|
{
|
||||||
static constexpr uint32_t responseMask = 0x00010000;
|
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
|
#endif
|
||||||
Laden…
x
In neuem Issue referenzieren
Einen Benutzer sperren