#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>
class Queue
{
private:
- std::list<T> items;
+ std::deque<T> items;
Msp::Mutex mutex;
public:
void push(const T &);
bool pop(T &);
+ unsigned size() const;
bool empty() const;
};
virtual bool get_work(PendingCommand &);
void push(const PendingCommand &);
+ unsigned size() const { return queue.size(); }
bool empty() const { return queue.empty(); }
};
ArduControl &control;
unsigned n_octets;
unsigned octets_remaining;
+ Msp::Time::TimeStamp last_poll;
+ Msp::Time::TimeDelta latency;
public:
S88Task(ArduControl &);
void set_n_octets(unsigned);
void grow_n_octets(unsigned);
+
+ const Msp::Time::TimeDelta &get_latency() const { return latency; }
};
class MfxAnnounceTask: public Task
ControlThread thread;
static ProtocolInfo protocol_info[2];
+ static TelemetryInfo telemetry_info[4];
public:
ArduControl(const Options &);
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: