]> git.tdb.fi Git - r2c2.git/blobdiff - source/libr2c2/arducontrol.h
Add voltage and current monitoring task to ArduControl
[r2c2.git] / source / libr2c2 / arducontrol.h
index c1e7256ee3f00674b113c4b4e429a77f0700ec79..555280985767a7e37ea512607a0337359ac11618 100644 (file)
@@ -317,6 +317,28 @@ private:
                bool pop_info(MfxInfo &);
        };
 
+       class MonitorTask: public Task
+       {
+       private:
+               float voltage;
+               float current;
+               float base_level;
+               float peak_level;
+               Msp::Time::TimeStamp next_poll;
+               unsigned next_type;
+
+       public:
+               MonitorTask();
+
+               virtual bool get_work(PendingCommand &);
+               virtual void process_reply(const char *, unsigned);
+
+               float get_voltage() const { return voltage; }
+               float get_current() const { return current; }
+               void reset_peak();
+               float get_peak() const { return peak_level-base_level; }
+       };
+
        class ControlThread: public Msp::Thread
        {
        private:
@@ -353,6 +375,7 @@ private:
        AccessoryMap accessories;
        AccessoryPtrList accessory_queue;
        Accessory *active_accessory;
+       unsigned char active_index;
        Msp::Time::TimeStamp off_timeout;
 
        SensorMap sensors;
@@ -364,6 +387,7 @@ private:
        S88Task s88;
        MfxAnnounceTask mfx_announce;
        MfxSearchTask mfx_search;
+       MonitorTask monitor;
        ControlThread thread;
 
        static ProtocolInfo protocol_info[2];