Files
RTT/Manager.h

92 lines
2.0 KiB
C++

#ifndef MANAGER_H
#define MANAGER_H
#include <QDebug>
#include <QObject>
#include <QFile>
#include <array>
#include <ostream>
#include <map>
struct WifiRttResult {
int success;
std::string mac;
int64_t timeMS;
int distMM;
int distStdDevMM;
int numAttemptedMeas;
int numSuccessfullMeas;
int rssi;
};
static QDebug operator<<(QDebug dbg, const WifiRttResult& v)
{
dbg << v.success << ";"
<< QString::fromStdString(v.mac) << ";"
<< v.timeMS << ";"
<< v.distMM << ";"
<< v.distStdDevMM << ";"
<< v.numSuccessfullMeas << "/" << v.numAttemptedMeas << ";"
<< v.rssi;
return dbg;
}
class Manager : public QObject {
Q_OBJECT
private:
float _uwbDist[4];
bool isRunning = false;
bool _logToDisk = false;
std::shared_ptr<QFile> ftmLogger;
public:
Q_PROPERTY(bool logToDisk READ getLogToDisk WRITE setLogToDisk NOTIFY logToDiskChanged)
Q_PROPERTY(float uwbDist1 READ getUwbDist1() NOTIFY uwbDistChanged)
Q_PROPERTY(float uwbDist2 READ getUwbDist2() NOTIFY uwbDistChanged)
Q_PROPERTY(float uwbDist3 READ getUwbDist3() NOTIFY uwbDistChanged)
Q_PROPERTY(float uwbDist4 READ getUwbDist4() NOTIFY uwbDistChanged)
Q_INVOKABLE bool trigger();
Q_INVOKABLE void start();
Q_INVOKABLE void stop();
Q_INVOKABLE int runTimeInMs() const;
Q_INVOKABLE void test();
Q_INVOKABLE void manualCheckpoint();
void onWifiData(WifiRttResult result);
void onUWBData(std::vector<uchar> data);
public:
bool getLogToDisk() const { return _logToDisk; }
void setLogToDisk(bool v) { _logToDisk = v; emit logToDiskChanged(v); }
float getUwbDist1() {return _uwbDist[0];}
float getUwbDist2() {return _uwbDist[1];}
float getUwbDist3() {return _uwbDist[2];}
float getUwbDist4() {return _uwbDist[3];}
signals:
void uwbDistChanged();
void newDistMeas(int idx, int value);
void logToDiskChanged(bool newValue);
public:
Manager();
};
#endif // MANAGER_H