Commit 60b604d9 authored by Valentin Platzgummer's avatar Valentin Platzgummer

temp, with errors

parent 58b2b82d
This diff is collapsed.
...@@ -2,26 +2,26 @@ ...@@ -2,26 +2,26 @@
#include <QFutureWatcher> #include <QFutureWatcher>
#include <QVector> #include <QVector>
#include <memory>
#include "SettingsFact.h" #include "SettingsFact.h"
#include "TransectStyleComplexItem.h" #include "TransectStyleComplexItem.h"
#include "Geometry/WimaJoinedAreaData.h" #include "Geometry/WimaJoinedAreaData.h"
#include "Geometry/WimaMeasurementAreaData.h" #include "Geometry/WimaMeasurementAreaData.h"
#include "WimaPlanData.h"
class RoutingThread; class RoutingThread;
class RoutingData; class RoutingData;
class GeneratorBase;
class CircularSurvey : public TransectStyleComplexItem { class CircularSurvey : public TransectStyleComplexItem {
Q_OBJECT Q_OBJECT
public:
using PtrRoutingData = QSharedPointer<RoutingData>;
enum class Type {
Circular = 0,
Linear = 1,
Count = 2 // Must me last, onyl for counting
};
using PtrGenerator = std::shared_ptr<GeneratorBase>;
using PtrRoutingData = std::shared_ptr<RoutingData>;
public:
/// @param vehicle Vehicle which this is being contructed for /// @param vehicle Vehicle which this is being contructed for
/// @param flyView true: Created for use in the Fly View, false: Created for /// @param flyView true: Created for use in the Fly View, false: Created for
/// use in the Plan View /// use in the Plan View
...@@ -31,50 +31,25 @@ public: ...@@ -31,50 +31,25 @@ public:
QObject *parent); QObject *parent);
~CircularSurvey(); ~CircularSurvey();
Q_PROPERTY(QGeoCoordinate refPoint READ refPoint WRITE setRefPoint NOTIFY
refPointChanged)
Q_PROPERTY(Fact *transectDistance READ transectDistance CONSTANT)
Q_PROPERTY(Fact *alpha READ alpha CONSTANT)
Q_PROPERTY(Fact *minLength READ minLength CONSTANT)
Q_PROPERTY(Fact *type READ type CONSTANT) Q_PROPERTY(Fact *type READ type CONSTANT)
Q_PROPERTY(Fact *variant READ variant CONSTANT)
Q_PROPERTY(Fact *numRuns READ numRuns CONSTANT)
Q_PROPERTY(Fact *run READ run CONSTANT)
Q_PROPERTY(int typeCount READ typeCount CONSTANT) Q_PROPERTY(int typeCount READ typeCount CONSTANT)
Q_PROPERTY(bool calculating READ calculating NOTIFY calculatingChanged) Q_PROPERTY(Fact *variant READ variant CONSTANT)
Q_PROPERTY(bool hidePolygon READ hidePolygon NOTIFY hidePolygonChanged)
Q_PROPERTY( Q_PROPERTY(
QList<QString> variantNames READ variantNames NOTIFY variantNamesChanged) QList<QString> variantNames READ variantNames NOTIFY variantNamesChanged)
Q_PROPERTY(QList<QString> runNames READ runNames NOTIFY runNamesChanged) Q_PROPERTY(QList<QString> generatorNameList READ generatorNameList NOTIFY
generatorNameListChanged)
Q_PROPERTY(bool calculating READ calculating NOTIFY calculatingChanged)
Q_INVOKABLE void resetReference(void);
Q_INVOKABLE void reverse(void); Q_INVOKABLE void reverse(void);
// Property setters // Property setters
void setRefPoint(const QGeoCoordinate &refPt); void setPlanData(const WimaPlanData &d);
void setHidePolygon(bool hide);
void setMeasurementArea(const WimaMeasurementAreaData &mArea);
void setJoinedArea(const WimaJoinedAreaData &jArea);
void setMeasurementArea(const WimaMeasurementArea &mArea);
void setJoinedArea(const WimaJoinedArea &jArea);
void setDepot(const QGeoCoordinate &depot);
// Property getters // Property getters
QGeoCoordinate refPoint() const;
Fact *transectDistance();
Fact *alpha();
Fact *minLength();
Fact *type(); Fact *type();
Fact *variant();
Fact *numRuns();
Fact *run();
int typeCount() const; int typeCount() const;
bool calculating() const; Fact *variant();
bool hidePolygon() const;
QList<QString> variantNames() const; QList<QString> variantNames() const;
QList<QString> runNames() const;
QGeoCoordinate depot() const;
const QList<QList<QGeoCoordinate>> &rawTransects() const;
// Overrides // Overrides
bool load(const QJsonObject &complexObject, int sequenceNumber, bool load(const QJsonObject &complexObject, int sequenceNumber,
...@@ -92,91 +67,77 @@ public: ...@@ -92,91 +67,77 @@ public:
bool readyForSave(void) const override final; bool readyForSave(void) const override final;
double additionalTimeDelay(void) const override final; double additionalTimeDelay(void) const override final;
// Generator
bool registerGenerator(const QString &name, std::shared_ptr<GeneratorBase> g);
bool unregisterGenerator(const QString &name);
bool unregisterGenerator(int index);
Q_INVOKABLE bool switchToGenerator(const QString &name);
Q_INVOKABLE bool switchToGenerator(int index);
QList<QString> generatorNameList();
static const char *settingsGroup; static const char *settingsGroup;
static const char *transectDistanceName;
static const char *alphaName;
static const char *minLengthName;
static const char *typeName; static const char *typeName;
static const char *variantName; static const char *variantName;
static const char *numRunsName;
static const char *runName;
static const char *CircularSurveyName; static const char *CircularSurveyName;
static const char *refPointLongitudeName;
static const char *refPointLatitudeName;
static const char *refPointAltitudeName;
signals: signals:
void refPointChanged();
void calculatingChanged(); void calculatingChanged();
void hidePolygonChanged();
void depotChanged();
void variantNamesChanged(); void variantNamesChanged();
void runNamesChanged(); void generatorNameListChanged();
void measurementAreaChanged(); void generatorChanged();
void joinedAreaChanged();
private slots: private slots:
// Overrides from TransectStyleComplexItem // Overrides from TransectStyleComplexItem
void _rebuildTransectsPhase1(void) final; void _rebuildTransectsPhase1(void) final;
void _recalcComplexDistance(void) final; void _recalcComplexDistance(void) final;
void _recalcCameraShots(void) final; void _recalcCameraShots(void) final;
// Worker functions.
void _setTransects(PtrRoutingData pRoute); void _setTransects(PtrRoutingData pRoute);
void _changeVariant();
void _updateWorker();
void _changeVariantWorker();
void _reverseWorker();
void _storeWorker();
private: private:
void _appendLoadedMissionItems(QList<MissionItem *> &items, void _appendLoadedMissionItems(QList<MissionItem *> &items,
QObject *missionItemParent); QObject *missionItemParent);
void _buildAndAppendMissionItems(QList<MissionItem *> &items, void _buildAndAppendMissionItems(QList<MissionItem *> &items,
QObject *missionItemParent); QObject *missionItemParent);
void _changeVariant();
void _changeRun();
void _updateWorker(); bool _switchToGenerator(const PtrGenerator &newG);
void _changeVariantRunWorker();
void _reverseWorker(); // State.
void _storeWorker(); enum class STATE {
void _changeRunWorker(); IDLE,
STORE,
REVERSE,
VARIANT_CHANGE,
RUN_CHANGE,
};
STATE _state;
// center of the circular lanes, e.g. base station // center of the circular lanes, e.g. base station
QGeoCoordinate _referencePoint;
QMap<QString, FactMetaData *> _metaDataMap; QMap<QString, FactMetaData *> _metaDataMap;
// distance between two neighbour circles
SettingsFact _transectDistance;
// angle discretisation of the circles
SettingsFact _alpha;
// minimal transect lenght, transects are rejected if they are shorter than
// this value
SettingsFact _minLength;
SettingsFact _type; SettingsFact _type;
SettingsFact _variant; SettingsFact _variant;
QList<QString> _variantNames; QList<QString> _variantNames;
SettingsFact _numRuns;
SettingsFact _run;
QList<QString> _runNames;
// Area data // Area data
WimaMeasurementAreaData _mArea; std::shared_ptr<WimaAreaData> _areaData;
WimaJoinedAreaData _jArea;
QGeoCoordinate _depot; // Generators
QList<PtrGenerator> _generatorList;
QList<QString> _generatorNameList;
PtrGenerator _pGenerator;
// Worker // Worker
using PtrWorker = std::shared_ptr<RoutingThread>; using PtrWorker = std::shared_ptr<RoutingThread>;
PtrWorker _pWorker; PtrWorker _pWorker;
PtrRoutingData _pRoutingData; PtrRoutingData _pRoutingData; // remove this, not necessary.
// Routing data. // Routing data.
QList<QList<QGeoCoordinate>> _rawTransects; using Variant = Transects;
using Runs = QVector<Transects>; QVector<Variant> _variantVector;
QVector<Runs> _variantVector;
// State.
enum class STATE {
DEFAULT,
STORE,
REVERSE,
VARIANT_CHANGE,
RUN_CHANGE,
};
STATE _state;
bool _hidePolygon;
}; };
...@@ -31,7 +31,7 @@ class RoutingThread : public QThread { ...@@ -31,7 +31,7 @@ class RoutingThread : public QThread {
using Lock = std::unique_lock<std::mutex>; using Lock = std::unique_lock<std::mutex>;
public: public:
using PtrRoutingData = QSharedPointer<RoutingData>; using PtrRoutingData = shared_ptr<RoutingData>;
using Generator = std::function<bool(snake::Transects &)>; using Generator = std::function<bool(snake::Transects &)>;
using Consumer = std::function<void(const RoutingData &)>; using Consumer = std::function<void(const RoutingData &)>;
......
...@@ -26,6 +26,9 @@ const char *CircularGenerator::settingsGroup = "CircularGenerator"; ...@@ -26,6 +26,9 @@ const char *CircularGenerator::settingsGroup = "CircularGenerator";
const char *CircularGenerator::distanceName = "TransectDistance"; const char *CircularGenerator::distanceName = "TransectDistance";
const char *CircularGenerator::deltaAlphaName = "DeltaAlpha"; const char *CircularGenerator::deltaAlphaName = "DeltaAlpha";
const char *CircularGenerator::minLengthName = "MinLength"; const char *CircularGenerator::minLengthName = "MinLength";
const char *CircularGenerator::refPointLatitudeName = "ReferencePointLat";
const char *CircularGenerator::refPointLongitudeName = "ReferencePointLong";
const char *CircularGenerator::refPointAltitudeName = "ReferencePointAlt";
CircularGenerator::CircularGenerator(QObject *parent) CircularGenerator::CircularGenerator(QObject *parent)
: CircularGenerator(nullptr, parent) {} : CircularGenerator(nullptr, parent) {}
......
...@@ -36,6 +36,9 @@ public: ...@@ -36,6 +36,9 @@ public:
static const char *distanceName; static const char *distanceName;
static const char *deltaAlphaName; static const char *deltaAlphaName;
static const char *minLengthName; static const char *minLengthName;
static const char *refPointLongitudeName;
static const char *refPointLatitudeName;
static const char *refPointAltitudeName;
signals: signals:
void referenceChanged(); void referenceChanged();
......
...@@ -213,5 +213,5 @@ private: ...@@ -213,5 +213,5 @@ private:
bool _highLatency; bool _highLatency;
}; };
typedef QSharedPointer<LinkConfiguration> SharedLinkConfigurationPointer; typedef shared_ptr<LinkConfiguration> SharedLinkConfigurationPointer;
...@@ -305,5 +305,5 @@ private: ...@@ -305,5 +305,5 @@ private:
QMap<int /* vehicle id */, MavlinkMessagesTimer*> _mavlinkMessagesTimers; QMap<int /* vehicle id */, MavlinkMessagesTimer*> _mavlinkMessagesTimers;
}; };
typedef QSharedPointer<LinkInterface> SharedLinkInterfacePointer; typedef shared_ptr<LinkInterface> SharedLinkInterfacePointer;
...@@ -215,7 +215,7 @@ public: ...@@ -215,7 +215,7 @@ public:
} }
private: private:
QSharedPointer<T> _unitTest; shared_ptr<T> _unitTest;
}; };
#endif #endif
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