]> git.tdb.fi Git - r2c2.git/blobdiff - source/network/train.h
Export AI control parameters over the network
[r2c2.git] / source / network / train.h
index 57154a04e7245dd997990ee1fa79c9da520c037b..5c938dcbe0afc9517cb565e654912cfb973d4b58 100644 (file)
@@ -1,18 +1,11 @@
-/* $Id$
-
-This file is part of the MSP Märklin suite
-Copyright © 2009  Mikkosoft Productions, Mikko Rasa
-Distributed under the GPL
-*/
-
-#ifndef MARKLINNET_TRAIN_H_
-#define MARKLINNET_TRAIN_H_
+#ifndef R2C2_NET_TRAIN_H_
+#define R2C2_NET_TRAIN_H_
 
 #include <sigc++/signal.h>
-#include "libmarklin/locotype.h"
+#include "libr2c2/vehicletype.h"
 #include "packets.h"
 
-namespace Marklin {
+namespace R2C2 {
 
 class Client;
 
@@ -20,39 +13,49 @@ class NetTrain
 {
 public:
        sigc::signal<void, const std::string &> signal_name_changed;
-       sigc::signal<void, unsigned> signal_speed_changed;
-       sigc::signal<void, bool> signal_reverse_changed;
+       sigc::signal<void, const std::string &, float> signal_control_changed;
        sigc::signal<void, unsigned, bool> signal_function_changed;
+       sigc::signal<void, float> signal_target_speed_changed;
+       sigc::signal<void, bool> signal_reverse_changed;
+       sigc::signal<void, const std::string &> signal_route_changed;
        sigc::signal<void, const std::string &> signal_status_changed;
 
 private:
        Client &client;
-       const LocoType &loco_type;
+       const VehicleType &loco_type;
        unsigned address;
        std::string name;
-       unsigned speed;
+       std::map<std::string, float> controls;
+       float target_speed;
        bool reverse;
        unsigned functions;
+       std::string route;
        std::string status;
 
 public:
        NetTrain(Client &, const TrainInfoPacket &);
 
-       const LocoType &get_loco_type() const { return loco_type; }
+       const VehicleType &get_loco_type() const { return loco_type; }
        unsigned get_address() const { return address; }
        const std::string &get_name() const { return name; }
-       void set_speed(unsigned);
-       unsigned get_speed() const { return speed; }
+       void set_control(const std::string &, float);
+       float get_control(const std::string &) const;
+       void set_target_speed(float);
        void set_reverse(bool);
+       float get_target_speed() const { return target_speed; }
        bool get_reverse() const { return reverse; }
        void set_function(unsigned, bool);
        bool get_function(unsigned i) const { return (functions>>i)&1; }
+       void set_route(const std::string &);
+       const std::string &get_route() const { return route; }
 
-       void process_packet(const TrainSpeedPacket &);
+       void process_packet(const TrainControlPacket &);
        void process_packet(const TrainFunctionPacket &);
+       void process_packet(const TrainAIControlPacket &);
+       void process_packet(const TrainRoutePacket &);
        void process_packet(const TrainStatusPacket &);
 };
 
-} // namespace Marklin
+} // namespace R2C2
 
 #endif