Commit 7a0b738b authored by Valentin Platzgummer's avatar Valentin Platzgummer

version checking added to nemo inteface, testing needed..

parent b098b99a
...@@ -517,6 +517,7 @@ HEADERS += \ ...@@ -517,6 +517,7 @@ HEADERS += \
src/comm/ros_bridge/include/messages/nemo_msgs/heartbeat.h \ src/comm/ros_bridge/include/messages/nemo_msgs/heartbeat.h \
src/comm/ros_bridge/include/messages/nemo_msgs/progress_array.h \ src/comm/ros_bridge/include/messages/nemo_msgs/progress_array.h \
src/comm/ros_bridge/include/messages/nemo_msgs/tile.h \ src/comm/ros_bridge/include/messages/nemo_msgs/tile.h \
src/comm/ros_bridge/include/messages/nemo_msgs/tile_array.h \
src/comm/utilities.h src/comm/utilities.h
contains (DEFINES, QGC_ENABLE_PAIRING) { contains (DEFINES, QGC_ENABLE_PAIRING) {
...@@ -559,6 +560,7 @@ SOURCES += \ ...@@ -559,6 +560,7 @@ SOURCES += \
src/comm/ros_bridge/include/messages/nemo_msgs/progress_array.cpp \ src/comm/ros_bridge/include/messages/nemo_msgs/progress_array.cpp \
src/comm/ros_bridge/include/messages/nemo_msgs/tile.cpp \ src/comm/ros_bridge/include/messages/nemo_msgs/tile.cpp \
src/Settings/WimaSettings.cc \ src/Settings/WimaSettings.cc \
src/comm/ros_bridge/include/messages/nemo_msgs/tile_array.cpp
contains (DEFINES, QGC_ENABLE_PAIRING) { contains (DEFINES, QGC_ENABLE_PAIRING) {
SOURCES += \ SOURCES += \
......
...@@ -30,6 +30,7 @@ public: ...@@ -30,6 +30,7 @@ public:
enum class STATUS { enum class STATUS {
NOT_CONNECTED, NOT_CONNECTED,
ERROR,
SYNC, SYNC,
READY, READY,
WEBSOCKET_DETECTED, WEBSOCKET_DETECTED,
......
...@@ -52,13 +52,22 @@ QList<QGeoCoordinate> MeasurementTile::tile() const { return coordinateList(); } ...@@ -52,13 +52,22 @@ QList<QGeoCoordinate> MeasurementTile::tile() const { return coordinateList(); }
QString MeasurementTile::randomId(int length) { QString MeasurementTile::randomId(int length) {
static const QString values( static const QString values(
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"); "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789");
static std::uint64_t counter = 0;
static auto firstCall = std::chrono::high_resolution_clock::now();
auto delta = std::chrono::duration_cast<std::chrono::nanoseconds>(
std::chrono::high_resolution_clock::now() - firstCall)
.count();
std::srand((unsigned int)delta ^ counter);
QString str; QString str;
std::srand(std::time(nullptr));
for (int i = 0; i < length; ++i) { for (int i = 0; i < length; ++i) {
int index = std::rand() % values.length(); int index = std::rand() % values.length();
QChar c = values.at(index); QChar c = values.at(index);
str.append(c); str.append(c);
} }
++counter;
return str; return str;
} }
......
...@@ -22,7 +22,8 @@ Rectangle { ...@@ -22,7 +22,8 @@ Rectangle {
property int availableWidth: 300 property int availableWidth: 300
property bool error: errorString.lenght >= 0 property bool error: errorString.lenght >= 0
readonly property bool running: _nemoInterface.running readonly property bool running: _nemoInterface.running
property string errorString: "" property string warningString: _nemoInterface.warningString
property string infoString: _nemoInterface.infoString
signal abort signal abort
...@@ -50,7 +51,13 @@ Rectangle { ...@@ -50,7 +51,13 @@ Rectangle {
color: "orange" color: "orange"
Layout.columnSpan: parent.columns Layout.columnSpan: parent.columns
Layout.fillWidth: true Layout.fillWidth: true
visible: !_root.areasCorrect }
QGCLabel {
text: _root.infoString
wrapMode: Text.WordWrap
horizontalAlignment: Text.AlignLeft
Layout.columnSpan: parent.columns
Layout.fillWidth: true
} }
QGCButton { QGCButton {
......
...@@ -37,7 +37,7 @@ void Rosbridge::start() { ...@@ -37,7 +37,7 @@ void Rosbridge::start() {
_impl->moveToThread(_t); _impl->moveToThread(_t);
connect(_impl, &RosbridgeImpl::stateChanged, this, connect(_impl, &RosbridgeImpl::stateChanged, this,
&Rosbridge::_onImplStateChanged); &Rosbridge::stateChanged);
connect(this, &Rosbridge::_start, _impl, &RosbridgeImpl::start); connect(this, &Rosbridge::_start, _impl, &RosbridgeImpl::start);
connect(this, &Rosbridge::_stop, _impl, &RosbridgeImpl::stop); connect(this, &Rosbridge::_stop, _impl, &RosbridgeImpl::stop);
...@@ -244,16 +244,6 @@ void Rosbridge::waitForService(const QString &service) { ...@@ -244,16 +244,6 @@ void Rosbridge::waitForService(const QString &service) {
} }
} }
void Rosbridge::_onImplStateChanged() {
static STATE oldState = STATE::STOPPED;
auto newState = translate(_impl->state());
if (oldState != newState) {
emit stateChanged();
}
oldState = newState;
}
Rosbridge::STATE translate(RosbridgeImpl::STATE s) { Rosbridge::STATE translate(RosbridgeImpl::STATE s) {
switch (s) { switch (s) {
case RosbridgeImpl::STATE::STOPPED: case RosbridgeImpl::STATE::STOPPED:
......
...@@ -101,8 +101,6 @@ signals: ...@@ -101,8 +101,6 @@ signals:
void _unadvertiseAllServices(); void _unadvertiseAllServices();
private: private:
void _onImplStateChanged();
std::atomic<STATE> _state; std::atomic<STATE> _state;
RosbridgeImpl *_impl; RosbridgeImpl *_impl;
QThread *_t; QThread *_t;
......
...@@ -337,6 +337,11 @@ void RosbridgeImpl::_onDisconnected() { ...@@ -337,6 +337,11 @@ void RosbridgeImpl::_onDisconnected() {
} }
} }
void RosbridgeImpl::_onError(QAbstractSocket::SocketError e) {
qDebug() << "_onError: socket error: " << e << ", "
<< _webSocket.errorString();
}
void RosbridgeImpl::_setState(RosbridgeImpl::STATE newState) { void RosbridgeImpl::_setState(RosbridgeImpl::STATE newState) {
if (_state != newState) { if (_state != newState) {
_state = newState; _state = newState;
...@@ -372,7 +377,6 @@ void RosbridgeImpl::_doAction() { ...@@ -372,7 +377,6 @@ void RosbridgeImpl::_doAction() {
} }
void RosbridgeImpl::_onTextMessageReceived(const QString &message) { void RosbridgeImpl::_onTextMessageReceived(const QString &message) {
qDebug() << "_onTextMessageReceived: " << message;
QJsonParseError e; QJsonParseError e;
auto d = QJsonDocument::fromJson(message.toUtf8(), &e); auto d = QJsonDocument::fromJson(message.toUtf8(), &e);
if (!d.isNull()) { if (!d.isNull()) {
......
...@@ -58,6 +58,7 @@ signals: ...@@ -58,6 +58,7 @@ signals:
private slots: private slots:
void _onConnected(); void _onConnected();
void _onDisconnected(); void _onDisconnected();
void _onError(QAbstractSocket::SocketError e);
void _doAction(); void _doAction();
void _onTextMessageReceived(const QString &message); void _onTextMessageReceived(const QString &message);
......
...@@ -100,7 +100,7 @@ template <class TileType> bool fromJson(const QJsonObject &value, TileType &p) { ...@@ -100,7 +100,7 @@ template <class TileType> bool fromJson(const QJsonObject &value, TileType &p) {
PointType; PointType;
for (long i = 0; i < jsonArray.size(); ++i) { for (long i = 0; i < jsonArray.size(); ++i) {
PointType pt; PointType pt;
if (!geo_point::fromJson(jsonArray[i], pt)) { if (!geo_point::fromJson(jsonArray[i].toObject(), pt)) {
return false; return false;
} }
p.tile().push_back(std::move(pt)); p.tile().push_back(std::move(pt));
......
#pragma once
#include "ros_bridge/include/messages/nemo_msgs/tile.h"
#include <QJsonArray>
#include <QString>
namespace ros_bridge {
//! @brief Namespace containing classes and methodes ros message generation.
namespace messages {
//! @brief Namespace containing classes and methodes for nemo_msgs
//! generation.
namespace nemo_msgs {
//! @brief Namespace containing methodes for nemo_msgs/tile_array message
//! generation.
namespace tile_array {
template <class TileArray>
bool toJson(const TileArray &array, QJsonArray &jsonArray) {
for (unsigned long i = 0; i < std::uint64_t(array.size()); ++i) {
QJsonObject jsonTile;
if (!tile::toJson(array[i], jsonTile)) {
return false;
}
jsonArray.push_back(std::move(jsonTile));
}
return true;
}
template <class TileArray>
bool fromJson(const QJsonArray &jsonArray, TileArray &array) {
using namespace geographic_msgs;
array.clear();
array.reserve(jsonArray.size());
typedef decltype(array[0]) TileCVR;
typedef typename std::remove_cv_t<typename std::remove_reference_t<TileCVR>>
Tile;
for (long i = 0; i < jsonArray.size(); ++i) {
Tile t;
if (!tile::fromJson(jsonArray[i], t)) {
return false;
}
array.push_back(std::move(t));
}
return true;
}
} // namespace tile_array
} // namespace nemo_msgs
} // namespace messages
} // namespace ros_bridge
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment