X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibr2c2%2Fintellibox.h;h=4740a1ec6d6f2ccb611a5b5d2b4913eaaca5c37e;hb=ab64a17394440c3cb18d0b30d75fb4ed6297a6b4;hp=a4eed30d4bcf0cda32e28c80ee2748c786d7872a;hpb=247742fbc1c27bfc9fdef4630afcdc2408cdd550;p=r2c2.git diff --git a/source/libr2c2/intellibox.h b/source/libr2c2/intellibox.h index a4eed30..4740a1e 100644 --- a/source/libr2c2/intellibox.h +++ b/source/libr2c2/intellibox.h @@ -1,14 +1,8 @@ -/* $Id$ - -This file is part of R²C² -Copyright © 2010 Mikkosoft Productions, Mikko Rasa -Distributed under the GPL -*/ - #ifndef LIBR2C2_INTELLIBOX_H_ #define LIBR2C2_INTELLIBOX_H_ #include +#include #include #include "driver.h" @@ -68,7 +62,7 @@ private: ERR_NO_I2C_SPACE, ERR_LOW_TURNOUT_SPACE=0x40, ERR_LOK_HALTED, - ERR_LOK_POWER_OFF, + ERR_LOK_POWER_OFF }; enum Protocol @@ -91,13 +85,16 @@ private: Locomotive(); }; + // These are used for signals as well, but Intellibox calls them turnouts. struct Turnout { unsigned bits; unsigned state; bool active; + bool synced; unsigned pending; Msp::Time::TimeStamp off_timeout; + bool signal; Turnout(); }; @@ -118,7 +115,7 @@ private: unsigned length; }; - int serial_fd; + Msp::IO::Serial serial; bool power; bool halted; std::map locos; @@ -145,9 +142,18 @@ public: virtual void set_loco_function(unsigned, unsigned, bool); virtual void add_turnout(unsigned, const TrackType &); +private: + void add_turnout(unsigned, unsigned, bool); + void turnout_state_changed(unsigned, const Turnout &) const; +public: virtual void set_turnout(unsigned, unsigned); virtual unsigned get_turnout(unsigned) const; + virtual void add_signal(unsigned, const SignalType &); + virtual void set_signal(unsigned, unsigned); + virtual unsigned get_signal(unsigned) const; + +public: virtual void add_sensor(unsigned); virtual void set_sensor(unsigned, bool) { } virtual bool get_sensor(unsigned) const;