X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibr2c2%2Farducontrol.h;h=d68a149a9275c957b5207e906d4f9586e3d63e9b;hb=44e13f6732f206aa72ff7b001d77fe59bf2830ee;hp=c170e4203c9c2eb3de864de49d958a0a10b6e794;hpb=23e1a988da2efae47e39d93babe7e37b1c0ca554;p=r2c2.git diff --git a/source/libr2c2/arducontrol.h b/source/libr2c2/arducontrol.h index c170e42..d68a149 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 @@ -214,12 +215,13 @@ private: class Queue { private: - std::list items; + std::deque items; Msp::Mutex mutex; public: void push(const T &); bool pop(T &); + unsigned size() const; bool empty() const; }; @@ -256,6 +258,7 @@ private: virtual bool get_work(PendingCommand &); void push(const PendingCommand &); + unsigned size() const { return queue.size(); } bool empty() const { return queue.empty(); } }; @@ -289,6 +292,8 @@ private: ArduControl &control; unsigned n_octets; unsigned octets_remaining; + Msp::Time::TimeStamp last_poll; + Msp::Time::TimeDelta latency; public: S88Task(ArduControl &); @@ -298,6 +303,8 @@ private: void set_n_octets(unsigned); void grow_n_octets(unsigned); + + const Msp::Time::TimeDelta &get_latency() const { return latency; } }; class MfxAnnounceTask: public Task @@ -409,6 +416,7 @@ private: ControlThread thread; static ProtocolInfo protocol_info[2]; + static TelemetryInfo telemetry_info[4]; public: ArduControl(const Options &); @@ -458,6 +466,9 @@ public: virtual void set_sensor(unsigned, bool) { } virtual bool get_sensor(unsigned) const; + virtual const TelemetryInfo *enumerate_telemetry(unsigned) const; + virtual float get_telemetry_value(const std::string &) const; + virtual void tick(); virtual void flush(); private: