#pragma once #include #include #include #include #include "QNemoProgress.h" #include "QNemoHeartbeat.h" #include using namespace boost::units; using Length = quantity; using Area = quantity; class SnakeImpl; enum class NemoStatus{ NotConnected = 0, Connected = 1, Timeout = -1, InvalidHeartbeat = -2 }; class SnakeDataManager : public QThread{ Q_OBJECT public: using SnakeImplPtr = std::unique_ptr; SnakeDataManager(QObject *parent = nullptr); ~SnakeDataManager() override; void setMeasurementArea (const QList &measurementArea); void setServiceArea (const QList &serviceArea); void setCorridor (const QList &corridor); QNemoProgress nemoProgress(); int nemoStatus(); bool calcInProgress(); Length lineDistance() const; void setLineDistance(Length lineDistance); Length minTransectLength() const; void setMinTransectLength(Length minTransectLength); Area minTileArea() const; void setMinTileArea(Area minTileArea); Length tileHeight() const; void setTileHeight(Length tileHeight); Length tileWidth() const; void setTileWidth(Length tileWidth); void enableRosBridge(); void disableRosBride(); signals: void nemoProgressChanged(); void nemoStatusChanged(int status); void calcInProgressChanged(bool inProgress); protected: void run() override; private: SnakeImplPtr pImpl; };