+void Client::set_power(bool p)
+{
+ DriverStatePacket pkt;
+ pkt.power = p;
+ pkt.halt = halt;
+ send(pkt);
+}
+
+void Client::set_halt(bool h)
+{
+ DriverStatePacket pkt;
+ pkt.power = power;
+ pkt.halt = h;
+ send(pkt);
+}
+
+NetTrain &Client::get_train(unsigned addr) const
+{
+ return *get_item(trains, addr);
+}
+
+void Client::receive(const DriverStatePacket &pkt)
+{
+ if(pkt.power!=power)
+ {
+ power = pkt.power;
+ signal_power_changed.emit(power);
+ }
+ if(pkt.halt!=halt)
+ {
+ halt = pkt.halt;
+ signal_halt_changed.emit(halt);
+ }
+}
+
+void Client::receive(const EmergencyPacket &pkt)