]> git.tdb.fi Git - r2c2.git/blob - source/libr2c2/dummy.h
Add basic support for signals
[r2c2.git] / source / libr2c2 / dummy.h
1 #ifndef LIBR2C2_DUMMY_H_
2 #define LIBR2C2_DUMMY_H_
3
4 #include <map>
5 #include "driver.h"
6
7 namespace R2C2 {
8
9 class Dummy: public Driver
10 {
11 private:
12         struct LocoState
13         {
14                 unsigned speed;
15                 bool reverse;
16         };
17
18         bool power;
19         std::map<unsigned, unsigned> turnouts;
20         std::map<unsigned, LocoState> locos;
21         std::map<unsigned, bool> sensors;
22
23 public:
24         Dummy();
25
26         virtual void set_power(bool);
27         virtual bool get_power() const { return power; }
28         virtual void halt(bool) { }
29         virtual bool is_halted() const { return false; }
30
31         virtual const char *enumerate_protocols(unsigned) const;
32         virtual unsigned get_protocol_speed_steps(const std::string &) const;
33         virtual void add_loco(unsigned, const std::string &, const VehicleType &) { }
34         virtual void set_loco_speed(unsigned, unsigned);
35         virtual void set_loco_reverse(unsigned, bool);
36         virtual void set_loco_function(unsigned, unsigned, bool);
37
38         virtual void add_turnout(unsigned, const TrackType &);
39         virtual void set_turnout(unsigned, unsigned);
40         virtual unsigned get_turnout(unsigned) const;
41
42         virtual void add_signal(unsigned, const SignalType &) { }
43         virtual void set_signal(unsigned, unsigned) { }
44         virtual unsigned get_signal(unsigned) const { return 0; }
45
46         virtual void add_sensor(unsigned) { }
47         virtual void set_sensor(unsigned, bool);
48         virtual bool get_sensor(unsigned) const;
49
50         virtual void tick() { }
51         virtual void flush() { }
52 };
53
54 } // namespace R2C2
55
56 #endif