X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibr2c2%2Farducontrol.h;h=78b360018de17c245629059b789ab6be55c9ba4d;hb=c1f45677ffbe9ded079df99f998d8e2abfe548de;hp=a48f6f0990aa59997b9c45bdde7778cd3506c17c;hpb=25aacc9bfe66f1a2bffd196c735d3444adac6fe3;p=r2c2.git diff --git a/source/libr2c2/arducontrol.h b/source/libr2c2/arducontrol.h index a48f6f0..78b3600 100644 --- a/source/libr2c2/arducontrol.h +++ b/source/libr2c2/arducontrol.h @@ -1,6 +1,7 @@ #ifndef LIBR2C2_ARDUCONTROL_H_ #define LIBR2C2_ARDUCONTROL_H_ +#include #include #include #include @@ -44,6 +45,7 @@ private: MFX_SEARCH = 0x23, MFX_ASSIGN_ADDRESS = 0x24, MFX_PING = 0x25, + MFX_READ = 0x26, MFX_SPEED = 0x28, MFX_SPEED_FUNCS8 = 0x29, MFX_SPEED_FUNCS16 = 0x2A, @@ -62,7 +64,8 @@ private: POWER_STATE = 0xC2, S88_DATA = 0xD0, MFX_SEARCH_FEEDBACK = 0xD1, - MFX_PING_FEEDBACK = 0xD2 + MFX_PING_FEEDBACK = 0xD2, + MFX_READ_FEEDBACK = 0xD3 }; struct Tag @@ -214,7 +217,7 @@ private: class Queue { private: - std::list items; + std::deque items; Msp::Mutex mutex; public: @@ -330,6 +333,13 @@ private: unsigned misses; Queue queue; + MfxInfo *pending_info; + unsigned read_array; + unsigned read_offset; + unsigned read_length; + char read_data[0x40]; + unsigned block_size; + public: MfxSearchTask(ArduControl &); @@ -436,6 +446,7 @@ public: virtual unsigned add_loco(unsigned, const std::string &, const VehicleType &); private: MfxInfoArray::iterator add_mfx_info(const MfxInfo &); + MfxInfo *find_mfx_info(unsigned); public: virtual void remove_loco(unsigned); virtual void set_loco_speed(unsigned, unsigned);