Commit c9e45511 authored by Johannes Schlüter's avatar Johannes Schlüter

Update zusi3tcp

parent 8de3ea95
Pipeline #32844924 failed with stages
in 0 seconds
Subproject commit 885297ced2c48d44ba71b807ced715761dc674be
Subproject commit 139f96ebce981776d65a024ca8f0333de104071f
......@@ -26,36 +26,49 @@ void assignToState(const zusi::FtdDataMessage &msg, TargetType &field) {
}
}
static void parseDataMessage(IOps &ops, ZusiState &state,
std::unique_ptr<zusi::BaseMessage> &&msg) {
auto ftdmsg = dynamic_cast<const zusi::FtdDataMessage *>(msg.get());
auto progmsg = dynamic_cast<const zusi::ProgDataMessage *>(msg.get());
namespace {
class dataVisitor : boost::static_visitor<void> {
IOps &ops;
ZusiState &state;
public:
dataVisitor(IOps &ops, ZusiState &state) : ops(ops), state(state) {}
if (ftdmsg) {
assignToState<zusi::FS::Gesamtweg>(*ftdmsg, state.distance);
assignToState<zusi::FS::Geschwindigkeit>(*ftdmsg, state.speed);
void operator()(const zusi::FtdDataMessage &ftdmsg) const {
assignToState<zusi::FS::Gesamtweg>(ftdmsg, state.distance);
assignToState<zusi::FS::Geschwindigkeit>(ftdmsg, state.speed);
assignToState<zusi::FS::Streckenhoechstgeschwindigkeit>(
*ftdmsg, state.streckengeschwindigkeit);
assignToState<zusi::FS::ZugkraftGesamt>(*ftdmsg, state.zugkraft);
assignToState<zusi::FS::Motordrehzahl>(*ftdmsg, state.drehzahl);
assignToState<zusi::FS::Datum>(*ftdmsg, state.date);
assignToState<zusi::FS::UhrzeitStunde>(*ftdmsg, state.time->h);
assignToState<zusi::FS::UhrzeitMinute>(*ftdmsg, state.time->m);
assignToState<zusi::FS::UhrzeitSekunde>(*ftdmsg, state.time->s);
auto sifa = ftdmsg->get<zusi::FS::Sifa>();
ftdmsg, state.streckengeschwindigkeit);
assignToState<zusi::FS::ZugkraftGesamt>(ftdmsg, state.zugkraft);
assignToState<zusi::FS::Motordrehzahl>(ftdmsg, state.drehzahl);
assignToState<zusi::FS::Datum>(ftdmsg, state.date);
assignToState<zusi::FS::UhrzeitStunde>(ftdmsg, state.time->h);
assignToState<zusi::FS::UhrzeitMinute>(ftdmsg, state.time->m);
assignToState<zusi::FS::UhrzeitSekunde>(ftdmsg, state.time->s);
auto sifa = ftdmsg.get<zusi::FS::Sifa>();
if (sifa) {
auto hupe = sifa->get<zusi::Sifa::Hupe>();
if (hupe) {
state.sifa_hupe = *hupe;
}
}
} else if (progmsg) {
auto zugdatei = progmsg->get<zusi::ProgData::Zugdatei>();
}
void operator()(const zusi::OperationDataMessage & /*opmsg*/) const {}
void operator()(const zusi::ProgDataMessage &progmsg) const {
auto zugdatei = progmsg.get<zusi::ProgData::Zugdatei>();
if (zugdatei) {
ops.gameStart(**zugdatei);
}
}
};
} // namespace
static void parseDataMessage(IOps &ops, ZusiState &state,
const zusi::MessageVariant &msg) {
boost::apply_visitor(dataVisitor{ops, state}, msg);
}
[[noreturn]] void watcherThread(IOps &ops) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment