#define LIBR2C2_DUMMY_H_
#include <map>
+#include <msp/time/timedelta.h>
+#include <msp/time/timestamp.h>
#include "driver.h"
namespace R2C2 {
class Dummy: public Driver
{
private:
+ struct TurnoutState
+ {
+ unsigned state;
+ unsigned pending;
+ Msp::Time::TimeStamp timeout;
+ };
+
struct LocoState
{
unsigned speed;
};
bool power;
- std::map<unsigned, unsigned> turnouts;
+ std::map<unsigned, TurnoutState> turnouts;
std::map<unsigned, LocoState> locos;
std::map<unsigned, bool> sensors;
+ Msp::Time::TimeDelta turnout_delay;
public:
- Dummy();
+ Dummy(const Options &);
virtual void set_power(bool);
virtual bool get_power() const { return power; }
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_sensor(unsigned) { }
+ 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 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 void tick();
virtual void flush() { }
};