]> git.tdb.fi Git - r2c2.git/blobdiff - source/libr2c2/driver.h
Add interface for importing detected locomotives from the driver
[r2c2.git] / source / libr2c2 / driver.h
index 9648c921354c4d8fbd4c85c494eb3e3bd0b9f474..7c762d0066b4b9b668030edb0e53dec09d0ebf50 100644 (file)
@@ -13,8 +13,17 @@ class VehicleType;
 class Driver
 {
 public:
+       struct DetectedLocomotive
+       {
+               std::string protocol;
+               unsigned address;
+               std::string name;
+       };
+
        sigc::signal<void, bool> signal_power;
        sigc::signal<void, bool> signal_halt;
+       sigc::signal<void, const DetectedLocomotive &> signal_locomotive_detected;
+       sigc::signal<void, const DetectedLocomotive &> signal_locomotive_gone;
        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;
@@ -33,23 +42,25 @@ 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 const DetectedLocomotive *enumerate_detected_locos(unsigned) const = 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_signal(unsigned, const SignalType &) = 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 void add_sensor(unsigned) = 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;