Added timeout feature

This commit is contained in:
2019-11-09 12:32:12 +01:00
parent 257d076668
commit f08f71e747
3 changed files with 64 additions and 14 deletions

View File

@@ -56,13 +56,13 @@ void Manager::test() {
} }
bool Manager::trigger() { bool Manager::trigger() {
if (isRunning) { if (_isRunning) {
stop(); stop();
} else { } else {
start(); start();
} }
return isRunning; return _isRunning;
} }
void Manager::start() { void Manager::start() {
@@ -107,7 +107,8 @@ void Manager::start() {
//QAndroidJniObject::callStaticMethod<int>("android/net/wifi/UWB", "start", "()I"); //QAndroidJniObject::callStaticMethod<int>("android/net/wifi/UWB", "start", "()I");
QAndroidJniObject::callStaticMethod<int>("android/net/wifi/RTT", "start", "()I"); QAndroidJniObject::callStaticMethod<int>("android/net/wifi/RTT", "start", "()I");
isRunning = true; _isRunning = true;
emit isRunningChanged();
#else #else
std::random_device rd; std::random_device rd;
std::mt19937 gen{rd()}; std::mt19937 gen{rd()};
@@ -144,7 +145,8 @@ void Manager::stop() {
ftmLogger = nullptr; ftmLogger = nullptr;
} }
isRunning = false; _isRunning = false;
emit isRunningChanged();
} }
int Manager::runTimeInMs() const { int Manager::runTimeInMs() const {
@@ -184,6 +186,10 @@ void Manager::onWifiData(WifiRttResult result) {
<< endl; << endl;
} }
} }
if (_maxRuntime != 0 && runTimeInMs() > _maxRuntime) {
stop();
}
} }
void Manager::onUWBData(std::vector<uchar> data) { void Manager::onUWBData(std::vector<uchar> data) {

View File

@@ -40,14 +40,18 @@ private:
float _uwbDist[4]; float _uwbDist[4];
bool isRunning = false; bool _isRunning = false;
bool _logToDisk = false; bool _logToDisk = false;
int _maxRuntime = 0;
std::shared_ptr<QFile> ftmLogger; std::shared_ptr<QFile> ftmLogger;
public: public:
Q_PROPERTY(bool isRunning READ getIsRunning NOTIFY isRunningChanged)
Q_PROPERTY(bool logToDisk READ getLogToDisk WRITE setLogToDisk NOTIFY logToDiskChanged) Q_PROPERTY(bool logToDisk READ getLogToDisk WRITE setLogToDisk NOTIFY logToDiskChanged)
Q_PROPERTY(int maxRuntime READ getMaxRuntime WRITE setMaxRuntime)
Q_PROPERTY(float uwbDist1 READ getUwbDist1() NOTIFY uwbDistChanged) Q_PROPERTY(float uwbDist1 READ getUwbDist1() NOTIFY uwbDistChanged)
Q_PROPERTY(float uwbDist2 READ getUwbDist2() NOTIFY uwbDistChanged) Q_PROPERTY(float uwbDist2 READ getUwbDist2() NOTIFY uwbDistChanged)
Q_PROPERTY(float uwbDist3 READ getUwbDist3() NOTIFY uwbDistChanged) Q_PROPERTY(float uwbDist3 READ getUwbDist3() NOTIFY uwbDistChanged)
@@ -66,11 +70,16 @@ public:
void onWifiData(WifiRttResult result); void onWifiData(WifiRttResult result);
void onUWBData(std::vector<uchar> data); void onUWBData(std::vector<uchar> data);
public: private:
bool getIsRunning() const { return _isRunning; }
bool getLogToDisk() const { return _logToDisk; } bool getLogToDisk() const { return _logToDisk; }
void setLogToDisk(bool v) { _logToDisk = v; emit logToDiskChanged(v); } void setLogToDisk(bool v) { _logToDisk = v; emit logToDiskChanged(v); }
int getMaxRuntime() const { return _maxRuntime; }
void setMaxRuntime(int value) { _maxRuntime = value; }
float getUwbDist1() {return _uwbDist[0];} float getUwbDist1() {return _uwbDist[0];}
float getUwbDist2() {return _uwbDist[1];} float getUwbDist2() {return _uwbDist[1];}
float getUwbDist3() {return _uwbDist[2];} float getUwbDist3() {return _uwbDist[2];}
@@ -81,6 +90,7 @@ signals:
void uwbDistChanged(); void uwbDistChanged();
void newDistMeas(int idx, int value); void newDistMeas(int idx, int value);
void logToDiskChanged(bool newValue); void logToDiskChanged(bool newValue);
void isRunningChanged();
public: public:

View File

@@ -26,6 +26,21 @@ Window {
lblRunTime.text = "Time: " + (mgmt.runTimeInMs() / 1000.0).toFixed(0) + "s"; lblRunTime.text = "Time: " + (mgmt.runTimeInMs() / 1000.0).toFixed(0) + "s";
} }
} }
onIsRunningChanged: {
if (mgmt.isRunning) {
// running
btnTrigger.text = "Stop";
cbNUC.enabled = false;
cbLogToDisk.enabled = false;
cbMeasTime.enabled = false;
} else {
btnTrigger.text = "Start";
cbNUC.enabled = true;
cbLogToDisk.enabled = true;
cbMeasTime.enabled = true;
}
}
} }
GridLayout { GridLayout {
@@ -39,32 +54,51 @@ Window {
ComboBox { ComboBox {
id: cbNUC; id: cbNUC;
height: 60; height: 60;
width: 85;
model: ["NUC1", "NUC2", "NUC3", "NUC4", "NUC5"]; model: ["NUC1", "NUC2", "NUC3", "NUC4", "NUC5"];
onCurrentIndexChanged: { onCurrentIndexChanged: {
chart.reset(); chart.reset();
} }
} }
ComboBox {
id: cbMeasTime;
height: 60;
width: 85;
model: ["Inf", "5s", "10s", "30s", "60s", "120s"];
onCurrentIndexChanged: {
chart.reset();
var maxRuntime = 0;
switch(currentIndex) {
case 0: maxRuntime = 0; break;
case 1: maxRuntime = 5; break;
case 2: maxRuntime = 10; break;
case 3: maxRuntime = 30; break;
case 4: maxRuntime = 60; break;
case 5: maxRuntime = 120; break;
}
mgmt.maxRuntime = maxRuntime * 1000;
}
}
Button { Button {
id: btnTrigger; id: btnTrigger;
text: "Start"; text: "Start";
height: 60; height: 60;
onClicked: { onClicked: {
if (mgmt.trigger()) { mgmt.trigger();
// running
btnTrigger.text = "Stop";
cbLogToDisk.enabled = false;
} else {
btnTrigger.text = "Start";
cbLogToDisk.enabled = true;
}
} }
} }
Button { Button {
text: "Reset"; text: "Reset";
height: 60; height: 60;
width: 60;
onClicked: { onClicked: {
chart.reset(); chart.reset();