namespace R2C2 {
+class SignalType;
class TrackType;
class VehicleType;
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, unsigned> signal_signal;
sigc::signal<void, unsigned, bool> signal_sensor;
protected:
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 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_sensor(unsigned) = 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 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;