Commit 5c9a3ca8 authored by Gus Grubba's avatar Gus Grubba

Yet some more

parent fc74866c
...@@ -1064,8 +1064,9 @@ contains (DEFINES, QGC_AIRMAP_ENABLED) { ...@@ -1064,8 +1064,9 @@ contains (DEFINES, QGC_AIRMAP_ENABLED) {
src/AirspaceManagement src/AirspaceManagement
HEADERS += \ HEADERS += \
src/AirspaceManagement/AirspaceAuthorization.h \
src/AirspaceManagement/AirspaceController.h \ src/AirspaceManagement/AirspaceController.h \
src/AirspaceManagement/AirspaceManagement.h \ src/AirspaceManagement/AirspaceManager.h \
src/AirspaceManagement/AirspaceRestriction.h \ src/AirspaceManagement/AirspaceRestriction.h \
src/AirspaceManagement/AirspaceRestrictionProvider.h \ src/AirspaceManagement/AirspaceRestrictionProvider.h \
src/AirspaceManagement/AirspaceRulesetsProvider.h \ src/AirspaceManagement/AirspaceRulesetsProvider.h \
...@@ -1074,7 +1075,7 @@ contains (DEFINES, QGC_AIRMAP_ENABLED) { ...@@ -1074,7 +1075,7 @@ contains (DEFINES, QGC_AIRMAP_ENABLED) {
SOURCES += \ SOURCES += \
src/AirspaceManagement/AirspaceController.cc \ src/AirspaceManagement/AirspaceController.cc \
src/AirspaceManagement/AirspaceManagement.cc \ src/AirspaceManagement/AirspaceManager.cc \
src/AirspaceManagement/AirspaceRestriction.cc \ src/AirspaceManagement/AirspaceRestriction.cc \
src/AirspaceManagement/AirspaceRestrictionProvider.cc \ src/AirspaceManagement/AirspaceRestrictionProvider.cc \
src/AirspaceManagement/AirspaceRulesetsProvider.cc \ src/AirspaceManagement/AirspaceRulesetsProvider.cc \
...@@ -1099,6 +1100,7 @@ contains (DEFINES, QGC_AIRMAP_ENABLED) { ...@@ -1099,6 +1100,7 @@ contains (DEFINES, QGC_AIRMAP_ENABLED) {
src/Airmap/AirMapTrafficMonitor.h \ src/Airmap/AirMapTrafficMonitor.h \
src/Airmap/AirMapVehicleManager.h \ src/Airmap/AirMapVehicleManager.h \
src/Airmap/AirmapWeatherInformation.h \ src/Airmap/AirmapWeatherInformation.h \
src/Airmap/LifetimeChecker.h \
SOURCES += \ SOURCES += \
src/Airmap/AirMapFlightManager.cc \ src/Airmap/AirMapFlightManager.cc \
......
...@@ -7,8 +7,10 @@ ...@@ -7,8 +7,10 @@
* *
****************************************************************************/ ****************************************************************************/
#include "AirMapManager.h"
#include "AirMapFlightManager.h" #include "AirMapFlightManager.h"
#include "AirMapManager.h"
#include "MissionItem.h"
AirMapFlightManager::AirMapFlightManager(AirMapSharedState& shared) AirMapFlightManager::AirMapFlightManager(AirMapSharedState& shared)
: _shared(shared) : _shared(shared)
......
...@@ -9,11 +9,11 @@ ...@@ -9,11 +9,11 @@
#pragma once #pragma once
#include "LifetimeChecker.h"
#include <QObject> #include <QObject>
#include <QTimer> #include <QTimer>
#include "AirMapManager.h"
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
/// class to upload a flight /// class to upload a flight
class AirMapFlightManager : public QObject, public LifetimeChecker class AirMapFlightManager : public QObject, public LifetimeChecker
......
...@@ -9,32 +9,23 @@ ...@@ -9,32 +9,23 @@
#pragma once #pragma once
#include "QGCToolbox.h" #include "AirspaceManager.h"
#include "QGCLoggingCategory.h" #include "QGCLoggingCategory.h"
#include "AirspaceManagement.h"
#include "AirMapSharedState.h"
#include <airmap/qt/logger.h> #include <airmap/qt/logger.h>
#include <airmap/qt/types.h> #include <airmap/qt/types.h>
Q_DECLARE_LOGGING_CATEGORY(AirMapManagerLog) #include <memory>
//----------------------------------------------------------------------------- class QGCToolbox;
/** class AirMapSharedState;
* @class LifetimeChecker class AirspaceVehicleManager;
* Base class which helps to check if an object instance still exists. class AirspaceRestrictionProvider;
* A subclass can take a weak pointer from _instance and then check if the object was deleted. class AirspaceRulesetsProvider;
* This is used in callbacks that access 'this', but the instance might already be deleted (e.g. vehicle disconnect). class AirspaceWeatherInfoProvider;
*/
class LifetimeChecker
{
public:
LifetimeChecker() : _instance(this, [](void*){}) { }
virtual ~LifetimeChecker() = default;
protected: Q_DECLARE_LOGGING_CATEGORY(AirMapManagerLog)
std::shared_ptr<LifetimeChecker> _instance;
};
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
/** /**
......
...@@ -9,10 +9,14 @@ ...@@ -9,10 +9,14 @@
#pragma once #pragma once
#include <QObject> #include "LifetimeChecker.h"
#include "AirMapManager.h"
#include "AirspaceRestrictionProvider.h" #include "AirspaceRestrictionProvider.h"
#include <QList>
#include <QGeoCoordinate>
class AirMapSharedState;
/** /**
* @file AirMapRestrictionManager.h * @file AirMapRestrictionManager.h
* Class to download polygons from AirMap * Class to download polygons from AirMap
......
...@@ -9,16 +9,18 @@ ...@@ -9,16 +9,18 @@
#pragma once #pragma once
#include "LifetimeChecker.h"
#include "AirspaceRulesetsProvider.h"
#include <QGeoCoordinate>
class AirMapSharedState;
/** /**
* @file AirMapRulesetsManager.h * @file AirMapRulesetsManager.h
* Class to download rulesets from AirMap * Class to download rulesets from AirMap
*/ */
#include <QObject>
#include "AirMapManager.h"
#include "AirspaceRulesetsProvider.h"
#include "AirMapSharedState.h"
class AirMapRulesetsManager : public AirspaceRulesetsProvider, public LifetimeChecker class AirMapRulesetsManager : public AirspaceRulesetsProvider, public LifetimeChecker
{ {
Q_OBJECT Q_OBJECT
......
...@@ -8,7 +8,6 @@ ...@@ -8,7 +8,6 @@
****************************************************************************/ ****************************************************************************/
#include "AirMapSettings.h" #include "AirMapSettings.h"
#include "QGCPalette.h"
#include "QGCApplication.h" #include "QGCApplication.h"
#include <QQmlEngine> #include <QQmlEngine>
......
...@@ -10,7 +10,6 @@ ...@@ -10,7 +10,6 @@
#pragma once #pragma once
#include "SettingsGroup.h" #include "SettingsGroup.h"
#include "QGCMAVLink.h"
class AirMapSettings : public SettingsGroup class AirMapSettings : public SettingsGroup
{ {
......
...@@ -7,8 +7,11 @@ ...@@ -7,8 +7,11 @@
* *
****************************************************************************/ ****************************************************************************/
#include "AirMapManager.h"
#include "AirMapTelemetry.h" #include "AirMapTelemetry.h"
#include "AirMapSharedState.h"
#include "AirMapManager.h"
#include "QGCMAVLink.h"
AirMapTelemetry::AirMapTelemetry(AirMapSharedState& shared) AirMapTelemetry::AirMapTelemetry(AirMapSharedState& shared)
: _shared(shared) : _shared(shared)
......
...@@ -9,8 +9,11 @@ ...@@ -9,8 +9,11 @@
#pragma once #pragma once
#include "LifetimeChecker.h"
#include <QObject> #include <QObject>
#include "AirMapManager.h"
class AirMapSharedState;
/// class to send telemetry data to AirMap /// class to send telemetry data to AirMap
class AirMapTelemetry : public QObject, public LifetimeChecker class AirMapTelemetry : public QObject, public LifetimeChecker
......
...@@ -9,8 +9,16 @@ ...@@ -9,8 +9,16 @@
#pragma once #pragma once
#include "LifetimeChecker.h"
#include <QObject> #include <QObject>
#include "AirMapManager.h" #include <QGeoCoordinate>
#include "airmap/traffic.h"
#include <memory>
class AirMapSharedState;
/** /**
* @class AirMapTrafficMonitor * @class AirMapTrafficMonitor
......
...@@ -7,11 +7,12 @@ ...@@ -7,11 +7,12 @@
* *
****************************************************************************/ ****************************************************************************/
#include "AirMapManager.h"
#include "AirMapVehicleManager.h" #include "AirMapVehicleManager.h"
#include "AirMapSharedState.h"
#include "AirMapFlightManager.h" #include "AirMapFlightManager.h"
#include "AirMapTelemetry.h" #include "AirMapTelemetry.h"
#include "AirMapTrafficMonitor.h" #include "AirMapTrafficMonitor.h"
#include "AirMapManager.h"
#include "Vehicle.h" #include "Vehicle.h"
......
...@@ -9,10 +9,11 @@ ...@@ -9,10 +9,11 @@
#pragma once #pragma once
#include <QObject> #include "AirspaceManager.h"
#include "AirspaceManagement.h"
#include "AirspaceVehicleManager.h" #include "AirspaceVehicleManager.h"
#include "QGCToolbox.h"
/// AirMap per vehicle management class. /// AirMap per vehicle management class.
class AirMapSharedState; class AirMapSharedState;
......
...@@ -7,8 +7,9 @@ ...@@ -7,8 +7,9 @@
* *
****************************************************************************/ ****************************************************************************/
#include "AirMapManager.h"
#include "AirmapWeatherInformation.h" #include "AirmapWeatherInformation.h"
#include "AirMapSharedState.h"
#include "AirMapManager.h"
#define WEATHER_UPDATE_DISTANCE 50000 //-- 50km threshold for weather updates #define WEATHER_UPDATE_DISTANCE 50000 //-- 50km threshold for weather updates
#define WEATHER_UPDATE_TIME 30 * 60 * 60 * 1000 //-- 30 minutes threshold for weather updates #define WEATHER_UPDATE_TIME 30 * 60 * 60 * 1000 //-- 30 minutes threshold for weather updates
......
...@@ -9,13 +9,13 @@ ...@@ -9,13 +9,13 @@
#pragma once #pragma once
#include <QObject> #include "LifetimeChecker.h"
#include <QGeoCoordinate>
#include <QTime>
#include "AirMapManager.h"
#include "AirspaceWeatherInfoProvider.h" #include "AirspaceWeatherInfoProvider.h"
#include <QGeoCoordinate>
#include <QTime>
/** /**
* @file AirMapWeatherInformation.h * @file AirMapWeatherInformation.h
* Weather information provided by AirMap. * Weather information provided by AirMap.
...@@ -24,7 +24,6 @@ ...@@ -24,7 +24,6 @@
class AirMapWeatherInformation : public AirspaceWeatherInfoProvider, public LifetimeChecker class AirMapWeatherInformation : public AirspaceWeatherInfoProvider, public LifetimeChecker
{ {
Q_OBJECT Q_OBJECT
friend class AirMapManager;
public: public:
AirMapWeatherInformation(AirMapSharedState &shared, QObject *parent = nullptr); AirMapWeatherInformation(AirMapSharedState &shared, QObject *parent = nullptr);
......
/****************************************************************************
*
* (c) 2017 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
*
* QGroundControl is licensed according to the terms in the file
* COPYING.md in the root of the source code directory.
*
****************************************************************************/
#pragma once
#include <memory>
//-----------------------------------------------------------------------------
/**
* @class LifetimeChecker
* Base class which helps to check if an object instance still exists.
* A subclass can take a weak pointer from _instance and then check if the object was deleted.
* This is used in callbacks that access 'this', but the instance might already be deleted (e.g. vehicle disconnect).
*/
class LifetimeChecker
{
public:
LifetimeChecker() : _instance(this, [](void*){}) { }
virtual ~LifetimeChecker() = default;
protected:
std::shared_ptr<LifetimeChecker> _instance;
};
/****************************************************************************
*
* (c) 2009-2016 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
*
* QGroundControl is licensed according to the terms in the file
* COPYING.md in the root of the source code directory.
*
****************************************************************************/
#pragma once
#include <QObject>
//-----------------------------------------------------------------------------
/**
* Contains the status of the Airspace authorization
*/
class AirspaceAuthorization : public QObject {
Q_OBJECT
public:
enum PermitStatus {
PermitUnknown = 0,
PermitPending,
PermitAccepted,
PermitRejected,
};
Q_ENUM(PermitStatus)
};
...@@ -7,11 +7,13 @@ ...@@ -7,11 +7,13 @@
* *
****************************************************************************/ ****************************************************************************/
#include "AirMapManager.h"
#include "AirspaceController.h" #include "AirspaceController.h"
#include "AirspaceManagement.h" #include "AirspaceManager.h"
#include "AirspaceWeatherInfoProvider.h"
#include "QGCApplication.h" #include "QGCApplication.h"
#include "QGCQGeoCoordinate.h" #include "QGCQGeoCoordinate.h"
#include "QmlObjectListModel.h"
AirspaceController::AirspaceController(QObject* parent) AirspaceController::AirspaceController(QObject* parent)
: QObject(parent) : QObject(parent)
...@@ -19,7 +21,32 @@ AirspaceController::AirspaceController(QObject* parent) ...@@ -19,7 +21,32 @@ AirspaceController::AirspaceController(QObject* parent)
{ {
} }
void AirspaceController::setROI(QGeoCoordinate center, double radius) void
AirspaceController::setROI(QGeoCoordinate center, double radius)
{ {
_manager->setROI(center, radius); _manager->setROI(center, radius);
} }
QmlObjectListModel*
AirspaceController::polygons()
{
return _manager->polygonRestrictions();
}
QmlObjectListModel*
AirspaceController::circles()
{
return _manager->circularRestrictions();
}
QString
AirspaceController::providerName()
{
return _manager->name();
}
AirspaceWeatherInfoProvider*
AirspaceController::weatherInfo()
{
return _manager->weatherInfo();
}
...@@ -9,10 +9,11 @@ ...@@ -9,10 +9,11 @@
#pragma once #pragma once
#include "AirspaceManagement.h" #include <QObject>
#include "AirmapWeatherInformation.h"
#include "QmlObjectListModel.h" class AirspaceManager;
#include "QGCMapPolygon.h" class QmlObjectListModel;
class AirspaceWeatherInfoProvider;
class AirspaceController : public QObject class AirspaceController : public QObject
{ {
......
...@@ -8,7 +8,14 @@ ...@@ -8,7 +8,14 @@
****************************************************************************/ ****************************************************************************/
#include "AirspaceManagement.h" #include "AirspaceManager.h"
#include "AirspaceWeatherInfoProvider.h"
#include "AirspaceRestrictionProvider.h"
#include "AirspaceRulesetsProvider.h"
#include "Vehicle.h"
#include "QGCApplication.h"
#include "QmlObjectListModel.h"
QGC_LOGGING_CATEGORY(AirspaceManagementLog, "AirspaceManagementLog") QGC_LOGGING_CATEGORY(AirspaceManagementLog, "AirspaceManagementLog")
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
#pragma once #pragma once
/** /**
* @file AirspaceManagement.h * @file AirspaceManager.h
* This file contains the interface definitions used by an airspace management implementation (AirMap). * This file contains the interface definitions used by an airspace management implementation (AirMap).
* There are 3 base classes that must be subclassed: * There are 3 base classes that must be subclassed:
* - AirspaceManager * - AirspaceManager
...@@ -23,16 +23,8 @@ ...@@ -23,16 +23,8 @@
* each vehicle could have its own restrictions. * each vehicle could have its own restrictions.
*/ */
#include "AirspaceController.h"
#include "AirspaceRestrictionProvider.h"
#include "AirspaceRulesetsProvider.h"
#include "AirspaceVehicleManager.h"
#include "AirspaceWeatherInfoProvider.h"
#include "QGCToolbox.h" #include "QGCToolbox.h"
#include "QGCLoggingCategory.h" #include "QGCLoggingCategory.h"
#include "QmlObjectListModel.h"
#include "Vehicle.h"
#include <QGeoCoordinate> #include <QGeoCoordinate>
#include <QObject> #include <QObject>
...@@ -40,6 +32,12 @@ ...@@ -40,6 +32,12 @@
#include <QList> #include <QList>
#include <QTimer> #include <QTimer>
class Vehicle;
class QGCApplication;
class QmlObjectListModel;
class AirspaceWeatherInfoProvider;
class AirspaceRestrictionProvider;
class AirspaceRulesetsProvider;
Q_DECLARE_LOGGING_CATEGORY(AirspaceManagementLog) Q_DECLARE_LOGGING_CATEGORY(AirspaceManagementLog)
......
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
#include <QObject> #include <QObject>
#include <QGeoCoordinate> #include <QGeoCoordinate>
#include <QVariantList>
/** /**
* @class AirspaceRestriction * @class AirspaceRestriction
......
...@@ -15,7 +15,10 @@ ...@@ -15,7 +15,10 @@
*/ */
#include <QObject> #include <QObject>
#include "AirspaceRestriction.h" #include <QList>
class AirspacePolygonRestriction;
class AirspaceCircularRestriction;
class AirspaceRestrictionProvider : public QObject { class AirspaceRestrictionProvider : public QObject {
Q_OBJECT Q_OBJECT
......
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
*/ */
#include <QObject> #include <QObject>
#include <QGeoCoordinate.h> #include <QGeoCoordinate>
class AirspaceRulesetsProvider : public QObject { class AirspaceRulesetsProvider : public QObject {
Q_OBJECT Q_OBJECT
......
...@@ -8,13 +8,14 @@ ...@@ -8,13 +8,14 @@
****************************************************************************/ ****************************************************************************/
#include "AirspaceManagement.h" #include "AirspaceManager.h"
#include <Vehicle.h> #include "Vehicle.h"
#include "MissionItem.h"
AirspaceVehicleManager::AirspaceVehicleManager(const Vehicle& vehicle) AirspaceVehicleManager::AirspaceVehicleManager(const Vehicle& vehicle)
: _vehicle(vehicle) : _vehicle(vehicle)
{ {
connect(&_vehicle, &Vehicle::armedChanged, this, &AirspaceVehicleManager::_vehicleArmedChanged); connect(&_vehicle, &Vehicle::armedChanged, this, &AirspaceVehicleManager::_vehicleArmedChanged);
connect(&_vehicle, &Vehicle::mavlinkMessageReceived, this, &AirspaceVehicleManager::vehicleMavlinkMessageReceived); connect(&_vehicle, &Vehicle::mavlinkMessageReceived, this, &AirspaceVehicleManager::vehicleMavlinkMessageReceived);
} }
......
...@@ -9,9 +9,14 @@ ...@@ -9,9 +9,14 @@
#pragma once #pragma once
#include <QList> #include "AirspaceAuthorization.h"
#include "MissionItem.h" #include "QGCMAVLink.h"
#include <QObject>
#include <QList>
#include <QGeoCoordinate>
class MissionItem;
class Vehicle; class Vehicle;
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
#include <QGeoCoordinate> #include <QGeoCoordinate>
#if defined(QGC_AIRMAP_ENABLED) #if defined(QGC_AIRMAP_ENABLED)
#include "AirspaceManagement.h" #include "AirspaceManager.h"
#endif #endif
#include "QGCLoggingCategory.h" #include "QGCLoggingCategory.h"
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
#include "UASMessageHandler.h" #include "UASMessageHandler.h"
#include "SettingsFact.h" #include "SettingsFact.h"
#if defined(QGC_AIRMAP_ENABLED) #if defined(QGC_AIRMAP_ENABLED)
#include "AirspaceManagement.h" #include "AirspaceManager.h"
#include "AirspaceVehicleManager.h" #include "AirspaceVehicleManager.h"
#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