diff --git a/android.pri b/android.pri new file mode 100644 index 0000000000000000000000000000000000000000..eef0ae3f9cae5ca6fcdcf434a98dba2cdb1b0a0d --- /dev/null +++ b/android.pri @@ -0,0 +1,26 @@ +include($$PWD/libs/qtandroidserialport/src/qtandroidserialport.pri) +message("Adding Serial Java Classes") +QT += androidextras +ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android +OTHER_FILES += \ + $$PWD/android/AndroidManifest.xml \ + $$PWD/android/res/xml/device_filter.xml \ + $$PWD/android/src/com/hoho/android/usbserial/driver/CdcAcmSerialDriver.java \ + $$PWD/android/src/com/hoho/android/usbserial/driver/CommonUsbSerialDriver.java \ + $$PWD/android/src/com/hoho/android/usbserial/driver/Cp2102SerialDriver.java \ + $$PWD/android/src/com/hoho/android/usbserial/driver/FtdiSerialDriver.java \ + $$PWD/android/src/com/hoho/android/usbserial/driver/ProlificSerialDriver.java \ + $$PWD/android/src/com/hoho/android/usbserial/driver/UsbId.java \ + $$PWD/android/src/com/hoho/android/usbserial/driver/UsbSerialDriver.java \ + $$PWD/android/src/com/hoho/android/usbserial/driver/UsbSerialProber.java \ + $$PWD/android/src/com/hoho/android/usbserial/driver/UsbSerialRuntimeException.java \ + $$PWD/android/src/org/qgroundcontrol/qgchelper/UsbDeviceJNI.java \ + $$PWD/android/src/org/qgroundcontrol/qgchelper/UsbIoManager.java + +DISTFILES += \ + $$PWD/android/gradle/wrapper/gradle-wrapper.jar \ + $$PWD/android/gradlew \ + $$PWD/android/res/values/libs.xml \ + $$PWD/android/build.gradle \ + $$PWD/android/gradle/wrapper/gradle-wrapper.properties \ + $$PWD/android/gradlew.bat diff --git a/api/IQGCApplication.h b/api/IQGCApplication.h new file mode 100644 index 0000000000000000000000000000000000000000..79edce901b314bddbe5f4faed1032182eb9b8688 --- /dev/null +++ b/api/IQGCApplication.h @@ -0,0 +1,24 @@ +/**************************************************************************** + * + * (c) 2009-2016 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + + +/** + * @brief QGC Main Application Interface (used for Dynamic Loaded plugins) + * @author Gus Grubba + */ + +#pragma once + +class IQGCApplication +{ +public: + IQGCApplication() {} + virtual ~IQGCApplication() {} + //-- Not yet implemented +}; diff --git a/api/IQGCCorePlugin.h b/api/IQGCCorePlugin.h new file mode 100644 index 0000000000000000000000000000000000000000..6bd0fa859b56169baad0d7e91b9e577e088c9ef9 --- /dev/null +++ b/api/IQGCCorePlugin.h @@ -0,0 +1,33 @@ +#pragma once + +#include + +/// @file +/// @brief Core Plugin Interface for QGroundControl +/// @author Gus Grubba + +// Work In Progress + +class QGCApplication; +class IQGCApplication; +class IQGCOptions; +class IQGCQMLSource; + +class IQGCCorePlugin +{ +public: + IQGCCorePlugin(QObject*) {} + virtual ~IQGCCorePlugin() {} + +#if defined (QGC_DYNAMIC_PLUGIN) + virtual bool init (IQGCApplication* pApp) = 0; +#else + virtual bool init (QGCApplication* pApp) = 0; +#endif + virtual IQGCOptions* uiOptions () { return NULL; } + virtual IQGCQMLSource* settingsQML () { return NULL; } +}; + +#if defined (QGC_DYNAMIC_PLUGIN) +Q_DECLARE_INTERFACE(IQGCCorePlugin, "org.qgroundcontrol.qgccoreplugin") +#endif diff --git a/api/IQGCOptions.h b/api/IQGCOptions.h new file mode 100644 index 0000000000000000000000000000000000000000..f28544617625076e3943708ef3ca50698484a43c --- /dev/null +++ b/api/IQGCOptions.h @@ -0,0 +1,52 @@ +#pragma once + +/// @file +/// @brief Core Plugin Interface for QGroundControl +/// @author Gus Grubba + +class IQGCOptions +{ +public: + IQGCOptions() {} + virtual ~IQGCOptions() {} + //! Should QGC colapse its settings menu into one single menu (Settings and Vehicle Setup)? + /*! + @return true if QGC should consolidate both menus into one. + */ + virtual bool colapseSettings () { return false; } + //! Should QGC use Maps as its default main view? + /*! + @return true if QGC should use Maps by default or false to show Video by default. + */ + virtual bool mainViewIsMap () { return true; } + //! Should QGC use virtual Joysticks? + /*! + @return false to disable Virtual Joysticks. + */ + virtual bool enableVirtualJoystick () { return true; } + //! Should QGC allow setting auto-connect options? + /*! + @return false to disable auto-connect options. + */ + virtual bool enableAutoConnectOptions () { return true; } + //! Should QGC allow setting video source options? + /*! + @return false to disable video source options. + */ + virtual bool enableVideoSourceOptions () { return true; } + //! Does your plugin defines its on video source? + /*! + @return true to define your own video source. + */ + virtual bool definesVideo () { return false; } + //! UDP port to use for (RTP) video source. + /*! + @return UDP Port to use. Return 0 to disable UDP RTP. + */ + virtual uint16_t videoUDPPort () { return 0; } + //! RTSP URL to use for video source. + /*! + @return RTSP url to use. Return "" to disable RTSP. + */ + virtual QString videoRSTPUrl () { return QString(); } +}; diff --git a/api/IQGCQMLSource.h b/api/IQGCQMLSource.h new file mode 100644 index 0000000000000000000000000000000000000000..5e59c21692909db4140c672c34633bdb7d6e2fd6 --- /dev/null +++ b/api/IQGCQMLSource.h @@ -0,0 +1,17 @@ +#pragma once + +#include + +/// @file +/// @brief Core Plugin Interface for QGroundControl +/// @author Gus Grubba + +class IQGCQMLSource +{ +public: + IQGCQMLSource() {} + virtual ~IQGCQMLSource() {} + virtual QString pageUrl () { return QString(); } + virtual QString pageTitle () { return QString(); } + virtual QString pageIconUrl () { return QString(); } +}; diff --git a/apmresources.qrc b/apmresources.qrc new file mode 100644 index 0000000000000000000000000000000000000000..8c0ffc0f650dfb28805a8ed56d330582bf226f70 --- /dev/null +++ b/apmresources.qrc @@ -0,0 +1,40 @@ + + + src/comm/APMArduCopterMockLink.params + src/comm/APMArduPlaneMockLink.params + src/comm/APMArduSubMockLink.params + + + src/AutoPilotPlugins/APM/APMAirframeComponent.qml + src/AutoPilotPlugins/APM/APMAirframeComponentSummary.qml + src/AutoPilotPlugins/APM/APMCameraComponent.qml + src/AutoPilotPlugins/APM/APMCameraComponentSummary.qml + src/AutoPilotPlugins/APM/APMFlightModesComponent.qml + src/AutoPilotPlugins/APM/APMFlightModesComponentSummary.qml + src/AutoPilotPlugins/APM/APMLightsComponent.qml + src/AutoPilotPlugins/APM/APMLightsComponentSummary.qml + src/AutoPilotPlugins/APM/APMNotSupported.qml + src/AutoPilotPlugins/APM/APMPowerComponent.qml + src/AutoPilotPlugins/APM/APMPowerComponentSummary.qml + src/AutoPilotPlugins/APM/APMRadioComponentSummary.qml + src/AutoPilotPlugins/APM/APMSafetyComponentCopter.qml + src/AutoPilotPlugins/APM/APMSafetyComponentPlane.qml + src/AutoPilotPlugins/APM/APMSafetyComponentRover.qml + src/AutoPilotPlugins/APM/APMSafetyComponentSub.qml + src/AutoPilotPlugins/APM/APMSafetyComponentSummaryCopter.qml + src/AutoPilotPlugins/APM/APMSafetyComponentSummaryPlane.qml + src/AutoPilotPlugins/APM/APMSafetyComponentSummaryRover.qml + src/AutoPilotPlugins/APM/APMSafetyComponentSummarySub.qml + src/AutoPilotPlugins/APM/APMSensorsComponent.qml + src/AutoPilotPlugins/APM/APMSensorsComponentSummary.qml + src/AutoPilotPlugins/APM/APMTuningComponentCopter.qml + + + src/FirmwarePlugin/APM/MavCmdInfoCommon.json + src/FirmwarePlugin/APM/MavCmdInfoFixedWing.json + src/FirmwarePlugin/APM/MavCmdInfoMultiRotor.json + src/FirmwarePlugin/APM/MavCmdInfoRover.json + src/FirmwarePlugin/APM/MavCmdInfoSub.json + src/FirmwarePlugin/APM/MavCmdInfoVTOL.json + + diff --git a/px4resources.qrc b/px4resources.qrc new file mode 100644 index 0000000000000000000000000000000000000000..a25e7922145e98800292eb9e29010feb3e905fe3 --- /dev/null +++ b/px4resources.qrc @@ -0,0 +1,23 @@ + + + src/comm/PX4MockLink.params + + + src/AutoPilotPlugins/PX4/PX4AdvancedFlightModes.qml + src/AutoPilotPlugins/PX4/PX4FlightModes.qml + src/VehicleSetup/PX4FlowSensor.qml + src/AutoPilotPlugins/PX4/PX4RadioComponentSummary.qml + src/AutoPilotPlugins/PX4/PX4SimpleFlightModes.qml + src/AutoPilotPlugins/PX4/PX4TuningComponentCopter.qml + src/AutoPilotPlugins/PX4/PX4TuningComponentPlane.qml + src/AutoPilotPlugins/PX4/PX4TuningComponentVTOL.qml + + + src/FirmwarePlugin/PX4/MavCmdInfoCommon.json + src/FirmwarePlugin/PX4/MavCmdInfoFixedWing.json + src/FirmwarePlugin/PX4/MavCmdInfoMultiRotor.json + src/FirmwarePlugin/PX4/MavCmdInfoRover.json + src/FirmwarePlugin/PX4/MavCmdInfoSub.json + src/FirmwarePlugin/PX4/MavCmdInfoVTOL.json + + diff --git a/qgroundcontrol.pro b/qgroundcontrol.pro index d9902929f731ba9a80bda8f76f2e8ee9a5c8d73a..3652d75294611c1ab6fdfde76b9bc95f4a4c4906 100644 --- a/qgroundcontrol.pro +++ b/qgroundcontrol.pro @@ -34,6 +34,69 @@ exists(user_config.pri):infile(user_config.pri, CONFIG) { message($$sprintf("Using user-supplied additional config: '%1' specified in user_config.pri", $$fromfile(user_config.pri, CONFIG))) } +# +# Plugin configuration +# +# This allows you to build custom versions of QGC which only includes your +# specific vehicle plugin. To remove support for a firmware type completely, +# disable both the Plugin and PluginFactory entries. To include custom support +# for an existing plugin type disable PluginFactory only. Then provide you own +# implementation of FirmwarePluginFactory and use the FirmwarePlugin and +# AutoPilotPlugin classes as the base clase for your derived plugin +# implementation. + +contains (CONFIG, QGC_DISABLE_APM_PLUGIN) { + message("Disable APM Plugin") +} else { + CONFIG += APMFirmwarePlugin +} + +contains (CONFIG, QGC_DISABLE_APM_PLUGIN_FACTORY) { + message("Disable APM Plugin Factory") +} else { + CONFIG += APMFirmwarePluginFactory +} + +contains (CONFIG, QGC_DISABLE_PX4_PLUGIN) { + message("Disable PX4 Plugin") +} else { + CONFIG += PX4FirmwarePlugin +} + +contains (CONFIG, QGC_DISABLE_PX4_PLUGIN_FACTORY) { + message("Disable PX4 Plugin Factory") +} else { + CONFIG += PX4FirmwarePluginFactory +} + +# +# Custom Build +# +# QGC will create a "CUSTOMCLASS" object (exposed by your custom build +# and derived from IQGCCorePlugin) and call its IQGCCorePlugin::init() method. +# This is the start of allowing custom Plugins, which will eventually use a +# more defined runtime plugin architecture and not require a QGC project +# file you would have to keep in sync with the upstream repo. +# + +# This allows you to ignore the custom build even if the custom build +# is present. It's useful to run "regular" builds to make sure you didn't +# break anything. + +contains (CONFIG, QGC_DISABLE_CUSTOM_BUILD) { + message("Disable custom build override") +} else { + exists($$PWD/custom/custom.pri) { + message("Found custom build") + CONFIG += CustomBuild + DEFINES += QGC_CUSTOM_BUILD + # custom.pri must define: + # CUSTOMCLASS = YourIQGCCorePluginDerivation + # CUSTOMHEADER = \"\\\"YourIQGCCorePluginDerivation.h\\\"\" + include($$PWD/custom/custom.pri) + } +} + # Bluetooth contains (DEFINES, QGC_DISABLE_BLUETOOTH) { message("Skipping support for Bluetooth (manual override from command line)") @@ -70,20 +133,6 @@ CONFIG += qt \ thread \ c++11 \ -# -# Plugin configuration -# -# This allows you to build custom versions of QGC which only include your specific vehicle plugin. To remove support for -# a firmware type completely remove both the Plugin and PluginFactory entries. To include custom support for an existing -# plugin type remove PluginFactory only. Then provide you own implementation of FirmwarePluginFactory and use the -# FirmwarePlugin and AutoPilotPlugin classes as the base clase for your derived plugin implementation. -# -CONFIG += \ - APMFirmwarePlugin \ - PX4FirmwarePlugin \ - APMFirmwarePluginFactory \ - PX4FirmwarePluginFactory \ - contains(DEFINES, ENABLE_VERBOSE_OUTPUT) { message("Enable verbose compiler output (manual override from command line)") } else:exists(user_config.pri):infile(user_config.pri, DEFINES, ENABLE_VERBOSE_OUTPUT) { @@ -224,23 +273,29 @@ DEPENDPATH += \ INCLUDEPATH += . INCLUDEPATH += \ + api \ include/ui \ src \ src/AnalyzeView \ - src/audio \ src/AutoPilotPlugins \ - src/comm \ src/FlightDisplay \ src/FlightMap \ src/FlightMap/Widgets \ - src/input \ - src/Joystick \ src/FollowMe \ src/GPS \ - src/lib/qmapcontrol \ + src/Joystick \ src/MissionEditor \ src/MissionManager \ + src/PositionManager \ src/QmlControls \ + src/QtLocationPlugin \ + src/QtLocationPlugin/QMLControl \ + src/VehicleSetup \ + src/ViewWidgets \ + src/audio \ + src/comm \ + src/input \ + src/lib/qmapcontrol \ src/uas \ src/ui \ src/ui/linechart \ @@ -250,11 +305,6 @@ INCLUDEPATH += \ src/ui/px4_configuration \ src/ui/toolbar \ src/ui/uas \ - src/VehicleSetup \ - src/ViewWidgets \ - src/QtLocationPlugin \ - src/QtLocationPlugin/QMLControl \ - src/PositionManager \ FORMS += \ src/ui/MainWindow.ui \ @@ -262,8 +312,6 @@ FORMS += \ !MobileBuild { FORMS += \ - src/ui/uas/QGCUnconnectedInfoWidget.ui \ - src/ui/uas/UASMessageView.ui \ src/ui/Linechart.ui \ src/ui/MultiVehicleDockWidget.ui \ src/ui/QGCDataPlot2D.ui \ @@ -271,16 +319,28 @@ FORMS += \ src/ui/QGCHilFlightGearConfiguration.ui \ src/ui/QGCHilJSBSimConfiguration.ui \ src/ui/QGCHilXPlaneConfiguration.ui \ - src/ui/QGCMapRCToParamDialog.ui \ src/ui/QGCMAVLinkInspector.ui \ src/ui/QGCMAVLinkLogPlayer.ui \ + src/ui/QGCMapRCToParamDialog.ui \ src/ui/QGCTabbedInfoView.ui \ src/ui/QGCUASFileView.ui \ src/ui/QGCUASFileViewMulti.ui \ + src/ui/uas/QGCUnconnectedInfoWidget.ui \ + src/ui/uas/UASMessageView.ui \ src/ui/uas/UASQuickView.ui \ src/ui/uas/UASQuickViewItemSelect.ui \ } +# +# Plugin API +# + +HEADERS += \ + api/IQGCApplication.h \ + api/IQGCCorePlugin.h \ + api/IQGCOptions.h \ + api/IQGCQMLSource.h \ + # # Unit Test specific configuration goes here (requires full debug build with all plugins) # @@ -299,15 +359,15 @@ DebugBuild { PX4FirmwarePlugin { PX4FirmwarePluginFactory { APMFirmwarePlugin { src/FactSystem/ParameterManagerTest.h \ src/MissionManager/ComplexMissionItemTest.h \ src/MissionManager/MissionCommandTreeTest.h \ - src/MissionManager/MissionControllerTest.h \ src/MissionManager/MissionControllerManagerTest.h \ + src/MissionManager/MissionControllerTest.h \ src/MissionManager/MissionItemTest.h \ src/MissionManager/MissionManagerTest.h \ src/MissionManager/SimpleMissionItemTest.h \ - src/qgcunittest/GeoTest.h \ src/qgcunittest/FileDialogTest.h \ src/qgcunittest/FileManagerTest.h \ src/qgcunittest/FlightGearTest.h \ + src/qgcunittest/GeoTest.h \ src/qgcunittest/LinkManagerTest.h \ src/qgcunittest/MainWindowTest.h \ src/qgcunittest/MavlinkLogTest.h \ @@ -326,15 +386,15 @@ DebugBuild { PX4FirmwarePlugin { PX4FirmwarePluginFactory { APMFirmwarePlugin { src/FactSystem/ParameterManagerTest.cc \ src/MissionManager/ComplexMissionItemTest.cc \ src/MissionManager/MissionCommandTreeTest.cc \ - src/MissionManager/MissionControllerTest.cc \ src/MissionManager/MissionControllerManagerTest.cc \ + src/MissionManager/MissionControllerTest.cc \ src/MissionManager/MissionItemTest.cc \ src/MissionManager/MissionManagerTest.cc \ src/MissionManager/SimpleMissionItemTest.cc \ - src/qgcunittest/GeoTest.cc \ src/qgcunittest/FileDialogTest.cc \ src/qgcunittest/FileManagerTest.cc \ src/qgcunittest/FlightGearTest.cc \ + src/qgcunittest/GeoTest.cc \ src/qgcunittest/LinkManagerTest.cc \ src/qgcunittest/MainWindowTest.cc \ src/qgcunittest/MavlinkLogTest.cc \ @@ -350,27 +410,17 @@ DebugBuild { PX4FirmwarePlugin { PX4FirmwarePluginFactory { APMFirmwarePlugin { # Main QGC Headers and Source files HEADERS += \ - src/audio/QGCAudioWorker.h \ + src/AnalyzeView/ExifParser.h \ src/CmdLineOptParser.h \ - src/comm/LinkConfiguration.h \ - src/comm/LinkInterface.h \ - src/comm/LinkManager.h \ - src/comm/MAVLinkProtocol.h \ - src/comm/ProtocolInterface.h \ - src/comm/QGCMAVLink.h \ - src/comm/TCPLink.h \ - src/comm/UDPLink.h \ src/FirmwarePlugin/PX4/px4_custom_mode.h \ src/FlightDisplay/VideoManager.h \ src/FlightMap/FlightMapSettings.h \ src/FlightMap/Widgets/ValuesWidgetController.h \ + src/FollowMe/FollowMe.h \ src/GAudioOutput.h \ src/HomePositionManager.h \ src/Joystick/Joystick.h \ src/Joystick/JoystickManager.h \ - src/VehicleSetup/JoystickConfigController.h \ - src/FollowMe/FollowMe.h \ - src/PositionManager/SimulatedPosition.h \ src/JsonHelper.h \ src/LogCompressor.h \ src/MG.h \ @@ -391,6 +441,8 @@ HEADERS += \ src/MissionManager/SimpleMissionItem.h \ src/MissionManager/SurveyMissionItem.h \ src/MissionManager/VisualMissionItem.h \ + src/PositionManager/PositionManager.h \ + src/PositionManager/SimulatedPosition.h \ src/QGC.h \ src/QGCApplication.h \ src/QGCComboBox.h \ @@ -410,23 +462,27 @@ HEADERS += \ src/QmlControls/CoordinateVector.h \ src/QmlControls/MavlinkQmlSingleton.h \ src/QmlControls/ParameterEditorController.h \ - src/QmlControls/RCChannelMonitorController.h \ - src/QmlControls/ScreenToolsController.h \ + src/QmlControls/QGCImageProvider.h \ src/QmlControls/QGroundControlQmlGlobal.h \ src/QmlControls/QmlObjectListModel.h \ + src/QmlControls/RCChannelMonitorController.h \ + src/QmlControls/ScreenToolsController.h \ + src/QtLocationPlugin/QMLControl/QGCMapEngineManager.h \ + src/Vehicle/MAVLinkLogManager.h \ + src/VehicleSetup/JoystickConfigController.h \ + src/audio/QGCAudioWorker.h \ + src/comm/LinkConfiguration.h \ + src/comm/LinkInterface.h \ + src/comm/LinkManager.h \ + src/comm/MAVLinkProtocol.h \ + src/comm/ProtocolInterface.h \ + src/comm/QGCMAVLink.h \ + src/comm/TCPLink.h \ + src/comm/UDPLink.h \ src/uas/UAS.h \ src/uas/UASInterface.h \ src/uas/UASMessageHandler.h \ - src/Vehicle/MAVLinkLogManager.h \ src/ui/toolbar/MainToolBarController.h \ - src/QmlControls/QGCImageProvider.h \ - src/QtLocationPlugin/QMLControl/QGCMapEngineManager.h \ - src/PositionManager/PositionManager.h \ - src/AnalyzeView/ExifParser.h - -AndroidBuild { -HEADERS += \ -} DebugBuild { HEADERS += \ @@ -457,56 +513,56 @@ HEADERS += \ HEADERS += \ src/AnalyzeView/GeoTagController.h \ src/AnalyzeView/LogDownloadController.h \ + src/GPS/Drivers/src/gps_helper.h \ + src/GPS/Drivers/src/ubx.h \ + src/GPS/GPSManager.h \ + src/GPS/GPSPositionMessage.h \ + src/GPS/GPSProvider.h \ + src/GPS/RTCM/RTCMMavlink.h \ + src/GPS/definitions.h \ + src/GPS/satellite_info.h \ + src/GPS/vehicle_gps_position.h \ + src/Joystick/JoystickSDL.h \ + src/QGCFileDialog.h \ + src/QGCMessageBox.h \ + src/ViewWidgets/CustomCommandWidget.h \ + src/ViewWidgets/CustomCommandWidgetController.h \ + src/ViewWidgets/ViewWidgetController.h \ src/comm/LogReplayLink.h \ src/comm/QGCFlightGearLink.h \ src/comm/QGCHilLink.h \ src/comm/QGCJSBSimLink.h \ src/comm/QGCXPlaneLink.h \ - src/Joystick/JoystickSDL.h \ - src/QGCFileDialog.h \ - src/QGCMessageBox.h \ src/uas/FileManager.h \ src/ui/HILDockWidget.h \ - src/ui/linechart/ChartPlot.h \ - src/ui/linechart/IncrementalPlot.h \ - src/ui/linechart/LinechartPlot.h \ - src/ui/linechart/Linecharts.h \ - src/ui/linechart/LinechartWidget.h \ - src/ui/linechart/Scrollbar.h \ - src/ui/linechart/ScrollZoomer.h \ - src/ui/MainWindow.h \ src/ui/MAVLinkDecoder.h \ + src/ui/MainWindow.h \ src/ui/MultiVehicleDockWidget.h \ - src/ui/QGCMAVLinkLogPlayer.h \ - src/ui/QGCMapRCToParamDialog.h \ - src/ui/uas/UASMessageView.h \ - src/ui/uas/QGCUnconnectedInfoWidget.h \ src/ui/QGCDataPlot2D.h \ src/ui/QGCHilConfiguration.h \ src/ui/QGCHilFlightGearConfiguration.h \ src/ui/QGCHilJSBSimConfiguration.h \ src/ui/QGCHilXPlaneConfiguration.h \ src/ui/QGCMAVLinkInspector.h \ + src/ui/QGCMAVLinkLogPlayer.h \ + src/ui/QGCMapRCToParamDialog.h \ src/ui/QGCTabbedInfoView.h \ src/ui/QGCUASFileView.h \ src/ui/QGCUASFileViewMulti.h \ + src/ui/linechart/ChartPlot.h \ + src/ui/linechart/IncrementalPlot.h \ + src/ui/linechart/LinechartPlot.h \ + src/ui/linechart/LinechartWidget.h \ + src/ui/linechart/Linecharts.h \ + src/ui/linechart/ScrollZoomer.h \ + src/ui/linechart/Scrollbar.h \ + src/ui/uas/QGCUnconnectedInfoWidget.h \ + src/ui/uas/UASMessageView.h \ src/ui/uas/UASQuickView.h \ src/ui/uas/UASQuickViewGaugeItem.h \ src/ui/uas/UASQuickViewItem.h \ src/ui/uas/UASQuickViewItemSelect.h \ src/ui/uas/UASQuickViewTextItem.h \ - src/GPS/Drivers/src/gps_helper.h \ - src/GPS/Drivers/src/ubx.h \ - src/GPS/definitions.h \ - src/GPS/vehicle_gps_position.h \ - src/GPS/satellite_info.h \ - src/GPS/RTCM/RTCMMavlink.h \ - src/GPS/GPSManager.h \ - src/GPS/GPSPositionMessage.h \ - src/GPS/GPSProvider.h \ - src/ViewWidgets/CustomCommandWidget.h \ - src/ViewWidgets/CustomCommandWidgetController.h \ - src/ViewWidgets/ViewWidgetController.h \ } iOSBuild { @@ -519,28 +575,19 @@ AndroidBuild { SOURCES += src/MobileScreenMgr.cc \ } - SOURCES += \ - src/audio/QGCAudioWorker.cpp \ + src/AnalyzeView/ExifParser.cc \ src/CmdLineOptParser.cc \ - src/comm/LinkConfiguration.cc \ - src/comm/LinkManager.cc \ - src/comm/MAVLinkProtocol.cc \ - src/comm/QGCMAVLink.cc \ - src/comm/TCPLink.cc \ - src/comm/UDPLink.cc \ src/FlightDisplay/VideoManager.cc \ src/FlightMap/FlightMapSettings.cc \ src/FlightMap/Widgets/ValuesWidgetController.cc \ + src/FollowMe/FollowMe.cc \ src/GAudioOutput.cc \ src/HomePositionManager.cc \ src/Joystick/Joystick.cc \ src/Joystick/JoystickManager.cc \ - src/VehicleSetup/JoystickConfigController.cc \ src/JsonHelper.cc \ - src/FollowMe/FollowMe.cc \ src/LogCompressor.cc \ - src/main.cc \ src/MissionManager/ComplexMissionItem.cc \ src/MissionManager/GeoFenceController.cc \ src/MissionManager/GeoFenceManager.cc \ @@ -558,36 +605,44 @@ SOURCES += \ src/MissionManager/SimpleMissionItem.cc \ src/MissionManager/SurveyMissionItem.cc \ src/MissionManager/VisualMissionItem.cc \ + src/PositionManager/PositionManager.cpp \ + src/PositionManager/SimulatedPosition.cc \ src/QGC.cc \ src/QGCApplication.cc \ src/QGCComboBox.cc \ src/QGCDockWidget.cc \ src/QGCFileDownload.cc \ + src/QGCGeo.cc \ src/QGCLoggingCategory.cc \ src/QGCMapPalette.cc \ src/QGCMobileFileDialogController.cc \ src/QGCPalette.cc \ - src/QGCQuickWidget.cc \ src/QGCQmlWidgetHolder.cpp \ + src/QGCQuickWidget.cc \ src/QGCTemporaryFile.cc \ src/QGCToolbox.cc \ - src/QGCGeo.cc \ src/QmlControls/AppMessages.cc \ src/QmlControls/CoordinateVector.cc \ src/QmlControls/ParameterEditorController.cc \ - src/QmlControls/RCChannelMonitorController.cc \ - src/QmlControls/ScreenToolsController.cc \ + src/QmlControls/QGCImageProvider.cc \ src/QmlControls/QGroundControlQmlGlobal.cc \ src/QmlControls/QmlObjectListModel.cc \ + src/QmlControls/RCChannelMonitorController.cc \ + src/QmlControls/ScreenToolsController.cc \ + src/QtLocationPlugin/QMLControl/QGCMapEngineManager.cc \ + src/Vehicle/MAVLinkLogManager.cc \ + src/VehicleSetup/JoystickConfigController.cc \ + src/audio/QGCAudioWorker.cpp \ + src/comm/LinkConfiguration.cc \ + src/comm/LinkManager.cc \ + src/comm/MAVLinkProtocol.cc \ + src/comm/QGCMAVLink.cc \ + src/comm/TCPLink.cc \ + src/comm/UDPLink.cc \ + src/main.cc \ src/uas/UAS.cc \ src/uas/UASMessageHandler.cc \ - src/Vehicle/MAVLinkLogManager.cc \ src/ui/toolbar/MainToolBarController.cc \ - src/QmlControls/QGCImageProvider.cc \ - src/QtLocationPlugin/QMLControl/QGCMapEngineManager.cc \ - src/PositionManager/SimulatedPosition.cc \ - src/PositionManager/PositionManager.cpp \ - src/AnalyzeView/ExifParser.cc DebugBuild { SOURCES += \ @@ -611,26 +666,23 @@ contains(DEFINES, QGC_ENABLE_BLUETOOTH) { SOURCES += \ src/AnalyzeView/GeoTagController.cc \ src/AnalyzeView/LogDownloadController.cc \ - src/ui/uas/UASMessageView.cc \ - src/uas/FileManager.cc \ - src/ui/uas/QGCUnconnectedInfoWidget.cc \ - src/ui/MAVLinkDecoder.cc \ - src/ui/QGCMapRCToParamDialog.cpp \ - src/comm/LogReplayLink.cc \ + src/GPS/Drivers/src/gps_helper.cpp \ + src/GPS/Drivers/src/ubx.cpp \ + src/GPS/GPSManager.cc \ + src/GPS/GPSProvider.cc \ + src/GPS/RTCM/RTCMMavlink.cc \ + src/Joystick/JoystickSDL.cc \ src/QGCFileDialog.cc \ - src/ui/QGCMAVLinkLogPlayer.cc \ + src/ViewWidgets/CustomCommandWidget.cc \ + src/ViewWidgets/CustomCommandWidgetController.cc \ + src/ViewWidgets/ViewWidgetController.cc \ + src/comm/LogReplayLink.cc \ src/comm/QGCFlightGearLink.cc \ src/comm/QGCJSBSimLink.cc \ src/comm/QGCXPlaneLink.cc \ - src/Joystick/JoystickSDL.cc \ + src/uas/FileManager.cc \ src/ui/HILDockWidget.cc \ - src/ui/linechart/ChartPlot.cc \ - src/ui/linechart/IncrementalPlot.cc \ - src/ui/linechart/LinechartPlot.cc \ - src/ui/linechart/Linecharts.cc \ - src/ui/linechart/LinechartWidget.cc \ - src/ui/linechart/Scrollbar.cc \ - src/ui/linechart/ScrollZoomer.cc \ + src/ui/MAVLinkDecoder.cc \ src/ui/MainWindow.cc \ src/ui/MultiVehicleDockWidget.cc \ src/ui/QGCDataPlot2D.cc \ @@ -639,22 +691,25 @@ SOURCES += \ src/ui/QGCHilJSBSimConfiguration.cc \ src/ui/QGCHilXPlaneConfiguration.cc \ src/ui/QGCMAVLinkInspector.cc \ + src/ui/QGCMAVLinkLogPlayer.cc \ + src/ui/QGCMapRCToParamDialog.cpp \ src/ui/QGCTabbedInfoView.cpp \ src/ui/QGCUASFileView.cc \ src/ui/QGCUASFileViewMulti.cc \ + src/ui/linechart/ChartPlot.cc \ + src/ui/linechart/IncrementalPlot.cc \ + src/ui/linechart/LinechartPlot.cc \ + src/ui/linechart/LinechartWidget.cc \ + src/ui/linechart/Linecharts.cc \ + src/ui/linechart/ScrollZoomer.cc \ + src/ui/linechart/Scrollbar.cc \ + src/ui/uas/QGCUnconnectedInfoWidget.cc \ + src/ui/uas/UASMessageView.cc \ src/ui/uas/UASQuickView.cc \ src/ui/uas/UASQuickViewGaugeItem.cc \ src/ui/uas/UASQuickViewItem.cc \ src/ui/uas/UASQuickViewItemSelect.cc \ src/ui/uas/UASQuickViewTextItem.cc \ - src/GPS/Drivers/src/gps_helper.cpp \ - src/GPS/Drivers/src/ubx.cpp \ - src/GPS/RTCM/RTCMMavlink.cc \ - src/GPS/GPSManager.cc \ - src/GPS/GPSProvider.cc \ - src/ViewWidgets/CustomCommandWidget.cc \ - src/ViewWidgets/CustomCommandWidgetController.cc \ - src/ViewWidgets/ViewWidgetController.cc } # Palette test widget in debug builds @@ -675,32 +730,31 @@ INCLUDEPATH += \ HEADERS+= \ src/AutoPilotPlugins/AutoPilotPlugin.h \ + src/AutoPilotPlugins/Common/ESP8266Component.h \ + src/AutoPilotPlugins/Common/ESP8266ComponentController.h \ src/AutoPilotPlugins/Common/MotorComponent.h \ src/AutoPilotPlugins/Common/RadioComponentController.h \ - src/AutoPilotPlugins/Common/ESP8266ComponentController.h \ - src/AutoPilotPlugins/Common/ESP8266Component.h \ src/AutoPilotPlugins/Generic/GenericAutoPilotPlugin.h \ - src/FirmwarePlugin/FirmwarePluginManager.h \ src/FirmwarePlugin/FirmwarePlugin.h \ + src/FirmwarePlugin/FirmwarePluginManager.h \ src/Vehicle/MultiVehicleManager.h \ src/Vehicle/Vehicle.h \ src/VehicleSetup/VehicleComponent.h \ !MobileBuild { -HEADERS += \ - src/VehicleSetup/FirmwareUpgradeController.h \ - src/VehicleSetup/Bootloader.h \ - src/VehicleSetup/PX4FirmwareUpgradeThread.h \ - src/VehicleSetup/FirmwareImage.h \ - + HEADERS += \ + src/VehicleSetup/Bootloader.h \ + src/VehicleSetup/FirmwareImage.h \ + src/VehicleSetup/FirmwareUpgradeController.h \ + src/VehicleSetup/PX4FirmwareUpgradeThread.h \ } SOURCES += \ src/AutoPilotPlugins/AutoPilotPlugin.cc \ + src/AutoPilotPlugins/Common/ESP8266Component.cc \ + src/AutoPilotPlugins/Common/ESP8266ComponentController.cc \ src/AutoPilotPlugins/Common/MotorComponent.cc \ src/AutoPilotPlugins/Common/RadioComponentController.cc \ - src/AutoPilotPlugins/Common/ESP8266ComponentController.cc \ - src/AutoPilotPlugins/Common/ESP8266Component.cc \ src/AutoPilotPlugins/Generic/GenericAutoPilotPlugin.cc \ src/FirmwarePlugin/FirmwarePlugin.cc \ src/FirmwarePlugin/FirmwarePluginManager.cc \ @@ -710,131 +764,136 @@ SOURCES += \ !MobileBuild { SOURCES += \ - src/VehicleSetup/FirmwareUpgradeController.cc \ - src/VehicleSetup/Bootloader.cc \ - src/VehicleSetup/PX4FirmwareUpgradeThread.cc \ - src/VehicleSetup/FirmwareImage.cc \ - + src/VehicleSetup/Bootloader.cc \ + src/VehicleSetup/FirmwareImage.cc \ + src/VehicleSetup/FirmwareUpgradeController.cc \ + src/VehicleSetup/PX4FirmwareUpgradeThread.cc \ } # ArduPilot FirmwarePlugin APMFirmwarePlugin { + RESOURCES *= apmresources.qrc + INCLUDEPATH += \ src/AutoPilotPlugins/APM \ src/FirmwarePlugin/APM \ HEADERS += \ - src/FirmwarePlugin/APM/APMFirmwarePlugin.h \ - src/FirmwarePlugin/APM/APMGeoFenceManager.h \ - src/FirmwarePlugin/APM/APMParameterMetaData.h \ - src/FirmwarePlugin/APM/APMRallyPointManager.h \ - src/FirmwarePlugin/APM/ArduCopterFirmwarePlugin.h \ - src/FirmwarePlugin/APM/ArduPlaneFirmwarePlugin.h \ - src/FirmwarePlugin/APM/ArduRoverFirmwarePlugin.h \ - src/FirmwarePlugin/APM/ArduSubFirmwarePlugin.h \ - src/AutoPilotPlugins/APM/APMAutoPilotPlugin.h \ src/AutoPilotPlugins/APM/APMAirframeComponent.h \ - src/AutoPilotPlugins/APM/APMAirframeComponentController.h \ src/AutoPilotPlugins/APM/APMAirframeComponentAirframes.h \ + src/AutoPilotPlugins/APM/APMAirframeComponentController.h \ src/AutoPilotPlugins/APM/APMAirframeLoader.h \ + src/AutoPilotPlugins/APM/APMAutoPilotPlugin.h \ src/AutoPilotPlugins/APM/APMCameraComponent.h \ - src/AutoPilotPlugins/APM/APMLightsComponent.h \ src/AutoPilotPlugins/APM/APMCompassCal.h \ src/AutoPilotPlugins/APM/APMFlightModesComponent.h \ src/AutoPilotPlugins/APM/APMFlightModesComponentController.h \ + src/AutoPilotPlugins/APM/APMLightsComponent.h \ src/AutoPilotPlugins/APM/APMPowerComponent.h \ src/AutoPilotPlugins/APM/APMRadioComponent.h \ src/AutoPilotPlugins/APM/APMSafetyComponent.h \ src/AutoPilotPlugins/APM/APMSensorsComponent.h \ src/AutoPilotPlugins/APM/APMSensorsComponentController.h \ src/AutoPilotPlugins/APM/APMTuningComponent.h \ + src/FirmwarePlugin/APM/APMFirmwarePlugin.h \ + src/FirmwarePlugin/APM/APMGeoFenceManager.h \ + src/FirmwarePlugin/APM/APMParameterMetaData.h \ + src/FirmwarePlugin/APM/APMRallyPointManager.h \ + src/FirmwarePlugin/APM/ArduCopterFirmwarePlugin.h \ + src/FirmwarePlugin/APM/ArduPlaneFirmwarePlugin.h \ + src/FirmwarePlugin/APM/ArduRoverFirmwarePlugin.h \ + src/FirmwarePlugin/APM/ArduSubFirmwarePlugin.h \ SOURCES += \ - src/FirmwarePlugin/APM/APMFirmwarePlugin.cc \ - src/FirmwarePlugin/APM/APMGeoFenceManager.cc \ - src/FirmwarePlugin/APM/APMParameterMetaData.cc \ - src/FirmwarePlugin/APM/APMRallyPointManager.cc \ - src/FirmwarePlugin/APM/ArduCopterFirmwarePlugin.cc \ - src/FirmwarePlugin/APM/ArduPlaneFirmwarePlugin.cc \ - src/FirmwarePlugin/APM/ArduRoverFirmwarePlugin.cc \ - src/FirmwarePlugin/APM/ArduSubFirmwarePlugin.cc \ - src/AutoPilotPlugins/APM/APMAutoPilotPlugin.cc \ src/AutoPilotPlugins/APM/APMAirframeComponent.cc \ src/AutoPilotPlugins/APM/APMAirframeComponentAirframes.cc \ src/AutoPilotPlugins/APM/APMAirframeComponentController.cc \ src/AutoPilotPlugins/APM/APMAirframeLoader.cc \ + src/AutoPilotPlugins/APM/APMAutoPilotPlugin.cc \ src/AutoPilotPlugins/APM/APMCameraComponent.cc \ - src/AutoPilotPlugins/APM/APMLightsComponent.cc \ src/AutoPilotPlugins/APM/APMCompassCal.cc \ src/AutoPilotPlugins/APM/APMFlightModesComponent.cc \ src/AutoPilotPlugins/APM/APMFlightModesComponentController.cc \ + src/AutoPilotPlugins/APM/APMLightsComponent.cc \ src/AutoPilotPlugins/APM/APMPowerComponent.cc \ src/AutoPilotPlugins/APM/APMRadioComponent.cc \ src/AutoPilotPlugins/APM/APMSafetyComponent.cc \ src/AutoPilotPlugins/APM/APMSensorsComponent.cc \ src/AutoPilotPlugins/APM/APMSensorsComponentController.cc \ src/AutoPilotPlugins/APM/APMTuningComponent.cc \ + src/FirmwarePlugin/APM/APMFirmwarePlugin.cc \ + src/FirmwarePlugin/APM/APMGeoFenceManager.cc \ + src/FirmwarePlugin/APM/APMParameterMetaData.cc \ + src/FirmwarePlugin/APM/APMRallyPointManager.cc \ + src/FirmwarePlugin/APM/ArduCopterFirmwarePlugin.cc \ + src/FirmwarePlugin/APM/ArduPlaneFirmwarePlugin.cc \ + src/FirmwarePlugin/APM/ArduRoverFirmwarePlugin.cc \ + src/FirmwarePlugin/APM/ArduSubFirmwarePlugin.cc \ } APMFirmwarePluginFactory { - HEADERS += src/FirmwarePlugin/APM/APMFirmwarePluginFactory.h - SOURCES += src/FirmwarePlugin/APM/APMFirmwarePluginFactory.cc + RESOURCES *= apmresources.qrc + HEADERS += src/FirmwarePlugin/APM/APMFirmwarePluginFactory.h + SOURCES += src/FirmwarePlugin/APM/APMFirmwarePluginFactory.cc } # PX4 FirmwarePlugin PX4FirmwarePlugin { + RESOURCES *= px4resources.qrc + INCLUDEPATH += \ src/AutoPilotPlugins/PX4 \ src/FirmwarePlugin/PX4 \ HEADERS+= \ - src/FirmwarePlugin/PX4/PX4FirmwarePlugin.h \ - src/FirmwarePlugin/PX4/PX4GeoFenceManager.h \ - src/FirmwarePlugin/PX4/PX4ParameterMetaData.h \ src/AutoPilotPlugins/PX4/AirframeComponent.h \ src/AutoPilotPlugins/PX4/AirframeComponentAirframes.h \ src/AutoPilotPlugins/PX4/AirframeComponentController.h \ + src/AutoPilotPlugins/PX4/CameraComponent.h \ src/AutoPilotPlugins/PX4/FlightModesComponent.h \ - src/AutoPilotPlugins/PX4/PX4AirframeLoader.h \ src/AutoPilotPlugins/PX4/PX4AdvancedFlightModesController.h \ + src/AutoPilotPlugins/PX4/PX4AirframeLoader.h \ + src/AutoPilotPlugins/PX4/PX4AutoPilotPlugin.h \ + src/AutoPilotPlugins/PX4/PX4RadioComponent.h \ src/AutoPilotPlugins/PX4/PX4SimpleFlightModesController.h \ + src/AutoPilotPlugins/PX4/PX4TuningComponent.h \ src/AutoPilotPlugins/PX4/PowerComponent.h \ src/AutoPilotPlugins/PX4/PowerComponentController.h \ - src/AutoPilotPlugins/PX4/PX4AutoPilotPlugin.h \ - src/AutoPilotPlugins/PX4/PX4RadioComponent.h \ - src/AutoPilotPlugins/PX4/CameraComponent.h \ src/AutoPilotPlugins/PX4/SafetyComponent.h \ src/AutoPilotPlugins/PX4/SensorsComponent.h \ src/AutoPilotPlugins/PX4/SensorsComponentController.h \ - src/AutoPilotPlugins/PX4/PX4TuningComponent.h \ + src/FirmwarePlugin/PX4/PX4FirmwarePlugin.h \ + src/FirmwarePlugin/PX4/PX4GeoFenceManager.h \ + src/FirmwarePlugin/PX4/PX4ParameterMetaData.h \ SOURCES += \ - src/FirmwarePlugin/PX4/PX4FirmwarePlugin.cc \ - src/FirmwarePlugin/PX4/PX4GeoFenceManager.cc \ - src/FirmwarePlugin/PX4/PX4ParameterMetaData.cc \ src/AutoPilotPlugins/PX4/AirframeComponent.cc \ src/AutoPilotPlugins/PX4/AirframeComponentAirframes.cc \ src/AutoPilotPlugins/PX4/AirframeComponentController.cc \ + src/AutoPilotPlugins/PX4/CameraComponent.cc \ src/AutoPilotPlugins/PX4/FlightModesComponent.cc \ src/AutoPilotPlugins/PX4/PX4AdvancedFlightModesController.cc \ src/AutoPilotPlugins/PX4/PX4AirframeLoader.cc \ + src/AutoPilotPlugins/PX4/PX4AutoPilotPlugin.cc \ + src/AutoPilotPlugins/PX4/PX4RadioComponent.cc \ src/AutoPilotPlugins/PX4/PX4SimpleFlightModesController.cc \ + src/AutoPilotPlugins/PX4/PX4TuningComponent.cc \ src/AutoPilotPlugins/PX4/PowerComponent.cc \ src/AutoPilotPlugins/PX4/PowerComponentController.cc \ - src/AutoPilotPlugins/PX4/PX4AutoPilotPlugin.cc \ - src/AutoPilotPlugins/PX4/PX4RadioComponent.cc \ - src/AutoPilotPlugins/PX4/CameraComponent.cc \ src/AutoPilotPlugins/PX4/SafetyComponent.cc \ src/AutoPilotPlugins/PX4/SensorsComponent.cc \ src/AutoPilotPlugins/PX4/SensorsComponentController.cc \ - src/AutoPilotPlugins/PX4/PX4TuningComponent.cc \ + src/FirmwarePlugin/PX4/PX4FirmwarePlugin.cc \ + src/FirmwarePlugin/PX4/PX4GeoFenceManager.cc \ + src/FirmwarePlugin/PX4/PX4ParameterMetaData.cc \ } PX4FirmwarePluginFactory { - HEADERS += src/FirmwarePlugin/PX4/PX4FirmwarePluginFactory.h - SOURCES += src/FirmwarePlugin/PX4/PX4FirmwarePluginFactory.cc + RESOURCES *= px4resources.qrc + HEADERS += src/FirmwarePlugin/PX4/PX4FirmwarePluginFactory.h + SOURCES += src/FirmwarePlugin/PX4/PX4FirmwarePluginFactory.cc } # Fact System code @@ -845,8 +904,8 @@ INCLUDEPATH += \ HEADERS += \ src/FactSystem/Fact.h \ - src/FactSystem/FactGroup.h \ src/FactSystem/FactControls/FactPanelController.h \ + src/FactSystem/FactGroup.h \ src/FactSystem/FactMetaData.h \ src/FactSystem/FactSystem.h \ src/FactSystem/FactValidator.h \ @@ -855,8 +914,8 @@ HEADERS += \ SOURCES += \ src/FactSystem/Fact.cc \ - src/FactSystem/FactGroup.cc \ src/FactSystem/FactControls/FactPanelController.cc \ + src/FactSystem/FactGroup.cc \ src/FactSystem/FactMetaData.cc \ src/FactSystem/FactSystem.cc \ src/FactSystem/FactValidator.cc \ @@ -895,32 +954,11 @@ contains (CONFIG, DISABLE_VIDEOSTREAMING) { # Android AndroidBuild { - include($$PWD/libs/qtandroidserialport/src/qtandroidserialport.pri) - message("Adding Serial Java Classes") - QT += androidextras - ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android - OTHER_FILES += \ - $$PWD/android/AndroidManifest.xml \ - $$PWD/android/res/xml/device_filter.xml \ - $$PWD/android/src/com/hoho/android/usbserial/driver/CdcAcmSerialDriver.java \ - $$PWD/android/src/com/hoho/android/usbserial/driver/CommonUsbSerialDriver.java \ - $$PWD/android/src/com/hoho/android/usbserial/driver/Cp2102SerialDriver.java \ - $$PWD/android/src/com/hoho/android/usbserial/driver/FtdiSerialDriver.java \ - $$PWD/android/src/com/hoho/android/usbserial/driver/ProlificSerialDriver.java \ - $$PWD/android/src/com/hoho/android/usbserial/driver/UsbId.java \ - $$PWD/android/src/com/hoho/android/usbserial/driver/UsbSerialDriver.java \ - $$PWD/android/src/com/hoho/android/usbserial/driver/UsbSerialProber.java \ - $$PWD/android/src/com/hoho/android/usbserial/driver/UsbSerialRuntimeException.java \ - $$PWD/android/src/org/qgroundcontrol/qgchelper/UsbDeviceJNI.java \ - $$PWD/android/src/org/qgroundcontrol/qgchelper/UsbIoManager.java - - DISTFILES += \ - android/gradle/wrapper/gradle-wrapper.jar \ - android/gradlew \ - android/res/values/libs.xml \ - android/build.gradle \ - android/gradle/wrapper/gradle-wrapper.properties \ - android/gradlew.bat + contains (CONFIG, DISABLE_BUILTIN_ANDROID) { + message("Skipping builtin support for Android") + } else { + include(android.pri) + } } #------------------------------------------------------------------------------------- diff --git a/qgroundcontrol.qrc b/qgroundcontrol.qrc index 96cdbe10d6bffbf5abfbef40bc4449fc81d46d7d..c1938e2971b0c9f47024f12108ebd978e8ad9ea0 100644 --- a/qgroundcontrol.qrc +++ b/qgroundcontrol.qrc @@ -1,52 +1,45 @@ - src/comm/PX4MockLink.params - src/comm/APMArduCopterMockLink.params - src/comm/APMArduPlaneMockLink.params - src/comm/APMArduSubMockLink.params src/FactSystem/FactSystemTest.qml src/AutoPilotPlugins/PX4/AirframeComponent.qml src/AutoPilotPlugins/PX4/AirframeComponentSummary.qml - src/AutoPilotPlugins/APM/APMAirframeComponent.qml - src/AutoPilotPlugins/APM/APMAirframeComponentSummary.qml + src/AnalyzeView/AnalyzeView.qml + src/ui/AppSettings.qml + src/ui/preferences/BluetoothSettings.qml + src/AutoPilotPlugins/PX4/CameraComponent.qml + src/AutoPilotPlugins/PX4/CameraComponentSummary.qml src/ViewWidgets/CustomCommandWidget.qml + src/ui/preferences/DebugWindow.qml + src/AutoPilotPlugins/Common/ESP8266Component.qml + src/AutoPilotPlugins/Common/ESP8266ComponentSummary.qml src/VehicleSetup/FirmwareUpgrade.qml src/FlightDisplay/FlightDisplayView.qml - src/FlightDisplay/FlightDisplayViewUVC.qml src/FlightDisplay/FlightDisplayViewDummy.qml - src/AutoPilotPlugins/PX4/PX4FlightModes.qml - src/AutoPilotPlugins/PX4/PX4AdvancedFlightModes.qml - src/AutoPilotPlugins/PX4/PX4SimpleFlightModes.qml + src/FlightDisplay/FlightDisplayViewUVC.qml src/AutoPilotPlugins/PX4/FlightModesComponentSummary.qml - src/AutoPilotPlugins/APM/APMFlightModesComponent.qml - src/AutoPilotPlugins/APM/APMFlightModesComponentSummary.qml - src/ui/preferences/BluetoothSettings.qml - src/ui/preferences/DebugWindow.qml src/ui/preferences/GeneralSettings.qml + src/MissionEditor/GeoFenceEditor.qml + src/AnalyzeView/GeoTagPage.qml + src/VehicleSetup/JoystickConfig.qml src/ui/preferences/LinkSettings.qml + src/AnalyzeView/LogDownloadPage.qml src/ui/preferences/LogReplaySettings.qml - src/ui/preferences/MavlinkSettings.qml - src/ui/preferences/MockLink.qml - src/ui/preferences/MockLinkSettings.qml - src/QtLocationPlugin/QMLControl/OfflineMap.qml - src/ui/preferences/SerialSettings.qml - src/ui/preferences/TcpSettings.qml - src/ui/preferences/UdpSettings.qml - src/VehicleSetup/JoystickConfig.qml src/ui/toolbar/MainToolBar.qml src/ui/MainWindowHybrid.qml src/ui/MainWindowInner.qml src/ui/MainWindowNative.qml - src/ui/AppSettings.qml + src/ui/preferences/MavlinkSettings.qml src/MissionEditor/MissionEditor.qml + src/ui/preferences/MockLink.qml + src/ui/preferences/MockLinkSettings.qml src/AutoPilotPlugins/Common/MotorComponent.qml + src/QtLocationPlugin/QMLControl/OfflineMap.qml src/AutoPilotPlugins/PX4/PowerComponent.qml src/AutoPilotPlugins/PX4/PowerComponentSummary.qml - src/VehicleSetup/PX4FlowSensor.qml - src/QmlControls/QGroundControl.Controls.qmldir src/AnalyzeView/AnalyzePage.qml + src/QmlControls/AppMessages.qml src/QmlControls/ClickableColor.qml src/QmlControls/DropButton.qml src/QmlControls/ExclusiveGroupItem.qml @@ -55,23 +48,22 @@ src/QmlControls/JoystickThumbPad.qml src/ui/toolbar/MainToolBar.qml src/ui/toolbar/MainToolBarIndicators.qml + src/QmlControls/MissionCommandDialog.qml src/MissionEditor/MissionItemEditor.qml src/QmlControls/MissionItemIndexLabel.qml src/MissionEditor/MissionItemStatus.qml - src/QmlControls/MissionCommandDialog.qml - src/QmlControls/MultiRotorMotorDisplay.qml src/QmlControls/ModeSwitchDisplay.qml + src/QmlControls/MultiRotorMotorDisplay.qml + src/QmlControls/OfflineMapButton.qml src/QmlControls/ParameterEditor.qml src/QmlControls/ParameterEditorDialog.qml - src/MissionEditor/RallyPointItemEditor.qml - src/QmlControls/RCChannelMonitor.qml src/QmlControls/QGCButton.qml src/QmlControls/QGCCheckBox.qml src/QmlControls/QGCColoredImage.qml src/QmlControls/QGCComboBox.qml src/QmlControls/QGCFlickable.qml - src/QmlControls/QGCFlickableVerticalIndicator.qml src/QmlControls/QGCFlickableHorizontalIndicator.qml + src/QmlControls/QGCFlickableVerticalIndicator.qml src/QmlControls/QGCLabel.qml src/QmlControls/QGCMobileFileDialog.qml src/QmlControls/QGCMovableItem.qml @@ -84,7 +76,10 @@ src/QmlControls/QGCViewDialog.qml src/QmlControls/QGCViewMessage.qml src/QmlControls/QGCViewPanel.qml + src/QmlControls/QGroundControl.Controls.qmldir src/MissionEditor/RallyPointEditorHeader.qml + src/MissionEditor/RallyPointItemEditor.qml + src/QmlControls/RCChannelMonitor.qml src/QmlControls/RoundButton.qml src/AutoPilotPlugins/Common/SetupPage.qml src/ui/toolbar/SignalStrength.qml @@ -92,11 +87,7 @@ src/QmlControls/SubMenuButton.qml src/QmlControls/VehicleRotationCal.qml src/QmlControls/VehicleSummaryRow.qml - src/QmlControls/AppMessages.qml src/ViewWidgets/ViewWidget.qml - src/MissionEditor/SimpleItemEditor.qml - src/MissionEditor/SurveyItemEditor.qml - src/MissionEditor/GeoFenceEditor.qml src/FactSystem/FactControls/FactBitmask.qml src/FactSystem/FactControls/FactCheckBox.qml src/FactSystem/FactControls/FactComboBox.qml @@ -106,15 +97,13 @@ src/FactSystem/FactControls/FactTextFieldGrid.qml src/FactSystem/FactControls/FactTextFieldRow.qml src/FactSystem/FactControls/qmldir - src/FlightDisplay/qmldir src/FlightDisplay/FlightDisplayView.qml src/FlightDisplay/FlightDisplayViewMap.qml src/FlightDisplay/FlightDisplayViewVideo.qml src/FlightDisplay/FlightDisplayViewWidgets.qml - src/FlightDisplay/VirtualJoystick.qml - src/FlightMap/qmldir + src/FlightDisplay/qmldir src/FlightMap/FlightMap.qml - src/MissionEditor/QGCMapPolygonControls.qml + src/FlightMap/Widgets/InstrumentSwipeView.qml src/FlightMap/MapScale.qml src/FlightMap/MapItems/MissionItemIndicator.qml src/FlightMap/MapItems/MissionItemView.qml @@ -125,57 +114,33 @@ src/FlightMap/Widgets/QGCCompassWidget.qml src/FlightMap/Widgets/QGCInstrumentWidget.qml src/FlightMap/Widgets/QGCInstrumentWidgetAlternate.qml + src/MissionEditor/QGCMapPolygonControls.qml src/FlightMap/Widgets/QGCPitchIndicator.qml src/FlightMap/QGCVideoBackground.qml + src/FlightMap/qmldir src/FlightMap/Widgets/ValuesWidget.qml src/FlightMap/Widgets/VehicleHealthWidget.qml - src/FlightMap/Widgets/VibrationWidget.qml src/FlightMap/MapItems/VehicleMapItem.qml - src/FlightMap/Widgets/InstrumentSwipeView.qml + src/FlightMap/Widgets/VibrationWidget.qml src/QmlControls/QGroundControl.ScreenTools.qmldir src/QmlControls/ScreenTools.qml src/QmlControls/QmlTest.qml src/AutoPilotPlugins/Common/RadioComponent.qml - src/AutoPilotPlugins/Common/ESP8266Component.qml - src/AutoPilotPlugins/Common/ESP8266ComponentSummary.qml - src/AutoPilotPlugins/PX4/PX4RadioComponentSummary.qml - src/AutoPilotPlugins/PX4/PX4TuningComponentCopter.qml - src/AutoPilotPlugins/PX4/PX4TuningComponentPlane.qml - src/AutoPilotPlugins/APM/APMNotSupported.qml - src/AutoPilotPlugins/APM/APMCameraComponent.qml - src/AutoPilotPlugins/APM/APMCameraComponentSummary.qml - src/AutoPilotPlugins/APM/APMLightsComponent.qml - src/AutoPilotPlugins/APM/APMLightsComponentSummary.qml - src/AutoPilotPlugins/APM/APMPowerComponent.qml - src/AutoPilotPlugins/APM/APMPowerComponentSummary.qml - src/AutoPilotPlugins/APM/APMRadioComponentSummary.qml - src/AutoPilotPlugins/APM/APMSafetyComponentCopter.qml - src/AutoPilotPlugins/APM/APMSafetyComponentPlane.qml - src/AutoPilotPlugins/APM/APMSafetyComponentRover.qml - src/AutoPilotPlugins/APM/APMSafetyComponentSub.qml - src/AutoPilotPlugins/APM/APMSafetyComponentSummaryCopter.qml - src/AutoPilotPlugins/APM/APMSafetyComponentSummaryPlane.qml - src/AutoPilotPlugins/APM/APMSafetyComponentSummaryRover.qml - src/AutoPilotPlugins/APM/APMSafetyComponentSummarySub.qml - src/AutoPilotPlugins/APM/APMTuningComponentCopter.qml - src/AutoPilotPlugins/PX4/CameraComponent.qml - src/AutoPilotPlugins/PX4/CameraComponentSummary.qml src/AutoPilotPlugins/PX4/SafetyComponent.qml src/AutoPilotPlugins/PX4/SafetyComponentSummary.qml src/AutoPilotPlugins/PX4/SensorsComponent.qml src/AutoPilotPlugins/PX4/SensorsComponentSummary.qml src/AutoPilotPlugins/PX4/SensorsComponentSummaryFixedWing.qml - src/AutoPilotPlugins/APM/APMSensorsComponent.qml - src/AutoPilotPlugins/APM/APMSensorsComponentSummary.qml + src/ui/preferences/SerialSettings.qml src/VehicleSetup/SetupParameterEditor.qml src/VehicleSetup/SetupView.qml + src/MissionEditor/SimpleItemEditor.qml + src/MissionEditor/SurveyItemEditor.qml + src/ui/preferences/TcpSettings.qml src/test.qml + src/ui/preferences/UdpSettings.qml src/VehicleSetup/VehicleSummary.qml - src/QmlControls/OfflineMapButton.qml - src/AutoPilotPlugins/PX4/PX4TuningComponentVTOL.qml - src/AnalyzeView/AnalyzeView.qml - src/AnalyzeView/GeoTagPage.qml - src/AnalyzeView/LogDownloadPage.qml + src/FlightDisplay/VirtualJoystick.qml src/MissionManager/MavCmdInfoCommon.json @@ -184,18 +149,6 @@ src/MissionManager/MavCmdInfoRover.json src/MissionManager/MavCmdInfoSub.json src/MissionManager/MavCmdInfoVTOL.json - src/FirmwarePlugin/APM/MavCmdInfoCommon.json - src/FirmwarePlugin/APM/MavCmdInfoFixedWing.json - src/FirmwarePlugin/APM/MavCmdInfoMultiRotor.json - src/FirmwarePlugin/APM/MavCmdInfoRover.json - src/FirmwarePlugin/APM/MavCmdInfoSub.json - src/FirmwarePlugin/APM/MavCmdInfoVTOL.json - src/FirmwarePlugin/PX4/MavCmdInfoCommon.json - src/FirmwarePlugin/PX4/MavCmdInfoFixedWing.json - src/FirmwarePlugin/PX4/MavCmdInfoMultiRotor.json - src/FirmwarePlugin/PX4/MavCmdInfoRover.json - src/FirmwarePlugin/PX4/MavCmdInfoSub.json - src/FirmwarePlugin/PX4/MavCmdInfoVTOL.json src/Vehicle/VehicleFact.json src/Vehicle/BatteryFact.json src/Vehicle/GPSFact.json diff --git a/src/FactSystem/FactControls/FactCheckBox.qml b/src/FactSystem/FactControls/FactCheckBox.qml index cd421ad5efebd53b87c13f5b0b48e95aaafc3258..5dc7788a42a69355f359fa70f58eeb2252bbc230 100644 --- a/src/FactSystem/FactControls/FactCheckBox.qml +++ b/src/FactSystem/FactControls/FactCheckBox.qml @@ -11,8 +11,8 @@ QGCCheckBox { property variant checkedValue: 1 property variant uncheckedValue: 0 - partiallyCheckedEnabled: fact.value != checkedValue && fact.value != uncheckedValue - checkedState: fact.value == checkedValue ? Qt.Checked : (fact.value == uncheckedValue ? Qt.Unchecked : Qt.PartiallyChecked) + partiallyCheckedEnabled: fact ? fact.value !== checkedValue && fact.value !== uncheckedValue : false + checkedState: fact ? fact.value === checkedValue ? Qt.Checked : (fact.value === uncheckedValue ? Qt.Unchecked : Qt.PartiallyChecked) : false text: qsTr("Label") diff --git a/src/QGCApplication.cc b/src/QGCApplication.cc index c9608f75f5c9640621df1d39b917a391eb286718..278c0a06c6247c2a283abfde4653b4befad0909b 100644 --- a/src/QGCApplication.cc +++ b/src/QGCApplication.cc @@ -83,6 +83,10 @@ #include "QGCMapPolygon.h" #include "ParameterManager.h" +#if defined(QGC_CUSTOM_BUILD) +#include CUSTOMHEADER +#endif + #ifndef __ios__ #include "SerialLink.h" #endif @@ -184,10 +188,15 @@ QGCApplication::QGCApplication(int &argc, char* argv[], bool unitTesting) , _toolbox(NULL) , _bluetoothAvailable(false) , _lastKnownHomePosition(37.803784, -122.462276, 0.0) + , _pQGCOptions(NULL) + , _pCorePlugin(NULL) { Q_ASSERT(_app == NULL); _app = this; + //-- Scan and load plugins + _scanAndLoadPlugins(); + // This prevents usage of QQuickWidget to fail since it doesn't support native widget siblings #ifndef __android__ setAttribute(Qt::AA_DontCreateNativeWidgetSiblings); @@ -349,6 +358,9 @@ QGCApplication::~QGCApplication() #endif shutdownVideoStreaming(); delete _toolbox; + if(_pCorePlugin) { + delete _pCorePlugin; + } } void QGCApplication::_initCommon(void) @@ -445,6 +457,13 @@ bool QGCApplication::_initForNormalAppBoot(void) settings.sync(); + //-- Initialize Core Plugin (if any) + if(_pCorePlugin) { + if(!_pCorePlugin->init(this)) { + return false; + } + } + return true; } @@ -564,7 +583,7 @@ void QGCApplication::setStyle(bool styleIsDark) emit styleChanged(_styleIsDark); } -void QGCApplication::_loadCurrentStyle(void) +void QGCApplication::_loadCurrentStyle() { #ifndef __mobile__ bool success = true; @@ -626,7 +645,7 @@ void QGCApplication::_missingParamsDisplay(void) showMessage(QString("Parameters missing from firmware: %1. You may be running an older version of firmware QGC does not work correctly with or your firmware has a bug in it.").arg(params)); } -QObject* QGCApplication::_rootQmlObject(void) +QObject* QGCApplication::_rootQmlObject() { #ifdef __mobile__ return _qmlAppEngine->rootObjects()[0]; @@ -689,3 +708,41 @@ void QGCApplication::setLastKnownHomePosition(QGeoCoordinate& lastKnownHomePosit settings.setValue(_lastKnownHomePositionAltKey, lastKnownHomePosition.altitude()); _lastKnownHomePosition = lastKnownHomePosition; } + +IQGCOptions* QGCApplication::qgcOptions() +{ + return _pQGCOptions; +} + +void QGCApplication::_scanAndLoadPlugins() +{ +#if defined (QGC_DYNAMIC_PLUGIN) + //-- Look for plugins (Dynamic) + QString filter = "*.core.so"; + QString path = QCoreApplication::applicationDirPath(); + QDirIterator it(path, QStringList() << filter, QDir::Files); + while(it.hasNext()) { + QString pluginFile = it.next(); + QPluginLoader loader(pluginFile); + QObject *plugin = loader.instance(); + if(plugin) { + _pCorePlugin = qobject_cast(plugin); + if(_pCorePlugin) { + _pQGCOptions = _pCorePlugin->uiOptions(); + return; + } + } else { + qWarning() << "Plugin" << pluginFile << " not loaded:" << loader.errorString(); + } + } +#elif defined (QGC_CUSTOM_BUILD) + //-- Create custom plugin (Static) + _pCorePlugin = (IQGCCorePlugin*) new CUSTOMCLASS(this); + if(_pCorePlugin) { + _pQGCOptions = _pCorePlugin->uiOptions(); + return; + } +#endif + //-- No plugins found, use default options + _pQGCOptions = new IQGCOptions; +} diff --git a/src/QGCApplication.h b/src/QGCApplication.h index ddb14cca0b5096f0c44abfa5d0ee0d8407834c27..6a9dbf96644455ca7a4b3b1f820ff537e437df6b 100644 --- a/src/QGCApplication.h +++ b/src/QGCApplication.h @@ -35,6 +35,12 @@ #include "UASMessageHandler.h" #include "FactSystem.h" +//-- Plugin Architecture +#include "IQGCApplication.h" +#include "IQGCCorePlugin.h" +#include "IQGCOptions.h" +#include "IQGCQMLSource.h" + #ifdef QGC_RTLAB_ENABLED #include "OpalLink.h" #endif @@ -117,6 +123,11 @@ public: QGeoCoordinate lastKnownHomePosition(void) { return _lastKnownHomePosition; } void setLastKnownHomePosition(QGeoCoordinate& lastKnownHomePosition); + /// Options (can be overwriten by a core plugin) + IQGCOptions* qgcOptions(); + /// Custom core plugin (NULL if none) + IQGCCorePlugin* customCorePlugin() { return _pCorePlugin; } + public slots: /// You can connect to this slot to show an information message box from a different thread. void informationMessageBoxOnMainThread(const QString& title, const QString& msg); @@ -166,8 +177,9 @@ private slots: void _missingParamsDisplay(void); private: - void _loadCurrentStyle(void); - QObject* _rootQmlObject(void); + void _loadCurrentStyle (); + QObject* _rootQmlObject (); + void _scanAndLoadPlugins (); #ifdef __mobile__ QQmlApplicationEngine* _qmlAppEngine; @@ -205,6 +217,10 @@ private: /// Unit Test have access to creating and destroying singletons friend class UnitTest; + + //-- Plugin Architecture + IQGCOptions* _pQGCOptions; + IQGCCorePlugin* _pCorePlugin; }; /// @brief Returns the QGCApplication object singleton. diff --git a/src/dummy.h b/src/dummy.h new file mode 100644 index 0000000000000000000000000000000000000000..668d46204d42036d709455107050a09ecdbb91ea --- /dev/null +++ b/src/dummy.h @@ -0,0 +1,2 @@ +// Dummy Header +#pragma once