3 This file is part of the MSP Märklin suite
4 Copyright © 2009 Mikkosoft Productions, Mikko Rasa
5 Distributed under the GPL
15 NetTrain::NetTrain(Client &c, const TrainInfoPacket &pkt):
17 loco_type(client.get_catalogue().get_locomotive(pkt.loco_type)),
23 void NetTrain::set_control(const string &c, float v)
28 TrainControlPacket pkt;
29 pkt.address = address;
35 void NetTrain::set_function(unsigned i, bool set)
37 TrainFunctionPacket pkt;
38 pkt.address = address;
39 pkt.functions = functions;
41 pkt.functions |= 1<<i;
43 pkt.functions &= ~(1<<i);
47 void NetTrain::set_route(const string &r)
53 pkt.address = address;
58 void NetTrain::process_packet(const TrainControlPacket &pkt)
60 controls[pkt.control] = pkt.value;
61 signal_control_changed.emit(pkt.control, pkt.value);
64 void NetTrain::process_packet(const TrainFunctionPacket &pkt)
66 unsigned old_funcs = functions;
67 functions = pkt.functions;
68 for(unsigned i=0; i<9; ++i)
69 if(((functions^old_funcs)>>i)&1)
70 signal_function_changed.emit(i, (functions>>i)&1);
73 void NetTrain::process_packet(const TrainStatusPacket &pkt)
76 signal_status_changed.emit(status);
79 void NetTrain::process_packet(const TrainRoutePacket &pkt)
82 signal_route_changed.emit(route);
85 } // namespace Marklin