]> git.tdb.fi Git - r2c2.git/blobdiff - source/libr2c2/arducontrol.h
Add a timeout to ArduControl commands
[r2c2.git] / source / libr2c2 / arducontrol.h
index c3ca7a4106f570a418a6a7166a19a9048c1bcf67..40c7b3c6912d47247024c5ab28461bb497a6a7f1 100644 (file)
@@ -219,6 +219,7 @@ private:
        public:
                void push(const T &);
                bool pop(T &);
+               bool empty() const;
        };
 
        class Task
@@ -356,7 +357,7 @@ private:
                virtual void main();
                void init_baud_rate();
                bool get_work(PendingCommand &);
-               unsigned do_command(const PendingCommand &);
+               unsigned do_command(const PendingCommand &, const Msp::Time::TimeDelta &);
                unsigned process_reply(const char *, unsigned);
        };
 
@@ -371,6 +372,7 @@ private:
        Msp::FS::Path state_file;
 
        ControlledVariable<bool> power;
+       bool halted;
 
        LocomotiveMap locomotives;
        MfxInfoArray mfx_info;
@@ -382,7 +384,7 @@ private:
 
        SensorMap sensors;
 
-       Msp::Mutex mutex;
+       Msp::Time::TimeDelta command_timeout;
        Queue<PendingCommand> command_queue;
        Queue<Tag> completed_commands;
        RefreshTask refresh;
@@ -401,7 +403,7 @@ public:
        virtual void set_power(bool);
        virtual bool get_power() const { return power; }
        virtual void halt(bool);
-       virtual bool is_halted() const { return false; }
+       virtual bool is_halted() const { return halted; }
 
        virtual const char *enumerate_protocols(unsigned) const;
 private: