X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibr2c2%2Farducontrol.h;h=c9a88aa56f4c30f068bda6fc40c9f673337d2284;hb=59b3cebecfd8f1462c95bab447be70dfb5f38e92;hp=69311f8280fecbb94ce0671b636a0ec4bf9fcf0d;hpb=58c56db5f740d9d3c56ff64f4062b108076c63c3;p=r2c2.git diff --git a/source/libr2c2/arducontrol.h b/source/libr2c2/arducontrol.h index 69311f8..c9a88aa 100644 --- a/source/libr2c2/arducontrol.h +++ b/source/libr2c2/arducontrol.h @@ -188,6 +188,18 @@ private: PendingCommand(Accessory &, Accessory::Command, unsigned = 0); }; + template + class Queue + { + private: + std::list items; + Msp::Mutex mutex; + + public: + void push(const T &); + bool pop(T &); + }; + class Task { protected: @@ -263,8 +275,7 @@ private: unsigned size; unsigned bits; unsigned misses; - std::list queue; - Msp::Mutex mutex; + Queue queue; public: MfxSearchTask(ArduControl &); @@ -272,9 +283,6 @@ private: virtual bool get_work(PendingCommand &); virtual void process_reply(const char *, unsigned); - private: - void push_info(const MfxInfo &); - public: bool pop_info(MfxInfo &); }; @@ -314,12 +322,12 @@ private: AccessoryPtrList accessory_queue; Accessory *active_accessory; Msp::Time::TimeStamp off_timeout; - std::list command_queue; - std::list completed_commands; SensorMap sensors; Msp::Mutex mutex; + Queue command_queue; + Queue completed_commands; RefreshTask refresh; S88Task s88; MfxAnnounceTask mfx_announce; @@ -374,12 +382,6 @@ public: virtual void tick(); virtual void flush(); - -private: - void push_command(const PendingCommand &); - bool pop_command(PendingCommand &); - void push_completed_tag(const Tag &); - Tag pop_completed_tag(); }; } // namespace R2C2