]> git.tdb.fi Git - r2c2.git/blobdiff - source/libr2c2/arducontrol.h
Read MFX locomotive name
[r2c2.git] / source / libr2c2 / arducontrol.h
index a48f6f0990aa59997b9c45bdde7778cd3506c17c..b75d415b5fb5a1e73b1b834a1d58989cb6cb426a 100644 (file)
@@ -1,6 +1,7 @@
 #ifndef LIBR2C2_ARDUCONTROL_H_
 #define LIBR2C2_ARDUCONTROL_H_
 
+#include <deque>
 #include <msp/core/mutex.h>
 #include <msp/core/thread.h>
 #include <msp/datafile/objectloader.h>
@@ -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<T> items;
+               std::deque<T> items;
                Msp::Mutex mutex;
 
        public:
@@ -330,6 +333,13 @@ private:
                unsigned misses;
                Queue<MfxInfo> queue;
 
+               MfxInfo *pending_info;
+               unsigned read_array;
+               unsigned read_offset;
+               unsigned read_length;
+               char read_data[0x40];
+               unsigned block_size;
+
        public:
                MfxSearchTask(ArduControl &);