X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fnetwork%2Ftrain.cpp;h=6a0c3a8b8fa99006c56275e9382618f05998b962;hb=e9653dffd0026fb3c02c91a4c0feca688a86c721;hp=025dcf52a75268b1dcdaa6b40c3cdc41d2a84d9b;hpb=2fe7cbcb761487bc7409b93b372da6f8ab3c581e;p=r2c2.git diff --git a/source/network/train.cpp b/source/network/train.cpp index 025dcf5..6a0c3a8 100644 --- a/source/network/train.cpp +++ b/source/network/train.cpp @@ -14,35 +14,21 @@ namespace Marklin { NetTrain::NetTrain(Client &c, const TrainInfoPacket &pkt): client(c), - loco_type(client.get_catalogue().get_locomotive(pkt.loco_type)), + loco_type(client.get_catalogue().get_vehicle(pkt.loco_type)), address(pkt.address), name(pkt.name), - speed(0), - reverse(0), functions(0) { } -void NetTrain::set_speed(unsigned s) +void NetTrain::set_control(const string &c, float v) { - if(s==speed) + if(v==controls[c]) return; - TrainSpeedPacket pkt; + TrainControlPacket pkt; pkt.address = address; - pkt.speed = s; - pkt.reverse = reverse; - client.send(pkt); -} - -void NetTrain::set_reverse(bool r) -{ - if(r==reverse) - return; - - TrainSpeedPacket pkt; - pkt.address = address; - pkt.speed = speed; - pkt.reverse = r; + pkt.control = c; + pkt.value = v; client.send(pkt); } @@ -69,18 +55,10 @@ void NetTrain::set_route(const string &r) client.send(pkt); } -void NetTrain::process_packet(const TrainSpeedPacket &pkt) +void NetTrain::process_packet(const TrainControlPacket &pkt) { - if(pkt.speed!=speed) - { - speed = pkt.speed; - signal_speed_changed.emit(speed); - } - if(pkt.reverse!=reverse) - { - reverse = pkt.reverse; - signal_reverse_changed.emit(reverse); - } + controls[pkt.control] = pkt.value; + signal_control_changed.emit(pkt.control, pkt.value); } void NetTrain::process_packet(const TrainFunctionPacket &pkt)