]> git.tdb.fi Git - r2c2.git/blobdiff - source/libr2c2/driver.h
Refer to things in the driver with abstract ids instead of addresses
[r2c2.git] / source / libr2c2 / driver.h
index e8d27f0b5cc58864e781a880e42a9a3774ae093c..101426026a15b2c6577e7aceb27376e7c47540d8 100644 (file)
@@ -1,10 +1,3 @@
-/* $Id$
-
-This file is part of R²C²
-Copyright © 2010  Mikkosoft Productions, Mikko Rasa
-Distributed under the GPL
-*/
-
 #ifndef LIBR2C2_DRIVER_H_
 #define LIBR2C2_DRIVER_H_
 
@@ -13,6 +6,7 @@ Distributed under the GPL
 
 namespace R2C2 {
 
+class SignalType;
 class TrackType;
 class VehicleType;
 
@@ -24,6 +18,7 @@ public:
        sigc::signal<void, unsigned, unsigned, bool> signal_loco_speed;
        sigc::signal<void, unsigned, unsigned, bool> signal_loco_function;
        sigc::signal<void, unsigned, unsigned> signal_turnout;
+       sigc::signal<void, unsigned, unsigned> signal_signal;
        sigc::signal<void, unsigned, bool> signal_sensor;
 
 protected:
@@ -38,16 +33,24 @@ public:
 
        virtual const char *enumerate_protocols(unsigned) const = 0;
        virtual unsigned get_protocol_speed_steps(const std::string &) const = 0;
-       virtual void add_loco(unsigned, const std::string &, const VehicleType &) = 0;
+       virtual unsigned add_loco(unsigned, const std::string &, const VehicleType &) = 0;
+       virtual void remove_loco(unsigned) = 0;
        virtual void set_loco_speed(unsigned, unsigned) = 0;
        virtual void set_loco_reverse(unsigned, bool) = 0;
        virtual void set_loco_function(unsigned, unsigned, bool) = 0;
 
-       virtual void add_turnout(unsigned, const TrackType &) = 0;
+       virtual unsigned add_turnout(unsigned, const TrackType &) = 0;
+       virtual void remove_turnout(unsigned) = 0;
        virtual void set_turnout(unsigned, unsigned) = 0;
        virtual unsigned get_turnout(unsigned) const = 0;
 
-       virtual void add_sensor(unsigned) = 0;
+       virtual unsigned add_signal(unsigned, const SignalType &) = 0;
+       virtual void remove_signal(unsigned) = 0;
+       virtual void set_signal(unsigned, unsigned) = 0;
+       virtual unsigned get_signal(unsigned) const = 0;
+
+       virtual unsigned add_sensor(unsigned) = 0;
+       virtual void remove_sensor(unsigned) = 0;
        virtual void set_sensor(unsigned, bool) = 0;
        virtual bool get_sensor(unsigned) const = 0;