X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibr2c2%2Fdummy.h;h=37aec3ac16c691314dce2c7b838939c991ce392f;hb=2fb2e58685c521ea76aab9f6d7cffe1186c9814a;hp=469b7f2f7b9ade735bfe951d1fba0740a527f608;hpb=3e3675f8d86b06cdea7df197dfe8866ffb285aec;p=r2c2.git diff --git a/source/libr2c2/dummy.h b/source/libr2c2/dummy.h index 469b7f2..37aec3a 100644 --- a/source/libr2c2/dummy.h +++ b/source/libr2c2/dummy.h @@ -2,6 +2,8 @@ #define LIBR2C2_DUMMY_H_ #include +#include +#include #include "driver.h" namespace R2C2 { @@ -9,6 +11,13 @@ namespace R2C2 { class Dummy: public Driver { private: + struct TurnoutState + { + unsigned state; + unsigned pending; + Msp::Time::TimeStamp timeout; + }; + struct LocoState { unsigned speed; @@ -16,38 +25,49 @@ private: }; bool power; - std::map turnouts; + bool halted; + std::map turnouts; std::map locos; std::map sensors; + Msp::Time::TimeDelta turnout_delay; + int turnout_fail_rate; public: - Dummy(); + Dummy(const Options &); virtual void set_power(bool); virtual bool get_power() const { return power; } - virtual void halt(bool) { } - virtual bool is_halted() const { return false; } + virtual void halt(bool); + virtual bool is_halted() const { return halted; } virtual const char *enumerate_protocols(unsigned) const; virtual unsigned get_protocol_speed_steps(const std::string &) const; - virtual void add_loco(unsigned, const std::string &, const VehicleType &) { } + virtual DetectedLocomotive *enumerate_detected_locos(unsigned) const { return 0; } + virtual unsigned add_loco(unsigned a, const std::string &, const VehicleType &) { return a; } + virtual void remove_loco(unsigned) { } virtual void set_loco_speed(unsigned, unsigned); virtual void set_loco_reverse(unsigned, bool); virtual void set_loco_function(unsigned, unsigned, bool); - virtual void add_turnout(unsigned, const TrackType &); + virtual unsigned add_turnout(unsigned, const TrackType &); + virtual void remove_turnout(unsigned) { } virtual void set_turnout(unsigned, unsigned); virtual unsigned get_turnout(unsigned) const; - virtual void add_signal(unsigned, const SignalType &) { } + virtual unsigned add_signal(unsigned a, const SignalType &) { return a; } + virtual void remove_signal(unsigned) { } virtual void set_signal(unsigned, unsigned) { } virtual unsigned get_signal(unsigned) const { return 0; } - virtual void add_sensor(unsigned) { } + virtual unsigned add_sensor(unsigned a) { return a; } + virtual void remove_sensor(unsigned) { } virtual void set_sensor(unsigned, bool); virtual bool get_sensor(unsigned) const; - virtual void tick() { } + virtual const TelemetryInfo *enumerate_telemetry(unsigned) const { return 0; } + virtual float get_telemetry_value(const std::string &) const; + + virtual void tick(); virtual void flush() { } };