X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibr2c2%2Farducontrol.h;h=fb0cb68c6ca03930a571a72dcd248ae00cc8b581;hb=ebd56306e951e751883e9f173e1b6235846e78bf;hp=cbdecad3a27513c70bb0e168b661d1bd6349a2e8;hpb=8a31a3ab3ab7abda30de0ed3a6d0753760f3bb1d;p=r2c2.git diff --git a/source/libr2c2/arducontrol.h b/source/libr2c2/arducontrol.h index cbdecad..fb0cb68 100644 --- a/source/libr2c2/arducontrol.h +++ b/source/libr2c2/arducontrol.h @@ -52,7 +52,7 @@ private: Type type; unsigned char command; unsigned short serial; - unsigned address; + unsigned id; Tag(); @@ -66,10 +66,16 @@ private: enum Protocol { - NONE, MM }; + struct ProtocolInfo + { + unsigned max_address; + unsigned max_speed; + unsigned max_func; + }; + template struct ControlledVariable { @@ -95,6 +101,7 @@ private: FUNCTIONS }; + unsigned id; Protocol proto; unsigned address; ControlledVariable speed; @@ -201,6 +208,8 @@ private: Msp::Mutex mutex; ControlThread thread; + static ProtocolInfo protocol_info[2]; + public: ArduControl(const std::string &); ~ArduControl(); @@ -216,7 +225,7 @@ private: public: virtual unsigned get_protocol_speed_steps(const std::string &) const; - virtual void add_loco(unsigned, const std::string &, const VehicleType &); + virtual unsigned add_loco(unsigned, const std::string &, const VehicleType &); virtual void remove_loco(unsigned); virtual void set_loco_speed(unsigned, unsigned); virtual void set_loco_reverse(unsigned, bool); @@ -228,24 +237,24 @@ private: void advance_next_refresh(); public: - 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, const SignalType &); virtual void remove_signal(unsigned); virtual void set_signal(unsigned, unsigned); virtual unsigned get_signal(unsigned) const; private: - void add_accessory(Accessory::Kind, unsigned, unsigned); + unsigned add_accessory(Accessory::Kind, unsigned, unsigned); void remove_accessory(Accessory::Kind, unsigned); void set_accessory(Accessory::Kind, unsigned, unsigned); unsigned get_accessory(Accessory::Kind, unsigned) const; public: - virtual void add_sensor(unsigned); + virtual unsigned add_sensor(unsigned); virtual void remove_sensor(unsigned); virtual void set_sensor(unsigned, bool) { } virtual bool get_sensor(unsigned) const;