]> git.tdb.fi Git - r2c2.git/blobdiff - source/libr2c2/driver.h
Add telemetry framework for drivers
[r2c2.git] / source / libr2c2 / driver.h
index 1222540c0b81e19bff985870c730124d2ea16b2f..3f5a75ce2a6b959d31071d38436c2d73bbef8f0e 100644 (file)
@@ -45,6 +45,14 @@ public:
                std::string name;
        };
 
+       struct TelemetryInfo
+       {
+               const char *name;
+               const char *label;
+               const char *unit;
+               unsigned precision;
+       };
+
        sigc::signal<void, bool> signal_power;
        sigc::signal<void, bool> signal_halt;
        sigc::signal<void, const DetectedLocomotive &> signal_locomotive_detected;
@@ -52,6 +60,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> signal_turnout_failed;
        sigc::signal<void, unsigned, unsigned> signal_signal;
        sigc::signal<void, unsigned, bool> signal_sensor;
 
@@ -90,6 +99,9 @@ public:
        virtual void set_sensor(unsigned, bool) = 0;
        virtual bool get_sensor(unsigned) const = 0;
 
+       virtual const TelemetryInfo *enumerate_telemetry(unsigned) const = 0;
+       virtual float get_telemetry_value(const std::string &) const = 0;
+
        virtual void tick() = 0;
        virtual void flush() = 0;