Added timeout feature
This commit is contained in:
14
Manager.cpp
14
Manager.cpp
@@ -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) {
|
||||||
|
|||||||
14
Manager.h
14
Manager.h
@@ -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:
|
||||||
|
|
||||||
|
|||||||
50
main.qml
50
main.qml
@@ -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();
|
||||||
|
|||||||
Reference in New Issue
Block a user