Added timeout feature
This commit is contained in:
14
Manager.cpp
14
Manager.cpp
@@ -56,13 +56,13 @@ void Manager::test() {
|
||||
}
|
||||
|
||||
bool Manager::trigger() {
|
||||
if (isRunning) {
|
||||
if (_isRunning) {
|
||||
stop();
|
||||
} else {
|
||||
start();
|
||||
}
|
||||
|
||||
return isRunning;
|
||||
return _isRunning;
|
||||
}
|
||||
|
||||
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/RTT", "start", "()I");
|
||||
|
||||
isRunning = true;
|
||||
_isRunning = true;
|
||||
emit isRunningChanged();
|
||||
#else
|
||||
std::random_device rd;
|
||||
std::mt19937 gen{rd()};
|
||||
@@ -144,7 +145,8 @@ void Manager::stop() {
|
||||
ftmLogger = nullptr;
|
||||
}
|
||||
|
||||
isRunning = false;
|
||||
_isRunning = false;
|
||||
emit isRunningChanged();
|
||||
}
|
||||
|
||||
int Manager::runTimeInMs() const {
|
||||
@@ -184,6 +186,10 @@ void Manager::onWifiData(WifiRttResult result) {
|
||||
<< endl;
|
||||
}
|
||||
}
|
||||
|
||||
if (_maxRuntime != 0 && runTimeInMs() > _maxRuntime) {
|
||||
stop();
|
||||
}
|
||||
}
|
||||
|
||||
void Manager::onUWBData(std::vector<uchar> data) {
|
||||
|
||||
14
Manager.h
14
Manager.h
@@ -40,14 +40,18 @@ private:
|
||||
|
||||
float _uwbDist[4];
|
||||
|
||||
bool isRunning = false;
|
||||
bool _isRunning = false;
|
||||
bool _logToDisk = false;
|
||||
int _maxRuntime = 0;
|
||||
|
||||
std::shared_ptr<QFile> ftmLogger;
|
||||
|
||||
public:
|
||||
Q_PROPERTY(bool isRunning READ getIsRunning NOTIFY isRunningChanged)
|
||||
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 uwbDist2 READ getUwbDist2() NOTIFY uwbDistChanged)
|
||||
Q_PROPERTY(float uwbDist3 READ getUwbDist3() NOTIFY uwbDistChanged)
|
||||
@@ -66,11 +70,16 @@ public:
|
||||
void onWifiData(WifiRttResult result);
|
||||
void onUWBData(std::vector<uchar> data);
|
||||
|
||||
public:
|
||||
private:
|
||||
|
||||
bool getIsRunning() const { return _isRunning; }
|
||||
|
||||
bool getLogToDisk() const { return _logToDisk; }
|
||||
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 getUwbDist2() {return _uwbDist[1];}
|
||||
float getUwbDist3() {return _uwbDist[2];}
|
||||
@@ -81,6 +90,7 @@ signals:
|
||||
void uwbDistChanged();
|
||||
void newDistMeas(int idx, int value);
|
||||
void logToDiskChanged(bool newValue);
|
||||
void isRunningChanged();
|
||||
|
||||
public:
|
||||
|
||||
|
||||
50
main.qml
50
main.qml
@@ -26,6 +26,21 @@ Window {
|
||||
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 {
|
||||
@@ -39,32 +54,51 @@ Window {
|
||||
ComboBox {
|
||||
id: cbNUC;
|
||||
height: 60;
|
||||
width: 85;
|
||||
model: ["NUC1", "NUC2", "NUC3", "NUC4", "NUC5"];
|
||||
onCurrentIndexChanged: {
|
||||
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 {
|
||||
id: btnTrigger;
|
||||
text: "Start";
|
||||
height: 60;
|
||||
|
||||
onClicked: {
|
||||
if (mgmt.trigger()) {
|
||||
// running
|
||||
btnTrigger.text = "Stop";
|
||||
cbLogToDisk.enabled = false;
|
||||
} else {
|
||||
btnTrigger.text = "Start";
|
||||
cbLogToDisk.enabled = true;
|
||||
}
|
||||
mgmt.trigger();
|
||||
}
|
||||
}
|
||||
|
||||
Button {
|
||||
text: "Reset";
|
||||
height: 60;
|
||||
width: 60;
|
||||
|
||||
onClicked: {
|
||||
chart.reset();
|
||||
|
||||
Reference in New Issue
Block a user